#化合物 #ncbi #解析器

pubchem

Rust 数据结构和 PubChem API 客户端

2 个版本

0.1.1 2022 年 1 月 15 日
0.1.0 2022 年 1 月 15 日

#6#化合物


蛋白质生成 中使用

MIT 许可证

53KB
978

pubchem.rs Star me

Rust 数据结构和 PubChem REST API 客户端。

Actions Codecov License Source Crate Documentation Changelog GitHub issues

🔌 使用方法

💊 化合物

创建一个 Compound 来查询 PubChem API 的单个化合物。它可以由化合物 ID、化合物名称、InChI 或 InChIKey 或 SMILES 字符串构造而成

extern crate pubchem;

let alanine = pubchem::Compound::new(5950);
let aspirin = pubchem::Compound::with_name("aspirin");
let acetone = pubchem::Compound::with_inchi("InChI=1S/C3H6O/c1-3(2)4/h1-2H3");
let lysine  = pubchem::Compound::with_inchikey("KDXKERNSBIXSRK-YFKPBYRVSA-N");
let benzene = pubchem::Compound::with_smiles("C1=CC=CC=C1");

使用方法通过 ureq 查询 REST API。存在针对常见单个属性的方法

let alanine = pubchem::Compound::new(5950);

alanine.title().unwrap(); // "Alanine"
alanine.molecular_formula().unwrap(); // "C3H7NO2"
alanine.canonical_smiles().unwrap(); // "CC(C(=O)O)N"
alanine.isomeric_smiles().unwrap();  // "C[C@@H](C(=O)O)N"

每个方法都将对 PubChem API 执行单个查询,如果您希望一次性检索多个属性,则这种方法效率低下。在这种情况下,使用 properties 方法,并在单个查询中选择要检索的属性

use pubchem::CompoundProperty::*;

let properties = pubchem::Compound::new(5950)
    .properties(&[Title, MolecularFormula, CanonicalSMILES])
    .unwrap();

properties.molecular_formula; // Some("C3H7NO2")
properties.canonical_smiles; // Some("CC(C(=O)O)N")
properties.isomeric_smiles; // Some("C[C@@H](C(=O)O)N")

要一次性检索多个化合物的元数据,请使用 Compounds 结构,并使用 properties 方法将所有内容打包到单个查询中

use pubchem::CompoundProperty::*;

// retrieve metadata from the three aromatic L-amino acids at once
for prop in pubchem::Compounds::new([6140, 145742, 6305])
    .properties(&[Title, IUPACName, ExactMass])
    .unwrap()
{
    println!(
        "[{cid}] {title} {iupac} {mass}g/mol",
        cid = prop.cid,
        title = prop.title.unwrap(),
        iupac = prop.iupac_name.unwrap(),
        mass = prop.exact_mass.unwrap(),
    );
}

💭 反馈

⚠️ 问题跟踪器

发现了错误?有增强请求?如果您需要报告或询问某些内容,请访问 GitHub 问题跟踪器。如果您正在报告错误,请尽可能提供有关问题的信息,并尝试在简单、易于复现的情况下重现同一错误。

📋 更新日志

此项目遵循 语义版本控制 并提供 更新日志,格式为 Keep a Changelog

🔍 相关内容

如果您是生物信息学家且是 Rustacean,您可能对以下其他库感兴趣

  • uniprot.rs: UniProtKB 数据库的 Rust 数据结构。
  • obofoundry.rs: OBO Foundry 的 Rust 数据结构。
  • fastobo: Open 生物医学本体学的 Rust 解析器和抽象语法树。

📜 许可证

此库在开源 MIT 许可证 下提供。

本项目与 PubChem 开发者没有任何关联、赞助或任何形式的认可。它是在 Martin Larralde 在欧洲分子生物学实验室(EMBL)的 Zeller 团队 的博士项目中开发的。

依赖项

~11–19MB
~371K SLoC