#xml-parser #parser #xml-format #uniref #swissprot #uniprotkb #trembl

uniprot

Rust 数据结构和解析器,用于 Uniprot 数据库

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 生物学

MIT 许可证

195KB
4.5K SLoC

uniprot.rs Star me

Rust 数据结构和解析器,用于 UniprotKB 数据库

Actions Codecov License Source Crate Documentation Changelog GitHub issues

🔌 使用方法

可以使用 uniprot::uniprot::parse 函数来获取 UniprotKB 数据库 XML 格式条目的迭代器(瑞士蛋白或 TrEMBL)。也可以分别使用 uniprot::uniref::parseuniprot::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 上的在线文档。

📝 功能

🔍 参见

如果你是生物信息学家同时也是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