Skip to content
Snippets Groups Projects
Commit cdaa572d authored by Santos Garcia Carlos's avatar Santos Garcia Carlos
Browse files

Merge branch 'Project' into 'master'

First Commit

See merge request !2
parents 3f547f43 581fd78f
Branches
No related tags found
1 merge request!2First Commit
FROM python
RUN pip install --upgrade pip
RUN pip install mathutils numpy matplotlib
Main.py 0 → 100644
from RotTable import *
from Traj3D import *
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--filename", help="input filename of DNA sequence")
parser.parse_args()
args = parser.parse_args()
def main():
rot_table = RotTable()
traj = Traj3D()
if args.filename:
# Read file
lineList = [line.rstrip('\n') for line in open("plasmid_8k.fasta")]
# Formatting
seq = ''.join(lineList[1:])
traj.compute(seq, rot_table)
else:
traj.compute("AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGGAGGCGGTTTAGTCGAAGGTTAAGTCAG", rot_table)
print(traj.getTraj())
if args.filename:
traj.draw(args.filename+".png")
else:
traj.draw("sample.png")
if __name__ == "__main__" :
main()
# ST2 (Théorie des Jeux) - EI Algorithmique Génétique
![CentraleSupelec Logo](https://www.centralesupelec.fr/sites/all/themes/cs_theme/medias/common/images/intro/logo_nouveau.jpg)
## Contexte
Toutes les cellules qui constituent la vie sur Terre comportent en elles une ou plusieurs molécules d'ADN qui sont le support de l'information génétique. Ces molécules, plus ou moins longues, sont composées d'une succession de nucléotides (ou bases : A, C, G et T) qui interagissent avec de nombreux éléments cellulaires et dont le positionnement dans l'espace joue un rôle important dans l'adaptation de la cellule à son environnement (chaleur, famine, stress...). Si les séquences d'ADN sont aujourd'hui très largement étudiées à travers leur séquence textuelle (succession de A, C, G et T), il est très instructif de les étudier à partir de leur trajectoire tri-dimensionnelle. En 1993, des biopysiciens ont établi un modèle de conformation 3D qui permet de transformer une suite de nucléotides (sous forme de lettres) en une trajectoire tri-dimensionnelle. Dès lors, il est possible de représenter toute séquence textuelle d'ADN en une trajectoire 3D.
## Problématique
Ce modèle ayant été développé pour de courtes séquences d'ADN nu, il ne prend pas en compte toutes les caractéristiques d'une longue chaîne au sein de la cellule (surenroulements, nucléosomes, interactions longue distance...). Par exemple, si on observe un chromosome bactérien (longue séquence d'ADN constituant une bactérie) ou un plasmide (petite séquence présente au sein des bactéries), on s'aperçoit que ce chromosome ou ce plasmide est circulaire, i.e. les deux extrémités ont été "collées" l'une à l'autre. Le modèle pré-cité ne rend pas compte de ce phénomène lorsque l'on représente la trajectoire 3D d'un chromosome bactérien ou d'un plasmide.
## Énoncé
L'objectif de ce projet est de modifier le modèle de conformation 3D donné afin de rendre un plasmide circulaire. Pour cela, un algorithme génétique sera développé en Python et structuré en classes (programmation orientée objet).
Le projet est à réaliser en groupes d'environ cinq personnes.
## Livrables
- le **code source** du programme avec son manuel utilisateur,
- un **rapport** décrivant le fonctionnement global de l'algorithme, la structuration du code ainsi que les paramètres choisis et les stratégies mises en place.
## Évaluation
Seront évalués :
- la pertinence des choix effectués pour concevoir l'algorithme (paramètres, stratégies),
- la qualité du code (structuration, optimisation, commentaires),
- les résultats (qualité de la fermeture du chromosome étudié, temps d'exécution moyen...),
- la qualité et la clarté de la présentation orale du projet.
## Ressources
Sont fournis :
- le fichier <tt>Traj3D.py</tt> implémentant le moteur de calcul d'une trajectoire 3D,
- le fichier <tt>Rot_Table.py</tt> contenant la table de rotations nécessaires au calcul d'une trajectoire 3D (ce fichier devra être modifié),
- le fichier <tt>Main.py</tt> illustrant un exemple d'utilisation de la classe Traj3D,
- deux fichiers <tt>.fasta</tt> contenant les séquences de deux plasmides de longueur différente (8 000 dans un cas et 180 000 dans l'autre).
import mathutils
import math
class RotTable:
"""Represents the rotation table"""
__ORIGINAL_ROT_TABLE = {\
"AA": [35.62, 7.2, -154, 0.06, 0.6, 0],\
"AC": [34.4, 1.1, 143, 1.3, 5, 0],\
"AG": [27.7, 8.4, 2, 1.5, 3, 0],\
"AT": [31.5, 2.6, 0, 1.1, 2, 0],\
"CA": [34.5, 3.5, -64, 0.9, 34, 0],\
"CC": [33.67, 2.1, -57, 0.07, 2.1, 0],\
"CG": [29.8, 6.7, 0, 1.1, 1.5, 0],\
"CT": [27.7, 8.4, -2, 1.5, 3, 0],\
"GA": [36.9, 5.3, 120, 0.9, 6, 0],\
"GC": [40, 5, 180, 1.2, 1.275, 0],\
"GG": [33.67, 2.1, 57, 0.07, 2.1, 0],\
"GT": [34.4, 1.1, -143, 1.3, 5, 0],\
"TA": [36, 0.9, 0, 1.1, 2, 0],\
"TC": [36.9, 5.3, -120, 0.9, 6, 0],\
"TG": [34.5, 3.5, 64, 0.9, 34, 0],\
"TT": [35.62, 7.2, -154, 0.06, 0.6, 0]\
}
def __init__(self):
self.__Rot_Table = {}
for dinucleotide in RotTable.__ORIGINAL_ROT_TABLE:
self.__Rot_Table[dinucleotide] = RotTable.__ORIGINAL_ROT_TABLE[dinucleotide][:3]
###################
# WRITING METHODS #
###################
###################
# READING METHODS #
###################
def getTwist(self, dinucleotide):
return RotTable.__ORIGINAL_ROT_TABLE[dinucleotide][0]
def getWedge(self, dinucleotide):
return RotTable.__ORIGINAL_ROT_TABLE[dinucleotide][1]
def getDirection(self, dinucleotide):
return RotTable.__ORIGINAL_ROT_TABLE[dinucleotide][2]
###################
#For computing
import mathutils
import math
#For drawing
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import collections as mc
class Traj3D:
"""Represents a 3D trajectory"""
# Vertical translation (elevation) between two di-nucleotides
__MATRIX_T = mathutils.Matrix.Translation((0.0, 0.0, 3.38/2.0, 1.0))
def __init__(self):
self.__Traj3D = {}
def getTraj(self):
return self.__Traj3D
def compute(self, dna_seq, rot_table):
# Matrice cumulant l'ensemble des transformations géométriques engendrées par la séquence d'ADN
total_matrix = mathutils.Matrix()
# On enregistre la position du premier nucléotide
self.__Traj3D = [mathutils.Vector((0.0, 0.0, 0.0, 1.0))]
matrices_Rz = {}
matrices_Q = {}
# On parcourt la sequence, nucléotide par nucléotide
for i in range(1, len(dna_seq)):
# On lit le dinucleotide courant
dinucleotide = dna_seq[i-1]+dna_seq[i]
# On remplit au fur et à mesure les matrices de rotation
if dinucleotide not in matrices_Rz:
matrices_Rz[dinucleotide] = mathutils.Matrix.Rotation(math.radians(rot_table.getTwist(dinucleotide)/2), 4, 'Z')
matrices_Q[dinucleotide] = \
mathutils.Matrix.Rotation(math.radians((rot_table.getDirection(dinucleotide)-90)), 4, 'Z') \
@ mathutils.Matrix.Rotation(math.radians((-rot_table.getWedge(dinucleotide))), 4, 'X') \
@ mathutils.Matrix.Rotation(math.radians((90-rot_table.getDirection(dinucleotide))), 4, 'Z')
# On calcule les transformations géométrique selon le dinucleotide courant, et on les ajoute à la matrice totale
total_matrix = total_matrix @ \
self.__MATRIX_T \
@ matrices_Rz[dinucleotide] \
@ matrices_Q[dinucleotide] \
@ matrices_Rz[dinucleotide] @ \
self.__MATRIX_T
# On calcule la position du nucléotide courant en appliquant toutes les transformations géométriques à la position du premier nucléotide
self.__Traj3D.append(total_matrix @ self.__Traj3D[0])
def draw(self, filename):
xyz = np.array(self.__Traj3D)
self.__Traj3D = []
x, y, z = xyz[:,0], xyz[:,1], xyz[:,2]
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot(x,y,z)
plt.show()
plt.savefig(filename)
File added
File added
File added
File added
This diff is collapsed.
>CP023830.1 Escherichia coli strain 4/4 plasmid p4_4.4, complete sequence
AAAGGATCTTCTTGAGATCCTTTTTTTCTGCGCGTAATCTGCTGCCAGTAAACGAAAAAACCGCCTGGGG
AGGCGGTTTAGTCGAAGGTTAAGTCAGTTGGGGACTGCTTAACCGGGTAACTGGCTTGGTGGAGCACAGA
TACCAAATACTGTCCTTCTAGTGTAGCCGCAGTTAGGCCACCACTTCAAGAACTCTTAATATCTCAATCC
ACCTTGTCCAGTTACCAGTGGCTGCTGCCAGTGGCGCTTTGTCGTGTCTTACCGGGTTGGACTCAAGACG
ATAGTTACCGGATAAGGCGCAGCGGTCGGGCTGAACGGGGGGTTCGTGCACACAGCCCAGCTTGGAGCGA
ACGACCTACACCGAGCCGAGATACCTACAGCGTGAGCTATGAGAAAGCGCCACGCTTCCCGAAGGGAGAA
AGGCGGACAGGTATCCGGTAAGCGGCAGGGTCGGAACAGGAGAGCGCACGAGGGAGCTTCCAGGGGGAAA
CGCCTGGTATCTTTATAGTCCTGTCGGGTTTCGCCACCTCTGACTTGAGCGTCGATTTTTATGATGCTCG
TCAGGGGGGCGGAGCCTATGGAAAAACGCCAACGGCGCAGCCTTTTCCTGGTTCTCGTTTTTTGCTCACA
TGTTTCTTTTGGCGTTATCCCCTGATTCTGTGGATAACCGCATCTCCGCTTTTGAGTGAGCAGACACCGC
TCGCCGCAGCCGAACGACCGAGTGTAGCGAGTCAGTGAGCGAGGAAGCGGAAGAGCGCCGGAACGTGCAT
TTTCTCCTTACGCATCTGTGCGGCATTTCACATCGGACATGGTGCGCTTTCCATACAATTCGTACTGATG
CCGCATAGTTAAGCCAGTATACACTCCGCTATCGCTACGTGACTGGTTCAGGGCTTCGCCCCGAAACCCC
CTGACGCGCCCTGAGGGGCTTGTCTGCTCCCGGCATCCGCTCACAGACAAGCTGTTACCGTCTCCGGGAG
CTGTATGTGTCAGAGGTTTTCACCGTCATCCCCGAAGCGTGCGAGGCAGCTGCGGTAAAGCTCGTCGGCG
TGGTCGTGAAGTGATTCACAAATATCGGCCTGTTCATCTGCGTCCAGTTCGTTGAGTTTCTCCAGCAGCG
TTAATGTCTGGCTTCTGATAAAACGGGCCATGTTAAGGGCGGTTTTTTCCTGTTTAGTCACTGATGCCTC
CGTGTAAGGGGGATTTCTGTTTTATGGGGTAATGATACCGATGAAACGCGAGAGGATGCTCACCATACGG
GTTACTGATGATGAACATGCCCGGTTACTGGAACGCTGTGAGGGTAAACAGCTGGCGGTATGGATGCGGC
GGGTCTGCCTGGGTGAGCCGGTTGCACGCTCCGGGAAGCTGCCGACACTGGCACCGCCGTTACTGCGTCA
GCTGGCCGCCATCGGGAATAACCTGAATCAGACAGCGAGGAAGGTGAACAGCGGGCAGTGGTCTTCCGGT
GATCGGGTTCAGGTGTTGGCTGCGCTGATGGCCATCGGGGAGGAGCTGCGTCGGCTGCGTCTGGCCGTCA
GGGAACAGGGCGCGCGGGATGATTGTTAAATTTCATGCCAGGGGAAAAGGCGGTGGCAGTGGTCCGGTTG
ATTACCTGCTGGGAAGGGAGCGAAACCGGGAAGGGGCAACGGTGCTTCAGGGTAATCCGGAAGAAGTCCG
GGAACTCATCGATGCCACGCCATTTGCGAAGAAATACACGTCAGGTGTTCTGTCGTTCGCGGAGAAGGAG
CTGCCGCCGGGAGGACGTGAAAAGGTGATGGCGAGCTTTGAGCGTGTACTGATGCCCGGTCTCGAAAAGA
ATCAGTACAGCATCCTGTGGGTGGAGCACCAGGACAAGGGACGGCTTGAGCTGAATTTTGTCATTCCGAA
CATGGAGCTACAGACCGGAAAACGCCTCCAGCCGTACTACGACCGGGCAGACAGGCCGAGAATTGATGCC
TGGCAGACGCTGGTGAATCACCATTACGGGCTGCATGACCCCAACGCCCCGGAGAACCGCCGGATACTGA
CTCTCCCTGATAACCTGCCGGAAACGAAACAGGCGCTTGCAGAGAGCGTCACACGCGGGATAGACGCTCT
TTATCATGTCGGGGAGATAAAAGGTCGTCAGGATGTGATTCAGGCGCTCACAGAGGCAGGGCTTGAAGTG
GTCAGGGTGATGCGAAGCAGTATCAGCATTGCAGACCCGAACGGTGGGAAGAATATCAGGCTGAAAGGAG
CATTTTATGAGCAATCTTTTACAGACGGGCGCGGAGTTCGAGAAAAAGCTGAAAGAGAGAGCCGAATCTA
CAGAGACAATGCTGAACGACGAGTTCAGCAAGCTCGAAAAATCTGTAAGCAAGGCTGTGACATCAAACGA
GACGAAAATCAAAGACGCTATAGCCCTGTTCACAGCTTCGACAGAGGAATCACTGAAAAAACACCGGGAA
GGGGTGAAAGAGGCGATGATGCAGCACAGGAAGGACGTGTTAAAGCTGGCAGGGAATACGGGCATGATGT
TACTGGGGATGGTCCTTTTCCTGTTTACCGTGAGTGGCGGGACGCTCTGGTATCTTGGCGGGATGATACA
GGCGAACCTGGAAGAAATCAGGATACAGGAAGAAACATTGCAGAAACTGAACGCGAAGACATGGGGCGTG
GAGTTTGTGCAGGACGGGAGAAGGAAATTTCTGGTTATCCCTCAGGGGAAATCGGCAACGGTGATTCCCT
ATCAGGGGAAGGACTGGGTACAACTGACGGAGTGACACAGAGTGACGGAGCTGGAAAGACATTTGCTGAA
CGCCTTAGAGCAACTGCAACAGGACTATATGCAGCGGCTGAACGAATGGGAGAGCGCCTTCGTGGAATTG
CAGAAAATGTTTTCGCTTACGCAACGGGACAACGCGATGCTGAACGAGCGGGTCATGCAGTTGAGTCAGC
AGGTGCAGCACTTGAGCGAGCAGACAGAACGCTTGAGCCAGTTATACAGCGAGAACAGGAGATAAGGGAT
GAACGGCTGATACAGGAACGCGAACATGAGTTATCCCTGGAGCGTGAGCGCCAGCTGGAAATACAGGAAC
GGACACAGGATGGCCCTTCGCTGGGATGGTAATCAGAGACAGGCTAAAATGTTGTCAGCGCGTTTCCGGT
GCATTTTTTGGGATAATGGTTGGTTCGGGGGCACCGGGAACGCGCTTCAGTCAGACCTTGCTGAAAACAC
AGGAACGCGTTAAAACGCATACGGGCGCGATTCTGGTGTGTCTTTTGTTGCTGTGTTTTGCCTCTATTGC
CAGATCGCGCTCATTCCCCTGAACTTCTGTTTTCCCGCTCCGGTCCCCGTCTTCTTCGCTTCCGAAAGCA
TGAAAAAAATCCGTTTCAGCTGTCTCTGGCTGGCAATTCCTGCGTGATTCACATGGCTGCATAGCTATGC
ATGTGGTTAAAATTTACCGGGTGCGATCGCGGCAGTTTTTCGGGTGGTTTGTTGCCATTTTTACCTGTCT
GCTGCCGTGATCGCGCCGAACGCGTTTCAGCGGTGCGTACAATAAGGGATTATGGTAAATTATCTTGTTC
CTTAGAGAATGATTTGAGGTGGTATCCTGCACTTATTTAAATATGCTTGCTTGGGAAATTCCAGGTTGCA
GTATGGTTGAGTTGTAATTTTCCTATGATAGGAAAAATGTTATATTATTAATTTATTTGTGAGGCTTCAT
AAAGAATGAAAATTTCTGATATTGAAAAAAACATATATAAAGGACTAGCTGAATTTATTTCACAAAAAAT
CAGAGATGAACATGATATATGCCTTGGACAGTTTGAATCAGAGGAATTACTTGATGAGATTCTTAAAAGA
GTAATCCCAGTCATATATAATGTGGCTATTGATGATGCTATAAAATCAGTAAGGAATGTTGGGGATAGAT
TAGAGGAGGAATTAGATATGAGGAAGGTAGTGTGACTAATTTTAAATCAGACTTAAATCTAATAAGAAAA
GAATGGTATAATGCATTTTATTCAGGTAATACTGAAATGCTAGATTACTTGGAAGCTGATTGGTTTATTT
CAACAAATGGTCAAAAAGTTATCTATAAAAAACATCAGTTACGAAAGATTGATATGCGTCCAGCGAGGAT
TTTACCTAGCATAGAAAGATATGAATATGAGGTCGTAATGCGTGAGTTTAAAGGCATTGCTTGTGTTTCA
GGGAAAGCTGAAATAAAGCAAAATGATGGAAATATATTAATGGCTTTTATTGAGAATTGGATAAAGGTTA
ATGGTGGATGGAAAATGCAGTTTATATCGTATGAAAAAATCTAAGGGGAAGCCCCCTTAGATTAATGGTT
ATATATGTTCAAGTTTTATTTTTTTATAGCGATAAGTTCTGCTTTGAGCTTTAAGCATGTTTTCTGCAAA
CTGAATATCAAAACTATTTATAGCATTAGTTATTATAGTTTTTATTTTTTCTTTATCAGATAATGAATCA
CCATGCTCTATAGGTTCCCGCATATATGGATTGTTTTTTAATTCATCAAATAATGTTTTAAATAGTTCTA
ATCGACGAGGTCTTATAACTGTAAAAGATATATGAAGAGAGTGTTTGCTCTGAGTCGTAACATTGTGCCA
GTATCCAGCAGGAAGATATATGGCCTGACCTGGGGTTATATCAAACTCATAATCTGGGGAGGTATTAGGT
GGTAGATAATCGAAGCTTCTTTCATCTTCGAGAGGGTATGAATAGGTAGGGTTGTAAACTTTCCATTTTT
TTATTCCCTCAATTTGAACAGCTATTACATCATGATTGTCAAAATGAAGCCCAAAGCTTGGTGTTGCTGT
AAATGCAGCATATAGATTAGCACTACATGTACATTCTAACTCTTTAGATAACCATAGTCTGCTTTCATCT
ACAGATTCAAAGAATGACTGGCATCGATCTACTATAAGGGTTGCGCCATCACGTAAGCATTTATATAGCT
GATGGCGATTTATATGTGGTGTTCTATCGCCTGTTTGGCTATATGTGTATCTTATAAATCCTTTATACCC
CCTAATTTCGGGAAAGTTGTCATTTGCCATTCTAACTCTAGGATAGTGCAATATATCTTTTTCAAGCAAT
TTATTAAGATCATTCCAGTTGATTAAGTTTTTATAATTAACATCCGTGAATACAAACGGATATTTCTGGA
AATTATATTTCTTAAATTTTTCTATGATTTCCTTTTTTATAAGATTATTCATTTTTAAACCTCATGTTTT
GTGATATCTATAATCTGTGCTTTAGGTATATTATTTATAAGTTGTTCATCATGAGATATAACAATGATAT
GCTTTTCCTTGTTTTCCTCTTTTATATAATCACTGATTATTTTTATACCAAGTGAATCAAACCCTTTTGT
CGGTTCATCGAAAATAATCAAGTCTACGTTTTTTCCAGATGTAAGAGATACTCCTAATTTTTGTTTTTGT
CCACCAGATAAATTATGTCCGTAACCTTTGATCTCATAATCTAGTGGTTTGTCGAACTTAAATCTGTGTA
GCAGCTTTTTAATTGTATTTAAATTATTAATGCCGGAATAATGTAATATATTTTCCTCTATAGTTCCAGG
CATGAGATCTAGATCTTGAGGAACGTATAAGACATTAACAAAAGGAGAATTTGCTTTTTCTTGTTGTATC
CCATTGATTTTTATTGTGTTTTCTTCTGTTGTTATATTGCCAGAGAGAATTTTTGCAATAGTTGTTTTTC
CCGAACCATTCTCACCGGTTATAAAGGTAACAACGCCTTTTGTTAATATTAATTTATGGTTGAATGATTT
GTTGTATATTTCAATATTGCAAATATTGTCTTTTACATGAAGATATTGCTTGTCTGTGTAATTTGTTTTT
TTTATGTCGTTTATTTCGGCACAGTATAAATCAATTTCTGTTCTTGCCATTTTTATTTGTCTAAATAGAT
AACCAATGCGATTTAATGGGAGAAAAACTTGGAATAAAAAAGTGGCAAGCATAATAATACTACCACGGCT
TGCTCTACCATGAAGAAACATCCAGTATGCTGATAGGATAATCAGACTACTAAAAATGACTGAAAGAAAA
GCGGAGCTGATACCAAACAGGAAAAATTCATTATTTACTTTTCTTTGTTTTTCTGAATGTGTATTTACAG
CTTGAATTACTCGTTTACGACTTTTATCCGTGGTATGGAAAGCTTTATCCATAGGATACATGTGCATCAT
ATCAAACATTCTTCCAGATGCGAATTTGGAGCTAAGTGCAACTGATTTCATCATTGGAAATCTACGTTGT
GTCATTTTTATGACAAATATTATATAGATTGCCATTATTATTATAAACTCAATGGCTATTAATGTATTAA
CACTTATACAAATTGTTATGATTATTCCAATCATTTGTATTAATAATGGTACTACATCAGAACATATTGT
ATAAAATAATGATGATGCAGAAGAAAGCATGCTTTCTATAACCTTATTTAGTTCTCCTTTATTTTTCTTT
AAAAAATGCTCTTGGTGAGAATTTTGTATATTATCAATAACTTGCTCTCTAAGCTTTACAGATAATTCTA
TATTTGTTTTTTGAGTCAAGTATTCCGATATGCTATATCCAGCAGGCATAAGGAATCTAATTGATAAGAA
ACATGCTATAAATATTAATAATGAGTTTATTTCTCCTATTGAATCTTTATTGTCAATAACTGTTTTTATT
AAATATCCGAATAGAACGAAAAGAAAACTACTTATAGTTGATAATAATATAATAAAAAACAAATTACATT
TATTAAATGTGATGATGTACTTTTCAATAAAATTCAATTTATAATCCTTAAAGCCCGTATATTACGGGCT
TTATGTTATCTAGAATTACATGAGCACCCAGCGCCACATCCTTTACCGCTGCAACCACAAACAGAACCAT
TATCATTCCAAACATCTTTTCGCATTATTATTTTTACAAATTCTGCGGCTGGAAGGTGAGTGATACTCTT
TACTTTTTCGATGTAAGAATCACTGGATATGGATTCTTTTGGAATTCTTATAGTATTAATGTTCTTTATG
CTGTATCTTACAGCATAATCACCATACCACTTTGCGACAGTTTCATGACCTAGGTAAAAAGCGATTTTTT
CAATTTGATTTTTATATTCGTTAAAACGATATTCTTGGAATGTTATACCATGCTCATTAACATGCCTTAT
CTCATTTTTTAGCATGTCATTTGTATTTGGATAATGGTGGAGGTAAGCACCAAGATATTTTTCACAAAAG
CTGGTATAAGCATCTGTAAATTGAATAAACGTATGCCACATTTCATCTATAATTTGTAATTGCTCGTGAA
CTTTTATATTGTAGCATTCCGTTAGGCATGTTGAGGCTAGCCAGATGAATTTCTTTGTTTCATTAAAGAT
ATCATCAGCTTCTTCTGGTGTTACATTCCATTCTTTACGAAATTTTAGAAGAACATCATCATTGTGATAA
CTCATGATATCTTCTAATGAGCTAACATTATGAACTTTTGCATAAGAACTGCTGTTCATCTTATGTTGTA
GCATAACACCCCCAATTATATATTTGAATGTAGATGAGAATAGTTATCATTTGTTATGGTATTGTTAAAT
TTGTGCTTGTGTCAATATGCCTAATTCTATAAATGAGATAGTAATCAAGTTTTTTAATGGTTATAGGATC
CATTAGTAATACAAGGTTTTTGCAGCCAGTTTTTACGGGTAGGGGCTGCAAGGAAAACAAAATTTTCCCA
CTCTAAGAGAAGAGAATTGAGTTGGTTGAATGAGTGGATGCATCTAGGGCCGCTAATTCACCGAGTGTAA
AGGCTGTACGAAATGTGTTGCAGTCCGATAATAGCCCCCTCCATTGACGTTTTACACATGTGTTGTAGGT
TCCAGGAGTGGGCGGATCTCAAAAAGATC
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment