Objexx designs and crafts advanced biomolecular modeling software with the modularity and extensibility necessary to support rapidly changing areas of scientific inquiry. Objexx has worked with the Rosetta Commons consortium to build a modern, highly modular architecture for Rosetta, one of the preeminent tools for protein structure prediction and design.
Architecture for Research
A research platform for biomolecular modeling should be highly modular and extensible to allow new protocols to be quickly assembled. To provide this level of flexibility while maintaining reliability Objexx uses a highly decoupled component architecture embedded within a well-segregated layered architecture.
Modularity is provided by:
- Interface-based design.
- Clear, stable class hierarchy interfaces.
- Well-defined, self-managing classes of limited scope and responsibility.
- Pluggable factory creational pattern.
- Abstraction of all module interactions (i/o, etc.).
Reliability is enhanced by:
- Design by Contract philosophy of invariant and pre/post-condition tests.
- Comprehensive in-source testing via assertions and conditional tests.
- Type-safe lookup arguments for compile-time bug detection.
- Dependency managed design to support unit and component testing.
- Unit and component testing built in parallel with source.
Efficient, scalable algorithms are vital for attacking larger biomolecular problems of scientific interest. Objexx designs have addressed some of the performance-critical modeling bottlenecks with:
- Fast, scalable ( O( N log N ) ) neighbor identification via octree-like spatial sorting algorithms for residues and atoms.
- Graph-based structures for sparse neighbor relationships.
- Torsion angle and tetrad structures with optimized algorithms for computing cartesian positions from internal coordinates.
Solution stability is important to assure system testability and repeatability of results for distributed computation on diverse hardware. Objexx has designed for stability with:
- High precision kinematics operations for moving between cartesian and internal coordinates.
- Rigid body representation that has dual personalities of a homogeneous spatial transform and a quaternion-based orientation to preserve high precision orientation that can be readily renormalized via the quaternion while allowing faster transform-based point transformations.
- Random generators that can be decoupled for stable testing: coupled generators will produced divergent solutions if a small change causes an additional random number to be requested. This issue primarily affects optimization and protocols with a randomization component.
Contact Objexx for further information on our biomolecular modeling development services.