fastobo Faultless AST for Open Biomedical Ontologies.
This library provides a mostly-complete implementation of the OBO flat file format 1.4.
fastobo provides a complete owned AST for the
OBO language, with constructors and covenience traits where applicable.
There is a plan to provide borrowed data structures as well, to be able
to build a view of an OBO document from borrowed data.fastobo-syntax
crate. Most structures implement the FromPair
trait which allows to build a data structure from a stream of pest tokens.Result will
always use the Error struct defined in the error module. Errors
reported by pest are very meaningful, and can give the exact location
of a syntax error encountered by the parser.treat-xrefs macros.Warning: this project adheres to Semantic Versioning, but the API is likely to change a lot before the release of a stable 1.0.
All the following features are enabled by default, but can be disabled and
cherry-picked using the default-features = false option in the Cargo.toml
manifest of your project:
memchr - Use the memchr library to improve parser speed when
searching for a particular character in a buffer.semantics - Compile additional methods to check the validity of an OBO
document on the semantic level, and implementation of macros to transform OBO
documents in place.Add fastobo to the [dependencies] sections of your Cargo.toml manifest:
toml
[dependencies]
fastobo = "0.3.0"
The OboDoc struct acts as the root of the AST. Use OboDoc::from_stream to load an OBO document
from a BufRead implementor
(use std::io::BufReader if needed):
```rust extern crate fastobo; extern crate ureq;
fn main() { let response = ureq::get("http://purl.obolibrary.org/obo/ms.obo").call(); let mut reader = std::io::BufReader::new(response.into_reader());
match fastobo::ast::OboDoc::from_stream(&mut reader) {
Ok(doc) => println!("Number of MS entities: {}", doc.entities().len()),
Err(e) => panic!("Could not parse the Mass-Spec Ontology: {}", e),
}
} ```
fastobo-syntax: Standalone pest parser for the OBO
format version 1.4.fastobo-py: Idiomatic Python bindings to this crate.fastobo-validator: Standalone CLI to validate OBO files against the specification.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 is currently being 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.