Документ взят из кэша поисковой машины. Адрес оригинального документа : http://kodomo.fbb.msu.ru/hg/petri_dish/annotate/69a4724e7cac/petri.py
Дата изменения: Unknown
Дата индексирования: Sat Mar 1 02:25:47 2014
Кодировка:
petri_dish: petri.py annotate

petri_dish

annotate petri.py @ 22:69a4724e7cac

added help and statistics
author Yashina Ksenia <ksenia_yashina@kodomo.fbb.msu.ru>
date Thu, 23 Dec 2010 16:58:48 +0300
parents 2df48c61bd42
children
rev   line source
ksenia_yashina@20 1 class Petri (object):
ksenia_yashina@22 2 def __init__ (self, num=1, bacteria=[], radius=150, delta=5, bact_r=10, full_lifetime=1000,total=0,total_mut=0,\
ksenia_yashina@22 3 total_min=0,total_max=0,s_num=0,a_num=0):
ksenia_yashina@20 4 self.num=num
ksenia_yashina@20 5 self.bacteria=bacteria
ksenia_yashina@20 6 self.radius=radius
ksenia_yashina@20 7 self.delta=delta
ksenia_yashina@20 8 self.bact_r=bact_r
ksenia_yashina@20 9 self.full_lifetime=full_lifetime
ksenia_yashina@22 10 self.total=self.num
ksenia_yashina@22 11 self.total_max=self.num
ksenia_yashina@22 12 self.total_min=self.num
ksenia_yashina@22 13 self.total_mut=total_mut
ksenia_yashina@22 14 self.s_num=s_num
ksenia_yashina@22 15 self.a_num=a_num
ksenia_yashina@20 16
ksenia_yashina@20 17 def step (self, delta_t, env,a,s):
ksenia_yashina@20 18 for bact in self.bacteria:
ksenia_yashina@20 19 bact.lifetime-=delta_t
ksenia_yashina@20 20 if bact.lifetime <= 0:
ksenia_yashina@20 21 self.bacteria.remove(bact)
ksenia_yashina@20 22 self.num-=1
ksenia_yashina@22 23 if self.num<self.total_min:
ksenia_yashina@22 24 self.total_min=self.num
ksenia_yashina@20 25 continue
ksenia_yashina@20 26 collide=bact.check_collision(self.bacteria,1,self.bact_r,delta_t)
ksenia_yashina@20 27 if not(collide):
ksenia_yashina@20 28 if bact.reprod('a', env, 0.1) and a:
ksenia_yashina@22 29 diff=bact.asexual(self.bacteria, delta_t, self.radius, self.delta, self.bact_r, self.full_lifetime)
ksenia_yashina@22 30 self.total+=diff*2
ksenia_yashina@22 31 self.num+=diff
ksenia_yashina@22 32 if diff>0:
ksenia_yashina@22 33 self.a_num+=1
ksenia_yashina@22 34 if bact.mutated and diff>0:
ksenia_yashina@22 35 self.total_mut+=2
ksenia_yashina@22 36 if self.num>self.total_max:
ksenia_yashina@22 37 self.total_max=self.num
ksenia_yashina@20 38 continue
ksenia_yashina@20 39 bact.move(self.bacteria, delta_t, self.radius, self.delta, self.bact_r)
ksenia_yashina@20 40 continue
ksenia_yashina@20 41 if bact.reprod('s', env,1) and s:
ksenia_yashina@22 42 diff=bact.sexual(collide, self.bacteria, delta_t, self.radius, self.delta, self.bact_r, self.full_lifetime)
ksenia_yashina@22 43 if diff>0:
ksenia_yashina@22 44 self.total+=4
ksenia_yashina@22 45 self.s_num+=1
ksenia_yashina@22 46 self.num+=2
ksenia_yashina@22 47 self.total_mut+=diff-1
ksenia_yashina@22 48 if self.num>self.total_max:
ksenia_yashina@22 49 self.total_max=self.num
ksenia_yashina@20 50 continue
ksenia_yashina@20 51 bact.collision(collide, self.bacteria, delta_t, self.radius, self.delta, self.bact_r)
ksenia_yashina@22 52 if self.num<=0:
ksenia_yashina@22 53 return False
ksenia_yashina@22 54 return True