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:

entrer image description ici

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.

Était-ce utile?

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"
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top