import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
plt.rcParams['lines.linewidth']=2
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['font.size']=20
plt.rcParams['figure.figsize']=(21,7)
sns.set_style('white')
pal = sns.color_palette('hls',3)
# Initial Parameters
fungis = [
{'rate': None, 'K': 1e6, 'Nt': 1},
{'rate': None, 'K': 1e6, 'Nt': 1},
{'rate': None, 'K': 1e6, 'Nt': 1}
]
iteration = 5000#Number of breeding contests
"""
first:3diff --->>0.12 0.14 0.16 1500
second:3same---->>0.12 0.12 0.12 1500
third:2same----->>0.12 0.14 0.14 1500
"""
def logistic(ind,Nt0,Nt1,Nt2):
Nt = (Nt0,Nt1,Nt2)[ind]
fungis = [
{'rate': 0.12, 'K': 1e5, 'Nt': 1},
{'rate': 0.14, 'K': 1e5, 'Nt': 1},
{'rate': 0.14, 'K': 1e5, 'Nt': 1}
]#Here change the param
K = fungis[ind]['K']
if ind == 0:sums =Nt1/Nt*Nt1/fungis[1]['K'] + Nt2/Nt*Nt2/fungis[2]['K']
if ind == 1:sums =Nt0/Nt*Nt0/fungis[0]['K'] + Nt2/Nt*Nt2/fungis[2]['K']
if ind == 2:sums =Nt0/Nt*Nt0/fungis[0]['K'] + Nt1/Nt*Nt1/fungis[1]['K']
delta_N = fungis[ind]['rate']*(1-Nt/K-sums)*Nt*0.1#计算增量
return delta_N
# Beginning of reproduction
Nt0 = fungis[0]['Nt']
Nt1 = fungis[1]['Nt']
Nt2 = fungis[2]['Nt']
rate0 = []
rate1 = []
rate2 = []
N0 = []
N1 = []
N2 = []
for i in range(iteration):
N0.append(Nt0)
N1.append(Nt1)
N2.append(Nt2)
delta_N0 = logistic(0, Nt0, Nt1, Nt2)
delta_N1 = logistic(1, Nt0, Nt1, Nt2)
delta_N2 = logistic(2, Nt0, Nt1, Nt2)
rate0.append(delta_N0/Nt0)
rate1.append(delta_N1/Nt1)
rate2.append(delta_N2/Nt2)
Nt0+=delta_N0;Nt1+=delta_N1;Nt2+=delta_N2#Updata
if (Nt0 <= 0):Nt0 = 1e-10;
if (Nt1 <= 0):Nt1 = 1e-10;
if (Nt2 <=0 ):Nt2 = 1e-10;
data_rate = pd.DataFrame(np.array([rate0,rate1,rate2]).T,columns=['Fungis 1','Fungis 2','Fungis 3'])
data_rate.to_excel('./3diff growth.xlsx',index=False)
data_Num = pd.DataFrame(np.array([N0,N1,N2]).T,columns=['Fungis 1','Fungis 2','Fungis 3'])
data_rate[data_rate<0]=0#Remove values whose growth rate is less than zero
data_Num[data_Num==1e-10]=0#replace 1e-10 with 0
data_rate.to_excel('./2samef growth.xlsx',index=False)#save file
data_Num.to_excel('./2same Num.xlsx',index=False)#save file
plt.subplot(1,3,1)
sns.lineplot(data=data_rate,palette=pal)
sns.scatterplot(data=data_rate,palette=pal,legend=None)
plt.xlabel('Hyphal extension rate')
plt.subplot(1,3,2)
sns.lineplot(data=data_Num,palette=pal)
sns.scatterplot(data=data_Num,palette=pal,legend=None)
plt.xlabel('Breeding number')
sns.despine(top=True,right=True)
plt.subplot(1,3,3)
sns.lineplot(data=data_Num[:750],palette=pal)
sns.scatterplot(data=data_Num[:750],palette=pal,legend=None)
plt.xlabel('Breeding population detail')
sns.despine(top=True,right=True)
plt.savefig('./queation2-1(2diff.svg')
plt.show()