Domanda

Sto lavorando a un progetto (devo implementarlo in Perl ma non sono bravo a farlo) che legge il DNA e trova il suo RNA. Dividi che l'RNA è in terzine per ottenere il nome di proteina equivalente di esso. Spiegherò i passaggi:

1) Trascrivi il seguente DNA all'RNA, quindi usa il codice genetico per tradurlo in una sequenza di aminoacidi

Esempio:

TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT

2) Per trascrivere il DNA, sostituire prima ogni DNA per la sua controparte (cioè, g per c, c per g, t per a e a per t):

TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT
AGTATTATGCAAAACATAAGCGGTCGCGAAGCCACA

Successivamente, ricorda che le basi di timina (t) diventano un uracile (u). Quindi la nostra sequenza diventa:

AGUAUUAUGCAAAACAUAAGCGGUCGCGAAGCCACA

L'uso del codice genetico è così

AGU AUU AUG CAA AAC AUA AGC GGU CGC GAA GCC ACA

Quindi guarda ogni tripletta (codone) nella tabella del codice genetico. Quindi Agu diventa serina, che possiamo scrivere come ser, o semplicemente S. auu diventa isoleucina (Ile), che scriviamo come I. Continua in questo modo, otteniamo:

SIMQNISGREAT

Darò la tabella delle proteine:

enter image description here

Allora come posso scrivere quel codice in Perl? Modificherò la mia domanda e scriverò il codice che ho fatto.

È stato utile?

Soluzione

Prova lo script di seguito, accetta l'input su stdin (o nel file indicato come parametro) e leggilo per riga. Presumo anche che "Stop" nell'immagine allegata sia uno stato di stop. Spero di aver letto tutto bene da quella foto.

#!/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"
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top