Bio4j provides a completely new and powerful framework for protein related information querying and management. The use of a graph-based data model makes possible to store and query data in a way that semantically represents its own structure. On the contrary, traditional relational models and databases must flatten the data they represent into tables, creating artificial ids in order to connect the different tuples; which can in some cases eventually lead to domain models that have almost nothing to do with the actual structure of data.
Project structure and overview
Bio4j can look a bit intimidating at first, with all those repositories with kind of similar names; here you have a guided tour around:
In this repository bio4j/bio4j you will find the generic Bio4j model and API. Entities, relationships and their properties are modeled using a typed property graph model. For example, there are vertex types for
GoTerm, and a
GoAnnotation edge type going from
GoTerm. This graph schema is separated into different graphs, corresponding to the different data sources (
UniRef, ...) and connections between them (
The API, based on bio4j/angulillos, lets you write generic typed traversals over this graph schema:
protein.uniref50Member_outV() .map( UniRef50Cluster::uniRef50Member_inV ) .map( prts -> prts.map( Protein::goAnnotation_outV ) );
which can later be executed on a particular backend. Generic data import code is also here, which can be used to load the data using any implementation of angulillos.
You can think of bio4j/angulillos as a strongly typed version of the property graph model. You can describe graph schemas and write generic traversals over them which are guranteed to be well-typed in that for example
- you cannot retrieve the outgoing edges of and edge
- and you can get the tweets that a user tweeted, but not the users that a tweet follows!
In bio4j/bio4j-titan you will find a Titan-based Bio4j distribution. This is the the default standard distribution, and we also provide through AWS S3 the database binaries with all data already loaded. Go there if you want to stop reading and use Bio4j now!
Community and contact
- Gitter chat The easiest and fastest way to contact developers and ask for help
- bio4j-user Google group / mailing list
- @bio4j Twitter
- Bio4j LinkedIn
Bio4j is an open source platform released under the AGPLv3 license.