下記の形式のファイルがあります。 TAG、TAA、またはTGA(TAG / TAA / TGA)と一致する停止コドンを削除する必要があります。検索は3の倍数でなければなりません。 (3文字ごとに検索し、停止コドンが見つかった場合は破棄する必要があるように テゲ ccc 三塩化酢酸 赤ちゃん)。成功しなかったまま停止コドンを除去するために様々な形態を探してみました。時間をいただきありがとうございます。ありがとう
Enter.fa
3 1896
FOMPING00005383 atgccctcaagacagccggggatgcctccgctggcgcctgggcttcaattcagcccaaaggccagccacggtcagcccacgtcggaagcccatcttccagccattgggtccgccgccgtcgacgtctattcatttgtcacagaagatgcaatcgcgctggggccggcaagctccgtctcacccgaaaatattgtcatgacacaacctaccactatacatcatgactctgtgaaaggcgagaagtttaccgttgagcgagacagcgtcgacgcgctctccttcagctcgaaccagagcgttccccggcc------taagttacccttaccttggcaagtattgatagcggccttgacctgtttgtgtactttcggcaaccactggtcgaat---------------------accaccatcattaaagagacgcatatcaacaactcccaattcgccaccttg------------------
答え1
#!/usr/bin/env perl
use strict;
use warnings;
while ( my $line = <> ) {
chomp($line);
if ($line =~ /\d+\s+\d+/) {
printf("%s\n", $line);
next;
}
my ( $head, $seq ) = split( /\s+/, $line );
my $newseq;
while ( $seq =~ /(...)/g ) {
if ( $1 !~ /tag|taa|tga/ ) {
$newseq .= $1;
}
}
printf("%s %s\n", $head, $newseq);
}
実行してください:
$ ./script input.fa >output.fa
前提と制限:
- ファイルは、以下に説明するように「順次形式」です。http://evolution.Genetics.washington.edu/phylip/doc/sequence.html
- 順序にスペースはありません。
- 全配列長は3の倍数です(そうでなければ、最後の不完全コドンは出力から除外されます)。
- シーケンスは複数行に分割されません。
動作モード:
- 一行をお読みください。
- 2つの整数が含まれている場合は、「ヘッダ行」と仮定して出力します。
- 空白文字の行を
$head
(行の最初のビット)と$seq
(シーケンス)に分割します。 - 一度に3つの塩基配列を探索します。
- 現在、3つの塩基が停止コドンと一致すると新しい配列()に挿入されず
$newseq
、そうでなければ挿入されます。 - ラインのヘッダビットと新しいシーケンスを出力します。
- 次の行がある場合は続行してください。
見つかった停止コドンを視覚的に表示するには、ループを次に変更します。
while ( $seq =~ /(...)/g ) {
if ( $1 !~ /tag|taa|tga/ ) {
$newseq .= $1;
}
else {
$newseq .= "<STP>";
}
}