Menu
Accueil
Forum Débats
Forum Vie quotidienne
Forum culture
Actualités
Forums
Discussions sans réponses
Membres
Quoi de neuf
Nouveaux messages
Nouveaux médias
Nouveaux commentaires (Médias)
Nouveaux articles
Dernières activités
Médias
Nouveaux médias
Nouveaux commentaires
Rechercher un média
Blogs
Recherche de blogs
💵 0 Fofocoins
🛒 Boutique
Quoi de neuf ?
Rechercher par titre uniquement
Par:
Discussions sans réponses
Membres
Menu
Connexion
S'inscrire
Accueil
Forums
Vie quotidienne : conseils et discussions
École, études et vie professionnelle
Une âme charitable avec une spécialité en codage
JavaScript est désactivé. Pour une meilleure expérience, s'il vous plaît activer JavaScript dans votre navigateur avant de continuer.
Vous utilisez un navigateur non à jour ou ancien. Il ne peut pas afficher ce site ou d'autres sites correctement.
Vous devez le mettre à jour ou utiliser un
navigateur alternatif
.
Répondre à la discussion
Message
[QUOTE="Infos, post: 595894"] 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) } [/QUOTE]
Nom d'utilisateur
🤖 Vérification anti robots
Poster une réponse
Accueil
Forums
Vie quotidienne : conseils et discussions
École, études et vie professionnelle
Une âme charitable avec une spécialité en codage