Это программа генетики популяций, разработанная моими профессорами и измененная студентами.
По сути, она должна имитировать ожидаемое количество мутаций в двадцать раз с заданной выборкой, популяцией и частотой мутаций (u),Однако критической частью является общая длина ветви (L), которая является суммой различных меньших длин ветви (branch_length).Однако, когда я определяю L, как показано ниже, он продолжает возвращаться с ошибкой:
L += branch_length
NameError: name 'L' is not defined
Я не уверен, что не так, поскольку tree_depth определен аналогичным образом и работает без нареканий.
Вот полный код:
from random import expovariate
from pgen import poidev
K = 77 # sample size (number of gene copies)
twoN = 5000 # population size
u = .001
tree_depth = 0.0 # age of last common ancestor in generations
# Each pass through loop deals with one coalescent interval.
for A in range(20):
while K > 1:
h = K*(K-1)/(2.0*twoN) # hazard of a coalescent event
t = expovariate(h) # time until next coalescent event
tree_depth += t
branch_length = t*K
K -= 1
L += branch_length
S = poidev(u*L)
print "Simulation:", A+1, "Total Mutations:", S
print "Total tree depth (L):", L, "generations"
Я просто что-то упускаю действительно, действительно очевидно?Заранее спасибо.