仿生机制算法——细胞吸引子模型(附Matlab代码)

从去年一月份第一次拿到相关论文至今年一月份,对于细胞吸引子选择模型也接触了一年的时间了。

其间阅读了相关的文献也不少,自己针对细胞吸引子模型也发表了一篇SCI,一篇EI,一篇专利。

所以想写一下细胞吸引子模型的总结。

背景介绍
在微生物学方面的研究成果表明,微生物细胞可以通过改变自身的基因表达行为来适应外部生存环境的改变,细胞的基因网络在多种内在的基因程序之间进行切换,使得细胞能够响应外部环境的噪声、产生新的代谢表型状态,进而适应新的生存环境条件。这些微生物细胞的生命行为通常由基因层次上的机制所调控。

以大肠杆菌为例(见下图),其细胞的基因调控网络的调控行为具有层次结构、稳定演变和动态自适应的特性。

仿生机制算法——细胞吸引子模型(附Matlab代码)_第1张图片

什么是细胞吸引子模型?

吸引子选择模型是通过双吸引因子方程模拟动态营养环境下大肠杆菌细胞的新陈代谢的过程。通过细胞对于动态变化环境做出的适应性反应影响双吸引子的数值大小变化,完成决策过程。

当营养物质充足时,细胞的代谢旺盛,需要大量的mRNA进行基因的转录和蛋白质的合成,以维持细胞的正常生命活动。如果营养物质一直富余,则此状态会一直保持下去,使大肠杆菌的繁殖和生长更加活跃。当营养物质匮乏时,大肠杆菌的mRNA立即做出反应,使得细胞中的新陈代谢减弱,让细胞维持在一个适合该环境的状态下,从而使细胞灵活应对动态变化的外界环境。

吸引子选择模型中存在两个吸引因子,即 m1 m 1 m2 m 2 ,每个吸引因子代表了当时环境下大肠杆菌细胞内的两种mRNA浓度或者他们的蛋白质产量。为了对该机制进行数学表征,研究者们借助了耦合微分方程进行建模,引入了随机噪声项,从而提出了吸引子选择模型(Attractor Selection Model, ASM):

dm1dt=S(A)1+m22D(A)×m1+η1dm2dt=S(A)1+m21D(A)×m2+η2S(A)=6A(2+A)D(A)=A { d m 1 d t = S ( A ) 1 + m 2 2 − D ( A ) × m 1 + η 1 d m 2 d t = S ( A ) 1 + m 1 2 − D ( A ) × m 2 + η 2 S ( A ) = 6 A ( 2 + A ) D ( A ) = A

由于细胞的基因表达模式与环境条件匹配程度决定了细胞活跃度A,为了进一步刻画该细胞活跃度A的动态变化行为,研究者们参考了细胞生长的计算模型:

dAdt=P2l=1[(Nthrlml+Nl)nl+1]C×A(110) (110) d A d t = P ∏ l = 1 2 [ ( N t h r l m l + N l ) n l + 1 ] − C × A

其中,P和C代表细胞活跃度的合成率和损耗率系数。 N1 N 1 N2 N 2 代表外部生存环境提供的营养物质水平, Nthr1 N t h r 1 Nthr2 N t h r 2 代表两种营养物质对于 A A 增量的阈值, n1 n 1 n2 n 2 表示细胞对于这两种营养物质的敏感系数。

针对大肠杆菌细胞内mRNA的浓度,受两个重要参数影响,一个是细胞活跃度 A A ,一个是白高斯噪声 ηi(i=1,2) η i ( i = 1 , 2 ) 。这两个参数在细胞的生命活动中为此消彼长的关系。大量的实验表明,噪声与细胞生长速度相互独立,而细胞活跃度与生长速度相关,所以噪声与细胞活跃度是相互独立的。当大肠杆菌细胞新陈代谢速率增加时,细胞活跃度mRNA浓度的影响较大,噪声对于其影响较小,但一直存在,噪声不会随着细胞活跃度的降低而消失;当大肠杆菌细胞新陈代谢速率减慢时,细胞活跃度降低,噪声对mRNA浓度影响较大。

它的总体框架如图:

仿生机制算法——细胞吸引子模型(附Matlab代码)_第2张图片

细胞吸引子模型的特性

既然这种算法的存在,肯定有它的特性:
(1)层次结构特性
把细胞内部大量存在的基因作为遗传的基本单位,则多个关联在一起的遗传单位构成了细胞内部调控遗传行为的基本模块。每一个基本模块能够激励或者抑制其他相关联的基本模块,而且,这些相互作用发生在不同的网络结构层面上;此外,调控网络中同一种基因可以同时影响多种细胞内的分子机制,这些相互影响具有动态复杂性。为了刻画这些复杂的调控机理,基因调控网络通常将接受调控基因的结合DNA序列位点、该DNA序列上抑制或者激活基因的活性转录因子作为基本的调控元件,将局部相互影响的调控特征和调控方式的基因集合构成模块,进而多种不同的模块集成了整个调控网络。因此,基因调控网络的基本特性之一即为复杂的层次结构,它是利用数理工具对微生物细胞基因调控机理进行建模的重要基础。
(2)稳定演变特性
微生物细胞体在生存环境中的生命行为本身就是一种动态过程,在不同的外部激励条件作用下或者在不同的作用时长都可以引起调控网络的组成和结构发生变化,这也是自生物体进行然进化所表现的重要特性。
(3)动态自适应特性(重点)
从不同的基因网络层次上看,基因的调控行为可以体现在三个不同的层面:其一、基因层面上的调控,如图9所示,包括复制、转录、翻译等,基因表达的一个产物即为蛋白质;其二、单细胞体层面上的调控,细胞体内的受体蛋白接受来自外部环境条件的刺激信号,激励细胞内部通过蛋白质的合成与分解、蛋白酶促反应、营养代谢活动等调节细胞体内各个结构的功能;其三、生理组织层面上的调控,通常,生理组织由大量的细胞组成,这些细胞相互之间存在间接作用,细胞个体在相互影响下向多种生理功能的形态分化、生长,多种细胞体最终形成一个生理功能完整的组织,这些细胞个体也得以适应外部环境以及环境条件的动态变化。

正是有了细胞基因网络的调控,无论是在围观的细胞水平上还是宏观的生理组织水平上,生物表现出丰富的形态和优秀的机制。这些机制能够很好地启发其他非生物学领域的科学研究工作者展开具体的科研工作,从中获得解决有关控制、决策、管理、优化等复杂问题的有效方法。

相关研究文献:

1.原始提出细胞吸引子的文章
这个是《plos one》杂志的一篇论文,从各个角度详细描述了细胞吸引子模型。
想要弄明白并且运用细胞吸引子模型可以先阅读这一篇文章。

2.对细胞吸引子进行了高维拓展的文章

3.基于细胞吸引子提出的路由协议的文章

3.基于细胞吸引子提出网络切换策略的文章

Matlab代码:
在其中的微分方程求解时,我们采用的龙格库塔法,要求精度不高的话,用欧拉法会更简单一点。

function [latestState, latestActivity] = ASM(state,activity,...
    N1, N2)


T = 100;
dt = 0.01; % adopt the step
% Preparation of parameters
P = 0.01;
C = 0.01;
N_thr = [2;2];
n = [5; 5];
NoiseIntensity = 0.53*1.3; % ranging from 0.5 to 0.6

params.P = P;
params.C = C;
params.N_thr = N_thr;
params.n = n;
params.NoiseIntensity = NoiseIntensity;

M = zeros(T,2,'double');
alpha = zeros(T,1,'double');

% Do initialization
% M(1,:) = [1.,1.];
% alpha(1) = 0.95; %0.9~1.0

M(1,:) = [state(1),state(2)];
alpha(1) = activity; %
N =[N1,N2];

%% Do simulation
for t = 2:T
    % Update to the cellular states, including the cellular metabolic
    % states and the cellular activity
    oldY = [M(t-1,:)';alpha(t-1)];
    newY = ODE_Update_Fun(t,oldY,N,dt,params);
    M(t,:) = newY(1:2)';
    alpha(t) = newY(3);
end

latestState = [M(end,1);...
    M(end,2)];
latestActivity = alpha(end);
%% Determine the dorminate
factor = 0.4;
C = 30-1;
if mean(M(end-C:end,1)) >= (1+factor)*mean(M(end-C:end,2));
end
end


function newY = ODE_Update_Fun(t,oldY,N,dt,params)
% Implementation of RK45

K1 = ODE_Equations(t,oldY,N,params);

tempV1 = oldY + (dt/2).*K1;
K2 = ODE_Equations(t+dt/2,tempV1,N,params);

tempV2 = oldY+(dt/2).*K2;
K3 = ODE_Equations(t+dt/2,tempV2,N,params);

tempV3 = oldY+(dt).*K3;
K4 = ODE_Equations(t+dt,tempV3,N,params);

newY = oldY + (dt/6).*(K1+2.*K2+2.*K3+K4);
end


function dYdt = ODE_Equations(t,Y,N,params)
vNum = length(Y);
dYdt = zeros(vNum,1,'double');

P = params.P;
C =params.C;
N_thr = params.N_thr  ;
n = params.n ;
NoiseIntensity = params.NoiseIntensity ;

% Calculate the cellular activity, i.e., d(alpha)/dt
dYdt(3) = Cellular_Activity_ODE(Y,N,P,C,N_thr,n);

% Calculate the cellular states, i.e., m1 and m2
[dYdt(1),dYdt(2)] = Cellular_States_ODE(Y,NoiseIntensity);
end

function[dm1_dt,dm2_dt] = Cellular_States_ODE(Y,NoiseIntensity)
m1 = Y(1);
m2 = Y(2);
alpha = Y(3);
eta = Gaussian_White_Noise(2,1,NoiseIntensity);
dm1_dt=Syn(alpha)/(1+m2^2)-Deg(alpha)*m1+eta(1);
dm2_dt=Syn(alpha)/(1+m1^2)-Deg(alpha)*m2+eta(2);
end

function value = Cellular_Activity_ODE(Y,N,P,C,N_thr,n)
m1 = Y(1);
m2 = Y(2);
alpha = Y(3);

% (N_thr/(m2+N(2)))^n(2)+1)
den = @(m,N,n,N_thr)((N_thr./(m+N)).^(n)+1.0);

value = P/(den(m1,N(1),n(1),N_thr(1))*den(m2,N(2),n(2),N_thr(2)))-C*alpha;
end


function S = Syn(alpha)
S = (6.*alpha)./(2.+alpha);
end

function D = Deg(alpha)
D = alpha;
end

你可能感兴趣的:(仿生机制算法——细胞吸引子模型(附Matlab代码))