ADN à l'ARN et les protéines avec Perl Obtenir
-
28-10-2019 - |
Question
Je travaille sur un projet (je dois le mettre en œuvre en Perl, mais je ne suis pas bon dans ce domaine) qui lit l'ADN et trouve son ARN. Diviser que l'ARN est en triplets pour obtenir le nom de protéine équivalente de celui-ci. Je vais vous expliquer les étapes:
1) transcrire les séquences d'ADN suivantes à l'ARN, puis utiliser le code génétique pour la traduire en une séquence d'acides aminés
Exemple:
TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT
2) transcrire l'ADN, tout d'abord remplacer chaque ADN homologue de ce (à savoir, G C, C G, T A et A T):
TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT
AGTATTATGCAAAACATAAGCGGTCGCGAAGCCACA
Ensuite, rappelons que les bases thymine (T) deviennent un uracile (U). D'où notre séquence devient:
AGUAUUAUGCAAAACAUAAGCGGUCGCGAAGCCACA
En utilisant le code génétique est comme ça
AGU AUU AUG CAA AAC AUA AGC GGU CGC GAA GCC ACA
regardez alors chaque triplet (codon) dans le tableau du code génétique. Alors AGU devient Sérine, que nous pouvons écrire comme Ser, ou juste S. AUU devient isoleucine (Ile), que nous écrivons I. Poursuivant cette façon, nous obtenons:
SIMQNISGREAT
Je vais donner la table de protéines:
Alors, comment puis-je écrire que le code en Perl? Je vais modifier ma question et d'écrire le code qui ce que je faisais.
La solution
Essayez ci-dessous le script, il accepte l'entrée sur STDIN (ou dans le fichier donné en paramètre) et lu par ligne. J'ai aussi présument que « STOP » dans l'image ci-joint un état d'arrêt. Espoir je l'ai lu tout bien de cette image.
#!/usr/bin/perl
use strict;
use warnings;
my %proteins = qw/
UUU F UUC F UUA L UUG L UCU S UCC S UCA S UCG S UAU Y UAC Y UGU C UGC C UGG W
CUU L CUC L CUA L CUG L CCU P CCC P CCA P CCG P CAU H CAC H CAA Q CAG Q CGU R CGC R CGA R CGG R
AUU I AUC I AUA I AUG M ACU T ACC T ACA T ACG T AAU N AAC N AAA K AAG K AGU S AGC S AGA R AGG R
GUU V GUC V GUA V GUG V GCU A GCC A GCA A GCG A GAU D GAC D GAA E GAG E GGU G GGC G GGA G GGG G
/;
LINE: while (<>) {
chomp;
y/GCTA/CGAU/; # translate (point 1&2 mixed)
foreach my $protein (/(...)/g) {
if (defined $proteins{$protein}) {
print $proteins{$protein};
}
else {
print "Whoops, stop state?\n";
next LINE;
}
}
print "\n"
}