Crates.io | fastobo |
lib.rs | fastobo |
version | 0.15.2 |
source | src |
created_at | 2019-05-09 01:43:30.744523 |
updated_at | 2023-05-03 23:47:45.351072 |
description | Faultless AST for Open Biomedical Ontologies. |
homepage | https://github.com/fastobo/fastobo |
repository | https://github.com/fastobo/fastobo |
max_upload_size | |
id | 132933 |
size | 1,599,242 |
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.threading
- Use a multi-threaded parser (additionally depending on
crossbeam-channel
), which can greatly
improve the parser speed if parsing is CPU-bound.smartstring
- Use the smartstring
library to reduce heap allocation for identifiers and string data.Add fastobo
to the [dependencies]
sections of your Cargo.toml
manifest:
[dependencies]
fastobo = "0.15.2"
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 response = ureq::get("http://purl.obolibrary.org/obo/ms.obo").call();
let mut reader = std::io::BufReader::new(response.unwrap().into_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),
}
}
fastobo-syntax
: Standalone pest
parser
for the OBO format version 1.4.
fastobo-graphs
: Data model and serde
implementation 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 parse owl-axioms
clauses).
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)