diff --git a/__pycache__/RotTable.cpython-36.pyc b/__pycache__/RotTable.cpython-36.pyc index a8064bb45dbaad46db289f9e730b7dd816423ae4..459e4374c306aebaf525b830c17f00a8820843ca 100644 Binary files a/__pycache__/RotTable.cpython-36.pyc and b/__pycache__/RotTable.cpython-36.pyc differ diff --git a/algogenetique.py b/algogenetique.py index 7726e23836b7b1aee14371db67c9da0cce462b1e..92034969ea1f0770c5ca3b46b79e7e4397b17972 100644 --- a/algogenetique.py +++ b/algogenetique.py @@ -8,14 +8,14 @@ import croisement from Traj3D import * from random import random import matplotlib.pyplot as plt -import time +import time # Debut du decompte du temps start_time = time.time() - def main(N,tmax,pmutation, proportion): + L=[] lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")] brin = ''.join(lineList[1:]) @@ -35,7 +35,6 @@ def main(N,tmax,pmutation, proportion): best=individu mini=individu.score L.append(mini) - plt.subplot(221) plt.plot([i for i in range(tmax)], L) diff --git a/individu.py b/individu.py index 20958d3de778f360a6da39856777dffe233336bf..7b7915bacbb733b06dc234f602de8817eda6e295 100644 --- a/individu.py +++ b/individu.py @@ -9,37 +9,38 @@ P1 = 0.015 class Individu(): def __init__(self, table): + lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")] + brin = ''.join(lineList[1:]) self.table = table - self.score = self.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA") + self.score = inf def evaluate(self, brin): traj = Traj3D() - numb_ajout = 3 + numb_ajout = 6 fisrt_seq = brin[0:numb_ajout] last_seq = brin[-numb_ajout:] traj.compute(last_seq + brin + fisrt_seq, self.table) traj_array = np.array(traj.getTraj()) + list_distance = [] - for i in range(numb_ajout): - first_nuc_coordonate = traj_array[numb_ajout+i, 0:3] - first_nuc_coordonate_compute = traj_array[-(numb_ajout-i), 0:3] - - last_nuc_coordonate = traj_array[-(2*numb_ajout-i), 0:3] - last_nuc_coordonate_compute = traj_array[i, 0:3] + begining = traj_array[0:2*numb_ajout, 0:3] + end = traj_array[-2*numb_ajout:, 0:3] - distance_first_nuc = np.linalg.norm(first_nuc_coordonate - first_nuc_coordonate_compute, ord=2) - distance_last_nuc = np.linalg.norm(last_nuc_coordonate - last_nuc_coordonate_compute, ord=2) + for i in range(numb_ajout): - list_distance += [distance_first_nuc, distance_last_nuc] + nuc_coordonate_beg = begining[i] + nuc_coordonate_end = end[i] + distance_nuc = np.linalg.norm(nuc_coordonate_beg - nuc_coordonate_end, ord=2) + list_distance += [distance_nuc] self.score = max(list_distance) - return max(list_distance) + #return max(list_distance) def mutation(self, proba = P1): @@ -61,10 +62,10 @@ class Individu(): # print(individu1.table.rot_table) # individu1.mutation() -# table = RotTable() -# test = Individu(table) -# test.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA") -# print(test.score) +table = RotTable() +test = Individu(table) +test.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA") +print(test.score) # qqun=Individu(RotTable()) diff --git a/population.py b/population.py index 104f66bb97b274d923f7dcf554ea4fe3599ef717..d7649e54ca7bdc08663c955cd76a425082e93ba2 100644 --- a/population.py +++ b/population.py @@ -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() @@ -83,7 +83,7 @@ class Population: x=self.indiv[m] y=self.indiv[t] - if x.score<y.score: + if x.score<=y.score: newself.append(x) else: newself.append(y)