ДНК к РНК и получение белков с перлом
-
28-10-2019 - |
Вопрос
Я работаю над проектом (я должен реализовать его в 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
Я дам белковую таблицу:
Итак, как я могу написать этот код в 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"
}