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
Fofoquizz
Tous les quiz
Créer mon questionnaire
Médias
Nouveaux médias
Nouveaux commentaires
Rechercher un média
Fofoblogs
Recherche de blogs
💵 0 Fofocoins
🛒 Boutique
Quoi de neuf ?
Rechercher par titre uniquement
Par:
Discussions sans réponses
Membres
Menu
Connexion
S'inscrire
Sujets populaires
Derniers messages
S'inscrire
Se connecter
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: 595914"] 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. [/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