Skip to content
Snippets Groups Projects
individu.py 1.42 KiB
Newer Older
Gauthier Roy's avatar
Gauthier Roy committed
from RotTable import RotTable
from Traj3D import *
Gauthier Roy's avatar
Gauthier Roy committed
import numpy as np
Gauthier Roy's avatar
Gauthier Roy committed
from math import sqrt, inf
Gauthier Roy's avatar
Gauthier Roy committed

class Individu():

Gauthier Roy's avatar
Gauthier Roy committed
    def __init__(self, table):
        self.table = table
Gauthier Roy's avatar
Gauthier Roy committed
        self.score = None
    
    def evaluate(self, brin):
        traj = Traj3D()

Gauthier Roy's avatar
Gauthier Roy committed
        numb_ajout = 3
Gauthier Roy's avatar
Gauthier Roy committed
        fisrt_seq = brin[0:numb_ajout]
        last_seq = brin[-numb_ajout:]

        traj.compute(last_seq + brin + fisrt_seq, self.table)
Gauthier Roy's avatar
Gauthier Roy committed
        traj_array = np.array(traj.getTraj())
Gauthier Roy's avatar
Gauthier Roy committed
        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]

                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)

                list_distance += [distance_first_nuc, distance_last_nuc]

Gauthier Roy's avatar
Gauthier Roy committed
        self.score = 1/max(list_distance)
Gauthier Roy's avatar
Gauthier Roy committed
        
    
    def mutation(self):
Gauthier Roy's avatar
Gauthier Roy committed
        mutation = 0
Gauthier Roy's avatar
Gauthier Roy committed
        return mutation
Gauthier Roy's avatar
Gauthier Roy committed

table = RotTable()
test = Individu(table)
test.evaluate("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAA")
Gauthier Roy's avatar
Gauthier Roy committed
print(table.rot_table)
Gauthier Roy's avatar
Gauthier Roy committed
print(test.score)