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
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
Contact Objexx for further information on our biomolecular modeling development services.