Question 1 : Cas d’une petite population

Intuition :

Je pense que sur une petite population la difference de repartition d’allèle peut etre grande, on peut facilement voir une allèle qui prend le dessus en 20 générations. Si on part avec une forte population de MM on à de forte chance d’avoir au final peu de BB à la fin et inversement.

#2 = BB, 1 = MB et 0 = MM
#Bleu = Population au allèles BB
#Rouge = Population au allèles MM
#Vert = Population au allèles MB

set.seed(4);

#--------Fonction de calcul des alleles 
calculcAllele<-function(Pere,Mere){
      if(Pere==2 && Mere==2) { 
        allele=2;
      }
      if(Pere==0 && Mere==0){
        allele=0;
      }
      if(Pere==1 && Mere==1 ){
         allele=sample(c(0,1,2),1,replace=TRUE,c(1/4,1/2,1/4));
      }
      if(Pere==2 && Mere==0 || Mere==2 && Pere==0 ){
        allele=1;
      }
      if(Pere==0 && Mere==1 || Mere==0 && Pere==1 ){
        allele=sample(c(0,1),1,replace=TRUE,c(1/2,1/2));
      }
      if(Pere==2 && Mere==1 || Mere==2&& Pere==1 ){
        allele=sample(c(1,2),1,replace=TRUE,c(1/2,1/2));
      }
  return(allele)
}

#--------Fonction d'initialisation de P0
initialisationPop<-function(Pop,Bleu,Marron){
  l<-c()
  for (h in 1:Bleu){  
    l<-c(l,2);
  }
  for (h in 1:Marron){
    l<-c(l,0);
  }
  for (h in 1:(Pop-Marron-Bleu)){
    l<-c(l,1);
  }
  #melange des alleles
  p0<-sample(l,Pop,replace=FALSE); 
  return(p0);
}

#--------Fonction qui creer des population de p0 a pImax
evolution<-function(P,I,B,M){
  #initialisation de toutes les variables
  y<-0;
  x<-0;
  bleu<-c(B);
  bleuMarron<-c((P-B-M));
  marron<-c(M);
  r<-c();
  p0<-c();
  ptemp<-c();
  
  p0<-initialisationPop(P,B,M);
  
  for(j in 1:I){ #Nombre de generation voulu
    for (k in 1:P){ #Nombre de personne dans une pop initial
      #On tire deux nombres aleatoirement pour choisir 2personnes dans la population 
      x<-floor(sample(c(1:P),1));
      y<-floor(sample(c(1:P),1));
      
      #On vérifi que l'on n'a pas tirer deux fois la meme personne
      while (x==y){ 
        y<-floor(sample(c(1:P),1));
      }
      allele<-calculcAllele(p0[x],p0[y]);
      ptemp<-c(ptemp,allele);
    }
    #On creer des vecteurs avec le nombre de personne BB, MM à chaque generation
    bleu<-c(bleu,sum(ptemp==2));
    marron<-c(marron,sum(ptemp==0));
    p0<-ptemp;
    ptemp<-c();
  }
  #return(bleu);
  return(c(bleu,marron));
}

#--------Fonction d'affichage
affichage<-function(P,I,B,M){
  stat<-evolution(P,I,B,M); #On recupere le res de la fonction evolution
  lines(stat[1:(I+1)], type='l', col='blue'); #On trace l'evolution des BB
  lines(stat[(I+2):(length(stat))], type='l', col='red');#On trace l'evolution des MM
  lines((P-stat[1:(I+1)]-stat[(I+2):(length(stat))]), type='l', col='GREEN');#On trace l'evolution des MB
}
  
main<-function(P=20,I=20,B,M,NbOcc=10){
  plot(c(M:M),xlim = c(1, I), ylim = c(0, P), ylab='NbPersonne', xlab='Generation')
  lines(c(B:B))
  for(i in 1:NbOcc){
    affichage(P,I,B,M);
  }
}

P(BB=4, MM=12, P=20)

main(P=20,I=20,B=4,M=12,NbOcc=10);

On voit dans cette simulation que la population de BB diminu des les premières générations pour donner des MB alors que le nombre de MM accroit moins brutalement. Au final les MM ont l’aire d’etre legerement predominant.

P(BB=12, MM=4, P=20)

main(P=20,I=20,B=12,M=4,NbOcc=10);

On invers la population de base de BB et MM. On n’observe pas le schema inverse du cas precedent. On arrive a avoir des populations ou MM reprend le dessus sur les BB. La population de MB reste encore centré autour de 10. Comme ci dessus la population de BB chute des le debut et la population de MB augmente. Apres la 5ieme géneration soit le nombre de BB reprend le dessus sois le nombre chute.

P(BB=5, MM=5, P=20)

main(P=20,I=20,B=5,M=5,NbOcc=10);

Ici sur les premières générations il y a plus de cas ou les MM sont prédominant et les BB semblent chuter plus. Sur la suite on observe plus de population ou le nombre de BB prend le dessus. Seul la population de MB semble rester “stable”.

P(BB=10, MM=10, P=20)

main(P=20,I=10,B=10,M=10,NbOcc=10);

Dans cette simulation on commence avec aucun mélange d’allele. On a donc dans les premières générations une chute brutle des alleles “pure”. Tout le long de la simulation les courbes de BB et MM semblent chuter alors que celles de MB semblent etre relativement stables. On observe que peu de cas où MM ou BB reprend le dessus sur les autres populations.

Pour ce cas de petite populations on observe une courbe de MB relativement stable et des courbe de MM et BB plus mélangé.

Autres tests avec des pop plus grandes et plus de générations.

P(BB=20, MM=20, P=40) avec variation du nombre de generation

main(P=40,I=20,B=20,M=20,NbOcc=10);

Même observation que sur une population plus petites.

main(P=40,I=30,B=20,M=20,NbOcc=10);

main(P=40,I=40,B=20,M=20,NbOcc=10);

Sur des generations plus étendus on voit que les ecarts se peuvent creusaient, si une population à pris le dessus. On a toujours la courbe MB qui reste centré sur le graph

Question 2 : Cas d’une grande population

Intuition :

Je pense que sur une grande popultaion la chance d’avoir un grand ecart entre deux populations est plus rare si l’on part avec des population equivalentent. Si l’on part avec des populations vraiment differentes on peut peut etre avoir une diminution de l’ecart de base

P(BB=400, MM=1200, P=2000)

main(P=2000,I=100,B=400,M=1200,NbOcc=1);

Dans la simultion ci dessu on observe une baisse du nombre de MM. Cela est du au mélange avec les BB qui font augmenter le nombre de MB. Le nombre de BB augmente aussi légèrement comparement aux MM qui chute assez vite. Cela peut etre du a un mélage de MB BB qui ont pu donner des BB ou des mélages BB BB On peut voir que MM et BB se rapproche de 500 personnes pendant que MB se rapproche de 100 personnes

P(BB=1200, MM=400, P=2000)

main(P=2000,I=100,B=1200,M=400,NbOcc=1);

Ici on observe une augmentation de la popultaion BB qui est deja predominante. Par contre les MM diminu et reste en inferiorité.

P(BB=500, MM=500, P=2000)

main(P=2000,I=100,B=500,M=500,NbOcc=1);

Ici on a une population stable, car aucune predominance d’allele a la base.

Sur des populations plus grandes comme celles ci on voit que les resultats tendent vers 500 personnes pour les alleles pures et le mélange d’allele tend vers 1000 personnes.

Test hors DM

P(BB=1000, MM=1000, P=2000)

main(P=2000,I=100,B=1000,M=1000,NbOcc=1);

On demarre sans alleles mixtes, on a donc une diminution d’allele pure, et l’une d’entre elle reprend de dessu. On a une stabilistion vers 1000 personnes pour MB et vers 500 personnes pour BB et MB

P(BB=1900, MM=100, P=2000)

main(P=2000,I=100,B=1900,M=100,NbOcc=1);

On a ici aussi aucun mélange d’allele a la base, on perd donc des alleles pures pour faire un melange, on perd a ce moment toute les alleles MM (peut de chance que deux MM se rencontrent) On a aussi peu de MB donc tres peut de chance que des MM soit re créer.

P(BB=100, MM=1900, P=2000)

main(P=2000,I=100,B=100,M=1900,NbOcc=1);

Même observation que precedement

main(P=2000,I=100,B=1000,M=10,NbOcc=1);

Ici on a déjà des alleles MB, on ne perd donc pas la totalité des MM de façon brutale, on arrive même à avoir une pente douce. Les MB eux diminuent car les BB se recroisent entre eux et un MB et un BB donnent 1 fois sur 2 un BB, cela agmente BB et diminue MB

P(BB=10, MM=1000, P=2000)

main(P=2000,I=100,B=10,M=1000,NbOcc=1)

Même observation, sans l’augmentation de MM.

Apres ces quelques simulations on peut dire que l’existance de MB dans une popultion de base aide à ce stabiliter. Sans cela si il existe une grande difference dans la repartition de la population on a directement une perde des alleles pure. Si on part avec environ la moitié des allèles mélangés même une population pure tres faible peut persévèrer dans le temps.

Avec tout ces tests on peut observer un phénomene courant, du moins pour les cas sans differences trop creusées au debut de la simulation, celui que la population MB se stabilise autour de la taille de la population/2 et les MM et BB autour de la taille de la population/4. 1/2 et 1/4 correspondent respectivement à la probabilité d’avoir des alléles MB ou pures quand on croise deux parents d’alleles MB.

Question 3 : Cas d’une petite population avec preservation

Intuition :

Selon moi les courbes ne vont pas suivre les mêmes schemas que precedement, les populations ne vont pas pouvior suivre leur évolutions “naturelle” on va avoir beaucoup de variation entre les générations.

evolution<-function(P,I,B,M){
  #initialisation de toutes les variables
  y<-0;
  x<-0;
  bleu<-c(B);
  bleuMarron<-c((P-B-M));
  marron<-c(M);
  r<-c();
  p0<-c();
  ptemp<-c();
  
  p0<-initialisationPop(P,B,M);
 for(j in 1:I){ #Nombre de generation voulu
    for (k in 1:(P-2)){ #Nombre de personne dans une pop initial
      #On tire deux nombres aleatoirement pour choisir 2personnes dans la population 
      x<-floor(sample(c(1:P),1));
      y<-floor(sample(c(1:P),1));
      
      #On vérifi que l'on n'a pas tirer deux fois la meme personne
      while (x==y){ 
        y<-floor(sample(c(1:P),1));
      }
      allele<-calculcAllele(p0[x],p0[y]);
      ptemp<-c(ptemp,allele);
    }
    #On creer des vecteurs avec le nombre de personne BB, MM à chaque generation
    Bl<-sum(ptemp==2); #On compte le nb de BB et de MM 
    Mr<-sum(ptemp==0);
    bleu<-c(bleu,Bl);#On met a jour les compteur 
    marron<-c(marron,Mr);
    p0<-initialisationPop(P,(Bl+1),(Mr+1)); #On rajoute un MM et un BB dans le vecteur ptemp(de taille p-2) et on le mélange pour que les deux cas rajouter ne soit pas a la fin.
    ptemp<-c();# on vie ptemp pour laprochaine generation.
 }
  #return(bleu);
  return(c(bleu,marron));
}

Tests :

main(P=20,I=1000,B=4,M=12,NbOcc=1)

main(P=20,I=1000,B=12,M=4,NbOcc=1)

main(P=20,I=1000,B=5,M=5,NbOcc=1)

main(P=20,I=1000,B=1,M=16,NbOcc=1)

main(P=20,I=1000,B=16,M=6,NbOcc=1)

main(P=20,I=1000,B=1,M=1,NbOcc=1)

main(P=20,I=1000,B=20,M=0,NbOcc=1)

main(P=20,I=1000,B=0,M=20,NbOcc=1)

main(P=20,I=1000,B=0,M=0,NbOcc=1)

main(P=20,I=1000,B=0,M=20,NbOcc=1)

Le fait de changer 2 personnes sur une population de 20 personnes perturbe les statistiques. Cela represente 1 dixième de la popultation. Sur 1000 générations on obtient donc des resultats très variables On peut cependant observer que la courbe verte (MB) reste autour de 10 personnes et les deux autres courbes autour de 5 personnes. Le fait de ne jamais tomber à 0 personne pour BB ou MM dans la population permet de garder un dynamisme dans le mélange des allèles et d’avoir des variations qui se rapproche quand meme des probabilités de bases (1/4)

Question 4 :

Les resultats des simulations sont differentes que ce que je pensais. Je n’avais pas pensé a prendre en compte le nombre de personne MB dans la population. Selon moi la population BB avait plus de chance de diminuer au fil du temps surtout si on en prennais un proportion plus faible pour la population initiale.

Finalement on remarque pour une population faible que la predominance BB et MM sont assez peu marqué. Pour une grande popultion la prédominance d’une allèle pure est favorisé par un manque d’allèles melangé au debut de la simulation. Si l’on part avec des parts égales de chaque population on se retrouve avec des proportions qui tounent autour des probabilités de base de chaque alléles.

Si je devais changer quelque chose au modèle proposé je rajouterais une distinction des sexes afin de faire des combinaison plus crédible.