Dérive génétique
Le programme suivant modélise un exemple de dérive génétique : à partir de la fréquence initiale f d'un allèle dans une population de taille constante p on donne la fréquence de cet allèle après n générations.
from random import *
def derive(f,p,n):
freq = f
for i in range(1,n+1):
a = 0.0
for j in range(0,p):
if random() < freq:
a = a+1
freq = a/p
return freq
print( derive(0.5,100,10) )
Un exemple avec un graphique pour visualiser l'évolution allélique.
Xmin = -1
Xmax = 10.1
Ymin = -0.1
Ymax = 1.1
function derive(f,p,n){
F = [];
freq = f;
for(i = 0; i < n; i++){
a = 0
for(var j = 0; j < p; j++){
if(Math.random() < freq){
a = a+1;
}
}
freq = a/p
F.push(freq)
}
return F
}
function traceEvol(F, coul){
n = F.length;
pas = 10/n;
couleur = coul
for(var i = 0; i < n-1; i++){
segment([pas*i,F[i]],[pas*(i+1),F[i+1]])
}
}
couleur = noir;
AxeX = true
AxeY = true
f = 0.5
p = 100
n = 200
traceEvol(derive(f,p,n),"rgb(255,0,0)");
traceEvol(derive(f,p,n),"rgb(0,255,0)");
traceEvol(derive(f,p,n),"rgb(0,0,255)");