大きな .txt ファイルがあり、その一部を以下に示します -
ID SNP
FT SNP 102
FT /note="refAllele: C SNPstrains: 4395_8_10=A 4395_8_7=A 4395_8_9=A "
FT /colour=1
FT SNP 1299
FT /note="refAllele: A SNPstrains: 6437_8_6=T (non-synonymous) (AA Gin->His) "
FT /colour=2
FT SNP 2134
FT /note="refAllele: C SNPstrains: 4395_8_12=T "
FT /colour=1
FT SNP 3205
FT /note="refAllele: C SNPstrains: 6437_8_12=T (synonymous) "
私もこのスクリプトを持っています(私は書いていません)-
$cod{1} = "Int";
$cod{2} = "non";
$cod{3} = "syn";
$cod{4} = "stop";
$file = "Whole.pl";
open IN, "$file";
open OUT, ">whole2";
print OUT "Coordinate Type Strains\n";
while (<IN>) {
if (m/^FT\s+SNP\s+(\d+)/) {
$SNP = $1;
}
elsif (m/^FT\s+\/note="(.*)"/) {
$line = $1;
$count = ($line =~ tr/=/=/);
}
elsif (m/^FT\s+\/colour=(\d+)/) {
if ($cod{$1}) {
print OUT "$SNP $cod{$1} $count\n";
}
elsif (!$cod{$1}) {
print OUT "$SNP colour $1 $count\n";
}
}
}
新しいファイルを作成します。上記のデータの場合、これを作成します-
Coordinate Type Strains
102 Int 3
1299 non 1
2134 Int 1
3205 syn 1
私はperlとプログラミング全般に非常に慣れていないため、このスクリプトが何をしているのかを理解できたと思います。ただし、同義ではない変異を示す菌株 (.txt ファイルの 2 番目の変異など) については、出力ファイルに 4 番目の列を追加して、アミノ酸の変化の詳細を示したいと思います (例: (AA Gin->His )、.txt ファイルの 6 行目の末尾)。また、理想的には、出力に非同義の突然変異を表示し、「syn」と「int」を完全に除外したいと考えています。
これを行うためにさまざまな方法を試しましたが、うまくいきませんでした。これを行う方法を教えてください。
よろしくお願いします。
マックス