fastobo-graphs

Crates.iofastobo-graphs
lib.rsfastobo-graphs
version0.4.8
sourcesrc
created_at2019-08-06 21:33:44.602167
updated_at2022-12-05 17:55:33.70044
descriptionOBO Graphs data model, decoder and encoder in Rust.
homepagehttps://github.com/fastobo/fastobo-graphs
repositoryhttps://github.com/fastobo/fastobo-graphs
max_upload_size
id154683
size116,079
Martin Larralde (althonos)

documentation

README

fastobo-graphs Star me

OBO Graphs decoder and encoder in Rust.

Actions Codecov License Source Crate Documentation Changelog GitHub issues DOI

Overview

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 an std::error::Error implementation.
  • Conversion traits - OBO Graphs can be (partially) converted to and from plain OBO documents, using the FromGraph and IntoGraph traits.

Usage

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),
    }
}

Features

The following feature is enabled by default, but can be disabled if needed:

Feedback

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.

About

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)

Commit count: 126

cargo fmt