7个版本
0.0.26 | 2024年5月3日 |
---|---|
0.0.25 | 2024年3月19日 |
0.0.22 | 2024年2月27日 |
0.0.1 | 2023年11月7日 |
#57 在 生物学
每月下载量 756
77KB
1.5K SLoC
Ebiotic
Ebiotic提供了一些流行生物信息学Web服务的轻量级异步接口。它旨在允许访问欧洲生物信息学研究所(EBI)和生物技术信息国家中心(NCBI)等机构提供的大量数据和工具。它使用rust-bio库中的Record
数据结构,用于序列化和反序列化常见格式如JSON和专门的生物信息学格式如FASTA。
免责声明:该库不防止对端点的滥用(超出硬编码的轮询频率),因此在使用此库之前,重要是阅读并理解每个API的使用条款。该库与它交互的任何机构或服务均无关联。
安装
该库目前处于开发的早期阶段,因此不稳定,但可在crates.io上找到。要安装,请将以下内容添加到您的Cargo.toml
文件中
[dependencies]
ebiotic = "0.0.25"
用法
该库旨在易于使用,并提供对各种API的一致接口。以下示例演示了如何使用该库搜索欧洲核苷酸档案(ENA)中的条目。
use ebiotic::data::*;
#[tokio::main]
async fn main_fasta() {
let dbfetch = Dbfetch::default();
let ids = DbfetchIds::new(vec!["M10051".to_string(), "M10052".to_string()]);
let result = dbfetch.run(ids).await.unwrap().into_records();
}
Dbfetch
结构体用于创建 Dbfetch
API 的新实例。DbfetchIds
结构体用于创建 DbfetchIds
请求的新实例。然后,使用 DbfetchIds
实例作为参数,在 Dbfetch
实例上调用 run
方法。该 run
方法返回一个 Result
,然后使用 into_records
方法将其展开并转换为 Vec<Record>
。
为了执行 HTTP 请求,需要一个系统客户端。使用 EbioticClient
结构体来为此创建新客户端。默认情况下,EbioticClient
在内部使用异步的 reqwest
客户端。这意味着它可以针对特定平台的要求进行自定义,例如使用代理或自定义用户代理。有关 reqwest
客户端的更多信息,请参阅 reqwest 文档。
use ebiotic::data::*;
use std::time::Duration;
use reqwest;
#[tokio::main]
async fn main_blast() {
let client = EbioticClient::new(
reqwest::Client::builder()
.timeout(Duration::from_secs(10))
.proxy(reqwest::Proxy::all("http://my-proxy:8080").unwrap())
.build()
.unwrap()
);
let dbfetch = Dbfetch::new(client, DbfetchDbs::EnaSequence, DataReturnFormats::Fasta, DbfetchStyle::Raw);
let ids = DbfetchIds::new(vec!["M10051".to_string(), "M10052".to_string()]);
let result = dbfetch.run(ids).await.unwrap().into_records();
}
更多示例可以在 文档 中找到。包括如何在同步代码库中使用线程阻塞运行。
当前 API
NCBI
- Web-BLAST(目前仅支持蛋白质搜索,因为它被用于另一个项目)
EBI
作业调度器
- Clustal Omega
知识与数据
- DBfetch
- EBI 搜索
贡献
欢迎贡献。要实现新端点,请遵循当前模块的结构,并利用 ebiotic::core
模块提供的功能。或者,从 TODO 列表中挑选一些内容尝试实现,或者找到可以改进的代码。如果您有任何问题或需要帮助,请随时提出问题或通过电子邮件联系我。
TODOs
- 更多工具和数据源
- 为结果类型添加补充方法(而不仅仅是返回数据)
- 添加更多测试
- 添加更多文档
- 添加更多示例
- 添加更多错误处理
- 添加超出打印语句的日志系统(例如跟踪或 log crate)
- 添加更多配置选项
- API 使用安全检查(?)
- 工具和 API 的引用
依赖关系
~20–34MB
~538K SLoC