ADN a ARN y obteniendo proteínas con perl
-
28-10-2019 - |
Pregunta
Estoy trabajando en un proyecto (tengo que implementarlo en Perl, pero no soy bueno en él) que lee el ADN y encuentra su ARN. Divida ese ARN en trillizos para obtener el nombre de proteína equivalente. Explicaré los pasos:
1) Transcribe el siguiente ADN al ARN, luego use el código genético para traducirlo a una secuencia de aminoácidos
Ejemplo:
TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT
2) Para transcribir el ADN, primero sustituya cada ADN por su contraparte (es decir, G para C, C para G, T para A y A para T):
TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT
AGTATTATGCAAAACATAAGCGGTCGCGAAGCCACA
Luego, recuerde que las bases de timina (t) se convierten en un uracilo (u). Por lo tanto, nuestra secuencia se convierte en:
AGUAUUAUGCAAAACAUAAGCGGUCGCGAAGCCACA
Usar el código genético es así
AGU AUU AUG CAA AAC AUA AGC GGU CGC GAA GCC ACA
Luego busque cada triplete (codón) en la tabla de código genético. Entonces Agu se convierte en serina, que podemos escribir como Ser, o simplemente S. auu se convierte en isoleucina (ile), que escribimos como I. Continuando de esta manera, obtenemos:
SIMQNISGREAT
Le daré la tabla de proteínas:
Entonces, ¿cómo puedo escribir ese código en Perl? Editaré mi pregunta y escribiré el código que hice.
Solución
Pruebe el script a continuación, acepta la entrada en stdin (o en el archivo dado como parámetro) y lea por línea. También supongo que "parar" en la imagen adjunta es un estado de parada. Espero haberlo leído todo bien de esa imagen.
#!/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"
}