Вопрос

Я работаю над проектом (я должен реализовать его в Perl, но я не очень хорош в этом), который читает ДНК и находит ее РНК. Разделите эту РНК на триплеты, чтобы получить эквивалентное название белка. Я объясню шаги:

1) Транскрибируйте следующую ДНК в РНК, затем используйте генетический код, чтобы перевести его в последовательность аминокислот

Пример:

TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT

2) Чтобы транскрибировать ДНК, сначала заменить каждую ДНК на ее аналог (т.е. g для c, c для g, t для a и a for t):

TCATAATACGTTTTGTATTCGCCAGCGCTTCGGTGT
AGTATTATGCAAAACATAAGCGGTCGCGAAGCCACA

Затем помните, что теминовые (T) основания становятся урацилом (U). Следовательно, наша последовательность становится:

AGUAUUAUGCAAAACAUAAGCGGUCGCGAAGCCACA

Использовать генетический код такой

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

Затем посмотрите на каждую триплету (кодон) в таблице генетического кода. Таким образом, Agu становится серином, который мы можем написать как Ser, или просто S. auu становится изолецином (ILE), который мы пишем как я. Ведение таким образом, мы получаем:

SIMQNISGREAT

Я дам белковую таблицу:

enter image description here

Итак, как я могу написать этот код в Perl? Я отредактирую свой вопрос и напишу код, что я сделал.

Это было полезно?

Решение

Попробуйте сценарий ниже, он принимает ввод на stdin (или в файле, данном как параметр) и прочитайте его по строке. Я также предполагаю, что «остановка» в прикрепленном изображении является некоторое состояние остановки. Надеюсь, я все хорошо прочитал с этой картинки.

#!/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"
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top