11 个版本 (6 个重大更新)
0.7.0 | 2023 年 10 月 18 日 |
---|---|
0.6.0 | 2022 年 10 月 17 日 |
0.5.2 | 2022 年 2 月 28 日 |
0.5.1 | 2022 年 1 月 11 日 |
0.1.1 | 2020 年 1 月 15 日 |
#95 in 生物学
195KB
4.5K SLoC
uniprot.rs
Rust 数据结构和解析器,用于 UniprotKB 数据库。
🔌 使用方法
可以使用 uniprot::uniprot::parse
函数来获取 UniprotKB 数据库 XML 格式条目的迭代器(瑞士蛋白或 TrEMBL)。也可以分别使用 uniprot::uniref::parse
和 uniprot::uniparc::parse
解析 UniRef 和 UniParc 的 XML 文件。
extern crate uniprot;
let f = std::fs::File::open("tests/uniprot.xml")
.map(std::io::BufReader::new)
.unwrap();
for r in uniprot::uniprot::parse(f) {
let entry = r.unwrap();
// ... process the Uniprot entry ...
}
任何 BufRead
实现者都可以用作输入,因此可以使用如 reqwest
的 HTTP 库或使用 ftp
库直接从其 在线位置 流式传输数据库文件。
XML 格式对于 EBI REST API 和 UniProt API 是相同的,因此此库也可以用于读取单个条目或更大的查询。例如,您可以使用关键词在 UniProt 中进行搜索并检索所有匹配的条目
extern crate ureq;
extern crate libflate;
extern crate uniprot;
let query = "bacteriorhodopsin";
let query_url = format!("https://www.uniprot.org/uniprot/?query={}&format=xml&compress=yes", query);
let req = ureq::get(&query_url).set("Accept", "application/xml");
let reader = libflate::gzip::Decoder::new(req.call().unwrap().into_reader()).unwrap();
for r in uniprot::uniprot::parse(std::io::BufReader::new(reader)) {
let entry = r.unwrap();
// ... process the Uniprot entry ...
}
有关更多示例和有关不同功能的详细信息,请参阅 docs.rs
上的在线文档。
📝 功能
threading
(默认启用): 编译多线程解析器,处理 XML 文件时速度提高 90%。url-links
(默认禁用): 将OnlineInformation
中的links
暴露为一个url::Url
。
🔍 参见
如果你是生物信息学家同时也是Rust程序员,你可能对这些其他库感兴趣
pubchem.rs
: PubChem API的Rust数据结构和API客户端。obofoundry.rs
: OBO Foundry的Rust数据结构。fastobo
: Open生物医学本体论的Rust解析器和抽象语法树。proteinogenic
: 将蛋白质序列作为SMILES字符串生成化学结构。
📋 更新日志
本项目遵循语义版本控制,并提供一个遵循Keep a Changelog格式的更新日志。
📜 许可证
此库在开源MIT许可证下提供。
本项目与UniProt联盟无任何关联、赞助或任何形式的认可。它由Martin Larralde在其于欧洲分子生物学实验室的Zeller团队攻读博士学位期间开发。
依赖项
~3MB
~51K SLoC