Team:Bordeaux/SourceCodeModelling
From 2012.igem.org
(Difference between revisions)
ChristopheD (Talk | contribs) |
ChristopheD (Talk | contribs) |
||
Line 292: | Line 292: | ||
list_bacteria[j][9] =1 | list_bacteria[j][9] =1 | ||
list_bacteria[j][10] =1 | list_bacteria[j][10] =1 | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
def stimulus_light(): | def stimulus_light(): | ||
r""" | r""" |
Revision as of 08:11, 24 September 2012
iGEM - Bordeaux - Source Code
Init_PEB.py file
r""" File contains var """ __projet__ = 'iGEM ' __author__ = 'Djemiel Christophe, Freche Arnaud' __copyright__ = 'Copyright (c) 2012 BordeauxTeam' __license__ = '' __vcs_id__ = '$Id$' __version__ = '1.0' #var directory_pictures="pictures_simulation/" #initial parameters nb_bacteria=8000 #features constitutive seuil_acivation_recepteur1=0.75 seuil_acivation_recepteur2=0.75 seuil_acivation_recepteur3=0.75 #mutation seuil_mutation_operon=0.05 seuil_mutation_LasR=0.05 seuil_mutation_LuxS=0.05 seuil_mutation_BetaGal=0.05 seuil_mutation_LuxBox=0.05 seuil_mutation_LuxI=0.05 seuil_mutation_MCherry=0.05 seuil_mutation_QBox=0.05 seuil_mutation_LasI=0.05 #change state seuil_etat1_2=0.05 #noise noise_pourcent=0.0001 seuil_bruit1=0.33 seuil_bruit2=0.66 #stimulus light seuil_transfo_lumiere=0.7 diameter_light=1 rayon_action=0.075
PEP.py file
#!/usr/bin/python # -*- coding: iso-8859-1 -*- import random from pylab import * from numpy import * from init_PEB import * import os list_bacteria = [] lxw=[] lyw=[] lxb=[] lyb=[] lxr=[] lyr=[] lxg=[] lyg=[] lxn=[] lyn=[] def features_bacteria (): r""" Function attribute all features at the bacteria """ #Coordinates x=random.uniform(0,10) # position x of the bacteria on the petri dish List[0]=x y=random.uniform(0,10) # position x of the bacteria on the petri dish List[1]=y #States state1=None List[2]=state1 state2=None List[3]=state2 state3=None List[4]=state3 #Operon 1 LasR_box=None List[5]=LasR_box LuxS=None List[6]=LuxS Beta_gal=None List[7]=Beta_gal #Operon 2 Lux_box=None List[8]=Lux_box LuxI=None List[9]=LuxI m_cherry=None List[10]=m_cherry #Operon 3 Q_box=None List[11]=Q_box LasI=None List[12]=LasI GFP=None List[13]=GFP #Operon constitutive recepteur1=None List[14]=recepteur1 recepteur2=None List[15]=recepteur2 recepteur3=None List[16]=recepteur3 return List def feature_constitutive(): for j in range (0,len(list_bacteria)): proba_active_14=random.uniform(0,1) proba_active_15=random.uniform(0,1) proba_active_16=random.uniform(0,1) if proba_active_14<=seuil_acivation_recepteur1: list_bacteria[j][14]=1 else: list_bacteria[j][14]=0 if proba_active_15<=seuil_acivation_recepteur2: list_bacteria[j][15]=1 else: list_bacteria[j][15]=0 if proba_active_16<=seuil_acivation_recepteur3: list_bacteria[j][16]=1 else: list_bacteria[j][16]=0 def mutation(): for j in range (0,len(list_bacteria)): proba_mutation=random.uniform(0.1) if proba_mutation<=0.05: proba_mutation_LasR=random.uniform(0.1) proba_mutation_LuxS=random.uniform(0.1) proba_mutation_BetaGal=random.uniform(0.1) proba_mutation_LuxBox=random.uniform(0.1) proba_mutation_LuxI=random.uniform(0.1) proba_mutation_MCherry=random.uniform(0.1) proba_mutation_QBox=random.uniform(0.1) proba_mutation_LasI=random.uniform(0.1) proba_mutation_GFP=random.uniform(0.1) if proba_mutation_LasR<=seuil_mutation_LasR: list_bacteria[j][5]=0 if proba_mutation_LuxS<=seuil_mutation_LuxS: list_bacteria[j][6]=0 if proba_mutation_BetaGal<=seuil_mutation_BetaGal: list_bacteria[j][7]=0 if proba_mutation_LuxBox<=seuil_mutation_LuxBox: list_bacteria[j][8]=0 if proba_mutation_LuxI<=seuil_mutation_LuxI: list_bacteria[j][9]=0 if proba_mutation_MCherry<=seuil_mutation_MCherry: list_bacteria[j][10]=0 if proba_mutation_QBox<=seuil_mutation_QBox: list_bacteria[j][11]=0 if proba_mutation_LasI<=seuil_mutation_LasI: list_bacteria[j][12]=0 if proba_mutation_GFP<=seuil_mutation_GFP: list_bacteria[j][13]=0 def active_state(): r""" Function permit to active the state of the bacteria according the activation of these genes """ for j in range (0,len(list_bacteria)): #State 1 if list_bacteria[j][5]==1 and list_bacteria[j][6]==1 and list_bacteria[j][7]==1: list_bacteria[j][2]=1 list_bacteria[j][3]=0 list_bacteria[j][4]=0 #State 2 if list_bacteria[j][8]==1 and list_bacteria[j][9]==1 and list_bacteria[j][10]==1: list_bacteria[j][2]=0 list_bacteria[j][3]=1 list_bacteria[j][4]=0 #State 3 if list_bacteria[j][11]==1 and list_bacteria[j][12]==1 and list_bacteria[j][13]==1: list_bacteria[j][2]=0 list_bacteria[j][3]=0 list_bacteria[j][4]=1 def change_state(): r""" Function permit to the bacteria changing state """ for j in range (0,len(list_bacteria)): # State 1 --> State 2 if list_bacteria[j][2]==1 and list_bacteria[j][5]==1 and list_bacteria[j][6]==1 and list_bacteria[j][14]==1: proba=random.uniform(0,1) if proba<=seuil_etat1_2: list_bacteria[j][8] =1 list_bacteria[j][9] =1 list_bacteria[j][10] =1 def stimulus_light(): r""" Function create the first stimulation light """ for j in range (0,len(list_bacteria)): proba_recepteur=random.uniform(0,1) if ((list_bacteria[j][0]-5)*(list_bacteria[j][0]-5))+((list_bacteria[j][1]-5)*(list_bacteria[j][1]-5))<=diameter_light and list_bacteria[j][5]!=0 and list_bacteria[j][6]!=0 and list_bacteria[j][7]!=0: proba=random.uniform(0,1) if proba<=seuil_transfo_lumiere: list_bacteria[j][5]=1 list_bacteria[j][6]=1 list_bacteria[j][7]=1 def stimulus_factor(x,rayon_action): r""" Function create others stimulations """ change_state() active_state() for j in range (0,len(list_bacteria)): #stimulus facteur1 if list_bacteria[j][2] ==None and list_bacteria[j][3]==None and list_bacteria[j][4]==None and list_bacteria[j][14]==1 and list_bacteria[j][8]!=0 and list_bacteria[j][9]!=0 and list_bacteria[j][10]!=0: for i in range (0,len(list_bacteria)): if ((list_bacteria[j][0]-list_bacteria[i][0])*(list_bacteria[j][0]-list_bacteria[i][0]))+((list_bacteria[j][1]-list_bacteria[i][1])*(list_bacteria[j][1]-list_bacteria[i][1]))<=rayon_action and list_bacteria[i][2]==1 and list_bacteria[i][6]==1 : distance_voisin=((list_bacteria[j][0]-list_bacteria[i][0])*(list_bacteria[j][0]-list_bacteria[i][0]))+((list_bacteria[j][1]-list_bacteria[i][1])*(list_bacteria[j][1]-list_bacteria[i][1])) proba=random.uniform(0,1) if proba*distance_voisin<=x: list_bacteria[j][8] =1 list_bacteria[j][9] =1 list_bacteria[j][10] =1 change_state() active_state() for j in range (0,len(list_bacteria)): #stimulus facteur2 if list_bacteria[j][2] ==None and list_bacteria[j][3]==None and list_bacteria[j][4]==None and list_bacteria[j][15]==1 and list_bacteria[j][11]!=0 and list_bacteria[j][12]!=0 and list_bacteria[j][13]!=0: for i in range (0,len(list_bacteria)): if ((list_bacteria[j][0]-list_bacteria[i][0])*(list_bacteria[j][0]-list_bacteria[i][0]))+((list_bacteria[j][1]-list_bacteria[i][1])*(list_bacteria[j][1]-list_bacteria[i][1]))<=rayon_action and list_bacteria[i][3]==1 and list_bacteria[i][9]==1 : distance_voisin=((list_bacteria[j][0]-list_bacteria[i][0])*(list_bacteria[j][0]-list_bacteria[i][0]))+((list_bacteria[j][1]-list_bacteria[i][1])*(list_bacteria[j][1]-list_bacteria[i][1])) proba=random.uniform(0,1) if proba*distance_voisin<=x: list_bacteria[j][11] =1 list_bacteria[j][12] =1 list_bacteria[j][13] =1 change_state() active_state() for j in range (0,len(list_bacteria)): #stimulus facteur2 if list_bacteria[j][2] ==None and list_bacteria[j][3]==None and list_bacteria[j][4]==None and list_bacteria[j][16]==1 and list_bacteria[j][5]!=0 and list_bacteria[j][6]!=0 and list_bacteria[j][7]!=0: for i in range (0,len(list_bacteria)): if ((list_bacteria[j][0]-list_bacteria[i][0])*(list_bacteria[j][0]-list_bacteria[i][0]))+((list_bacteria[j][1]-list_bacteria[i][1])*(list_bacteria[j][1]-list_bacteria[i][1]))<=rayon_action and list_bacteria[i][4]==1and list_bacteria[i][12]==1 : distance_voisin=((list_bacteria[j][0]-list_bacteria[i][0])*(list_bacteria[j][0]-list_bacteria[i][0]))+((list_bacteria[j][1]-list_bacteria[i][1])*(list_bacteria[j][1]-list_bacteria[i][1])) proba=random.uniform(0,1) if proba*distance_voisin<=x: list_bacteria[j][5] =1 list_bacteria[j][6] =1 list_bacteria[j][7] =1 change_state() active_state() def statistic(): cpt1=0 cpt2=0 cpt3=0 cpt4=0 cpt5=0 cpt6=0 cpt7=0 cpt8=0 cpt9=0 cpt10=0 cpt11=0 cpt12=0 cpt13=0 cpt14=0 cpt15=0 cpt16=0 for j in range (0,len(list_bacteria)): if list_bacteria[j][2]==1: cpt1=cpt1+1 if list_bacteria[j][3]==1: cpt2=cpt2+1 if list_bacteria[j][4]==1: cpt3=cpt3+1 if list_bacteria[j][5]==1: cpt4=cpt4+1 if list_bacteria[j][6]==1: cpt5=cpt5+1 if list_bacteria[j][7]==1 and list_bacteria[j][2]==1: cpt6=cpt6+1 if list_bacteria[j][8]==1: cpt7=cpt7+1 if list_bacteria[j][9]==1: cpt8=cpt8+1 if list_bacteria[j][10]==1 and list_bacteria[j][3]==1: cpt9=cpt9+1 if list_bacteria[j][11]==1: cpt10=cpt10+1 if list_bacteria[j][12]==1: cpt11=cpt11+1 if list_bacteria[j][13]==1 and list_bacteria[j][4]==1: cpt12=cpt12+1 if list_bacteria[j][14]==1: cpt13=cpt13+1 if list_bacteria[j][15]==1: cpt14=cpt14+1 if list_bacteria[j][16]==1: cpt15=cpt15+1 if list_bacteria[j][5]==1 and list_bacteria[j][7]==1 and list_bacteria[j][8]==1 and list_bacteria[j][10]==1: cpt16=cpt16+1 print "\n","\n" print "OPERON A:" print "etat1=",(float(cpt1)/float(len(list_bacteria)))*100,"%" print "etat1 et etat2 à la fois=",(float(cpt16)/float(len(list_bacteria)))*100,"%" print "Las R actif=",(float(cpt4)/float(len(list_bacteria)))*100,"%" print "Production de Borat =",(float(cpt5)/float(len(list_bacteria)))*100,"%" print "Production BetaGal=",(float(cpt6)/float(len(list_bacteria)))*100,"%" print "Recepteur à PAI-1 actif=",(float(cpt15)/float(len(list_bacteria)))*100,"%","\n","\n" print "OPERON B:" print "etat2=",(float(cpt2)/float(len(list_bacteria)))*100,"%" print "Lux Box fonctionnelle=",(float(cpt7)/float(len(list_bacteria)))*100,"%" print "Production de AHL=",(float(cpt8)/float(len(list_bacteria)))*100,"%" print "Production de M-Cherry=",(float(cpt9)/float(len(list_bacteria)))*100,"%" print "Recepteur à Borat actif=",(float(cpt13)/float(len(list_bacteria)))*100,"%","\n","\n" print "OPERON C:" print "etat3=",(float(cpt3)/float(len(list_bacteria)))*100,"%" print "Q Box fonctionnelle=",(float(cpt10)/float(len(list_bacteria)))*100,"%" print "Production de PAI-1=",(float(cpt11)/float(len(list_bacteria)))*100,"%" print "Production de GFP=",(float(cpt12)/float(len(list_bacteria)))*100,"%" print "Recepteur à AHL=",(float(cpt14)/float(len(list_bacteria)))*100,"%","\n","\n" def color(): r""" Color function to attribute a color for the bacteria according this state """ for j in range (0,len(list_bacteria)): #Bacteria with no state if list_bacteria[j][2]==0 or list_bacteria[j][2]==None or list_bacteria[j][3]==None or list_bacteria[j][4]==None: #white lxw.append(list_bacteria[j][0]) lyw.append(list_bacteria[j][1]) #Bacteria with State 1 if list_bacteria[j][5]==1 and list_bacteria[j][7]==1: #blue lxb.append(list_bacteria[j][0]) lyb.append(list_bacteria[j][1]) #Bacteria with State 2 if list_bacteria[j][8]==1 and list_bacteria[j][10]==1: #red lxr.append(list_bacteria[j][0]) lyr.append(list_bacteria[j][1]) #Bacteria with State 3 if list_bacteria[j][11]==1 and list_bacteria[j][13]==1: #green lxg.append(list_bacteria[j][0]) lyg.append(list_bacteria[j][1]) #Bacteria with State 1 and State 2 if list_bacteria[j][5]==1 and list_bacteria[j][7]==1 and list_bacteria[j][8]==1 and list_bacteria[j][10]==1: #black lxn.append(list_bacteria[j][0]) lyn.append(list_bacteria[j][1]) def do_plot(name,titre): r""" Create a plot figure. Take 2 arguments : Name = name of picture and Title = title of plot """ color() plot(lxw,lyw,"wo",ms=5,linewidth=0) plot(lxr,lyr,"ro",ms=5,linewidth=0) plot(lxb,lyb,"bo",ms=5,linewidth=0) plot(lxg,lyg,"go",ms=5,linewidth=0) plot(lxn,lyn,"ko",ms=5,linewidth=0) axis((0,10,0,10)) title(titre) savefig('fig'+name+'.png') ################################################################ ########################### MAIN ############################### ################################################################ for i in range (nb_bacteria): List = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] features_bacteria() list_bacteria.append(List) feature_constitutive() do_plot("0","temps0") mutation() noise(noise_pourcent) active_state() do_plot("1","bruit") stimulus_light() active_state() do_plot("2","light") stimulus_factor(0.05,rayon_action) mutation() do_plot("3","tours1") stimulus_factor(0.10,rayon_action) mutation() do_plot("4","tours2") stimulus_factor(0.15,rayon_action) mutation() do_plot("5","tours3") stimulus_factor(0.20,rayon_action) mutation() do_plot("6","tours4") statistic() stimulus_factor(0.25,rayon_action) mutation() do_plot("7","tours5") os.system("python create_gif.py")