140 likes | 150 Views
This workshop explores the challenges in representing, implementing, and interacting with macromolecular assemblies. Topics include time and complexity of biological problems, interoperable software components for users and programmers, and increased models complexity and technological complexity.
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