22个版本
新版本 0.3.2 | 2024年8月6日 |
---|---|
0.3.1 | 2024年7月28日 |
0.2.4 | 2024年6月26日 |
0.1.15 | 2024年6月7日 |
0.1.12 | 2024年5月31日 |
#3 in #ode
195 每月下载量
在pmcore中使用
115KB
2.5K SLoC
Pharmsol
使用ODE和解析模型模拟PK/PD轮廓。
示例
基于ODE的模型。
use pharmsol::*;
let subject = data::Subject::builder("id1")
.bolus(0.0, 100.0, 0)
.repeat(2, 0.5)
.observation(0.5, 0.1, 0)
.observation(1.0, 0.4, 0)
.observation(2.0, 1.0, 0)
.observation(2.5, 1.1, 0)
.build();
println!("{subject:#?}");
let ode = simulator::Equation::new_ode(
//Difussion Equations
|x, p, _t, dx, _rateiv, _cov| {
fetch_cov!(cov, t,);
fetch_params!(p, ka, ke, _tlag, _v);
dx[0] = -ka * x[0];
dx[1] = ka * x[0] - ke * x[1];
},
// Lag definition (In this case boluses on dx[0] will be delayed by `tlag`)
|p| {
fetch_params!(p, _ka, _ke, tlag, _v);
lag! {0=>tlag}
},
// No bio-availability
|_p| fa! {},
// Default initial conditions (0.0,0.0)
|_p, _t, _cov, _x| {},
// Output Equations
|x, p, _t, _cov, y| {
fetch_params!(p, _ka, _ke, _tlag, v);
y[0] = x[1] / v;
},
(2, 1),
);
let op = ode.simulate_subject(&subject, &vec![0.3, 0.5, 0.1, 70.0]);
println!("{op:#?}");
基于解析的模型。
...
let analytical = simulator::Equation::new_analytical(
one_compartment_with_absorption,
|_p, _cov| {},
|p| {
fetch_params!(p, _ka, _ke, tlag, _v);
lag! {0=>tlag}
},
|_p| fa! {},
|_p, _t, _cov, _x| {},
|x, p, _t, _cov, y| {
fetch_params!(p, _ka, _ke, _tlag, v);
y[0] = x[1] / v;
},
(2, 1),
);
let op = analytical.simulate_subject(&subject, &vec![0.3, 0.5, 0.1, 70.0]);
println!("{op:#?}");
支持的解析模型
我们正在努力支持所有标准解析模型。
- 一室模型,静脉注射
- 一室模型,静脉注射和口服吸收
- 双室模型,静脉注射
- 双室模型,静脉注射和口服吸收
- 三室模型
依赖项
~28MB
~465K SLoC