mpiBLAST has proven to be a very useful tool to the bioinformatics community over the last several years. Substantial improvements have been made to the package that improve performance and robustness. However, there still remain certain deficiencies that need to be addressed and alleviating these issues is becoming increasingly more difficult with the current codebase. To this end, an entirely new codebase is being written from scratch culminating in the next-generation of mpiBLAST, mpiBLAST-2.0.
The focus of mpiBLAST-2.0 is maintainability and extensibility. To accomplish these two goals the new codebase is built upon a modular software-architecture called mixin-layers. Mixin-layers allows modules to be interchanged and interleaved easily thereby creating entirely new specialized applications. For example, the
writer module can be swapped out and replaced with a
parallel-writer module where the
parallel-writer module utilizes parallel I/O techniques. For a detailed look at this new software architecture please see A Pluggable Framework for Parallel Pairwise Sequence Search and A Maintainable Software Architecture for Fast and Modular Bioinformatics Sequence Search.
Of interest to the end-user, mpiBLAST-2.0 will enable these key features:
- efficient design, development, testing, and deployment of new features (e.g., parallel e-value calculation)
- rapid testing and verification of bug-fixes with the corresponding updates (and patches) made available through the website
Of interest to the developer, below is a list of some of the key technologies of mpiBLAST-2.0:
- modularized codebase to separate core functionality and improve collaborative development
- core modules include but are not limited to: communication, scatter, fragment (database), segment (query), search, format, write, and schedule
- hierarchical software design incorporating a Mixin-layers software-architecture
- subtype polymorphism for aiding an object-oriented inter-process communication protocol
- well-defined coding conventions to overcome C++ inheritance model limitations
- usage of a distributed advanced revision control system (darcs) to embrace the open-source development model
The next-generation of mpiBLAST, (mpiBLAST-2.0), is currently being developed. And although substantial progress has been made, because it is a complete rewrite of the entire codebase it is not yet stable enough to be used in a production environment.
If you would like to participate as a tester for mpiBLAST-2.0 and provide comments and input concerning the usability, stability, and performance of mpiBLAST-2.0, or if you would like to help develop mpiBLAST-2.0, please join the mpiblast-2.0 mailing list. The beta release of mpiBLAST-2.0 will be available soon.
We realize that this new design will be a significant change for mpiBLAST developers to accept but we believe that this new design will allow for a more dynamic and productive development of mpiBLAST.
Further information about mpiBLAST-2.0 can be found here: