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:

enter image description here

Entonces, ¿cómo puedo escribir ese código en Perl? Editaré mi pregunta y escribiré el código que hice.

¿Fue útil?

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"
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top