【随机模拟】Python第三方库Cayenne 使用测试

安装问题

安装时出现 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:
例子2

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()

运行结果:
运行结果1.1
如果只需要其中一个物种的图像且重复运行n次,只需修改后两行的代码:

sim.simulate(algorithm="tau_leaping", n_rep=20)
sim.plot(species_names=["B"], new_names=["Species B"])

运行结果1.2
例子2:
例子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()

运行结果:
运行结果2


参考博文

[1]官方文档 - 12
[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安装包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值