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 科学
73KB
272 行
KAIr (Rust中的COBRA替代品)
基于约束的重建和分析 (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