diff --git a/.gitignore b/.gitignore index 09bf5d65f59f67ea5457404e72300a693093ada1..6ff5f5a98092a23fdd0b88d61529be1f32fa19b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.pyc -__pycache__/ \ No newline at end of file +__pycache__/ +*.png \ No newline at end of file diff --git a/algogenetique.py b/algogenetique.py index 935461c570649a95af7dee1980c90e0d07436041..81da80b77b9edfbb0a7e5a89350883ae4085f9c9 100644 --- a/algogenetique.py +++ b/algogenetique.py @@ -25,7 +25,6 @@ def main(N,tmax,pmutation, proportion,brin="plasmid_8k.fasta"): if individu.score>max: best=individu max=individu.score - L.append(max) plt.plot([i for i in range(tmax)], L) diff --git a/individu.py b/individu.py index c367c48b882a0c79d636a76c9956bce3765ae5e9..c351870f0d4cbe9389235b0c57df6ad1c371658d 100644 --- a/individu.py +++ b/individu.py @@ -8,8 +8,6 @@ P1 = 0.015 class Individu(): - - def __init__(self, table): self.table = table self.score = self.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA") @@ -59,4 +57,10 @@ class Individu(): # table = RotTable() # test = Individu(table) # test.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA") -# print(test.score) \ No newline at end of file +# print(test.score) + + +qqun=Individu(RotTable()) +qqun.table.rot_table={'AA': [35.576558502141, 7.433901511509349, -154], 'AC': [33.22048222654215, 5.25191751302917, 143], 'AG': [26.446029097301288, 6.052240462237622, -2], 'AT': [30.47045254036881, 1.333716025628036, 0], 'CA': [34.00734209585039, 33.70710613604862, -64], 'CC': [33.61019622767888, 3.713127032109607, -57], 'CG': [29.664061041382677, 6.725155507162601, 0], 'CT': [26.446029097301288, 6.052240462237622, 2], 'GA': [36.655773481637176, 10.45337581740701, 120], 'GC': [42.26984493493484, 3.5310453395352823, 180], 'GG': [33.61019622767888, 3.713127032109607, -57], 'GT': [33.22048222654215, 5.25191751302917, 143], 'TA': [36.951508786388914, -2.5174751178033303, 0], 'TC': [36.655773481637176, 10.45337581740701, -120], 'TG': [34.00734209585039, 33.70710613604862, -64], 'TT': [35.576558502141, 7.433901511509349, -154]} +qqun.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA") +print(qqun.score) diff --git a/inutile.py b/inutile.py index 1a2947e5d6d776eaab4c42387fcd36f075272bea..420a646fc6e25c17b5aec102de8321736ae1ebaf 100644 --- a/inutile.py +++ b/inutile.py @@ -31,7 +31,7 @@ class table_rotation(rotation): self.dict = {doublet : rotation(doublet) for doublet in ORIGINAL_ROT_TABLE} table1 = table_rotation() -print(table1.dict["AA"].x) +# print(table1.dict["AA"].x) #table1.dict --> {'AA': <__main__.rotation object at 0x000001A722E1BAC8>, 'AC': <__main__.rotation object at 0x000001A722E1BB00>, 'AG': <__main__.rotation object at 0x000001A729A66A58>, 'AT': <__main__.rotation object at 0x000001A729A66A20>, 'CA': <__main__.rotation object at 0x000001A729A669E8>, 'CC': <__main__.rotation object at 0x000001A729A66A90>, 'CG': <__main__.rotation object at 0x000001A729A66B00>, 'CT': <__main__.rotation object at 0x000001A729A66B70>, 'GA': <__main__.rotation object at 0x000001A729B88D68>, 'GC': <__main__.rotation object at 0x000001A729B88DA0>, 'GG': <__main__.rotation object at 0x000001A729B88DD8>, 'GT': <__main__.rotation object at 0x000001A729B88E10>, 'TA': <__main__.rotation object at 0x000001A729B88E48>, 'TC': <__main__.rotation object at 0x000001A729B88E80>, 'TG': <__main__.rotation object at 0x000001A729B88EB8>, 'TT': <__main__.rotation object at 0x000001A729B88EF0>} #table1.dict["AA"] ---> <__main__.rotation object at 0x000001A722E1BAC8> (qui est l'object rotation) diff --git a/population.py b/population.py index 2d429812890b2e9302768782ecea6966c4f53f33..28e1c231d035b0ab3c9133281b73855e0ee3a93b 100644 --- a/population.py +++ b/population.py @@ -1,5 +1,5 @@ -import random -from random import random, randint, randrange + +from random import * from individu import Individu from RotTable import RotTable from croisement import croisement_un_point, croisement_deux_points @@ -45,24 +45,27 @@ class Population: meilleur = self.indiv[0] for individu in self.indiv : if meilleur.score < individu.score: + print("meilleur, individu: ", meilleur.score, individu.score) meilleur = individu newself = [meilleur] vu=set() t=randrange(0,self.n) - m=randrange(0,self.n) + m=randrange(0,self.n) + non_vu = [i for i in range(0, self.n)] while len(newself)<p: - while m in vu: - m=randrange(0,self.n) - while t in vu: - t=randrange(0,self.n) + m = choice(non_vu) + non_vu.remove(m) + t = choice(non_vu) + non_vu.remove(t) + x=self.indiv[m] y=self.indiv[t] - vu.add(t) - vu.add(m) if x.score>=y.score: newself.append(x) else: newself.append(y) + for i in range(0, len(newself)): + print(newself[i].score) self = self.modifier_population(newself) def selection_par_rang(self,p = None):