Sodródás szimulálása Python program segítségével

Error message

Deprecated function: The each() function is deprecated. This message will be suppressed on further calls in book_prev() (line 775 of /afs/elte.hu/org/plantsys/plantsys.elte.hu/drupal/sites/all/modules/modules/book/book.module).

A sodródás egy alapvetően sztochasztikus, a véletlenen alapuló folyamat, amelynek konkrét viselkedését számítógépes szimulációkkal lehet jól vizsgálni. Akinek van kedve az eljátszadozhat az alábbi Python programmal.

A Python egy könnyen megtanulható, biológusoknak kimondottan ajánlott programnyelv. Az alábbi program a 3.x-es verzióval és a Matplotlib segítségével készült.

##########################################

from random import choice,randint;
import matplotlib.pyplot as plt

PopulationSize = 50;
Generations = 300;
Ismetles = 4;

Figures, Grafok = plt.subplots(2, sharex=True)

for ii in range(Ismetles):
    Population = []
    #A populáció feltöltése Aa genotípussal. Ha más kezdeti gyakoriságot szeretnétek ide más kell jöjjön
    for nn in range(PopulationSize):
        Population.append('Aa')

    #A populációs ciklus, véletlen párosodást valósít meg
    Heterozigocia = [1]
    Gyakorisag_A = [0.5]

    for tt in range(Generations):
        Population2 = []
        for nn in range(PopulationSize):
            Population2.append(choice(Population)[randint(0,1)]+choice(Population)[randint(0,1)])
        Population = list(Population2);
        Heterozigocia.append((Population.count('Aa')+Population.count('aA'))/PopulationSize) #Heterozigóták összeszámolása
        Gyakorisag_A.append(''.join(str(elem) for elem in Population).count('A')/2/PopulationSize); #A gyakoriságának meghatározása
    Grafok[0].plot(range(Generations+1),Heterozigocia);
    Grafok[1].plot(range(Generations+1),Gyakorisag_A);


#Mindenféle beállítása a grafikonnak
Grafok[0].set_xlim([0,Generations]);
Grafok[0].set_ylim([0.0,1.0]);
Grafok[0].set_xlabel('Generációk',fontsize=22)
Grafok[0].set_ylabel('Heterozigócia',fontsize=22)
Grafok[1].set_xlabel('Generációk',fontsize=22)
Grafok[1].set_ylabel('A gyakorisága',fontsize=22)

plt.show();

##########################################

Az eredmény például ilyen lehet: