120 likes | 233 Views
The Molecular Biology Toolkit – Geometry Generation Capabilities. Apostol Gramada John Moreland PI: Phil Bourne. Supported by: SPAM project: NIH NIGMS 1P01GM63208-01A1. Outline. An application developer perspective General Description of the package-Class Hierarchy
E N D
The Molecular Biology Toolkit – Geometry Generation Capabilities Apostol Gramada John Moreland PI: Phil Bourne • Supported by: • SPAM project: NIH NIGMS 1P01GM63208-01A1
Outline • An application developer perspective • General Description of the package-Class Hierarchy • Instantiating Geometry Objects – Creating 3D molecular scenes • Technical and performance aspects
Class Hierarchy • Basic manipulation of specific vertex generation methods • Container for most geometry data and static convenience methods (Ex: full scene assembling methods at either secondary structure level or ball and ball-and-stick level)
At Secondary Structure fragment level Two-steps process Create a Geometry Class and set parameters Generate the Java3D object that can be directly attached to the graphical scene. Motivation need to add/remove/edit fragments rather than chains smooth transition requires setting boundary tangents, normals in advance specific rendering properties coil = new CoilGeometry( ) coil.setCoordinates( double[][] coords ) coil.setColorMap( float[][] colorMap ) coil.setPreviousCaCoord( double[] coord) etc branchGroup = coil.generateJ3dGeometry( ) Creating Geometry • branchGroup = bond.generateJ3dGeometry() • bond = new BondGeometry( double[][] coords ) • bond.setColor1( float[] color ) • Bond.setQuality( float quality )
SsGeometry, PsGeometry offer convenience methods for assembling full scenes Advantages: a single line of code automatic smoothing automatic rendering quality-performance control SsGeometry.drawSs(group, structureMap, structureStyles, hash) PsGeometry.drawBonds(group, bonds, structureStyles, quality, mode, hash) PsGeometry.drawAtoms( group, atoms, structureStyles, quality, hash ) Creating Geometry cont’d
Built on the Java3D™ extension API. The view platform is built in a separate package of the toolkit, the viewer Content branch is created by the geometry package Technical perspectiveBasics
Main elements spheres for atoms extrusions for ribbons and thick bonds line segments for bonds and backbone traces Basic Geometrical Objects
Most demanding graphical element 100-200 vertices (even for moderate quality) – memory intensive Shading – hardware intensive Typically many atoms to render John wrote a customized sphere class so that geometry is shared for the same type of atoms Appearance attributes also shared within a given type class Spheres
Ribbons • Only CA coordinates are used • Ribbon = cross section polygon + translation (along a path defined by CA) • Orientation of the cross section conserved with respect to a local reference frame • Local reference frame usually tied to the Frenet trihedron • Typically, the cross section lies in the plane but not necessary
Ribbons – technical issues • High quality representation of ribbons requires geometrically smooth curves (i.e. at least continuous vectors). Problems: • Polypeptide chain is naturally rather “discontinuous” (high variability in the C=O & N-H plane orientations) • CA coordinates form a rather sparse set along the backbone path => Interpolation needed • Definition of local tangent, normal and binormal vectors is ambiguous for a discrete set of points => Make difficult to insure orthogonality and a high degree of geometric continuity • Piecewise interpolation C0 continuityonly Frenet-frame continuity
Option: use a sophisticated interpolation scheme that insure a high degree of continuity Computationally demanding A larger number of parameters -> more difficult to control the shape of the interpolated curve May not work with a piecewise interpolation approach Alternative Implemented Priestle smoothing (CA coordinates, normals) Hermite Interpolation Independent interpolation for normal/binormal Orthogonality is not always strictly enforced Solution
A number of tasks have high natural complexity n2 Covalent bond detection for ball-and-stick rendering hydrogen bonding for secondary structure assignment (in the Kabsch-Sander algorithm) Some types of surface representation require calculation of the same order of magnitude, i.e. n2 Very time consuming for big structures. Solution: Implemented an Octree-based algorithm for the determination of the closest neighbors within a given sphere in 3D. Complexity reduced to Overhead associated with building the tree is of the same order of magnitude Typical observed speed-up 10-20 times Performance challenges