140 likes | 298 Views
Representation, Implementation , and Interaction: Challenges for Macromolecular Assemblies. Michel F. Sanner. The Molecular Graphics Laboratory. The Scripps Research Institute La Jolla, California. Workshop on Visualization of Biological Complexes Oct. 11-12, 2003 Berkeley, CA. TSRI.
E N D
Representation, Implementation, and Interaction: Challengesfor Macromolecular Assemblies Michel F. Sanner The Molecular Graphics Laboratory The Scripps Research Institute La Jolla, California Workshop on Visualization of Biological Complexes Oct. 11-12, 2003 Berkeley, CA TSRI
Interoperable Software Components for users Time and complexity of biological problems Interoperable Software Components for programmers Software Components for programmers MonolithicSoftware
Increased usability Increased flexibility User-reconfigurable applications Transparent computing Conflicting goals? • Increased models complexity • Increased data sets size and heterogeneity • Interoperation of interdisciplinary computational methods • Increased technological complexity
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
PMV Architecture PMV Generic Molecule Viewer built from reusable components But meant for programmers ViewerFramework Msms Commands DejaVu Mslib MolKit Idle Numeric PyOpenGL Tkinter Python Interpreter
ViPEr: a Visual Programming Environment Does not require the scientist to Become a programmer AChE APBS
Visualization SymServer SymServ DejaVu Your Library MolKit Tkinter Mslib Numeric Imaging Your Code PIL MolKit PyOpenGL Web Standard ViPEr Architecture ViPEr NetworkEditor Python Interpreter
ViPEr INNOVATIONS • No constraining data types • Optional data duplication • Scriptable, flexible • On-the-fly node editing • Nodes are lightweight wrappers of computations • Small (< 13,000 lines of Python code) • Platform independent • A Python package NOT a program ! • Can be added to any program
NetworkNode ‘file1.dat’ ‘myfile.dat’ Input Port Name: inPort1 Type: String N umber: 0 Required: True SingleConnection: False [myfile.dat’, ‘file1.dat’] MyNode def doit(self, inPort1): out =[] for n in names: out.append( read(n)) self.outputData(outPort1=out) Output Port name: outPort1 Type: None Number: 0
Aknowledgements • Sophie Coon (PMV) • Daniel Stoffler PhD (ViPEr) • National Institute of Health, RR08605 • MGL laboratory