J
Anonyme
je te met celui du TP2, lui il fait une symbiose, alors qu'on veux une compétition j'ai essayé de modifié certain paramètre mais ça marche pas :Bonjour,
Si tu peux mettre ici le script issu du tp2 , puis ton script modifié, je pourrai essayer de t'aider.
Je ne connais pas du tout rsstudio mais je connais un peu le codage
sizeenvironment=50
r=0.25
K=500
dt=0.1
a21=1
a12=1
tauxdispersion=0.5
dureesimulation=100
# Initialisation population
pop1=matrix(rpois(n=(sizeenvironment+2)^2, lambda=1),
ncol=sizeenvironment+2, nrow=sizeenvironment+2)
pop1[1,]=0
pop1[sizeenvironment+2,]=0
pop1[,1]=0
pop1[,sizeenvironment+2]=0
pop2=matrix(rpois(n=(sizeenvironment+2)^2, lambda=1),
ncol=sizeenvironment+2, nrow=sizeenvironment+2)
pop2[1,]=0
pop2[sizeenvironment+2,]=0
pop2[,1]=0
pop2[,sizeenvironment+2]=0
# Représentation graphique
par(mar=c(0,0,0,0))
par(mfrow=c(1,1))
echelle1 = rgb(1, seq(1,0,-0.1), 1)
echelle2 = rgb(1, 1, seq(1,0,-0.1), alpha=0.5)
image(pop1, breaks=c(0,1,2,4,8,16,32, 64, 128, 256, 512, 1024),
col=echelle1)
image(pop2, breaks=c(0,1,2,4,8,16,32, 64, 128, 256, 512, 1024),
col=echelle2, add=TRUE)
# Fonction next_n
next_n=function(Ni, Nj, r, K, dt, aji){
return(Ni + Ni*r*Nj/(aji+Nj)*(1-(Ni+Nj)/K)*dt)
}
next_n(50, 6, r, K, dt, a21)
# Tableau coordonnées
coord=data.frame(x=c(-1,-1,-1,0,0,1,1,1), y=c(-1,0,1,-1,1,-1,0,1))
coord
# Boucle temps
for(t in seq(0, dureesimulation, dt)){
copie_pop1=pop1
copie_pop2=pop2
for(i in 2
for(j in 2
effectif=next_n(Ni=copie_pop1[i,j], Nj=copie_pop2[i,j], r, K, dt, a21)
pop1[i,j]=rpois(n=1, lambda=effectif)
effectif=next_n(Ni=copie_pop2[i,j], Nj=copie_pop1[i,j], r, K, dt, a12)
pop2[i,j]=rpois(n=1, lambda=effectif)
}
}
# Dispersion
copie_pop1=pop1
for(i in 2
for(j in 2
ndispersants=rbinom(n=1, size=copie_pop1[i,j], prob=tauxdispersion*dt)
if(ndispersants>0){
for(k in 1:ndispersants){
case=sample(1:8, size=1)
pop1[i+coord$x[case], j+coord$y[case]]=pop1[i+coord$x[case], j+coord$y[case]]+1
}
pop1[i,j]=pop1[i,j]-ndispersants
}
}
}
pop1[1,]=0
pop1[sizeenvironment+2,]=0
pop1[,1]=0
pop1[,sizeenvironment+2]=0
copie_pop2=pop2
for(i in 2
for(j in 2
ndispersants=rbinom(n=1, size=copie_pop2[i,j], prob=tauxdispersion*dt)
if(ndispersants>0){
for(k in 1:ndispersants){
case=sample(1:8, size=1)
pop2[i+coord$x[case], j+coord$y[case]]=pop2[i+coord$x[case], j+coord$y[case]]+1
}
pop2[i,j]=pop2[i,j]-ndispersants
}
}
}
pop2[1,]=0
pop2[sizeenvironment+2,]=0
pop2[,1]=0
pop2[,sizeenvironment+2]=0
Sys.sleep(0.1)
image(pop1, breaks=c(0,1,2,4,8,16,32, 64, 128, 256, 512, 1024),
col=echelle1)
image(pop2, breaks=c(0,1,2,4,8,16,32, 64, 128, 256, 512, 1024),
col=echelle2, add=TRUE)
}
on a eu d'autre indication si ça peu t'aider personnellement je suis complétement perdu.
Pour modéliser le point 3, nous vous suggérons de créer une matrice dont chaque case contient une certaine concentration de la molécule inhibitrice. Attention, cette molécule a un taux de diffusion plus élevé que les cellules modélisées, et la stratégie de modélisation est un peu différente de ce que vous connaissez car la molécule n’a pas nécessairement une concentration représentée par un entier dans chaque case. Une stratégie pertinente dans ce cas est de modéliser la diffusion en prenant une proportion de la molécule dans une case qui sera déplacée dans chacune des voisines (en veillant à ne pas aboutir à une concentration négative).
L’augmentation de la concentration dans une case due à la production par E. coli peut être proportionnelle au nombre d’individus E. coli, et cette molécule peut être dégradée à un taux constant (on en perd une certaine proportion à chaque pas de temps ; ça évite qu’on atteigne partout des concentrations gigantesques).
Pour modéliser le point 4, plusieurs choix sont possibles. Par exemple, vous pouvez dire que le taux d’accroissement devient nul dans une localité lorsque la concentration de la molécule inhibitrice, atteint un seuil que vous fixez.
Une autre possibilité est de multiplier le taux d’accroissement 𝑟 par une fonction décroissante de 1 à 0 avec la concentration, par exemple : 𝑟 × 𝑒−concentration ou 𝑟 × 𝑒−𝛽×concentration
(la dernière version a l’intérêt de moduler l’effet de la concentration grâce au paramètre 𝛽.
Cette approche ne peut jouer que sur le taux d’accroissement de la population de Bacilus subtilis; or l’inhibiteur doit pouvoir, en principe, augmenter la mortalité des individus à son contact. Pour le faire, la meilleure solution est de séparer mortalité (premier terme dans l’équation ci-dessous) et la reproduction. On peut par exemple
utiliser la fonction suivante pour modéliser la croissance de B. subtilis:
𝑁𝑖,(𝑡 + 𝑑𝑡) = 𝑁𝑖 (𝑡) × 𝑒−𝛽×concentration × 𝑑𝑡 + 𝑁𝑖 (𝑡) × 𝑟𝑖 ×(1 −𝑁𝑖(𝑡) + 𝑁𝑗(𝑡)𝐾 )× 𝑑𝑡.
Une autre option est de garder un effet sur le taux d’accroissement de la population mais d’ajouter un terme de mortalité fixe:
𝑁𝑖(𝑡 + 𝑑𝑡) = 𝑁𝑖(𝑡) − 𝑁𝑖(𝑡) × 𝑚 × 𝑑𝑡 + ...
Certains paramètres du modèle pourront être informés par des données de la littérature ; par exemple, la vitesse de croissance de chacune des espèce dans les conditions d’expérimentation peut être estimée pour chacune des espèces. D’autres paramètres sont inconnus et il pourra être pertinent d’étudier la sensibilité de vos résultats à des changements de certains de ces paramètres.