6个版本 (重大更新)

0.5.0 2021年3月27日
0.4.0 2021年3月24日
0.3.1 2020年10月22日
0.2.0 2020年10月18日
0.1.0 2020年10月16日

#796 in 科学

GPL-2.0-or-later

73KB
272

KAIr (Rust中的COBRA替代品)

Crates.io Documentation Build Codecov

基于约束的重建和分析 (COBRA) 方法允许使用基于知识的特定生物体代谢重建来模拟其代谢网络。

kair 提供了从 SBML (使用 rust_sbml) 文档到 COBRA 最基本的线性规划公式的转换:通量平衡分析 (FBA)。f(z) 是一个优化函数(历史上是生物量伪反应或ATPase),S 和化学计量矩阵;v 是表示重建中的反应的通量向量

然后可以利用 lp_modeler 对 FBA 问题进行优化。

参见 什么是通量平衡分析? Orth等,2010 了解 FBA 的简要描述。

安装

kair 添加到您的 Cargo.toml 中

[dependencies]
kair = "0.5.0"

此外,添加您选择的求解器,例如 coin_cbc (默认),与 good_lp

[dependencies]
good_lp = { version="1.1.0", default_features=true }

确保您已安装 Cbc求解器(其他求解器不需要安装)。

# Debian
sudo apt install coinor-cbc
# Arch
sudo pacman -S coin-or
# Mac OS
brew tap coin-or-tools/coinor && brew install coin-or-tools/coinor/cbc

示例

一些 use 语句以开始。

use kair::{ModelLP, fba, flux_analysis::fva};
use good_lp::default_solver;
use std::str::FromStr;

首先,读取 SBML 文档,我们将使用 e_coli_core模型

let file_str = std::fs::read_to_string("examples/EcoliCore.xml").unwrap();
let model = ModelLP::from_str(&file_str).unwrap();

现在,我们可以优化它并打印解,它只是一个 HashMap 的键值对 变量名 -> 解值

for (name, val) in fba(&mut model, default_solver).unwrap().iter() {
    println!("{} = {}", name, val)
}

输出

R_EX_co2_e_ = 22.809834
R_ATPM_ = 8.39
R_H2Ot_ = -29.175827
R_GLNS_ = 0.22346173
...
R_BIOMASS_Ecoli_core_w_GAM_ = 0.8739215
...
R_EX_pi_e_ = -3.214895
R_SUCOAS_ = -5.064376
R_PGL_ = 4.959985
R_TKT1_ = 1.4969838

要运行此示例,在此仓库的根目录下运行

cargo run --example ecoli

还实现了通量可变性分析

let reactions: Vec<String> = model.reactions.iter().map(|(k, _v)| k.clone()).collect();
for (name, val) in fva(&mut model, default_solver, reactions).unwrap().iter() {
    println!("{} = {:?}", name, val)
}

输出(您需要使用更大的模型才能看到差异)

R_ACONTa = (6.007249575350586, 6.007249575350007)
R_ACALD = (0.0, 0.0)
R_ACKr = (-0.0, -0.0)
R_ICDHyr = (6.007249575351851, 6.007249575350007)
R_CO2t = (-22.80983331020489, -22.809833310205118)
R_RPI = (-2.2815030940668573, -2.2815030940674283)
R_ADK1 = (-0.0, -0.0000000000003395200787181807)
R_PGK = (-16.0235261431673, -16.02352614316787)
R_SUCCt3 = (0.0, -0.0000000000004168517383125921)
R_EX_pyr_e = (0.0, 0.0)

依赖项

~2–2.7MB
~51K SLoC