/atlas

Expression Atlas

Primary LanguageJavaApache License 2.0Apache-2.0

Introduction

Expression Atlas is an open science resource that gives users a powerful way to find information about gene and protein expression across species and biological conditions such as different tissues, cell types, developmental stages and diseases among others. Expression Atlas aims to help answering questions such as ‘where is a certain gene expressed?’ or ‘how does its expression change in a disease?’. It provides gene expression results on more than 3,000 experiments (microarray and RNA-sequencing) from over 30 different organisms. Expression profiles of tissues from Human Protein Atlas, GTEx and FANTOM5, and of cancer cell lines from ENCODE, CCLE and Genentech projects can be explored in Expression Atlas. All data are manually curated, annotated to ontology terms allowing for much richer queries and re-analysed using standardised methods.

For more details, please read the Help section or the Frequently Asked Questions.

Architecture overview

Expression Atlas is made up of a collection of web services, online resources and software to explore gene expression patterns associated or in response to experimental conditions. At its core, it is a Java EE 7 application built with several components from the Spring framework. It specifically depends on modules from the Data Access/Integration, Web and Core Container groups. If in doubt, refer to the <dependencies> section in the parent POM file of the project.

All the code, resources and static assets are packaged with Maven using the WAR plugin; the end result is a file with extension .war which is actually a zipped archive that follows the conventions and directory layout of Java EE applications. This WAR file is later then mounted by Apache Tomcat. Other servlet containers might work although none other but Tomcat 7 have been tested.

Code layout

Code is split into three modules: base, gxa and sc. The base module contains mostly business logic that is not strictly dependent on typical web application components (e.g. Spring MVC, Tiles, etc.). Classes that represent the model of the problem domain, an API to load/delete/update experiments, utility caches and services to access Solr and DB transactions are contained here. The gxa module depends on base and is the web layer of Expression Atlas. Controllers, static assets (JSPs, CSS files, HTML documents, JS files) plus all the Spring servlet configuration and Java EE web context XML files are in this directory. Finally, sc contains the web layer of Single Cell Expression Atlas. Go to its README file to know more.

We use the React JavaScript library and its ecosystem of components to build rich and single-page applications. Most of the UI code is organised as NPM packages in the javascript directory. The dependencies are, as usual, given through package.json files. Some of them have been moved to their own repositories; see the section NPM packages below.

The rest of the JavaScript code, third party or otherwise, may be found under the js directory. Be aware that we provide two polyfills for legacy browsers.

The remaining UI code are JSP templates that can be found under the jsp directory. The views are managed with the Tiles framework. If you want to have a look at the detailed XML definitions, please go to the tiles directory.

NPM packages

Back end services

The project relies on a PostgreSQL 9 database and two Solr 6 cores for both data storage and search. Migrations and schemas can be found at db_updates and solr, respectively.