libAnnotationSBML
|
| libAnnotationSBML Language: Java |
| Summary | Library for exploiting MIRIAM-compliant annotations in SBML. |
| Author(s) | Neil Swainston (neil.swainston AT manchester.ac.uk) |
| Version | |
| Needs | libSBML version 4 |
| Link | mcisb.sourceforge.net |
Description
This is an ever-growing collection of classes that read and write MIRIAM-compliant SBML annotations. Over time, they may actually crystallise into a number of useful applications. However, the point of them isn't the applications that exist currently but the ones that can be built with them in future.
Some of the applications under development were explained at the biomodels.net meeting in Cambridge in March 2009. The associated presentation is available at slideshare.
An application note has been published in Bioinformatics.
libAnnotationSBML: a library for exploiting SBML annotations. Swainston N, Mendes P. Bioinformatics (2009) 25(17):2292-2293.
Installation instructions
- Install libSBML 4 if you have not already done so.
- Find a location in your file system where you want to copy the files.
- Copy the SVN link and use it in your SVN client to check out a copy of the files.
- The associated code will compile if all of the jars in the
libdirectory ANDsbmlj.jarare in the classpath.
Usage
An example of writing and reading annotations using Species would be as follows.
However, the SbmlUtils class works on any Sbase.
import java.util.*;
import org.sbml.libsbml.*;
import org.mcisb.ontology.*;
import org.mcisb.ontology.chebi.*;
import org.mcisb.sbml.*;
/**
*
* @author Neil Swainston
*/
public class LibAnnotationSBMLExample
{
/**
*
*/
static
{
System.loadLibrary( "sbmlj" );
}
/**
*
* @param args
* @throws Exception
*/
public static void main( String[] args ) throws Exception
{
// Create an SBML Species.
Species species = new Species( 2, 4 );
species.setId( "id1" );
// Use the OntologyUtils class to generate a OntologyTerm representing CHEBI:15377.
OntologyTerm chebiTerm = OntologyUtils.getInstance().getOntologyTerm( Ontology.CHEBI, "CHEBI:15377" );
// Use the SbmlUtils class to add the OntologyTerm to the Species.
SbmlUtils sbmlUtils = new SbmlUtils();
sbmlUtils.addOntologyTerm( species, chebiTerm, libsbmlConstants.BIOLOGICAL_QUALIFIER, libsbmlConstants.BQB_IS );
// Print the now annotated Species out to screen.
System.out.println( species.toSBML() );
// Read the OntologyTerms associated with a species.
// The terms are returned as a Map of OntologyTerms to predicates.
Map<OntologyTerm,int[]> ontologyTermToPredicates = sbmlUtils.getOntologyTerms( species );
for( Map.Entry<OntologyTerm,int[]> entry : ontologyTermToPredicates.entrySet() )
{
OntologyTerm currentOntologyTerm = entry.getKey();
int[] predicates = entry.getValue();
// Uses ChEBI webservice to determine that CHEBI:15377 is 'water'.
System.out.println( "Name: " + currentOntologyTerm.getName() );
// Uses ChEBI webservice to determine that water's formula is H2O. No kidding!!
System.out.println( "Formula: " + ( (ChebiTerm)currentOntologyTerm ).getFormula() );
System.out.println( predicates[ 0 ] ); // libsbmlConstants.BIOLOGICAL_QUALIFIER
System.out.println( predicates[ 1 ] ); // libsbmlConstants.BQB_IS
}
}
}
Known problems/issues
Continually in development, so realistically, one or two. But hopefully not many.
Licensing terms and distribution
This software is released under the terms of the Academic Free License ("AFL") v3.0.


