安装问题
安装时出现 Microsoft Visual C++ 14.0 is required 的问题,直接参考博文[3]得以解决。
Tutorial
注:由参考博文[2]可知,cayenne在进行模拟的时候,默认加入马尔科夫跳跃过程这一随机扰动项,在模拟过程中在随机时间点的整数值之间跳跃。这个包会比较适合需要整数模拟的过程,如参考博文[2]中的例子,模拟感染人数变化的过程。
从官方文档可以得到该包的使用的格式主要有以下几个部分:
1. 模型建立格式(以下图化学反应系统为例)
model_str = """
const compartment comp1; # 定义反应区域
comp1 = 1.0; # volume of compartment
r1: A => B; k1; # differs from antimony
r2: B => C; k2; # differs from antimony
# 反应速率
k1 = 0.11;
k2 = 0.1;
chem_flag = false;
# 所考虑的系统是化学系统,提供的速率常数以摩尔或M或mol/L为单位,chem_flag应设置为true
# 所考虑的系统是生物系统,提供的速率常数以份数/L或CFU/L为单位,chem_flag应设置为false
# 初始值
A = 100;
B = 0;
C = 0;
"""
2. 各函数及其参数
from cayenne import Simulation
▶ 导入1中编写好的模型文本
sim = Simulation.load_model(model_str, “ModelString”)
▶运行模拟
Simulation.simulate(max_t: float = 10.0, max_iter: int = 1000, seed: int = 0, n_rep: int = 1, n_procs: Optional[int] = 1, algorithm: str = ‘direct’, debug: bool = False, **kwargs)
max_t(float ,optional)–模拟的结束时间。默认值为10.0。
max_iter(int,optional)–仿真循环的最大迭代次数。默认值为1000次迭代。
seed(int ,可选)–用于生成模拟种子的种子。默认值为0。
n_rep(int ,optional)–所需模拟的重复次数。预设值是1。
n_procs(int,optional)–用于仿真的cpu内核数。使用None自动检测CPU内核的数量。预设值是1。
algorithm(str ,optional)–用于运行模拟的算法。默认值为"direct"。
在官方文档中,可知Cayenne包含direct,tau_leaping,tau_adaptive三个模拟算法,详细可从Algorithms了解。
▶ 可视化
Simulation.plot(species_names: list = None, new_names: list = None)
species_names (list, optional) – 要绘制的物种名称(list of str)。默认值为,None并绘制所有物种。(模型中的名称)
new_names (list, optional) – 要绘制的物种名称。默认"xi"为物种i。(自定义新名称)
▶ 结果提取
results = sim.results
final_times, final_states = results.final – 模拟运行的最终时间,状态
results.get_state() – 在特定时间获取系统状态
results.get_species() – 随时间访问特定物种的轨迹(各时间的状态列表)
Examples
▶ 运行测试官方例子1:
from cayenne import Simulation
model_str = """
const compartment comp1;
comp1 = 1.0; # volume of compartment
r1: A => B; k1;
k1 = 1.1;
chem_flag = false;
A = 100;
B = 20;
"""
sim = Simulation.load_model(model_str, "ModelString")
sim.simulate()
sim.plot()
运行结果:
如果只需要其中一个物种的图像且重复运行n次,只需修改后两行的代码:
sim.simulate(algorithm="tau_leaping", n_rep=20)
sim.plot(species_names=["B"], new_names=["Species B"])
▶ 例子2:
from cayenne import Simulation
model_str = """
const compartment comp1;
comp1 = 1.0; # volume of compartment
binding: S + E => SE; k1;
dissociation: SE => S + E; k2;
conversion: SE => P + E; k3;
k1 = 0.006;
k2 = 0.005;
k3 = 0.1;
chem_flag = false;
S = 200;
E = 50;
SE = 0;
P = 0;
"""
sim = Simulation.load_model(model_str, "ModelString")
sim.simulate(max_t=50, n_rep=10)
sim.plot()
运行结果:
参考博文
[1]官方文档 - 1 , 2
[2]cayenne:用于随机模拟的python包
[3]【环境配置】出现:Microsoft Visual C++ 14.0 is required 的解决方案
[4]windows下Microsoft Visual C++ 14.0 is required
[5]查找 visual C++ 14.0安装包