caBIO Technical User Scenarios
caBIO provides the IT developer community with access to a variety of integrated biomedical data to address molecular annotation needs. Example high-level user scenarios follow, demonstrating potential uses of caBIO.
A bioinformatics engineer is developing an application that allows researchers to find all of the diseases associated with a specific gene and obtain a list of agents (drugs) that target the gene. The bioinformatics engineer uses caBIO to retrieve a list of diseases and agents associated with a gene.
A translational research system provides access to the results of a microarray experiment. The system needs to be extended to display annotations for each microarray reporter used in an experiment. The development team extends the system by leveraging caBIO to obtain a list of genes for each microarray reporter by microarray and reporter name.
A gene expression analysis tool allows users to analyze gene expression data. The tool needs to be extended to display annotations associated with a specific gene in a cellular pathway. The development team extends the tool by leveraging caBIO to retrieve detailed marker annotations for a given gene symbol.
caBIO Programmatic Access
caBIO data can be accessed leveraging a variety of Application Programming Interfaces (APIs) including a Java API, Web Services API, RESTful Services, and caBIG® Grid Services. caBIO also provides a number of utilities to search for and manipulate data programmatically.
Java-based clients communicate with caBIO via the Java API which contains the domain objects provided by the caBIO cabioXX-beans.jar file. Developers can download the caBIO client API and directly use its packages in their programs. Each Java bean object class in the caBIO domain packages acts as its own search criteria object and provides methods for the retrieval of attributes and related domain objects.
Web Services API
Non-Java based applications can communicate with caBIO via web services using the SOAP protocol. Currently, caBIO has a Python API which makes use of the web service.
Also called the REST (Representational State Transfer) API, this interface allows users to query over HTTP and receive objects as XML.
caBIO Home provides a convenient way to search and retrieve data via HTTP queries. By default, it returns HTML objects, but the generated query can be edited to return the XML object by simply changing the "...//GetHTML?query=..." to "...//GetXML?query=..." in caBIO Home Page results.
All caBIO objects can be transformed into XML, and XSL/XSLT is used to present data in documents, web pages or other interfaces.
See the page caBIO REST API with Ajax for information on using the REST API for quick access to caBIO data from your own web application.
caBIO Grid Service
caBIO Utilities APIs
caBIO provides the following utility APIs.
- XML Utility - caBIO includes a utility class that provides the capability of converting caBIO domain objects between native Java objects and XML serializations. This allows applications using the caBIO API to quickly persist any caBIO domain object as an XML representation to share or store.
- Manipulating Scalable Vector Graphics (SVG) Diagrams - caBIO provides a utility class called SVGManipulator for manipulating SVG diagrams of pathways. BioCarta and its Proteomic Pathway Project (P3) provide detailed graphical renderings of pathway information. NCI's CMAP website captures pathway information from BioCarta, and transforms the downloaded image data into SVG representations that support interactive manipulation of the online images. An SVG Viewer enables the display of SVG diagrams.
- Utilities for Text Search Manipulation - The caBIO API provides a full text search (Google™-like search) capability known as the FreestyleLM (Freestyle Lexical Mine). The FreestyleLM search component consists of interfaces and APIs for conducting horizontal searches across caBIO domain objects. For example, when searching for "brca1", the FreestyleLM search capability will return any object that makes mention of the "brca1" gene in its attributes, such as Genes, Proteins, and Pathways.
- Genome Range Queries - The Range Query API provides an alternative way to search for genomic features on a chromosome, based on the physical locations. The API is capable of performing arbitrary range searches on any given chromosome (absolute search), or range searches around a feature of interest (relative search).
- Array Annotation API - This client-side convenience API is intended for users of the Microarray annotations in caBIO. The API simplifies access to bulk microarray annotations such as reporters, genes, and SNPs.