Что мне нужно изменить для чтения из файла вместо чтения из STDIN? - PullRequest
2 голосов
/ 01 марта 2011

Эта программа написана для того, чтобы взять нуклеотидную последовательность и перевести ее в последовательность белка. Но программа должна взять все нуклеотидные последовательности из файла и перевести их в белковые последовательности. Файл, содержащий нуклеотидную последовательность, выглядит следующим образом:

TAGAGATAGATTAGATAG
CTGATAGATAGTAAGATGATAGTA
GATAGTAGATAGTAG

Программа принимает данные в одну строку. Программа должна прочитать файл, состоящий из нескольких строк последовательностей, например, Есть несколько последовательностей, и все последовательности начинаются с > в одном файле. Проблема в том, что программа принимает ввод в одну строку.

Вот программа:

%pro = (
    'ATT' => 'I',
    'ATC' => 'I',
    'ATA' => 'I',
    'CTT' => 'L',
    'CTC' => 'L',
    'CTA' => 'L',
    'CTG' => 'L',
    'TTA' => 'L',
    'TTG' => 'L',
    'GTT' => 'V',
    'GTC' => 'V',
    'GTA' => 'V',
    'GTG' => 'V',
    'TTT' => 'F',
    'TTC' => 'F',
    'ATG' => 'M',
    'TGT' => 'C',
    'TGC' => 'C',
    'GCT' => 'A',
    'GCC' => 'A',
    'GCA' => 'A',
    'GCG' => 'A',
    'GGT' => 'G',
    'GGC' => 'G',
    'GGA' => 'G',
    'GGG' => 'G',
    'CCT' => 'P',
    'CCC' => 'P',
    'CCA' => 'P',
    'CCG' => 'P',
    'ACT' => 'T',
    'ACC' => 'T',
    'ACA' => 'T',
    'ACG' => 'T',
    'TCT' => 'S',
    'TCC' => 'S',
    'TCA' => 'S',
    'TCG' => 'S',
    'AGT' => 'S',
    'AGC' => 'S',
    'TAT' => 'Y',
    'TAC' => 'Y',
    'TGG' => 'W',
    'CAA' => 'Q',
    'CAG' => 'Q',
    'AAT' => 'N',
    'AAC' => 'N',
    'CAT' => 'H',
    'CAC' => 'H',
    'GAA' => 'E',
    'GAG' => 'E',
    'GAT' => 'D',
    'GAC' => 'D',
    'AAA' => 'K',
    'AAG' => 'K',
    'CGT' => 'R',
    'CGC' => 'R',
    'CGA' => 'R',
    'CGG' => 'R',
    'AGA' => 'R',
    'AGG' => 'R',
    'TAA' => '*',
    'TAG' => '*',
    'TGA' => '*'
);

print "Enter the mRNA Sequence\n";
$seq = <>;
chomp($seq);
$p = '';
$ln = length($seq);
$j = $ln / 3;
for ($i = 0, $k = 0; $i < $ln, $k < $j; $k++) {
    $fra[$k] = substr($seq, $i, 3);
    $i = $i + 3;
}
for ($k = 0; $k < $j; $k++) {
    if (exists($pro{$fra[$k]})) {
        $p = $p . $pro{$fra[$k]};
    } else {
        $p = $p . x;
    }
}
print "$p";

1 Ответ

0 голосов
/ 01 марта 2011
open $fh, "r", "myFileName";
while ($seq = <fh>) {
    chomp($seq);
    $p = '';
    $ln = length($seq);
    $j = $ln / 3;
    for ($i = 0, $k = 0; $i < $ln, $k < $j; $k++) {
        $fra[$k] = substr($seq, $i, 3);
        $i = $i + 3;
    }
    for ($k = 0; $k < $j; $k++) {
        if (exists($pro{$fra[$k]})) {
            $p = $p . $pro{$fra[$k]};
        } else {
            $p = $p . x;
        }
    }
    print "$p";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...