GemmaHeader3

System architecture


The Gemma data model (outlined in the figure) encompasses gene expression data, microarray platforms, analysis results, security and auditing, sequence, genes and genomes. The Unified Modeling Language (UML) diagrams for Gemma are available through the Gemma web site. The basis for the Gemma data model was the MAGE object model, though extensive modifications and omissions of features in MAGE-OM were made in the interest of performance or specific features Gemma required; in addition we were influenced by other object models including the Functional Genomics Experiment Object Model (FuGE). The model was created and is maintained using computer-aided software engineering (CASE; MagicDraw, No Magic Inc.).

A full description of the data model is available based on the UML.

An outline of the structure of the Gemma system is given above. Gemma has many dependencies on third-party packages, all of which are open source or otherwise compatible with the Gemma open source license. We summarize these dependencies here. Gemma is primarily implemented in Java. A good deal of code and configuration information is automatically generated from the UML using AndroMDA (galaxy.andromda.org).,Among the application technologies Gemma relies on are Spring (application framework; springframework.org), Hibernate (object-relational mapping; hibernate.org), Lucene (search; lucene.apache.org), ExtJS (JavaScript framework; extjs.com) and DWR (AJAX framework; getahead.org). User authentication and authorization is managed through Acegi (now knowns as Spring Security). Ontologies are managed and searched using Jena and LARQ (jena.sourceforge.net). The database backend of Gemma is MySQL (version 5+; mysql.com), because nearly all queries are implemented in the Hibernate Query Language (HQL) and the use of triggers or other platform-specific features is limited, transitioning to another RDBMS would not be especially difficult. Gemma can optionally use a distributed computing environment for computationally intensive procedures (JavaSpaces, Sun Microsystems). Development of Gemma was conducted primarily in the Eclipse integrated development environment (on Microsoft Windows and Linux; eclipse.org), with the project management assistance of Maven (build manager; maven.apache.org), CVS (version control), Bamboo(continuous builds; Atlassian, Inc.), Confluence wiki (Atlassian, Inc.) and Bugzilla (bug tracker; bugzilla.org).

Gemma includes an extensive suite of over 1000 automated tests, with an overall test coverage of ~40% of the code. Tests are focused on critical areas such as statistical analyses, security, and data integrity. The web browser tools are tested in multiple browser on multiple platforms, including Firefox and Chrome (MacOSX, Windows 7 and Ubuntu); Internet Explorer (Windows; versions 9+) and Safari (MacOSX, Windows 7).