From 4ea361b8ccb8a20b54f02e9ab4fa7f06aaa0f05a Mon Sep 17 00:00:00 2001
From: Kappes Marques Rodrigo <rodrigo.kappes@student-cs.fr>
Date: Wed, 29 Jan 2020 10:15:18 +0100
Subject: [PATCH] changed the brin

---
 __pycache__/RotTable.cpython-37.pyc | Bin 2618 -> 2578 bytes
 __pycache__/Traj3D.cpython-37.pyc   | Bin 1972 -> 1932 bytes
 __pycache__/individu.cpython-37.pyc | Bin 1964 -> 2706 bytes
 algogenetique.py                    |   5 ++--
 individu.py                         |  34 +++++++++++++++++++++++-----
 population.py                       |   8 +++----
 6 files changed, 35 insertions(+), 12 deletions(-)

diff --git a/__pycache__/RotTable.cpython-37.pyc b/__pycache__/RotTable.cpython-37.pyc
index 20d277d55079d7a6401199aa6d99042a10aacd32..d0d2bee9e71c849781de9a96c497f02788ecaaf7 100644
GIT binary patch
delta 63
zcmdlbGD(EniI<m)fq{X+(bI4v_cj*QUmnR;F`>n&Ma41Ri3J6z#W60a#n~nK1u-FB
Sx~XL`$%#cd`J4GzbyxvRl@sLv

delta 103
zcmbOvvP*>9iI<m)fq{YHO@qNk?rki-Uvn847@VzQLW@(2ier)!i*oW~T=J7kb5rw5
ziesFEV}e7BVnQ+wugovXOjSrpEmrVKEv<-g^#s!ju4VZ-r6rm9d3lMMMX8&gvFNY@
E0L-o<=Kufz

diff --git a/__pycache__/Traj3D.cpython-37.pyc b/__pycache__/Traj3D.cpython-37.pyc
index 3051667333c64564621cb2fe405f2b8ac037b6bd..9f5f20ef7c01a060943e03ea5beaee567c92ae7e 100644
GIT binary patch
delta 63
zcmdnO-^0)C#LLUYz`(%Z=xMl-yOL4$ms_$`OlWaxQE`lSVnIP_ag0l9adt_5K}?93
SZfaRfa$-?V{^pB}k68ggDis3&

delta 103
zcmeC--@?!B#LLUYz`(%promt%cO|3m*K7s`24}07(Bjmh;+W*bqMZB~m;B_?+|<01
z;uz=PnBWkjn2?OaEAxvoQx#HDixs?5ODkerJ;AhsYgv9yX-Q^&US48mQR?QEjE`9X
Du7)HA

diff --git a/__pycache__/individu.cpython-37.pyc b/__pycache__/individu.cpython-37.pyc
index 98e1fc46b75b89e6b1481052c1f6d4bf92a9d04c..83b7aac12df9ffd210cc807f63745df4b2a39629 100644
GIT binary patch
delta 1712
zcmZ3(KS`9&iI<m)fq{YHvX5chCZUOZhZxN!UR1A7WldpEV@lyj;cQ`yVo%`;X3*rm
z#o?Kkl3A9SQku*J(!#*Nz|6qFz{<eD;LO0lP;AA(z)-_j!w}Dq!kEI;!cfAP!raX0
z!qCiE%ap>hfT@Nlg*Antl}VCeAxIT-4Z{MKg$y+e@vJEf!3>&ge#wkbW0~rq<_3ez
z6=PsvNN1>Fh~=wgtYKWhkixK#aUxS8OE7~b<1I!mO~zYnMa3mWnFX3mx0v({Zn5NK
z=B2J=DB@vYVEE;cY!wq)oLW>I<DFPgkXjt$l3JWyl3x%L;-#Bf7L%M<l#^c^lbWfU
zm0DV%n_8BiQ(BUlKUslExc(QHO-^QUNpgN}fgLZ%As}C~F;uC-f<Z4nJ~J<~BtBlx
zCMQ2RF{jv0522$<pdcr)I5#sT-XdEsEwQ*H@fO2NkOwu{Zn2gmCgr5wV#zN^&AY{t
zm7ke+izTTjGw&8hYFT1VX<|w0E!N`t<ou#kP3BuH#i==IMS=_r47WHyKJ&>eE&=-u
zLV#R$iv#8oZjd`UK*7k!#wf%n!c--Q;aYew^Fc!y9DDy57#K<zni*;tQy6QRY8bNW
z8B>^Qm_X50%Ur{d#aP3{%>aqMT9z8d1xz(8AW?CK8fI~Z8ip+9g-nbLB`gbAYZw=>
zEo4~8Sj(EuP|H>^qlCSN36u<CdurKhSZkPS*u@!Am{J&9nbMdf8EQEoViFA8$fBGz
zto13(HB2H5HSB0oTs5pU>_`T1m#}1UWO3GT)No2Lq%fzj^fJ}*K*hLfxZz^FHEcCJ
zHN5Fe<_xuLg)!j_C0sRZ&7hRX4PgZ{XtMgf1SRPrP&`epVdfR%DFX9FK%vhLN(rSU
zsYQa5XE7UbgOa5tUy(Qi1H<II%#S2Q85kIZK*6sB34SIPCO$?1CW+10S#%gJr5G3(
zG?{KO=j4~)V#&x%&j8y|BmffTfW$6mQGQ80IAs(mFfcF_v4IG=$u?}#Mj%UWu@)5N
zCnetE2P=s$$}dSQ$;{6yzQvxBUz(JYT5^juIX}NB<rZ^EX3?$5ooq^s29wvY>DRvm
z<<Ml1KR^xxr4Ud80Y|zNBLgVz7_t~^nI|w-aFsBnFxD_NGr2It{;6dtVQyxqWvyYY
zVa#SI5-VW=W$R|9TDBC%TJ{RL8fF)USg~4;8ul8tY^EZw0EQa&6lQaVTJ}PlaE6Lq
zB}^$Spm?v3U02Il!kWdL#a6?R#jt>VAwvy^Bts3SB-m;MKZQk{L6SiNO%%H-afTGu
zUZxsmh)FgOJsc2|Yq@GTQy8<EiXYW*rZ8vMGZp=SDU@WWVXol<S#HBnn1B%FMiCEZ
zC=?54fEG&NczOv6F>quRK_aq96%;vYpxEOC$6k>-NI(HZfa2{IXHjBaN>O57dTM=<
z97t3HL}-EtEs!p5aKb6lW?*2563#2lO-e0_&rgfbErrHvkq$_y3W(4Lso{l2vL9IK
zE%xO6(!7$?q9R?83Ox{E03twT9#Xj=np;{D2TmsO<(VZJ@eqrO?Lf&C<W>eo4n`qH
zHbxFcE=CqcE=CSUCPp4cKE?z_K1KmXG3F{cc<BLi8Hz!EnjDkwv8g&rg6sxmfLlxf
zhDC-To*9ThI0wuEl~qOT3=9mMAP0cLl!J+bokNa?Z?Y}Bq%<g;Zn5MhmShyMfOLb>
PZ4oFmi>xLWvReZHaAS<v

delta 973
zcmbOvx`v<6iI<m)fq{Wxr;}mae%^_EhZr>`UR1A7VGm}|<haG*nU|7TmYGtT%mh-z
zz`y{anHd-uoEaDxip3Zh7-|@67~&af7#1+5FfIhKnNk>n88n&vqQV><9o^j>L!3iE
z$lVddbPj<4=MZ;icW3tyN078Ti0AAG;yF6IJ32Z#);l^nJG(nOhq$}DyF0qOJG;Aw
zgoHS{hk&FtnQyU{Bqrsg-r`6tOUx-vEJ?k^TAZ9;l&Z;ei={X<C#{Hsfq`KqLlF-H
z1H;!`kZY}CLW@(2ier)!i*oW~T=J7kb5rw5iesFEV}e7BVnQ+wugovXOjSrpEmrVK
zEtRN<arFc-DimDH@^eZ{GV}BD5;KcZCqH3St-r+)AD@|*SrQ-54GIMoP|z^4F;)q}
zLQ4-O4-Yne1_lOJkV8NkelRdFlrS_i)H0<o)-u;HrZCkow=zjG)Uwnt)-ZE3q%eSa
ztTjvv7;9K-7{wWCSi~7>7_yiaGBGlg)H5$&sbN~cx{zTZV=Y@cLoIv7j1smQ=4M70
zhS;83jvBTa<{A!hh7_h0##W{@kinb~F$o54WKpgfwiM<XW)X%O4m26=8nzk^B>g-k
z%vtPN95tLZToMfRDa<J>y-c;dP(kh*9tj4h7+(#04Q~x!I+Hm=Eqh^DI710%4SO>v
zS#UvE!3>(LelI~OsECn)f#D@6J!vxDV$Ls0(c~@yiAS*~=jRrbmZXAX@fK5F!7bLr
zqN2pgDE9Q!l8~ar$#yI<f}ljJ$zKGDfLkm{MVWb%Q&}EKa56A3fP%VM2@)qvEKEF%
zd`x1S<5_hW>p?P_Ot+YG^2=|rWMrmiK%4+_hb9NaHqN5_l6Y|9DiUE}U?^e(5kd?M
z47b=z^D@)&i*j$V<QJ7B-eO74FDlYx2Rk5&wV)_JDKUy4tTDbQza$ZqV2Y#IQ}Rob
za#Bm8Sd;Vfi`Y}5m`gH?q9zNnD>3R$HeuIi_S0mayq8mzpATdW$nm$B0t|~3Cx7Eq
uQ~_Dd!NkGBAy>rCz`&r%RRjtva1h;M%`43<s4NniY|ACds5&{E%NhW`)bR`e

diff --git a/algogenetique.py b/algogenetique.py
index 7726e23..8bd3ab4 100644
--- a/algogenetique.py
+++ b/algogenetique.py
@@ -22,11 +22,11 @@ def main(N,tmax,pmutation, proportion):
     People=Population(N)
     S1=[]
     for individu in People.indiv:
-        individu.evaluate(brin)
+        individu.evaluate()
         S1.append(int(individu.score))
     maximum=int(max(S1))
     for i in range(tmax):
-        print(i)
+        #print(i)
         mini=People.indiv[0].score
         best=People.indiv[0]
         People.reproduction(p = proportion, proba_mutation= pmutation)
@@ -35,6 +35,7 @@ def main(N,tmax,pmutation, proportion):
                 best=individu
                 mini=individu.score
         L.append(mini)
+        print(i,":",mini)
 
     plt.subplot(221)
     plt.plot([i for i in range(tmax)], L)
diff --git a/individu.py b/individu.py
index 20958d3..873d8c5 100644
--- a/individu.py
+++ b/individu.py
@@ -10,17 +10,20 @@ class Individu():
 
     def __init__(self, table):
         self.table = table
-        self.score = self.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
-    
-    def evaluate(self, brin):
+        lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
+        self.brin = ''.join(lineList[1:])
+        #self.brin = "AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA"
+        self.score = self.evaluate()
+
+    def evaluate(self):
         traj = Traj3D()
 
         numb_ajout = 3
 
-        fisrt_seq = brin[0:numb_ajout]
-        last_seq = brin[-numb_ajout:]
+        fisrt_seq = self.brin[0:numb_ajout]
+        last_seq = self.brin[-numb_ajout:]
 
-        traj.compute(last_seq + brin + fisrt_seq, self.table)
+        traj.compute(last_seq + self.brin + fisrt_seq, self.table)
         traj_array = np.array(traj.getTraj())
         list_distance = []
 
@@ -56,6 +59,25 @@ class Individu():
                         #sur l'axe z il y a un moins
                         table_rotations[doublet2][coord] = - table_rotations[doublet][coord]
 
+    def mutation_with_numbers(self, proba = P1, number_of_mutations = 5):
+        table_rotations = self.table.rot_table
+        for i in range(0,number_of_mutations):
+            tir = random()
+            if tir < proba :
+                doubletNumber = randrange(0,8)
+                counter = 0
+                for doublet in table_rotations:
+                    if counter==doubletNumber:
+                        break
+                    counter+=1
+                for coord in range(3):
+                    table_rotations[doublet][coord] =np.random.uniform(low = self.table.orta()[doublet][coord] - self.table.orta()[doublet][coord + 3], high = self.table.orta()[doublet][coord] + self.table.orta()[doublet][coord + 3])
+                    doublet2 = self.table.corr()[doublet]
+                    if coord == 0 or coord == 1 :
+                        table_rotations[doublet2][coord] = table_rotations[doublet][coord]
+                    else :
+                        #sur l'axe z il y a un moins
+                        table_rotations[doublet2][coord] = - table_rotations[doublet][coord]
 
 # individu1 = Individu(RotTable())
 # print(individu1.table.rot_table)
diff --git a/population.py b/population.py
index 104f66b..405c730 100644
--- a/population.py
+++ b/population.py
@@ -15,7 +15,7 @@ class Population:
         self.n = len(liste_individus)
         self.indiv = liste_individus
         for i in range(0,self.n):
-            self.indiv[i].evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
+            self.indiv[i].evaluate()
 
         return self
 
@@ -68,7 +68,7 @@ class Population:
         meilleur = self.indiv[0]
         for individu in self.indiv :
             if meilleur.score > individu.score:
-                print("meilleur, individu: ", meilleur.score, individu.score)
+                #print("meilleur, individu: ", meilleur.score, individu.score)
                 meilleur = individu
         newself = [meilleur]
         vu=set()                        
@@ -170,7 +170,7 @@ class Population:
                 lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
                 brin = ''.join(lineList[1:])
                 child.mutation(proba_mutation)
-                child.evaluate(brin)
+                child.evaluate()
             newself.append(couple_enfant[0])
             newself.append(couple_enfant[1])
         self = self.modifier_population(newself)
@@ -186,7 +186,7 @@ def test():
     popu = Population(4)
     print("\n POPULATION INITIALE \n")
     for individu in popu.indiv :
-        individu.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
+        individu.evaluate()
     afficher(popu)
     popu.reproduction(selection = popu.selection_duel)
     print("\n REPRODUCTION \n")
-- 
GitLab