Volume 11 Supplement 12
The MOLGENIS toolkit: rapid prototyping of biosoftware at the push of a button
- Morris A Swertz1, 2, 3, 4, 5, 6, 7, 8Email author,
- Martijn Dijkstra1, 7,
- Tomasz Adamusiak2, 8,
- Joeri K van der Velde1, 4, 5,
- Alexandros Kanterakis1,
- Erik T Roos1,
- Joris Lops1,
- Gudmundur A Thorisson2, 10,
- Danny Arends1,
- George Byelas1,
- Juha Muilu2, 9,
- Anthony J Brookes2, 10,
- Engbert O de Brock11,
- Ritsert C Jansen1, 4, 5 and
- Helen Parkinson2, 3, 8
© Swertz et al; licensee BioMed Central Ltd. 2010
Published: 21 December 2010
There is a huge demand on bioinformaticians to provide their biologists with user friendly and scalable software infrastructures to capture, exchange, and exploit the unprecedented amounts of new *omics data. We here present MOLGENIS, a generic, open source, software toolkit to quickly produce the bespoke MOLecular GENetics Information Systems needed.
The MOLGENIS toolkit provides bioinformaticians with a simple language to model biological data structures and user interfaces. At the push of a button, MOLGENIS’ generator suite automatically translates these models into a feature-rich, ready-to-use web application including database, user interfaces, exchange formats, and scriptable interfaces. Each generator is a template of SQL, JAVA, R, or HTML code that would require much effort to write by hand. This ‘model-driven’ method ensures reuse of best practices and improves quality because the modeling language and generators are shared between all MOLGENIS applications, so that errors are found quickly and improvements are shared easily by a re-generation. A plug-in mechanism ensures that both the generator suite and generated product can be customized just as much as hand-written software.
In recent years we have successfully evaluated the MOLGENIS toolkit for the rapid prototyping of many types of biomedical applications, including next-generation sequencing, GWAS, QTL, proteomics and biobanking. Writing 500 lines of model XML typically replaces 15,000 lines of hand-written programming code, which allows for quick adaptation if the information system is not yet to the biologist’s satisfaction. Each application generated with MOLGENIS comes with an optimized database back-end, user interfaces for biologists to manage and exploit their data, programming interfaces for bioinformaticians to script analysis tools in R, Java, SOAP, REST/JSON and RDF, a tab-delimited file format to ease upload and exchange of data, and detailed technical documentation. Existing databases can be quickly enhanced with MOLGENIS generated interfaces using the ‘ExtractModel’ procedure.
The MOLGENIS toolkit provides bioinformaticians with a simple model to quickly generate flexible web platforms for all possible genomic, molecular and phenotypic experiments with a richness of interfaces not provided by other tools. All the software and manuals are available free as LGPLv3 open source at http://www.molgenis.org.
High-throughput technologies have boosted biological and medical research and the need for software infrastructures to manage and process the large datasets produced is widely accepted [1–3]. Bioinformaticians are under continuous pressure to both tackle the complexity and diversity of new biological systems and analytical methods and to translate these quickly into flexible informatics infrastructures, while keeping up with the unpredictable evolution of molecular biotechnologies and the increasing scale of experiments. While standardization of tools and data formats in open source projects like the Generic Model Organism Database, GMOD , and the Open Bioinformatics Foundation, OBF , have been indispensable in reducing the development efforts needed via reusable and easy to integrate components, new research must also be quickly accommodated, for which efficient software variation mechanisms are needed.
In this paper we present the evolution of MOLGENIS into a generic, model-driven toolkit for the rapid generation of bespoke, data-intensive biosoftware applications . We demonstrate step-by-step how bioinformaticians can use a domain-specific language to efficiently model the biological details of their particular biological system, and use MOLGENIS software generation tools to automatically generate a web application tailored to the experiments of their biologists, building on reusable components. Next, we evaluate the results of these methods in the development of a range of MOLGENIS applications [9, 11–15], that is, software applications generated using the MOLGENIS toolkit. We found up to 30 times efficiency improvement compared to hand-writing software, while providing a richness of features practically unfeasible to produce by hand but not yet provided by related projects. We conclude by inviting the bioinformatics community to add more MOLGENIS models, components and generators to quickly generate all the software infrastructures biologists want to have.
The MOLGENIS toolkit is based on the method of model-driven development which emerged in the 1990s from the computer industry. The key to success is the clear scope of the toolbox (i.e., what family of software applications should be produced with it) and separating which features should be fixed (e.g., reusable components common to all MOLGENIS applications) and which features should be variable (i.e. modeled and generated per MOLGENIS application instance), a process known as domain analysis . Below we discuss MOLGENIS’ initial domain analysis, its modeling language, generators and reusable components.
Common and variable features of MOLGENIS information systems.
MOLGENIS Features (F)
Common parts (C) and Variable parts (V)
Store and find lab activities, datasets and biomaterials.
C1. Logic to add, update, remove, find and count data entities in a database; read and write data files.
V1. Data structures that suit the research, e.g., samples in a clinical lab have a “tissue” while microbe samples do not.
Manipulate lab entities such that they suit the research process.
C2. Logic to select, navigate (first, previous, next, last), find (filter), and edit data entities (using the logic of C1).
V2. Control structures that suit the research, e.g., experiments are shown with a menu with sub-forms for Samples and Hybridizations.
View entities and control interactively (via the Internet).
C3 Presentation of logic that shows F1 and F2 with usable layout and formatting.
V3. Presentation of structure of the specific entity (V1) and control structure (V2) of a system variant via the Internet (option to have this in company style).
Ensure that the right people get access to the right results.
C4. To manage users, roles and privileges and have authentication and authorization in place.
V4. To set Roles and Privileges to entities and controls, e.g., only spotters (role) are allowed to add arrays (privilege).
Allow addition of components for data processing and visualizations.
C5. To have a plug-in mechanism to integrate external programs so that these programs can benefit from entity and control logic.
V5. To extend a system variant with logic beyond the family, e.g., analysis scripts, quantification file validation, complex data aggregation, and export to files.
The second step was to implement the common and variable parts, which we started with a prototype. Here we applied the d on’t r epeat y ourself principle (DRY) : every piece of design knowledge must have a single, unambiguous, authoritative representation. We therefore searched through the prototype software code. If we found identical pieces then we put them into the library of reusable components. If we found very similar pieces of software code, we put the common parts into a generator and the variation points into the modeling language. In each subsequent step we evolved the MOLGENIS generator, only incorporating new functionality when we repeatedly needed it.
During the next six years of using the MOLGENIS generator we added numerous functions and optimizations, such as filters for the data, viewing data as a ‘matrix’, downloading data as CSV files, enabling programming interaction via R and web services, and so on. The generators ensure that ‘old’ MOLGENIS application variants can benefit from these improvements: when a MOLGENIS instance is re-generated, these improvements are automatically integrated into the new version.
One can think of MOLGENIS’ modeling language as a ‘domain-specific language’ (DSL) that is optimized to efficiently express a particular problem, task or area [18, 19], in this case to compose biosoftware infrastructures. The level of abstraction is raised, so no lengthy, technical or redundant details on how each feature should be implemented in general programming languages have to be given [20, 21]. Examples of other domain-specific languages include R/Splus for statistics, MatLab for mathematics, SQL for databases, HTML for layouting, and now MOLGENIS’ modeling language for biological software infrastructures.
In most cases, knowledge of the DSL is all that is needed to produce a custom MOLGENIS application variant. The domain-specific language was implemented using XML so that model files can be edited using off-the-shelf XML editors. However, you may want to include hand-programmed components into a particular MOLGENIS instance. For example, for the eXtensible Genotype And Phenotype (XGAP) database application of MOLGENIS , we developed a ‘MatrixViewer’ that builds on the generated components, which saved us the work of writing the plug-in from scratch. This requires a model sentence that points to the ‘plug-in’ (allowing it to be seamlessly integrated) as well as hand-programming of the plug-in itself.
To start generating your own MOLGENIS application, you can download a ready-to-use ‘workspace’ from http://www.molgenis.org, which can be edited using the commonly used Eclipse integrated development environment (IDE) tool (http://www.eclipse.org). Extensive manuals are available to help install the Java, MySQL, Tomcat and Eclipse software needed and to learn how to walk through the Eclipse workspace to edit models and generate and run MOLGENIS instances; most new users can complete this part in about three hours. Below we summarize the output you can expect as well as recent experiences from using this toolbox. Detailed examples on how these features can be used to support actual microarray or genetical genomics experiments can be found in [11, 14, 15].
Since the earliest MOLGENIS application , we have successfully evaluated use of the MOLGENIS toolkit to build a wide range of biomedical applications [11–15], ranging from sequencing to proteomics, including:
XGAP: an eXtensible Genotype And Phenotype platform  for systems genetics (GWAS, GWL) to store all kinds of *omics data ranging from genotype to transcript and protein data. XGAP comes with plug-ins to view large data matrices and run processing tools on a cluster. See http://www.xgap.org
Pheno-OM: to integrate any phenotype data from locus-specific annotations to rich biobank cohort reports with the help of the OntoCAT ontology toolkit to create semantic mappings between related data items . See http://www.ebi.ac.uk/microarray-srv/pheno
FINDIS: a mutation database for monogenic diseases belonging to the Finnish disease heritage. See http://www.findis.org/molgenis_findis/
MAGETAB-OM: a microarray experiment data platform based on the MAGE-TAB data format standard to create a local microarray repository that is compatible with the public ArrayExpress and GEO repositories. See http://magetab-om.sourceforge.net/
More MOLGENIS applications can be found at http://www.molgenis.org. Each of these MOLGENIS projects reported major benefits from the short cycle from model to running system to enable quick evaluation (500 lines of model XML replaces 15,000 lines of programming code) and use of the batch loading of data to evaluate how the newly built system works with real data. More often than not, MOLGENIS helped in finding inconsistencies in existing data that would otherwise have gone unnoticed, leading to experimental errors. In our experience, a typical MOLGENIS generator run gives you about 90% of the application that is desired ‘for free’, with the remaining 10% typically filled in using plug-ins that are written by hand. The MOLGENIS toolkit has also been used to extend or replace existing software applications: the ExtractModel tool allows you to generate a MOLGENIS application from an existing database, which can then be run side-by-side with code developed previously, providing the best of both generated and hand-written worlds.
Richness of features
MOLGENIS provides a richness of features not yet provided by other projects: BioMart [10, 24] and InterMine  generate powerful query interfaces for existing data but are not suited for bespoke data management; Omixed  generates programmatic interfaces onto databases, including a security layer, but lacks user interfaces; PEDRO/Pierre  generates data entry and retrieval user interfaces but lacks programmatic interfaces; and general generators such as AndroMDA  and Ruby-on-Rails  require much more programming and configuration efforts compared to tools specific to the biological domain. Turnkey  seems to come close to MOLGENIS, having GUI and SOAP interfaces but lacks auto-generation of R interfaces and file exchange format.
In a recent perspective paper  we evaluated the general benefits and pitfalls of model-driven development, such as the ability to develop infrastructure in short cycles to get the application right, ensuring developers and biologists are thinking along the same lines and increasing quality and functionality for all. We further evaluated applying this method to both microarray and genetical genomics experiments , .
Here we have presented MOLGENIS in detail and reported the results of using this method against a wider range of applications. We conclude that using model-driven methods enables bioinformaticians to build biological software infrastructures faster than before, with the additional benefit of much easier sharing of models, data and components. Much less time is spent on customizing and gluing together individual components. The result is of higher quality because fewer incidental errors creep into the applications as a consequence of the automated procedures; best practices are applied instead of reinvented. And you do not need heavy-weight technology to implement a model-driven generator: simple text-based templates suffice to create biological software generators.
As a next step we want to expand the MOLGENIS toolkit to also generate data processing tools, including user friendly interaction, building on other ‘model-driven bioinformatics’ projects in this area, such as Taverna  to model/execute analysis workflows and Galaxy  to generate user interfaces for processing tools. We hope that many bioinformaticians will enforce our open source efforts and share their best models, plug-ins and generators at http://www.molgenis.org, so that, in time, every biologist may find a MOLGENIS variant that suits his/her needs.
Availability and requirements
Project name: MOLGENIS
Project homepage: http://www.molgenis.org
Operating systems: Windows, Linux, Apple
Programming language: Java JRE 1.5 or higher
Other requirements: MySQL or Postgresql, Tomcat or other J2EE container
License: GNU Lesses General Public License version 3 (GNU LGPLv3)
Any restrictions to use by non-academics: No
application programming interface
collaborative computing project for NMR
comma separated values
experimental design of genetical genomics software
principle of don’t repeat yourself
domain specific language
European Bioinformatics Institute
finish disease database
EU project to unify human and model organism genetic variation databases
generic model organism database project
graphical user interface
genome wide association study
genome wide linkage analysis
human genome variation database of genotype-to-phenotype information
hypertext markup language
integrated development environment
Java Software Archive
lesser general public license
microarray gene expression tab delimited file format
molecular genetics information systems toolkit
Nordic Control Cohort Database with harmonized SNP information from Denmark, Estonia, Finland and Sweden
Open Bioinformatics Foundation
ontology common API toolkit
patterns for enterprise application architecture
quantitative trait locus
resource description format
representative state transfer web services
single nucleotide polymorphism
simple object access protocol
structured query language
uniform data modeling language
web application archive file
extensible markup language
extensible genotype and phenotype software platform.
The authors thank Jackie Senior for editing this manuscript and PANACEA (funded by the European Commission FP7 contract 222936), NWO (Rubicon Grant 825.09.008), the Netherlands Bioinformatics Center (NBIC), BBMRI-NL (funded by the Netherlands Organization for Scientific Research, NWO), CASIMIR (funded by the European Commission under contract number LSHG-CT-2006-037811), GEN2PHEN (funded by the European Commission FP7-HEALTH contract 200754) and the EMBL for financial support.
This article has been published as part of BMC Bioinformatics Volume 11 Supplement 12, 2010: Proceedings of the 11th Annual Bioinformatics Open Source Conference (BOSC) 2010. The full contents of the supplement are available online at http://www.biomedcentral.com/1471-2105/11?issue=S12.
- Swertz MA, Jansen RC: Beyond standardization: dynamic software infrastructures for systems biology. Nat Rev Genet 2007, 8: 235–243. 10.1038/nrg2048View ArticlePubMed
- Stein LD: Towards a cyberinfrastructure for the biological sciences: progress, visions and challenges. Nat Rev Genet 2008, 9: 678–688. 10.1038/nrg2414View ArticlePubMed
- Thorisson GA, Muilu J, Brookes AJ: Genotype-phenotype databases: challenges and solutions for the post-genomic era. Nat Rev Genet 2009, 10: 9–18. 10.1038/nrg2483View ArticlePubMed
- Generic Model Organism Database (GMOD)[http://gmod.org]
- Open Bioinformatics Foundation (OBF)[http://www.open-bio.org]
- Oinn T, Addis M, Ferris J, Marvin D, Senger M, Greenwood M, Carver T, Glover K, Pocock MR, Wipat A, Li P: Taverna: a tool for the composition and enactment of bioinformatics workflows. Bioinformatics 2004, 20: 3045–3054. 10.1093/bioinformatics/bth361View ArticlePubMed
- Goecks J, Nekrutenko A, Taylor J: Galaxy: a comprehensive approach for supporting accessible, reproducible, and transparent computational research in the life sciences. Genome Biol 2010, 11: R86. 10.1186/gb-2010-11-8-r86PubMed CentralView ArticlePubMed
- Fogh RH, Boucher W, Vranken WF, Pajon A, Stevens TJ, Bhat TN, Westbrook J, Ionides JMC, Laue ED: A framework for scientific data modeling and automated software development. Bioinformatics 2005, 21: 1678–1684. 10.1093/bioinformatics/bti234View ArticlePubMed
- Swertz MA, de Brock EO, van Hijum SAFT, de Jong A, Buist G, Baerends RJS, Kok J, Kuipers OP, Jansen RC: Molecular Genetics Information System (MOLGENIS): alternatives in developing local experimental genomics databases. Bioinformatics 2004, 20: 2075–2083. 10.1093/bioinformatics/bth206View ArticlePubMed
- MOLGENIS: a open source software toolkit to rapidly generate bespoke biosoftware web applications[http://www.molgenis.org]
- Swertz MA, Velde KJ, Tesson BM, Scheltema RA, Arends D, Vera G, Alberts R, Dijkstra M, Schofield P, Schughart K, Hancock JM, Smedley D, Wolstencroft K, Goble C, de Brock EO, Jones AR, Parkinson HE, Jansen RC: XGAP: a uniform and extensible data model and software platform for genotype and phenotype experiments. Genome Biol 2010, 11: R27. 10.1186/1465-6906-11-S1-P27PubMed CentralView ArticlePubMed
- Thorisson GA, Lancaster O, Free RC, Hastings RK, Sarmah P, Dash D, Brahmachari SK, Brookes AJ: HGVbaseG2P: a central genetic association database. Nucleic Acids Res 2009, 37: D797–802. 10.1093/nar/gkn748PubMed CentralView ArticlePubMed
- Leu M, Humphreys K, Surakka I, Rehnberg E, Muilu J, Rosenstrom P, Almgren P, Jaaskelainen J, Lifton RP, Kyvik KO, Kaprio J, Pedersen NL, Palotie A, Hall P, Gronberg H, Groop L, Peltonen L, Palmgren J, Ripatti S: NordicDB: a Nordic pool and portal for genome-wide control data. Eur J Hum Genet 2010.
- Li Y, Swertz MA, Vera G, Fu J, Breitling R, Jansen RC: designGG: an R-package and web tool for the optimal design of genetical genomics experiments. BMC Bioinformatics 2009, 10: 188. 10.1186/1471-2105-10-188PubMed CentralView ArticlePubMed
- Smedley D, Swertz MA, Wolstencroft K, Proctor G, Zouberakis M, Bard J, Hancock JM, Schofield P: Solutions for data integration in functional genomics: a critical assessment and case study. Brief Bioinform 2008, 9: 532–544. 10.1093/bib/bbn040View ArticlePubMed
- Neighbors J: Software construction using components. Irvine: PhD Thesis, University of California 1981.
- Hunt A, Thomas D: The pragmatic programmer: from Journeyman to Master. Addison-Wesley; 1999.
- Bentley J: Little languages. Communications of the ACM 1986, 29: 711–721. 10.1145/6424.315691View Article
- van Deursen A, Klint P: Little languages, little maintenance? Journal of software maintenance 1998, 10: 17.
- Greenfield J, Short K, Cook S, Kent S: Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools. John Wiley & Sons; 2004.
- Brooks F: The Mythical Man Month: Essays on Software Engineering, 20th anniversary edition. Addison-Wesley; 1995.
- Fowler M: Patterns of Enterprise Application Architecture. Addison-Wesley; 2002.
- OntoCAT: ontology common API (application programming interface) toolkit[http://ontocat.sourceforge.net]
- Smedley D, Haider S, Ballester B, Holland R, London D, Thorisson G, Kasprzyk A: BioMart--biological queries made easy. BMC Genomics 2009, 10: 22. 10.1186/1471-2164-10-22PubMed CentralView ArticlePubMed
- Lyne R, Smith R, Rutherford K, Wakeling M, Varley A, Guillier F, Janssens H, Ji W, McLaren P, North P, Rana D, Riley T, Sullivan J, Watkins X, Woodbridge M, Lilley K, Russell S, Ashburner M, Mizuguchi K, Micklem G: FlyMine: an integrated database for Drosophila and Anopheles genomics. Genome Biol 2007, 8: R129. 10.1186/gb-2007-8-7-r129PubMed CentralView ArticlePubMed
- Omixed: customisable storage system for scientific data[http://www.omixed.org/]
- Jameson D, Garwood K, Garwood C, Booth T, Alper P, Oliver SG, Paton NW: Data capture in bioinformatics: requirements and experiences with Pedro. BMC Bioinformatics 2008, 9: 183. 10.1186/1471-2105-9-183PubMed CentralView ArticlePubMed
- AndroMDA: extensible generator framework that adheres to the Model Driven Architecture (MDA) paradigm[http://www.andromda.org/]
- Ruby on Rails: open source web framework in the Ruby language[http://www.rubyonrails.org]
- O'Connor BD, Day A, Cain S, Arnaiz O, Sperling L, Stein LD: GMODWeb: a web framework for the Generic Model Organism Database. Genome Biol 2008, 9: R102. 10.1186/gb-2008-9-6-r102PubMed CentralView ArticlePubMed
This article is published under license to BioMed Central Ltd. This is an open access article distributed under the terms of the Creative Commons Attribution License (http://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.