top of page

--Programme--

Dans le cadre du TPE, nous avons créé un programme capable de faire diverses simulations avec différents paramètres.

La programmation s'est effectuée dans le language de programmation PYTHON.

 

Tout d'abord il faut définir ce qu'est un individu :

 

[ [ (ALLELE 1 , ALLELE 2) , (ALLELE 1 , ALLELE 2) ], age ]

 

ici, l'individu est défini par deux gènes (ALLELE 1 , ALLELE 2) , ce nombre est modifiable

avec le paramètre G, ici G=2

Il a un age de 0 qui est un age en génerations

Au début du code on définit un nombre A, correspondant au nombre d'alleles possibles +1

 

Si A = 2, il y a donc 3 alleles possibles 0, 1 et 2

 

Le programme prend donc aléatoirement une valeur entre 0 et A pour définir chaque allele de chaque gène

 

la plutart du temps, on définit un individu comme un seul gène ayant deux versions différentes, c'est a dire que

A = 1

G = 1

Et donc voici un individu :

 

Mais on peut essayer :

A = 1

G = 2

Ce qui nous donne :

 

La population initiale est une succetion d'individus créés avec des gènes aléatoires, par la suite les populations seront les descendants des populations antérieures, et donc on pourra observer la variation des gènes, a travers les génerations

 

Voici une population de trois individus :

 

Une fonction sélectionnera aléatoirement des individus

dans la population pour faire des couples, une autre

fonction choisit aléatoirement une allèle sur les deux

pour chaque individu et une autre fonction les fusionne

pour créer la géneration suivante

 

Au début, nous avions choisi d'observer la taille de la population a travers les géneration sans s'occuper de la repartition des allèles dans la population

 

 

 

On a la possibilité d'ajouter de la sélection naturelle dans le

programme, le parametre existe mais il est mis a 0 car ce

n'est pas ce que nous voulons observer.(Variations aleatoires)

 

 

 

 

 

 

 

 

 

 

Puis nous avons décidé d'observer les allèles présentes dans

populations, mais le fait que la taille de la population ne

soit pas fixée était un problème :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ici on peut voir que seules quelques alleles ont disparu, ces premieres simulations utilisaient la sélection naturelle ainsi qu'un grand nombre d'allèles, puis nous avons enlevé la sélection naturelle, pour rendre le processus plus aléatoire et nous avons baissé les allèles a 2 (A = 1) et les gènes a 1 (G = 1)

 

Ensuite on a fixé la taille de la population en faisant en sorte que la fonction qui s'occupe d'éliminer les individus

les tue instentanément apres leur reproduction. Nous avons donc obtenu des résultats comme cela :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

On peut ici observer :

1) La courbe de fréquence de l'allèle A

2) La courbe de fréquence d l'allèle a

3) La fixation de l'allèle A a la géneration 280

Aussi A = 1

          G = 1

Taille de population = 60

 

 

FONCTIONS IMPORTANTES

 

La fonction qui s'occupe de tuer :

 

 

 

 

 

 

 

Ligne par ligne :

 

81) On définit la fonction

82) On crée une liste des "individus à supprimer" de la population

83) Si l'age de la personne les supérieur ou égal à l'age maximal (paramètre modifiable, mis a 1 pour fixer la taille de la population), alors :

84) On ajoute l'individu a la liste "individus à supprimer"

85) Sinon :

86)Sélection naturelle

90) Pour chaque individu dans la liste "individus à supprimer", on le supprime de la population

 

La fonction qui fait des couple dans la population :

 

 

 

 

 

 

 

 

 

 

Ligne par ligne :

 

93) On définit la fonction

94) On crée une liste qui contiendra les couples d'individus

95) On crée une liste "indices" qui contient tout les individus dont l'age est superieur ou égal a age_min_rep(age minimal de reproduction)

96) Pendant que la taille de "indices" est supérieur à 1 :

97)   On choisit un nombre au hasard entre 0 et la taille de indices -1 et on l'appelle "i1"

98)   On prend l'individu qui correspond au nombre "i1" dans la liste "indices" et le le stocke temporairement dans "temp"

(Pour mieux comprendre, disons que liste=[1 ,8 ,3, 4], alors liste[0] = 1, c'est a dire le nombre qui est a la place 0 (la premiere) est 1, et donc liste[1] = 8

Dans la population on prend l'individu a la place "i1" dans la liste "indices"

99)   On supprime indices[i1]

100)   La meme chose avec "i2"

101)   On ajoute a la liste "out" indices[i1] et indices[i2]

102)   On supprime indices[i2]

103) On renvoie la liste "out"

 

La fonction qui crée des gamètes :

 

 

 

 

 

Ligne par ligne :

 

42) On définit la fonction

43) On crée une liste "out" vide

44) Pour chaque gène:

45)   On ajoute à "out" une des allèles aléatoirement

46) on renvoie la liste "out"

 

Utilisation :

 

 

Il faut lancer le logiciel pyzo (PYZO\pyzo.exe)(1), une fois dans le logiciel on fait FILE(2)>OPEN(3) (Ou Ctrl + O)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

Puis on sélectionne le programme (Derivegenetique.py) qui se trouve dans le fichier THOMAS KIENTZ CLEMENT

Une fois lançé il suffit de faire RUN>EXECUTE FILE (ou CTRL + E) pour executer le programme et faire apparaître le menu

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Libre a vous maintenant d'essayer les fonctionalités du menu, par exemple :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Le 4) est utilisable seulement si A = 1

Si vous voulez annuler la fixation de la taille de population (pour observer les graphs des menus 1) 2) et 3)), il faut changer :

 

 

 

 

 

 

 

 

 

Faucheuse (Parametre qui équilibre la fonction qui tue) de -100 à 21

A de 1 à 20 (Pour plus de lisibilité)

Portée de 2 à 1

age_mort de 2 à 5 pour permettre aux individus de survivre apres reproducction

 

Pour la sélection naturelle :

 

 

 

 

 

 

 

 

 

Faucheuse de 21 à 31

dp(sélectivité de l'environnement) 0 à 1

On peut donc observer des graphiques comme ceux ci :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pour mieux l'observer, on peut passer en echelle logarithmique :

 

 

 

 

 

k

 

© 2023 par comprendre le monde du BI. Créé avec Wix.com

  • Facebook Basic Black
  • Twitter Basic Black
  • YouTube Basic Black
bottom of page