Expand description
§fastobo 
Faultless AST for Open Biomedical Ontologies.
§Overview
This library provides a mostly-complete implementation of the OBO flat file format 1.4.
- Data structures -
fastoboprovides 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. - Parsing - The parser is implemented using pest,
and is reexported from the
fastobo-syntaxcrate. Most structures implement theFromPairtrait which allows to build a data structure from a stream of pest tokens. - Errors - All functions in that crate that return a
Resultwill always use theErrorstruct defined in theerrormodule. Errors reported by pest are very meaningful, and can give the exact location of a syntax error encountered by the parser. - Semantics - This library exports specific methods that can be used
to edit an OBO syntax tree with the semantics expected in the format
guide: mapping identifiers to URLs, adding default namespaces, or
expanding entity frames using
treat-xrefsmacros.
Warning: this project adheres to Semantic Versioning, but the API is likely to change a lot before the release of a stable 1.0.
§Features
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 thememchrlibrary to improve parser speed when searching for a particular character in a buffer.threading- Use a multi-threaded parser (additionally depending oncrossbeam-channel), which can greatly improve the parser speed if parsing is CPU-bound.smartstring- Use thesmartstringlibrary to reduce heap allocation for identifiers and string data.
§Usage
Add fastobo to the [dependencies] sections of your Cargo.toml manifest:
[dependencies]
fastobo = "0.15.5"The top-level fastobo module provides several functions to parse an OboDoc.
Use fastobo::from_reader to load an OBO document from a
BufRead implementor
(use std::io::BufReader
if needed):
extern crate fastobo;
extern crate ureq;
fn main() {
let mut response = ureq::get("http://purl.obolibrary.org/obo/ms.obo").call().unwrap();
let mut reader = std::io::BufReader::new(response.body_mut().as_reader());
match fastobo::from_reader(&mut reader) {
Ok(doc) => println!("Number of MS entities: {}", doc.entities().len()),
Err(e) => panic!("Could not parse the Mass-Spec Ontology: {}", e),
}
}§See also
fastobo-syntax: Standalonepestparser for the OBO format version 1.4.fastobo-graphs: Data model andserdeimplementation of the OBO graphs specification, with conversion traits from and to OBO.fastobo-py: Idiomatic Python bindings to this crate.fastobo-validator: Standalone CLI to validate OBO files against the specification.horned-functional: Parser for OWL2 Functional Syntax (can be used to parseowl-axiomsclauses).
§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)
Modules§
- ast
- Owned syntax tree for the OBO format version 1.4.
- error
ErrorandResulttypes for this crate.- parser
- Parser and parsing-related traits for the OBO format.
- semantics
- Selection of useful traits that exceed the syntactic scope.
- syntax
- Definition of the OBO syntax re-exported from the
fastobo-syntaxcrate. - visit
- Visitor traits for the OBO syntax tree.
Functions§
- from_
file - Parse an OBO document from a file on the local filesystem.
- from_
reader - Parse an OBO document from a
BufReadimplementor. - from_
str - Parse an OBO document from a string.
- to_file
- Write an OBO document to a file on the local filesystem.
- to_
writer - Write an OBO document to a
Writeimplementor.