乳酸菌相互作用模型
说明
- 本文内容为原创内容,文中涉及的模型为个人推导假设,仅供学习交流使用。转载请注明出处。
- 文中疑问的部分可以私信或邮箱1602480875@qq.com
1. 模型建立的知识背景(可忽略)
- 生物胺是黄酒中的一类风险危害物质,规定含量要求不超过500mg/L。
- 文献调研总结黄酒中产胺的菌锁定为乳酸菌是黄酒中生物胺来源的主要菌种。
- 目前对基于乳酸菌合成微生物群落探究生物胺生成规律以及产胺菌之间相互作用关系的研究还未积极开展。
- 探究不同产胺类型的乳酸菌在模拟体系中生长代谢特征与产胺水平变化,建立数学模型预测合成群落中生物胺含量。
- 有观点认为生物胺的产生是作为乳酸菌的一种耐酸机制,通过对脱羧酶前启动子分析其启动类型与酸表达型类似。但也有其他观点认为酸不是影响生物胺合成的主要影响。文献调研后并未找到明确说明生物胺积累对乳酸菌Fitness(适应度)提升的意义。
- 本模型假设生物胺是一种乳酸菌与糖代谢、酸耐酸的一种适应性行为,乳酸菌需要trade off(权衡)产胺的收益与成本。
- 传统发酵产品大多选择开放体系进行混菌发酵,发酵过程不易控制。需要多种手段交叉使用达到控制生产产品的生物胺在合适范围内。
2. 模型建立说明
2.1模型建立的流程框架
2.2 模型中设定的基本假设
-
乳酸菌产胺行为
-
生物胺作物抵御酸耐酸机制方程
-
环境中酸对乳酸菌的抑制作用
3.1 更新进度说明(2021年6月16日)
- 核心代码详细注释
- 模型的设计思路
- 模型的数学推导过程
- 其他辅助方程的建立
- 方程的延申与改进策略
4.1 主函数部分(版本二)
%% 版本0.01
% 日期:2021年6月15日
% 时间:21点49分
% 代码: 1602480875@qq.com
% 输入 混合培养的菌种特性 1.生长速率 2.产生物胺能力 3初始菌种特性
% 输出 1.生物量变化过程 2.生物胺变化过程 3.总酸酸浓度变化
%% 功能说明
% 仿真模拟两种不同产胺能力的乳酸菌之间相互作用关系。建立ode方程描述变化过程
% 假设产胺是耐酸一种应答机制,酸激发生物胺的产生。
% 产酸过程以环境中最高产酸菌的酸做为,或者可以考虑为加权考虑
%% 清理变量空间
clc
clear
close all
%% 初始条件
food_suge=120; %初始还原糖量
cc=load('logistic_growth_rich.mat');% cc=load('growth_rate_parameter.mat'); %导入初始实验菌生长速率方程参数
b_acid=load('logistic_acid.mat');%导入实验菌产酸生成速率方程参数
Amine_production_fun_sec=load('fitresult_acid_two.mat');
%% 菌种1输入信息
b2=3;%菌种编号
begin_num_b_1=6.2; %初始接菌量
k_1=cc.b_num(b2,1); %生长速率参数
mu_1=cc.b_num(b2,2);%生长速率参数
x1=13;%菌种最大产酸量 设为受酸抑制分界点
g1=0;%初始化参数
num_Biomass1=(g1+1)*begin_num_b_1;%初始生长量
mortality1=0.3;%菌种1死亡率
Nutrition_consumption1=0.06;%菌种1营养消耗 cfu 10^6 消耗0.05g/L
b_acid_b1=b_acid.b_num(b2,:);%菌种1产酸规律
Amine_production_fun_fist=load('fitresult_acid_one.mat');%产胺特征曲线
%% 菌种2输入信息
b2=4;%菌种编号
begin_num_b_2=1;
k_2=cc.b_num(b2,1); %生长速率参数
mu_2=cc.b_num(b2,2);%生长速率参数
g2=0;%初始化参数
dr=0;%生物胺衰减速率
AB_num=0;%初始生物胺浓度
num_Biomass2=begin_num_b_2+g2;%
Nutrition_consumption2=0.03;%菌种2营养消耗 cfu 10^6 消耗0.05g/L
mortality2=0.3;%菌种2死亡率
x2=20;%%菌种最大产酸量 设为受酸抑制分界点
b_acid_b2=b_acid.b_num(b2,:);%菌种1产酸规律
%% 开始迭代计算
t=0;
while t<=60 && food_suge >=0 && num_Biomass1>=0% 设置迭代停止条件
t=t+1;
if t==1
% 生长速率更新
g1=mond(food_suge,mu_1,k_1);%菌1
g2=mond(food_suge,mu_2,k_2);%菌1
% 生物量变化
a_h1=0;%酸对菌1的抑制作用
num_Biomass1=(g1+1-a_h1)*num_Biomass1;
num_Biomass2=(g2+1)*num_Biomass2;
% 生物死亡
num_Biomass1=num_Biomass1-mortality1*num_Biomass1;
num_Biomass2=num_Biomass2-mortality2*num_Biomass2;
else
% 酸对生长的抑制作用
% 生长速率更新
g1=mond(food_suge,mu_1,k_1);
g2=mond(food_suge,mu_2,k_2);
% 生物量变化
% num_Biomass1=(g1+1)*num_Biomass1;
a_h1=acid_inhibition_fun(acid,AB_num,x1,Amine_production_fun_sec.fitresult.a1);%酸对生长的抑制
num_Biomass1=(g1+1-a_h1)*num_Biomass1; %更新生长率
num_Biomass2=(g2+1)*num_Biomass2;
% 生物死亡
num_Biomass1=num_Biomass1-mortality1*num_Biomass1;%-num_Biomass1*acid_inhibition_fun(acid,AB_num,x1,Amine_production_fun_sec.fitresult.a1);
num_Biomass2=num_Biomass2-mortality2*num_Biomass2-num_Biomass2*acid_inhibition_fun(acid,AB_num,x2,Amine_production_fun_sec.fitresult.a1);
end
% 环境中酸积累量
acid1=logistic_acid(b_acid_b1,t);
acid2=logistic_acid(b_acid_b2,t);
acid=max(acid1,acid2);
% 环境中还原糖的消耗
food_suge=food_suge-Nutrition_consumption1*num_Biomass1;
food_suge=food_suge-Nutrition_consumption2*num_Biomass2;
% 产胺环境刺激产胺
AB_rate=Amine_production_fun_sec.fitresult(acid);%酸刺激条件下产胺能力
AB_num=AB_num+(1/24)*num_Biomass1*Amine_production_fun_sec.fitresult.a1*((AB_num+AB_rate)/(AB_num+Amine_production_fun_sec.fitresult.a1))-dr;
AB_num=AB_num+(1/24)*num_Biomass1*0*((AB_num+AB_rate)/(AB_num+Amine_production_fun_sec.fitresult.a1))-dr;
AB_num_plot(t)=AB_num;
num_Biomass1_p(t)=num_Biomass1;
num_Biomass2_p(t)= num_Biomass2;
food_suge_p(t)=food_suge;
acid_p(t)=acid;
a_h_p(t)=a_h1;
AB_rate_p(t)=AB_rate;
end
%% 结果绘制
%% 参数变化表
figure
subplot(2,2,1)
plot(1:t,a_h_p,'b*')
ylabel('抑制程度 g/L')
xlabel('时间 h' )
title('酸抑制程度变化')
subplot(2,2,2)
plot(1:t,AB_rate_p,'b*')
ylabel('产胺速率')
xlabel('时间 h' )
title('产胺速率')
%% 生物胺浓度变化
figure
subplot(2,2,1)
plot(1:t,AB_num_plot,'r*')
xlabel('时间 h' )
ylabel('生物胺浓度变化')
title('环境中总生物胺变化')
%% 生物量变化
subplot(2,2,2)
plot(1:t,num_Biomass1_p,'r*')
hold on
plot(1:t,num_Biomass2_p,'b*')
hold off
ylabel('生物量变化10^6')
xlabel('时间 h' )
legend('菌种1','菌种2')
title('两种类型的菌的生长量变化')
%% 还原糖糖变化
subplot(2,2,3)
plot(1:t,food_suge_p,'b*')
ylabel('还原糖含量 g/L')
xlabel('时间 h' )
title('还原糖消耗速率变化')
%% 环境中酸变化
subplot(2,2,4)
plot(1:t,acid_p,'b*')
ylabel('总酸 g/L')
xlabel('时间 h' )
title('总酸产生速率变化')
%% mond方程
function g=mond(f,mu,k)
g= f.*mu/(f+k);
end
%% 产酸规律曲线
function fx=logistic_acid(b,x)
fx=(b(1)./(1+b(2).*exp(-b(3).*x)));
end
%% 通过产胺抵御环境中酸变化
function r_t=acid_inhibition_fun(x,y,x1,y1)
r_t=1*exp(-pi/x1*(abs(x-x1)))-1/(1+y/y1);
if r_t<0
r_t=0;
end
end
4.2 结果展示
- 模拟20小时两种菌的生长代谢变化规律
- 模拟60小时两种菌的生长代谢变化规律(初始接种比为10:1)
- 仿真过程中各项参数变化
4.3 主函数部分(版本一)
%% 版本0.01
% 日期:2021年6月15日
% 时间:21点49分
% 代码: 1602480875@qq.com
% 输入 混合培养的菌种特性 1.生长速率 2.产生物胺能力 3初始菌种特性
% 输出 1.生物量变化过程 2.生物胺变化过程 3.总酸酸浓度变化
%% 功能说明
% 仿真模拟两种不同产胺能力的乳酸菌之间相互作用关系。建立ode方程描述变化过程
% 假设产胺是耐酸一种应答机制,酸激发生物胺的产生。
%% 清理变量空间
clc
clear
close all
%% 初始条件
food_suge=120; %初始还原糖量
cc=load('logistic_growth_rich.mat');% cc=load('growth_rate_parameter.mat'); %导入初始实验菌生长速率方程参数
b_acid=load('logistic_acid.mat');%导入实验菌产酸生成速率方程参数
Amine_production_fun_fist=load('fitresult_acid_one.mat');
Amine_production_fun_sec=load('fitresult_acid_two.mat');
%% 菌种1输入信息
b2=3;%菌种编号
begin_num_b_1=6.231224375; %初始接菌量
k_1=cc.b_num(b2,1); %生长速率参数
mu_1=cc.b_num(b2,2);%生长速率参数
x1=16;%菌种最大产酸量
g1=0;%初始化参数
num_Biomass1=g1+begin_num_b_1;%初始生长量
mortality1=0.3;%菌种1死亡率
Nutrition_consumption1=0.025;%菌种1营养消耗 cfu 10^6 消耗0.05g/L
b_acid_b1=b_acid.b_num(b2,:);%菌种1产酸规律
%% 菌种2输入信息
b2=2;%菌种编号
begin_num_b_2=6.23;
k_2=cc.b_num(b2,1); %生长速率参数
mu_2=cc.b_num(b2,2);%生长速率参数
g2=0;%初始化参数
dr=0;%生物胺衰减速率
AB_num=0;%初始生物胺浓度
num_Biomass2=begin_num_b_2+g2;%
Nutrition_consumption2=0.05;%菌种2营养消耗 cfu 10^6 消耗0.05g/L
mortality2=0.3;%菌种2死亡率
x2=20;
b_acid_b2=b_acid.b_num(b2,:);%菌种1产酸规律
%% 开始迭代计算
for t=1:40 %步进24小时
if t==1
% 生长速率更新
g1=mond(food_suge,mu_1,k_1);%菌1
g2=mond(food_suge,mu_2,k_2);%菌1
% 生物量变化
num_Biomass1=(g1+1)*num_Biomass1;
num_Biomass2=(g2+1)*num_Biomass2;
% 生物死亡
num_Biomass1=num_Biomass1-mortality1*num_Biomass1;
num_Biomass2=num_Biomass2-mortality2*num_Biomass2;
else
% 酸对生长的抑制作用
% 生长速率更新
g1=mond(food_suge,mu_1,k_1);
g2=mond(food_suge,mu_2,k_2);
% 生物量变化
num_Biomass1=(g1+1)*num_Biomass1;
num_Biomass2=(g2+1)*num_Biomass2;
% 生物死亡
num_Biomass1=num_Biomass1-mortality1*num_Biomass1-num_Biomass1*acid_inhibition_fun(acid,AB_num,x1,Amine_production_fun_sec.fitresult.a1);
num_Biomass2=num_Biomass2-mortality2*num_Biomass2-num_Biomass2*acid_inhibition_fun(acid,AB_num,x2,Amine_production_fun_sec.fitresult.a1);
end
% 环境中酸积累量
acid1=logistic_acid(b_acid_b1,t);
acid2=logistic_acid(b_acid_b2,t);
acid=max(acid1,acid2);
% 环境中还原糖的消耗
food_suge=food_suge-Nutrition_consumption1*num_Biomass1;
food_suge=food_suge-Nutrition_consumption2*num_Biomass2;
% 产胺环境刺激产胺
AB_rate=Amine_production_fun_sec.fitresult(acid);%酸刺激条件下产胺能力
AB_num=AB_num+(1/24)*num_Biomass1*Amine_production_fun_sec.fitresult.a1*((AB_num+AB_rate)/(AB_num+Amine_production_fun_sec.fitresult.a1))-dr;
AB_num=AB_num+(1/24)*num_Biomass1*0*((AB_num+AB_rate)/(AB_num+Amine_production_fun_sec.fitresult.a1))-dr;
plot(t,AB_num,'r*')
xlabel('时间 h' )
ylabel('生物胺浓度变化')
title('环境中总生物胺变化')
hold on
% plot(t,num_Biomass1,'r*')
% hold on
% plot(t,num_Biomass2,'b*')
% hold on
% ylabel('生物量编号')
% xlabel('时间 h' )
% legend('菌种1','菌种2')
% title('两种类型的菌的生长量变化')
end
%% mond方程
function g=mond(f,mu,k)
g= f.*mu/(f+k);
end
%% 产酸规律曲线
function fx=logistic_acid(b,x)
fx=(b(1)./(1+b(2).*exp(-b(3).*x)));
end
%% 通过产胺抵御环境中酸变化
function r_t=acid_inhibition_fun(x,y,x1,y1)
r_t=1*exp(-pi/x1*(abs(x-x1)))-1/(1+y/y1);
if r_t<0
r_t=0;
end
end
4.4 结果展示
与董说
尚:你知道吗,夏天是最适合实验的季节。
董:菌长得更快??
尚:实验总是凉凉。