Gillespie算法的Python简单实现(实例)
文章目录
前言
一位化院的朋友的期末作业,寻求帮助,因此了解学习了一下gillespie算法,并简单实现了该算法,实例化了mRNA翻译蛋白质的过程。
一、Gillespie是什么?
个人理解,Gillespie算法是一种将连续的化学反应转换为离散步骤模拟的算法。
二、题目
简单来说就是利用Gillespie算法拟合mRNA翻译为氨基酸链的过程,并带入多组参量计算氨基酸链生成速度。
三、代码
本文代码部分段来自python简单实现gillespie模拟
1.引入库
代码如下:
import numpy as np
from scipy.special import comb # 科学计算
import matplotlib.pyplot as plt # 绘图
2.类定义
封装了反应类和系统类,主要来源上述链接文章:
class Reaction: # 封装的类,代表每一个化学反应
def __init__(self, rate=0., num_lefts=None, num_rights=None):
self.rate = rate # 反应速率
assert len(num_lefts) == len(num_rights)
self.num_lefts = np.array(num_lefts) # 反应前各个反应物的数目
self.num_rights = np.array(num_rights) # 反应后各个反应物的数目
self.num_diff = self.num_rights - self.num_lefts # 改变数
def combine(self, n, s): # 算组合数
return np.prod(comb(n, s))
def propensity(self, n): # 算反应倾向函数
return self.rate * self.combine(n, self.num_lefts)
class System: # 封装的类,代表多个化学反应构成的系统
def __init__(self, num_elements):