Skip to content
Snippets Groups Projects
Commit a65eda0b authored by Muller Sacha's avatar Muller Sacha
Browse files

Merge branch 'master' of...

parents 6d5d5d70 54270a9c
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -8,7 +8,7 @@ import croisement
from Traj3D import *
from random import random
import matplotlib.pyplot as plt
import time
import time
# def main(N,tmax,pmutation, proportion,brin="plasmid_8k.fasta"):
# '''lineList = [line.rstrip('\n') for line in open(brin)]
......@@ -29,8 +29,8 @@ import time
# plt.plot([i for i in range(tmax)], L, label = str(pmutation))
# return(best)
def main(N,tmax,pmutation, proportion):
L=[]
lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
brin = ''.join(lineList[1:])
......@@ -41,7 +41,7 @@ def main(N,tmax,pmutation, proportion):
# 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)
......
......@@ -9,37 +9,41 @@ 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")
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
numb_ajout = 6
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 = []
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):
......@@ -56,15 +60,34 @@ 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)
# 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())
......
......@@ -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()
......@@ -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)
......@@ -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")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment