#web-services #bioinformatics #ncbi #genomics #biology #web-api #ebi

ebiotic

Rust库,用于与常见的生物信息学Web服务交互

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

Download history 131/week @ 2024-05-03 6/week @ 2024-05-17 2/week @ 2024-05-24 1/week @ 2024-06-07

每月下载量 756

GPL-3.0 许可证

77KB
1.5K SLoC

Ebiotic

Crates.io Crates.io Documentation Build Status

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