Une âme charitable avec une spécialité en codage

J
jesuisperdue
Anonyme
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
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 :

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:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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.
 
I
Infos
Anonyme
Je connaissais pas !! Mercii

J'ai trouvé ça, vous pouvez toujours essayer, à voir, je ne suis pas expert, c'est une trouvaille...

sizeenvironment=50
r1=0.25 # Taux de croissance de pop1 (Bacillus subtilis)
r2=0.30 # Taux de croissance de pop2 (E. coli) - peut être différent
K=500
dt=0.1
a21=1 # Impact de pop2 sur pop1 (sera modifié par l'inhibiteur)
a12=1 # Impact de pop1 sur pop2 (pour l'instant, on peut le laisser, ou le modifier aussi si besoin)
tauxdispersion=0.5
dureesimulation=100

# Paramètres pour la molécule inhibitrice
taux_production = 0.1 # Production par individu de pop2
taux_degradation = 0.05 # Dégradation naturelle de la molécule
taux_diffusion = 0.2 # Diffusion de la molécule
beta = 0.01 # Sensibilité de pop1 à la concentration de l'inhibiteur

# 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

# Initialisation de la concentration de la molécule inhibitrice
inhibiteur = matrix(0, ncol=sizeenvironment+2, nrow=sizeenvironment+2)

# 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)
echelle_inhibiteur = heat.colors(100) # Palette pour visualiser l'inhibiteur

# Fonction de croissance pour pop1, affectée par l'inhibiteur
next_n1=function(N1, N2, r1, K, dt, inhibiteur_local, beta){
# Utilisation de la fonction de mortalité suggérée
mortalite = N1 * beta * inhibiteur_local * dt
croissance = N1 * r1 * (1 - (N1 + N2)/K) * dt
return(N1 - mortalite + croissance)
}

# Fonction de croissance pour pop2 (pour l'instant, compétition simple)
next_n2=function(N2, N1, r2, K, dt, a12){
return(N2 + N2 * r2 * (1 - (N1 + N2)/K) * dt)
}

# 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))

# Boucle temps
for(t in seq(0, dureesimulation, dt)){
copie_pop1=pop1
copie_pop2=pop2
copie_inhibiteur=inhibiteur

# Mise à jour de la concentration de la molécule inhibitrice
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
# Production par pop2
inhibiteur[i,j] = inhibiteur[i,j] + copie_pop2[i,j] * taux_production * dt
# Dégradation
inhibiteur[i,j] = inhibiteur[i,j] * (1 - taux_degradation * dt)

# Diffusion (approche simple : on répartit une proportion aux voisins)
perte_diffusion = copie_inhibiteur[i,j] * taux_diffusion * dt
inhibiteur[i,j] = inhibiteur[i,j] - perte_diffusion
voisins = cbind(i + coord$x, j + coord$y)
voisins_valides = voisins[voisins[,1] > 1 & voisins[,1] < sizeenvironment+2 & voisins[,2] > 1 & voisins[,2] < sizeenvironment+2,]
for(k in 1:nrow(voisins_valides)){
inhibiteur[voisins_valides[k,1], voisins_valides[k,2]] = inhibiteur[voisins_valides[k,1], voisins_valides[k,2]] + perte_diffusion / nrow(voisins_valides)
}
}
}
inhibiteur[1,]=0
inhibiteur[sizeenvironment+2,]=0
inhibiteur[,1]=0
inhibiteur[,sizeenvironment+2]=0


for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
# Croissance de pop1 affectée par l'inhibiteur
effectif1=next_n1(N1=copie_pop1[i,j], N2=copie_pop2[i,j], r1, K, dt, inhibiteur[i,j], beta)
pop1[i,j]=rpois(n=1, lambda=max(0, effectif1)) # On s'assure que lambda est non négatif

# Croissance de pop2 (compétition simple pour l'instant)
effectif2=next_n2(N2=copie_pop2[i,j], N1=copie_pop1[i,j], r2, K, dt, a12)
pop2[i,j]=rpois(n=1, lambda=max(0, effectif2)) # On s'assure que lambda est non négatif
}
}

# Dispersion de pop1
copie_pop1=pop1
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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

# Dispersion de pop2
copie_pop2=pop2
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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)
# Affichage de la concentration de l'inhibiteur (optionnel)
# image(inhibiteur, col=echelle_inhibiteur, add=TRUE, alpha=0.3)
}
 
J
jesuisperdue
Anonyme
J'ai trouvé ça, vous pouvez toujours essayer, à voir, je ne suis pas expert, c'est une trouvaille...

sizeenvironment=50
r1=0.25 # Taux de croissance de pop1 (Bacillus subtilis)
r2=0.30 # Taux de croissance de pop2 (E. coli) - peut être différent
K=500
dt=0.1
a21=1 # Impact de pop2 sur pop1 (sera modifié par l'inhibiteur)
a12=1 # Impact de pop1 sur pop2 (pour l'instant, on peut le laisser, ou le modifier aussi si besoin)
tauxdispersion=0.5
dureesimulation=100

# Paramètres pour la molécule inhibitrice
taux_production = 0.1 # Production par individu de pop2
taux_degradation = 0.05 # Dégradation naturelle de la molécule
taux_diffusion = 0.2 # Diffusion de la molécule
beta = 0.01 # Sensibilité de pop1 à la concentration de l'inhibiteur

# 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

# Initialisation de la concentration de la molécule inhibitrice
inhibiteur = matrix(0, ncol=sizeenvironment+2, nrow=sizeenvironment+2)

# 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)
echelle_inhibiteur = heat.colors(100) # Palette pour visualiser l'inhibiteur

# Fonction de croissance pour pop1, affectée par l'inhibiteur
next_n1=function(N1, N2, r1, K, dt, inhibiteur_local, beta){
# Utilisation de la fonction de mortalité suggérée
mortalite = N1 * beta * inhibiteur_local * dt
croissance = N1 * r1 * (1 - (N1 + N2)/K) * dt
return(N1 - mortalite + croissance)
}

# Fonction de croissance pour pop2 (pour l'instant, compétition simple)
next_n2=function(N2, N1, r2, K, dt, a12){
return(N2 + N2 * r2 * (1 - (N1 + N2)/K) * dt)
}

# 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))

# Boucle temps
for(t in seq(0, dureesimulation, dt)){
copie_pop1=pop1
copie_pop2=pop2
copie_inhibiteur=inhibiteur

# Mise à jour de la concentration de la molécule inhibitrice
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
# Production par pop2
inhibiteur[i,j] = inhibiteur[i,j] + copie_pop2[i,j] * taux_production * dt
# Dégradation
inhibiteur[i,j] = inhibiteur[i,j] * (1 - taux_degradation * dt)

# Diffusion (approche simple : on répartit une proportion aux voisins)
perte_diffusion = copie_inhibiteur[i,j] * taux_diffusion * dt
inhibiteur[i,j] = inhibiteur[i,j] - perte_diffusion
voisins = cbind(i + coord$x, j + coord$y)
voisins_valides = voisins[voisins[,1] > 1 & voisins[,1] < sizeenvironment+2 & voisins[,2] > 1 & voisins[,2] < sizeenvironment+2,]
for(k in 1:nrow(voisins_valides)){
inhibiteur[voisins_valides[k,1], voisins_valides[k,2]] = inhibiteur[voisins_valides[k,1], voisins_valides[k,2]] + perte_diffusion / nrow(voisins_valides)
}
}
}
inhibiteur[1,]=0
inhibiteur[sizeenvironment+2,]=0
inhibiteur[,1]=0
inhibiteur[,sizeenvironment+2]=0


for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
# Croissance de pop1 affectée par l'inhibiteur
effectif1=next_n1(N1=copie_pop1[i,j], N2=copie_pop2[i,j], r1, K, dt, inhibiteur[i,j], beta)
pop1[i,j]=rpois(n=1, lambda=max(0, effectif1)) # On s'assure que lambda est non négatif

# Croissance de pop2 (compétition simple pour l'instant)
effectif2=next_n2(N2=copie_pop2[i,j], N1=copie_pop1[i,j], r2, K, dt, a12)
pop2[i,j]=rpois(n=1, lambda=max(0, effectif2)) # On s'assure que lambda est non négatif
}
}

# Dispersion de pop1
copie_pop1=pop1
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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

# Dispersion de pop2
copie_pop2=pop2
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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)
# Affichage de la concentration de l'inhibiteur (optionnel)
# image(inhibiteur, col=echelle_inhibiteur, add=TRUE, alpha=0.3)
}
Merci ! Je viens d'essayer le probleme c que on est sensé avoir au début E colis au centre qui produit la molécule et autour l'autre bactérie qui au fils du temps va diminuer, et à la fin on verra au centre E colis avec son halo ( donc pas de bactérie) et il restera un peux de l'autre bactérie qui n' pas était atteint par la molécule, mais je vais prendre ce que t'as fait en base
 
I
Infos
Anonyme
Merci ! Je viens d'essayer le probleme c que on est sensé avoir au début E colis au centre qui produit la molécule et autour l'autre bactérie qui au fils du temps va diminuer, et à la fin on verra au centre E colis avec son halo ( donc pas de bactérie) et il restera un peux de l'autre bactérie qui n' pas était atteint par la molécule, mais je vais prendre ce que t'as fait en base
Je regarderai de nouveau ce que je peux trouver... je ne promets rien...
 
karton
Passionné
Messages
1 385
Fofocoins
24 251
Genre
Homme
Bonjour,
Si tu es connectée j'aimerais bien avoir le sujet du tp.
parce que jusqu'ici ce n'est pas clair pour moi .
 
karton
Passionné
Messages
1 385
Fofocoins
24 251
Genre
Homme
Dans ce que tu as transmis, ca parle d'un point 3. Je suppose qu'il y a un point 1 et un point 2 ?

J'aimerais avoir un point de vue global donc:
- c'est quelle matière ?
- quel niveau (prépa écoles, fac, bts)
- combien avez vous eu de temps pour faire ce travail ?
- la totalité du sujet du tp
- le script qu'ils ont donné avec le sujet (si j'ai bien compris)
- et ton script modifié, (qui ne fonctionne pas bien)
 
I
Infos
Anonyme
Merci ! Je viens d'essayer le probleme c que on est sensé avoir au début E colis au centre qui produit la molécule et autour l'autre bactérie qui au fils du temps va diminuer, et à la fin on verra au centre E colis avec son halo ( donc pas de bactérie) et il restera un peux de l'autre bactérie qui n' pas était atteint par la molécule, mais je vais prendre ce que t'as fait en base
Nouvelles recherches, j'ai trouvé ça, j'espère que cela pourra vous servir ( c'est du Chinois pour moi !
sans manquer de respect au peuple Chinois bien-sûr).


# Paramètres
sizeenvironment=50
r1=0.2 # Taux de croissance de B. subtilis
r2=0.3 # Taux de croissance de E. coli (peut-être plus rapide)
K=500
dt=0.1
tauxdispersion=0.1 # Taux de dispersion (peut-être plus faible que la diffusion de la molécule)
dureesimulation=200

# Paramètres de la molécule inhibitrice
taux_production=0.1 # Production par E. coli (par individu)
taux_degradation=0.05 # Dégradation de la molécule par unité de temps
taux_diffusion=0.5 # Taux de diffusion de la molécule (proportion qui se déplace vers chaque voisin)
beta=0.02 # Sensibilité de B. subtilis à la molécule

# 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(0,
ncol=sizeenvironment+2, nrow=sizeenvironment+2)
centre = (sizeenvironment+2)/2
rayon = sizeenvironment/4
for(i in 1:(sizeenvironment+2)){
for(j in 1:(sizeenvironment+2)){
if((i - centre)^2 + (j - centre)^2 <= rayon^2){
pop2[i,j] = rpois(n=1, lambda=5) # Initialisation de E. coli au centre
}
}
}
pop2[1,]=0
pop2[sizeenvironment+2,]=0
pop2[,1]=0
pop2[,sizeenvironment+2]=0

# Initialisation concentration de la molécule inhibitrice
concentration = matrix(0,
ncol=sizeenvironment+2, nrow=sizeenvironment+2)

# 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)
echelle_inhibiteur = heat.colors(100)

# Fonction de croissance de B. subtilis inhibée
next_n_pop1=function(Ni, concentration_locale, r, K, dt){
taux_accroissement_modifie = r * exp(-beta * concentration_locale)
return(Ni + Ni*taux_accroissement_modifie*(1-Ni/K)*dt) # Simplification de la compétition pour l'instant
}

# Fonction de croissance de E. coli (sans inhibition directe dans ce modèle simple)
next_n_pop2=function(Ni, r, K, dt){
return(Ni + Ni*r*(1-Ni/K)*dt)
}

# Tableau coordonnées pour la dispersion
coord=data.frame(x=c(-1,-1,-1,0,0,1,1,1), y=c(-1,0,1,-1,1,-1,0,1))

# Boucle temps
for(t in seq(0, dureesimulation, dt)){
copie_pop1=pop1
copie_pop2=pop2
copie_concentration=concentration

# Mise à jour de la concentration de la molécule inhibitrice
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
# Production par E. coli
concentration[i,j] = concentration[i,j] + copie_pop2[i,j] * taux_production * dt

# Dégradation
concentration[i,j] = concentration[i,j] * (1 - taux_degradation * dt)

# Diffusion (approche simple : on distribue une fraction aux voisins)
perte_diffusion = copie_concentration[i,j] * taux_diffusion * dt
concentration[i,j] = concentration[i,j] - perte_diffusion
for(k in 1:8){
ni = i + coord$x[k]
nj = j + coord$y[k]
if(ni > 1 && ni <= sizeenvironment+1 && nj > 1 && nj <= sizeenvironment+1){
concentration[ni,nj] = concentration[ni,nj] + perte_diffusion / 8
}
}
}
}
concentration[1,]=0
concentration[sizeenvironment+2,]=0
concentration[,1]=0
concentration[,sizeenvironment+2]=0


# Mise à jour des populations
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
# Croissance de B. subtilis (inhibée par la molécule)
effectif1=next_n_pop1(Ni=copie_pop1[i,j], concentration_locale=concentration[i,j], r=r1, K=K, dt=dt)
pop1[i,j]=rpois(n=1, lambda=pmax(0, effectif1)) # pmax pour éviter les valeurs négatives

# Croissance de E. coli (non affectée directement par la molécule dans ce modèle)
effectif2=next_n_pop2(Ni=copie_pop2[i,j], r=r2, K=K, dt=dt)
pop2[i,j]=rpois(n=1, lambda=pmax(0, effectif2))
}
}

# Dispersion (identique au code initial)
copie_pop1=pop1
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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)
par(mfrow=c(1,2)) # Afficher les deux populations côte à côte
image(pop1, breaks=c(0,1,2,4,8,16,32, 64, 128, 256, 512, 1024),
col=echelle1, main="B. subtilis")
image(pop2, breaks=c(0,1,2,4,8,16,32, 64, 128, 256, 512, 1024),
col=echelle2, main="E. coli", add=FALSE)
# Pour visualiser la concentration de l'inhibiteur (optionnel)
# image(concentration, col=echelle_inhibiteur, main="Concentration Inhibiteur")
}

Principales modifications et ajouts :

* Paramètres de l'inhibiteur: Introduction de taux_production, taux_degradation, taux_diffusion et beta.
* Initialisation d' E. coli: La population de pop2 est initialisée au centre de la grille.
* Matrice de concentration: Une nouvelle matrice concentration est créée et initialisée à zéro.
* Mise à jour de la concentration: Dans la boucle temporelle, la concentration est mise à jour en tenant compte de la production par pop2, de la dégradation et de la diffusion vers les voisins. Une approche simple de diffusion est utilisée ici : une proportion de la concentration est "perdue" par une case et redistribuée équitablement à ses 8 voisins.
* Fonction de croissance inhibée pour B. subtilis: La fonction next_n_pop1 prend maintenant en compte la concentration locale de l'inhibiteur via un facteur multiplicatif e^{-\beta \times concentration}.
* Croissance d' E. coli: La fonction next_n_pop2 est simplifiée pour l'instant (pas d'effet direct de l'inhibiteur sur sa propre croissance dans ce modèle simple).
* Visualisation: Les deux populations sont affichées côte à côte pour faciliter la comparaison. Une visualisation optionnelle de la concentration de l'inhibiteur est commentée.
Points importants à considérer et à ajuster :

* Paramètres: Les valeurs des paramètres (taux de production, dégradation, diffusion, sensibilité \beta) sont cruciales pour observer le comportement souhaité. Il faudra probablement les ajuster par tâtonnements pour correspondre au scénario décrit. La vitesse de diffusion de la molécule (taux_diffusion) devrait être plus élevée que le taux de dispersion des bactéries (tauxdispersion).

* Effet sur E. coli: Dans ce modèle, l'inhibiteur n'a pas d'effet direct sur E. coli. Si l'on souhaite modéliser une auto-inhibition ou un coût de production, il faudrait modifier la fonction next_n_pop2.

* Compétition directe: Pour l'instant, la compétition entre les deux espèces est principalement indirecte via la molécule inhibitrice. Si une compétition pour des ressources communes est également souhaitée, il faudrait réintroduire un terme comme celui de l'équation logistique pour deux espèces (avec les coefficients \alpha_{12} et \alpha_{21}).

* Conditions aux bords: Les bords de la grille sont maintenus à zéro pour éviter les effets de bord.

Cette base de code devrait vous être utile ! Vous devrez expérimenter avec les paramètres pour obtenir le résultat souhaité : une zone centrale dominée par E. coli avec un halo sans B. subtilis et une périphérie où B. subtilis survit.
 
I
Infos
Anonyme
Et, pour finir cette recherche dans ce monde bien étrange, quelques infos ! En supplément...
Bon courage à vous, j'espère que cela va un peu vous aider dans votre quête du Saint Graal, un peu comme Indiana Jones !
A la recherche du codage perdu !


Vous pouvez modifier les taux de croissance (r1 et r2) pour voir si une espèce prend le dessus plus rapidement.
* Changer le taux de production de l'inhibiteur (taux_production) pour voir si la zone d'inhibition s'étend plus ou moins vite.
* Jouer avec le taux de diffusion (taux_diffusion) pour observer la rapidité avec laquelle la molécule se propage.
* Ajuster la sensibilité de B. subtilis (beta) pour voir si une faible concentration suffit à l'affecter.
Chaque simulation est une expérience en soi. Même si le résultat n'est pas celui attendu du premier coup, ça donne des indications sur la manière dont le modèle réagit aux changements de paramètres.
 
J
jesuisperdue
Anonyme
Nouvelles recherches, j'ai trouvé ça, j'espère que cela pourra vous servir ( c'est du Chinois pour moi !
sans manquer de respect au peuple Chinois bien-sûr).


# Paramètres
sizeenvironment=50
r1=0.2 # Taux de croissance de B. subtilis
r2=0.3 # Taux de croissance de E. coli (peut-être plus rapide)
K=500
dt=0.1
tauxdispersion=0.1 # Taux de dispersion (peut-être plus faible que la diffusion de la molécule)
dureesimulation=200

# Paramètres de la molécule inhibitrice
taux_production=0.1 # Production par E. coli (par individu)
taux_degradation=0.05 # Dégradation de la molécule par unité de temps
taux_diffusion=0.5 # Taux de diffusion de la molécule (proportion qui se déplace vers chaque voisin)
beta=0.02 # Sensibilité de B. subtilis à la molécule

# 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(0,
ncol=sizeenvironment+2, nrow=sizeenvironment+2)
centre = (sizeenvironment+2)/2
rayon = sizeenvironment/4
for(i in 1:(sizeenvironment+2)){
for(j in 1:(sizeenvironment+2)){
if((i - centre)^2 + (j - centre)^2 <= rayon^2){
pop2[i,j] = rpois(n=1, lambda=5) # Initialisation de E. coli au centre
}
}
}
pop2[1,]=0
pop2[sizeenvironment+2,]=0
pop2[,1]=0
pop2[,sizeenvironment+2]=0

# Initialisation concentration de la molécule inhibitrice
concentration = matrix(0,
ncol=sizeenvironment+2, nrow=sizeenvironment+2)

# 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)
echelle_inhibiteur = heat.colors(100)

# Fonction de croissance de B. subtilis inhibée
next_n_pop1=function(Ni, concentration_locale, r, K, dt){
taux_accroissement_modifie = r * exp(-beta * concentration_locale)
return(Ni + Ni*taux_accroissement_modifie*(1-Ni/K)*dt) # Simplification de la compétition pour l'instant
}

# Fonction de croissance de E. coli (sans inhibition directe dans ce modèle simple)
next_n_pop2=function(Ni, r, K, dt){
return(Ni + Ni*r*(1-Ni/K)*dt)
}

# Tableau coordonnées pour la dispersion
coord=data.frame(x=c(-1,-1,-1,0,0,1,1,1), y=c(-1,0,1,-1,1,-1,0,1))

# Boucle temps
for(t in seq(0, dureesimulation, dt)){
copie_pop1=pop1
copie_pop2=pop2
copie_concentration=concentration

# Mise à jour de la concentration de la molécule inhibitrice
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
# Production par E. coli
concentration[i,j] = concentration[i,j] + copie_pop2[i,j] * taux_production * dt

# Dégradation
concentration[i,j] = concentration[i,j] * (1 - taux_degradation * dt)

# Diffusion (approche simple : on distribue une fraction aux voisins)
perte_diffusion = copie_concentration[i,j] * taux_diffusion * dt
concentration[i,j] = concentration[i,j] - perte_diffusion
for(k in 1:8){
ni = i + coord$x[k]
nj = j + coord$y[k]
if(ni > 1 && ni <= sizeenvironment+1 && nj > 1 && nj <= sizeenvironment+1){
concentration[ni,nj] = concentration[ni,nj] + perte_diffusion / 8
}
}
}
}
concentration[1,]=0
concentration[sizeenvironment+2,]=0
concentration[,1]=0
concentration[,sizeenvironment+2]=0


# Mise à jour des populations
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
# Croissance de B. subtilis (inhibée par la molécule)
effectif1=next_n_pop1(Ni=copie_pop1[i,j], concentration_locale=concentration[i,j], r=r1, K=K, dt=dt)
pop1[i,j]=rpois(n=1, lambda=pmax(0, effectif1)) # pmax pour éviter les valeurs négatives

# Croissance de E. coli (non affectée directement par la molécule dans ce modèle)
effectif2=next_n_pop2(Ni=copie_pop2[i,j], r=r2, K=K, dt=dt)
pop2[i,j]=rpois(n=1, lambda=pmax(0, effectif2))
}
}

# Dispersion (identique au code initial)
copie_pop1=pop1
for(i in 2:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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:(sizeenvironment+1)){
for(j in 2:(sizeenvironment+1)){
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)
par(mfrow=c(1,2)) # Afficher les deux populations côte à côte
image(pop1, breaks=c(0,1,2,4,8,16,32, 64, 128, 256, 512, 1024),
col=echelle1, main="B. subtilis")
image(pop2, breaks=c(0,1,2,4,8,16,32, 64, 128, 256, 512, 1024),
col=echelle2, main="E. coli", add=FALSE)
# Pour visualiser la concentration de l'inhibiteur (optionnel)
# image(concentration, col=echelle_inhibiteur, main="Concentration Inhibiteur")
}

Principales modifications et ajouts :

* Paramètres de l'inhibiteur: Introduction de taux_production, taux_degradation, taux_diffusion et beta.
* Initialisation d' E. coli: La population de pop2 est initialisée au centre de la grille.
* Matrice de concentration: Une nouvelle matrice concentration est créée et initialisée à zéro.
* Mise à jour de la concentration: Dans la boucle temporelle, la concentration est mise à jour en tenant compte de la production par pop2, de la dégradation et de la diffusion vers les voisins. Une approche simple de diffusion est utilisée ici : une proportion de la concentration est "perdue" par une case et redistribuée équitablement à ses 8 voisins.
* Fonction de croissance inhibée pour B. subtilis: La fonction next_n_pop1 prend maintenant en compte la concentration locale de l'inhibiteur via un facteur multiplicatif e^{-\beta \times concentration}.
* Croissance d' E. coli: La fonction next_n_pop2 est simplifiée pour l'instant (pas d'effet direct de l'inhibiteur sur sa propre croissance dans ce modèle simple).
* Visualisation: Les deux populations sont affichées côte à côte pour faciliter la comparaison. Une visualisation optionnelle de la concentration de l'inhibiteur est commentée.
Points importants à considérer et à ajuster :

* Paramètres: Les valeurs des paramètres (taux de production, dégradation, diffusion, sensibilité \beta) sont cruciales pour observer le comportement souhaité. Il faudra probablement les ajuster par tâtonnements pour correspondre au scénario décrit. La vitesse de diffusion de la molécule (taux_diffusion) devrait être plus élevée que le taux de dispersion des bactéries (tauxdispersion).

* Effet sur E. coli: Dans ce modèle, l'inhibiteur n'a pas d'effet direct sur E. coli. Si l'on souhaite modéliser une auto-inhibition ou un coût de production, il faudrait modifier la fonction next_n_pop2.

* Compétition directe: Pour l'instant, la compétition entre les deux espèces est principalement indirecte via la molécule inhibitrice. Si une compétition pour des ressources communes est également souhaitée, il faudrait réintroduire un terme comme celui de l'équation logistique pour deux espèces (avec les coefficients \alpha_{12} et \alpha_{21}).

* Conditions aux bords: Les bords de la grille sont maintenus à zéro pour éviter les effets de bord.

Cette base de code devrait vous être utile ! Vous devrez expérimenter avec les paramètres pour obtenir le résultat souhaité : une zone centrale dominée par E. coli avec un halo sans B. subtilis et une périphérie où B. subtilis survit.

Merciiiiiii !!!!
j'ai essayé ça n'est pas encore ça mais je vais essayer avec ça, j'ai une de mes camarade qui m'a fournis un code mais le probleme est que les bactéries apparaisse au fur et a mesure puis disparaisse alors qu'elle devrait etre la à T=0 et disparaitre en fonction de la molécule
 
J
jesuisperdue
Anonyme
Et, pour finir cette recherche dans ce monde bien étrange, quelques infos ! En supplément...
Bon courage à vous, j'espère que cela va un peu vous aider dans votre quête du Saint Graal, un peu comme Indiana Jones !
A la recherche du codage perdu !


Vous pouvez modifier les taux de croissance (r1 et r2) pour voir si une espèce prend le dessus plus rapidement.
* Changer le taux de production de l'inhibiteur (taux_production) pour voir si la zone d'inhibition s'étend plus ou moins vite.
* Jouer avec le taux de diffusion (taux_diffusion) pour observer la rapidité avec laquelle la molécule se propage.
* Ajuster la sensibilité de B. subtilis (beta) pour voir si une faible concentration suffit à l'affecter.
Chaque simulation est une expérience en soi. Même si le résultat n'est pas celui attendu du premier coup, ça donne des indications sur la manière dont le modèle réagit aux changements de paramètres.


Mercii encore pour avoir participer à l'aventure !! En espérant de le trouver
 
J
jesuisperdue
Anonyme
Dans ce que tu as transmis, ca parle d'un point 3. Je suppose qu'il y a un point 1 et un point 2 ?

J'aimerais avoir un point de vue global donc:
- c'est quelle matière ?
- quel niveau (prépa écoles, fac, bts)
- combien avez vous eu de temps pour faire ce travail ?
- la totalité du sujet du tp
- le script qu'ils ont donné avec le sujet (si j'ai bien compris)
- et ton script modifié, (qui ne fonctionne pas bien)

la matière s'appel modélisation mathématique
Niveau BUT 2ème année
Je suis sensé le rendre aujourd'hui mais au vue des circonstances je le rendrais demain ou ce weekend au plus tard car on est par groupe de 4 mais je suis la seul à travailler, a essayer de comprendre...
le sujet :
L’objectif de ce travail est de développer un modèle spatialisé reproduisant le contexte expérimental de la SAE,
à savoir une espèce bactérienne (Bacillus subtilis) ensemencée en masse dans un milieu gélosé et une autre
espèce (Escherichia coli) déposée en surface, à un endroit précis, émettant une molécule diffusive inhibant la
croissance de B. subtilis.
Les bases de ce modèle sont présentes dans le script issu du TP 2 (Modèle spatialisé, deux espèces en symbiose),
qu’il faudra modifier pour:
• initialiser la simulation dans des conditions proches de l’expérience (E. Coli au centre, B. subtilis partout)
• modéliser seulement une compétition entre les deux espèces, pas de symbiose
• modéliser l’émission d’une molécule inhibitrice par E. coli.
• modéliser la diminution du taux d’accroissement de B. subtilis en présence de la molécule inhibitrice.
Le script sur le quel on devait ou on doit se basée je l'ai donnée précédemment voici celui que j'ai fais :

##############Script final####################

#Paramètres

tailledelenvironnement=50
nombredepasdetemps=50
Diffusion_inhib=1
Production_inhib=0.5
Betadep_inhib=2000
Degrad_inhib=0.2



vec=rpois(n=(tailledelenvironnement+2)^2, lambda=10)



PopBS=matrix(vec, nr=tailledelenvironnement+2, nc=tailledelenvironnement+2)

PopBS[1,]=0

PopBS[tailledelenvironnement+2,]=0

PopBS[,1]=0

PopBS[,tailledelenvironnement+2]=0



PopEC=matrix(vec,nr=tailledelenvironnement+2, nc=tailledelenvironnement+2)

PopEC[1:22,]=0

PopEC[27:tailledelenvironnement+2,]=0

PopEC[,1:22]=0

PopEC[,27:tailledelenvironnement+2]=0



inhib=matrix(0,nr=tailledelenvironnement+2, nc=tailledelenvironnement+2)

inhib[1,]=0

inhib[tailledelenvironnement+2,]=0

inhib[,1]=0

inhib[,tailledelenvironnement+2]=0



par(mar=c(0,0,0,0), mfrow=c(1,1))



col1=rgb(1,1,10:0/10, alpha=0.5)

col2=rgb(10:0/10,1,1, alpha=0.5)



image(PopBS, zlim=c(0,150),col=col1)

image(PopEC, zlim=c(0,150),col=col2,add=TRUE)



#Fonction pour la croissance de bacillus

next_n_bacillus=function(b,nt_coli, nt_bacillus,c_inhib,r,K){

nt_bacillus*exp(-b*c_inhib)+nt_bacillus*r*(1-(nt_coli+nt_bacillus)/K)

}

#Fonction pour Ecoli

next_n_coli=function(nt_coli, nt_bacillus,r,K){

nt_coli+nt_coli*r*(1-((nt_coli+nt_bacillus)/K))

}





coordrel=data.frame(ligne=c(-1,-1,-1,0,0,1,1,1), colonne=c(-1,0,1,-1,1,-1,0,1))

coordrel





for(t in 1:nombredepasdetemps){

inhib_precedente=inhib

PopEC_precedente=PopEC

PopBS_precedente=PopBS

for(i in 2:(tailledelenvironnement+1)){

for(j in 2:(tailledelenvironnement+1)){

effectif1=next_n_bacillus(nt_bacillus=PopBS_precedente[i,j],nt_coli=PopEC_precedente[i,j],r=0.25,K=150, b=Betadep_inhib, c_inhib=inhib_precedente[i,j])

effectif2=next_n_coli(nt_coli = PopEC_precedente[i,j],nt_bacillus = PopBS_precedente[i,j],r=0.25,K=150)

PopBS[i,j]=rpois(n=1,lambda=effectif1)

PopEC[i,j]=rpois(n=1,lambda=effectif2)

inhib[i,j]=inhib_precedente[i,j]*(1-Degrad_inhib)+PopEC_precedente[i,j]*Production_inhib

}

}

inhib_precedente=inhib

PopEC_precedente=PopEC

PopBS_precedente=PopBS

for(i in 2:(tailledelenvironnement+1)){

for(j in 2:(tailledelenvironnement+1)){

#Dispersion de l'inhibiteur

Dispersants_inhib = inhib_precedente[i,j]*Diffusion_inhib/8

for(k in 1:8){

inhib[i+coordrel[k,1],j+coordrel[k,2]]= inhib[i+coordrel[k,1],j+coordrel[k,2]]+Dispersants_inhib

}

inhib[i,j]=inhib[i,j]-inhib_precedente[i,j]*Diffusion_inhib

#Dispersion d'Ecoli

nombrededispersants=rbinom(1,size=PopEC_precedente[i,j],prob=0.01)

if(nombrededispersants>0){

for(m in 1:nombrededispersants){

casedarrivee=sample(1:8,size=1)

PopEC[i+coordrel[casedarrivee,1],j+coordrel[casedarrivee,2]]= PopEC[i+coordrel[casedarrivee,1],j+coordrel[casedarrivee,2]]+1

PopEC[i,j]=PopEC[i,j]-1

}

}

#Dispersion de bacillus

nombrededispersants=rbinom(1,size=PopBS_precedente[i,j],prob=0.1)

if(nombrededispersants>0){

for(m in 1:nombrededispersants){

casedarrivee=sample(1:8,size=1)

PopBS[i+coordrel[casedarrivee,1],j+coordrel[casedarrivee,2]]= PopBS[i+coordrel[casedarrivee,1],j+coordrel[casedarrivee,2]]+1

PopBS[i,j]=PopBS[i,j]-1

}

}

}

}

PopEC[1,]=0

PopEC[tailledelenvironnement+2,]=0

PopEC[,1]=0

PopEC[,tailledelenvironnement+2]=0

PopBS[1,]=0

PopBS[tailledelenvironnement+2,]=0

PopBS[,1]=0

PopBS[,tailledelenvironnement+2]=0

inhib[1,]=0

inhib[tailledelenvironnement+2,]=0

inhib[,1]=0

inhib[,tailledelenvironnement+2]=0

Sys.sleep(0.05)

col1=rgb(1,1,10:0/10, alpha=0.5)

col2=rgb(10:0/10,1,1, alpha=0.5)

image(PopBS, zlim=c(0,150),col=col1)

image(PopEC, zlim=c(0,150),col=col2,add=TRUE)

}
 
J
jesuisperdue
Anonyme
la matière s'appel modélisation mathématique
Niveau BUT 2ème année
Je suis sensé le rendre aujourd'hui mais au vue des circonstances je le rendrais demain ou ce weekend au plus tard car on est par groupe de 4 mais je suis la seul à travailler, a essayer de comprendre...
le sujet :
L’objectif de ce travail est de développer un modèle spatialisé reproduisant le contexte expérimental de la SAE,
à savoir une espèce bactérienne (Bacillus subtilis) ensemencée en masse dans un milieu gélosé et une autre
espèce (Escherichia coli) déposée en surface, à un endroit précis, émettant une molécule diffusive inhibant la
croissance de B. subtilis.
Les bases de ce modèle sont présentes dans le script issu du TP 2 (Modèle spatialisé, deux espèces en symbiose),
qu’il faudra modifier pour:
• initialiser la simulation dans des conditions proches de l’expérience (E. Coli au centre, B. subtilis partout)
• modéliser seulement une compétition entre les deux espèces, pas de symbiose
• modéliser l’émission d’une molécule inhibitrice par E. coli.
• modéliser la diminution du taux d’accroissement de B. subtilis en présence de la molécule inhibitrice.
Le script sur le quel on devait ou on doit se basée je l'ai donnée précédemment voici celui que j'ai fais :

##############Script final####################

#Paramètres

tailledelenvironnement=50
nombredepasdetemps=50
Diffusion_inhib=1
Production_inhib=0.5
Betadep_inhib=2000
Degrad_inhib=0.2



vec=rpois(n=(tailledelenvironnement+2)^2, lambda=10)



PopBS=matrix(vec, nr=tailledelenvironnement+2, nc=tailledelenvironnement+2)

PopBS[1,]=0

PopBS[tailledelenvironnement+2,]=0

PopBS[,1]=0

PopBS[,tailledelenvironnement+2]=0



PopEC=matrix(vec,nr=tailledelenvironnement+2, nc=tailledelenvironnement+2)

PopEC[1:22,]=0

PopEC[27:tailledelenvironnement+2,]=0

PopEC[,1:22]=0

PopEC[,27:tailledelenvironnement+2]=0



inhib=matrix(0,nr=tailledelenvironnement+2, nc=tailledelenvironnement+2)

inhib[1,]=0

inhib[tailledelenvironnement+2,]=0

inhib[,1]=0

inhib[,tailledelenvironnement+2]=0



par(mar=c(0,0,0,0), mfrow=c(1,1))



col1=rgb(1,1,10:0/10, alpha=0.5)

col2=rgb(10:0/10,1,1, alpha=0.5)



image(PopBS, zlim=c(0,150),col=col1)

image(PopEC, zlim=c(0,150),col=col2,add=TRUE)



#Fonction pour la croissance de bacillus

next_n_bacillus=function(b,nt_coli, nt_bacillus,c_inhib,r,K){

nt_bacillus*exp(-b*c_inhib)+nt_bacillus*r*(1-(nt_coli+nt_bacillus)/K)

}

#Fonction pour Ecoli

next_n_coli=function(nt_coli, nt_bacillus,r,K){

nt_coli+nt_coli*r*(1-((nt_coli+nt_bacillus)/K))

}





coordrel=data.frame(ligne=c(-1,-1,-1,0,0,1,1,1), colonne=c(-1,0,1,-1,1,-1,0,1))

coordrel





for(t in 1:nombredepasdetemps){

inhib_precedente=inhib

PopEC_precedente=PopEC

PopBS_precedente=PopBS

for(i in 2:(tailledelenvironnement+1)){

for(j in 2:(tailledelenvironnement+1)){

effectif1=next_n_bacillus(nt_bacillus=PopBS_precedente[i,j],nt_coli=PopEC_precedente[i,j],r=0.25,K=150, b=Betadep_inhib, c_inhib=inhib_precedente[i,j])

effectif2=next_n_coli(nt_coli = PopEC_precedente[i,j],nt_bacillus = PopBS_precedente[i,j],r=0.25,K=150)

PopBS[i,j]=rpois(n=1,lambda=effectif1)

PopEC[i,j]=rpois(n=1,lambda=effectif2)

inhib[i,j]=inhib_precedente[i,j]*(1-Degrad_inhib)+PopEC_precedente[i,j]*Production_inhib

}

}

inhib_precedente=inhib

PopEC_precedente=PopEC

PopBS_precedente=PopBS

for(i in 2:(tailledelenvironnement+1)){

for(j in 2:(tailledelenvironnement+1)){

#Dispersion de l'inhibiteur

Dispersants_inhib = inhib_precedente[i,j]*Diffusion_inhib/8

for(k in 1:8){

inhib[i+coordrel[k,1],j+coordrel[k,2]]= inhib[i+coordrel[k,1],j+coordrel[k,2]]+Dispersants_inhib

}

inhib[i,j]=inhib[i,j]-inhib_precedente[i,j]*Diffusion_inhib

#Dispersion d'Ecoli

nombrededispersants=rbinom(1,size=PopEC_precedente[i,j],prob=0.01)

if(nombrededispersants>0){

for(m in 1:nombrededispersants){

casedarrivee=sample(1:8,size=1)

PopEC[i+coordrel[casedarrivee,1],j+coordrel[casedarrivee,2]]= PopEC[i+coordrel[casedarrivee,1],j+coordrel[casedarrivee,2]]+1

PopEC[i,j]=PopEC[i,j]-1

}

}

#Dispersion de bacillus

nombrededispersants=rbinom(1,size=PopBS_precedente[i,j],prob=0.1)

if(nombrededispersants>0){

for(m in 1:nombrededispersants){

casedarrivee=sample(1:8,size=1)

PopBS[i+coordrel[casedarrivee,1],j+coordrel[casedarrivee,2]]= PopBS[i+coordrel[casedarrivee,1],j+coordrel[casedarrivee,2]]+1

PopBS[i,j]=PopBS[i,j]-1

}

}

}

}

PopEC[1,]=0

PopEC[tailledelenvironnement+2,]=0

PopEC[,1]=0

PopEC[,tailledelenvironnement+2]=0

PopBS[1,]=0

PopBS[tailledelenvironnement+2,]=0

PopBS[,1]=0

PopBS[,tailledelenvironnement+2]=0

inhib[1,]=0

inhib[tailledelenvironnement+2,]=0

inhib[,1]=0

inhib[,tailledelenvironnement+2]=0

Sys.sleep(0.05)

col1=rgb(1,1,10:0/10, alpha=0.5)

col2=rgb(10:0/10,1,1, alpha=0.5)

image(PopBS, zlim=c(0,150),col=col1)

image(PopEC, zlim=c(0,150),col=col2,add=TRUE)

}
et jj'ai d'autre indication pour nous aider:
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
 
I
Infos
Anonyme
Mercii encore pour avoir participer à l'aventure !! En espérant de le trouver
Une bien drôle d'aventure, dans un univers qui met étranger, j'en avais bien-sûr entendu parler... c'est un peu l'avenir qui s'écrit avec ces nouveaux langages, une route vers le futur !
J'espère que tout ça, apportera de magnifiques choses, bon chance à vous dans votre travail...
 
J
jesuisperdue
Anonyme
Une bien drôle d'aventure, dans un univers qui met étranger, j'en avais bien-sûr entendu parler... c'est un peu l'avenir qui s'écrit avec ces nouveaux langages, une route vers le futur !
J'espère que tout ça, apportera de magnifiques choses, bon chance à vous dans votre travail...
Merci pour ces mots inspirants que cette aventure vers l'inconnu t’apporte aussi de belles découvertes
 

🚫 Alerte AdBlock !

Vous avez activé le mode Ninja, et il cache toutes les pubs ! 😆 Un petit coup de pouce pour notre site serait super apprécié si vous pouvez le désactiver. 🙏

🦸‍♂️ J'ai Désactivé AdBlock !