16 releases (10 breaking)
0.11.0 | Sep 10, 2024 |
---|---|
0.10.0 | Dec 5, 2022 |
0.9.0 | Oct 13, 2022 |
0.8.3 | Mar 30, 2022 |
0.1.2 | Mar 31, 2019 |
#106 in Science
Used in 2 crates
19KB
373 lines
obofoundry.rs
Structures to deserialize OBO Foundry listings into.
Usage
Add the obofoundry
crate to the Cargo.toml
manifest, as well as either
serde_yaml
or serde_json
:
[dependencies]
obofoundry = "0.11"
serde_yaml = "0.8"
Then use the serde
framework to load the listings:
extern crate obofoundry;
extern crate serde_yaml;
let yaml_data = include_str!("...");
let foundry: obofoundry::Foundry = serde_yaml::from_str(&yml).unwrap();
It's also possible to use an HTTP library to load the listings from the OBO Foundry
website directly, for instance using ureq
:
extern crate obofoundry;
extern crate ureq;
extern crate serde_yaml;
let url = "http://www.obofoundry.org/registry/ontologies.yml";
let res = ureq::get(url).call();
let reader = res.unwrap().into_reader();
let foundry: obofoundry::Foundry = serde_yaml::from_reader(reader).unwrap();
Example
Download the ontologies.yml
table from the OBO Foundry and use it to
extract all PURLs to ontologies in the OBO format:
extern crate obofoundry;
extern crate ureq;
extern crate serde_yaml;
use std::io::Read;
const URL: &'static str = "http://www.obofoundry.org/registry/ontologies.yml";
fn main() {
let res = ureq::get(URL).call();
let reader = res.unwrap().into_reader();
let foundry: obofoundry::Foundry = serde_yaml::from_reader(reader).unwrap();
for ontology in &foundry.ontologies {
for product in &ontology.products {
if product.id.ends_with(".obo") {
println!("{} - {}", product.id, product.ontology_purl)
}
}
}
}
See the online documentation at docs.rs
for more examples.
Changelog
This project adheres to Semantic Versioning and provides a changelog in the Keep a Changelog format.
License
This library is provided under the open-source MIT license.
Dependencies
~2–3MB
~55K SLoC