biological science libraries - scripps research institute science libraries - an approach to...
TRANSCRIPT
Biological Science LibrariesBiological Science Libraries- An approach to software- An approach to softwarecomponents for structuralcomponents for structural
bioinformaticsbioinformatics
Michel F. Sanner
The Scripps Research InstituteLa Jolla, California
The Molecular Graphics Laboratory
SciPy’02
CalTech Pasadena CA. Sept. 2002
SciPy’02, © M.Sanner, TSRI
SCHEDULESCHEDULE
o Component-based software? Background and motivation? Re-usable components
o From building blocks to applications? PMV: a molecular visualization program? ADT: setting up and running AutoDock? PVV: interactive volume rendering? ViPEr: a visual programming environment
o Conclusion
SciPy’02, © M.Sanner, TSRI
Protein-Protein-LigandLigand
Complex AssembliesComplex AssembliesProtein-ProteinProtein-Protein
Molecular SurfacesMolecular SurfacesAutoDockAutoDock
SurfDockSurfDock
SymGenSymGen
MSMSMSMS
HARMONYHARMONY
SymSearchSymSearch
SciPy’02, © M.Sanner, TSRI
Tangible ModelsTangible Models
SciPy’02, © M.Sanner, TSRI
ARToolkitARToolkit 3D tracking 3D tracking
SciPy’02, © M.Sanner, TSRI
Augmented realityAugmented reality
SciPy’02, © M.Sanner, TSRI
VisualizationVisualization
DockingDockingMethodsMethods
FoldingFolding
ProteinProteinEngineeringEngineering
SequenceSequenceAnalysisAnalysis
ModelingModeling
MM - MDMM - MD
Ab InitioAb InitioMethodsMethods
ElectrostaticsElectrostaticsCalculationsCalculations
MolecularMolecularSurfacesSurfaces
Etc ...Etc ...
The challengeThe challenge
SciPy’02, © M.Sanner, TSRI
VisualizationVisualization
DockingDockingMethodsMethods
FoldingFolding
ProteinProteinEngineeringEngineering
SequenceSequenceAnalysisAnalysis
ModelingModeling
MM - MDMM - MD
Ab InitioAb InitioMethodsMethods
ElectrostaticsElectrostaticsCalculationsCalculations
MolecularMolecularSurfacesSurfaces
Etc ...Etc ...
“Traditional” solution“Traditional” solution
N2 interfaceslow interoperability
No code Reuse
SciPy’02, © M.Sanner, TSRI
High level language as a scripting environmentHigh level language as a scripting environment
MolecularSurfaces
Molecular
MolecularSurfaces
Surfaces
Molecules
Molecules
Molecules
DataBase
DataDataBaseBaseElectrostatics
Electrostatics
Electrostatics
DelaunayDelaunayDelaunay
Homology
Homology
HomologyCSGCSGCSG
3DViewer
3D3DViewerViewer
MM-MDMM-MDMM-MD
NewMethod
NewNewMethodMethod
Your
MethodYourYour
MethodMethod
Python to the rescuePython to the rescue
Interactive
Dynamic
Platformindependent
SciPy’02, © M.Sanner, TSRI
Writing an applicationWriting an application
o High level codingo Code re-useo modularityo ExtensibleMolecules
Molecules
Molecules3DViewer
3D3DViewer
Viewer
MolecularSurfaces
Molecular
MolecularSurfaces
Surfaces
Electrostatics
Electrostatics
Electrostatics
SciPy’02, © M.Sanner, TSRI
PYTHON - FeaturesPYTHON - Features
o Interpreted, High level, Object-Orientedo Flexible and Extensibleo Introspection, self-documentingo Platform Independento Open Sourceo Rapidly gaining acceptance
SciPy’02, © M.Sanner, TSRI
Why Python ?Why Python ?
o Advanced data structures (> Tcl, Perl)o Object-Oriented AND scripting (> Java)o “Batteries included !”
? Powerfull data-parallel Numeric arrays (> Tcl)o Readbility and modularity (> Perl)o High-level (> C, C++, Fortan)o Platform independence (> C++, Java)o Efficient enough for many things !o Automated tools for wrapping C, C++, Fortran
SciPy’02, © M.Sanner, TSRI
Re-usable componentsRe-usable componentso MolKit:
? read/write/represent/manipulate moleculeso PyBabel:
? Atom hybridization, charges, hydrogen atomso DejaVu:
? General purpose 3D geometry viewero ViewerFramework:
? Visualization application templateo Mslib, PyBabel, PyMead, SFF, Isocontour, ...
(Sophie I. Coon, Michel F. Sanner and Art J. Olson, Re-usable components for structural bioinformatic, 9th Python Conference 2001)
SciPy’02, © M.Sanner, TSRI
from MolKit.pdbParser import PdbParserparser = PdbParser(‘1crn.pdb’)mols = parser.parse( )
from MolKit.pdbParser import PdbParserparser = PdbParser(‘1crn.pdb’)mols = parser.parse( )
PDBMol2PQR...
Parser
MoleculeSet
PDB parser MOL2 parserMolecule
Chain
Residue
Atom
Molecule
Chain
Residue
Atom
Molecule
Residue
Atom
Molecule
Atom
MolKitMolKit MolKit
SciPy’02, © M.Sanner, TSRI
ExamplesExamples>>> 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
SciPy’02, © M.Sanner, TSRI
PyBabelPyBabel
o From Babel v1.6 (mostly)? Atom types and bond order detection? Aromaticity detection? Adding Hydrogen atoms? Computing Gasteiger charges
PyBabel
SciPy’02, © M.Sanner, TSRI
TkinterTkinterNumericNumeric
PyOpenGLPyOpenGL
DejaVuDejaVu
from DejaVu import Viewervi = Viewer( )from DejaVu.Spheres import Spherescenters =[[0,0,0],[3,0,0],[0,3,0]] s = Spheres(‘sph’, centers = centers)s.Set(quality=10)vi.AddObject(s)
from DejaVu import Viewervi = Viewer( )from DejaVu.Spheres import Spherescenters =[[0,0,0],[3,0,0],[0,3,0]] s = Spheres(‘sph’, centers = centers)s.Set(quality=10)vi.AddObject(s)
DejaVuDejaVu DejaVu
SciPy’02, © M.Sanner, TSRI
FeaturesFeatureso OpenGL Lighting and Material modelo Material editor, transparencyo Arbitrary clipping planeso Multiple light sourceso DepthCueing (fog), global anti-aliasingo glSscissors/magic lenso Object hierarchyo Instanceso Multi-level pickingo Extensible set of geometries
DejaVu
SciPy’02, © M.Sanner, TSRI
DejaVu DejaVu and and MolKitMolKit
from MolKit import Readmolecules = Read(‘./1crn.pdb’)coords = molecules.chains.residues.atoms.coordsradii = mol.defaultRadii()from DejaVu import Viewervi = Viewer() # create a viewerfrom DejaVu.Spheres import Spheress=Spheres(‘sph’, centers=coords, radii=radii,quality=10)vi.AddObject(s) # display atomic spheres
from MolKit import Readmolecules = Read(‘./1crn.pdb’)coords = molecules.chains.residues.atoms.coordsradii = mol.defaultRadii()from DejaVu import Viewervi = Viewer() # create a viewerfrom DejaVu.Spheres import Spheress=Spheres(‘sph’, centers=coords, radii=radii,quality=10)vi.AddObject(s) # display atomic spheres
SciPy’02, © M.Sanner, TSRI
NumericNumericPyOpenGLPyOpenGL TkinterTkinter
DejaVuDejaVu
IdleIdle
ViewerFrameworkViewerFramework
ViewerFrameworkViewerFramework ViewerFramework
SciPy’02, © M.Sanner, TSRI
NumericNumeric
PyOpenGLPyOpenGL TkinterTkinter
DejaVuDejaVuIdleIdle
ViewerFrameworkViewerFramework
MslibMslib
PmvPmv
MolKitMolKit
PMVPMV: From Building Blocks to applications: From Building Blocks to applications
SciPy’02, © M.Sanner, TSRI
PMV CapabilitiesPMV Capabilities
o Display/compute:? Lines, CPK, Stick and Balls, Surfaces,
Splines, Ribbons, H-bonds, bond-order,Gasteiger and Kollmann charges
o Editing:? deleting atoms, adding hydrogens
o Electrostatic potential? MEAD*, APBS*
o Molecular Dynamics:? Amber*
SciPy’02, © M.Sanner, TSRI
PMVPMV: Architecture: Architecture
Numeric PyOpenGL TkinterDejaVu
ViewerFramework
IdleMolKitMslib
MsmsCommands
SciPy’02, © M.Sanner, TSRI
Automated docking of a flexible ligand to macromolecules using affinity grids
AutoDockAutoDock fundamentals fundamentals
SciPy’02, © M.Sanner, TSRI
AutoDock ToolKit AutoDock ToolKit ((ADTADT))
o AutoTors : ligand preparation
o AutoGpf : grid definition
o AutoDpf : docking parameters definition
o AutoStart : job launching and monitoring
o AutoAnalyze : docking results analysis
AutoDockTools
SciPy’02, © M.Sanner, TSRI
ADT: extending PMVADT: extending PMV
SciPy’02, © M.Sanner, TSRI
ADTADT: Architecture: Architecture
Numeric PyOpenGL TkinterDejaVu
ViewerFramework
IdleMolKitMslib
MsmsCommands
AutoTors, AutoGpfAutoDpf, AutoLaunch
AutoAnalyze
SciPy’02, © M.Sanner, TSRI
Interactive Volume RenderingInteractive Volume Rendering
o VolumePro™ 500 Key Features? Renders a 2563 volume up to 30 frames per second? 256MB of volume memory? Real-time parameter changes? Full phong based lighting model on per sample basis? (8, 8, 8, 12) bit voxels? One oblique cut plane with thickness? Six box cropping planes
? 4k color lookup table with high precision alpha blending
? Support for anisotropic and gantry tilted volume data
SciPy’02, © M.Sanner, TSRI
VolPro VolPro and and DejaVuDejaVu
o VLI? C++ library driving the VolPro card? Wrapped for Python using SWIG
o VLIGeom? Subclasses DejaVu.Geom? Ties the Geometry transformation to
the VLI Camera position? Display the result of a volume rendering
operation in the DejaVu OpenGL context
VLI
SciPy’02, © M.Sanner, TSRI
VV componentVV component VV
Set of ViewerFramework commands exposing the VLI API
SciPy’02, © M.Sanner, TSRI
Large Large DatasetDataset: Mesh: Mesho Mesh Toolkit
? PyMesh: wrapped for Python using SWIGo Zoom command
Mesh
SciPy’02, © M.Sanner, TSRI
Software Volume RenderingSoftware Volume Rendering
OmniORBo UT Austin volserv.idlo OmniORB
? C++ ORB with Python mappingsUT Austin
VolRenCORBA
SciPy’02, © M.Sanner, TSRI
PVVPVV: Architecture: Architecture
Numeric PyOpenGL TkinterDejaVu
ViewerFramework
IdleMolKitVLI
VolView
ViPErViPEr: a visual programming: a visual programming
o Basics, Architecture, Librarieso Nodes, Execution Flowo Demos
(Michel F. Sanner, Daniel Stoffler and Arthur J. Olson, ViPEr, a VisualProgramming Environment for Python, 10th Python Conference 2002)
SciPy’02, © M.Sanner, TSRI
AVS-5: AVS-5: Advanced Visualization System Inc.Advanced Visualization System Inc.
Enabling scientists (non-programmers)to build computational networksEnabling scientists (non-programmers)to build computational networks
SciPy’02, © M.Sanner, TSRI
ViPErViPEr: visual programming: visual programming
SciPy’02, © M.Sanner, TSRI
NetworEditor
ViPEr
Architecture OverviewArchitecture Overview
SciPy’02, © M.Sanner, TSRI
Standard 3D Viewer Misc.MolKitSymServerImageLibCCP4…
DejaVu
MolKitsymservPIL
ViPER Libraries Python Packages
Libraries / code reuseLibraries / code reuse
SciPy’02, © M.Sanner, TSRI
Why Python worked !Why Python worked !
o Promotes better coding:? readability? high level? modular
o Software “Lego”
SciPy’02, © M.Sanner, TSRI
What could be betterWhat could be better
o Handling of platform dependent andplatform independent code
o Version managmento Distribution of sets of compatible
modules
SciPy’02, © M.Sanner, TSRI
ConclusionConclusion
o Software components used in:? PMV: flexible and extensible molecular
visualization environment? ADT: AutoDock front/back end? ViPEr: General Purpose Visual
Programming Environmento Python promotes modularityo Code reuse
SciPy’02, © M.Sanner, TSRI
AcknowledgmentsAcknowledgments
o Molecular Graphics Lab. at TSRIo NBCR, NIH, NSFo Swiss National Science Foundationo Daniel Stoffler (SymServer, AUM)o Sophie Coon, Ruth Huey
Available at:http://www.scripps.edu/~sanner/python