OBO Graphs decoder and encoder in Rust.
This library provides an implementation of the OBO Graphs schema specified by the Gene Ontology to provide developers with a data format easier to use than plain ontology files in OBO or OWL format.
- Data structures - the complete OBO Graphs schema is reproduced into Rust
data structures with public fields for direct access to the graphs nodes. See
fastobo_graphs::model
to see the comprehensive list of data structures. - I/O - structures use
serde
to implement serialization and deserialization from both YAML and JSON. - Errors - fallible operations can return an
Error
with informative messages as well as anstd::error::Error
implementation. - Conversion traits - OBO Graphs can be (partially) converted to and from
plain OBO documents, using the
FromGraph
andIntoGraph
traits.
Add fastobo_graphs
to the [dependencies]
sections of your Cargo.toml
manifest:
[dependencies]
fastobo-graphs = "0.4"
Then use one of the top-level functions in fastobo_graphs
to load a JSON or
YAML serialized OBO Graph:
extern crate fastobo_graphs;
extern crate ureq;
fn main() {
let response = ureq::get("http://purl.obolibrary.org/obo/zeco.json").call();
match fastobo_graphs::from_reader(response.unwrap().into_reader()) {
Ok(doc) => println!("Number of ZECO nodes: {}", doc.graphs[0].nodes.len()),
Err(e) => panic!("Could not parse ZECO OBO Graph: {}", e),
}
}
The following feature is enabled by default, but can be disabled if needed:
- obo - compile
FromGraph
andIntoGraph
traits that can be used to convert between aGraphDocument
and anOboDoc
.
Found a bug ? Have an enhancement request ? Head over to the GitHub issue tracker of the project if you need to report or ask something. If you are filling in on a bug, please include as much information as you can about the issue, and try to recreate the same bug in a simple, easily reproducible situation.
This project was developed by Martin Larralde as part of a Master's Degree internship in the BBOP team of the Lawrence Berkeley National Laboratory, under the supervision of Chris Mungall. Cite this project as:
Larralde M. Developing Python and Rust libraries to improve the ontology ecosystem [version 1; not peer reviewed]. F1000Research 2019, 8(ISCB Comm J):1500 (poster) (https://doi.org/10.7490/f1000research.1117405.1)