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