160 likes | 295 Views
Computational Representation of Biological Molecules. Michel F. Sanner. The Molecular Graphics Laboratory. The Scripps Research Institute La Jolla, California. CRBM Sept. 9-10, 2003 UCSD, San Diego, Ca. TSRI. Protein-Ligand. Molecular Surfaces. AutoDock. MSMS. HARMONY. Protein-Protein.
E N D
Computational Representationof Biological Molecules Michel F. Sanner The Molecular Graphics Laboratory The Scripps Research Institute La Jolla, California CRBM Sept. 9-10, 2003 UCSD, San Diego, Ca TSRI
Protein-Ligand Molecular Surfaces AutoDock MSMS HARMONY Protein-Protein Complex Assemblies SurfDock
Visualization Electrostatics Calculations Protein Engineering Molecular Surfaces Folding Docking Methods Modeling Sequence Analysis Ab Initio Methods Etc ... MM - MD The challenge
New Method Data Base MM-MD Electrostatics 3D Viewer Your Method Molecular Surfaces Delaunay Homology Molecules CSG Python to the rescue High level language as a scripting environment
Software components • MolKit: • read/write/represent/manipulate and query molecules • DejaVu: • General purpose 3D geometry viewer • ViewerFramework: • Visualization application template • Mslib, PyBabel, PyMead, SFF, ... • (Sophie I. Coon, Michel F. Sanner and Art J. Olson,Re-usable components for structural bioinformatic, (9th Python Conference 2001)
PDB parser MOL2 parser PDB Mol2 PQR ... Molecule Molecule Molecule Molecule Chain Chain Residue Atom Residue Residue Atom Parser Atom Atom MoleculeSet MolKit MolKit from MolKit.pdbParser import PdbParser parser = PdbParser(‘1crn.pdb’) mols = parser.parse( )
TreeNode TreeNode MolKit Numeric TreeNode MolKit .parent .top .children .elementType TreeNodeSet(ListSet) .name adopt(child) [TreeNode1, TreeNode2, … ] .__getattr__(self, name) ... returns [ TreeNode1.name, TreeNode2.name, …]
TreeNodeSet: Boolean operation uniq( ) split( ) sort( ) NodesFromName( ) findChildrenOfType( ) findParentOfType( ) … TreeNode: adopt( ) / remove( ) full_name( ) NodeFromName( ) split( ) / merge( ) getParentOfType( ) findType( ) compare( ) assignUniqIndex( ) isAbove( ) / isBelow( ) … TreeNode, TreeNodeSet
Examples MolKit • >>> from MolKit import Read • >>> molecules = Read(‘./1crn.pdb’) # Read returns a ProteinSet • >>> mol = molecules[0] • >>> print mol.chains.residues.name • >>> print mol.chains.residues.atoms[20:85].full_name() • >>> from MolKit.molecule import Atom • >>> allAtoms = mol. findType(Atom) • >>> set1 = allAtoms.get(lambda x: x.temperatureFactor >20) • >>> allResidues = allAtoms.parent.uniq() • >>> import Numeric • >>> for r in allResidues: • . . . coords = r.atoms.coords • . . . r.geomCenter = Numeric.sum(coords) / len(coords)
MolKit Features • Pdb, PQR, mol2 parsers • Support for Sets • Selection mechanism using Python syntax • Secondary Structure • Amber parameters assignment • Atomic radii assignment (regexp)
MolKit Critic: BAD Severe • No well defined API • Hierarchy of proteins • Danger of stamping over attributes • Slow for large structures • Hierarchical structure not used much • Re quires a Python interpreter Mild
MolKit Critic: GOOD • Clever PDB parser • Lightweight and Platform independent • Dynamic (on the fly creation of attributes) • Introspection • Support for Set and Set operations • Python syntax-based selection Re-usable component (has been combined with many Python packages developed independently)