我有一个大的 .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 文件中的第二个突变),我希望在输出文件中有第四列详细说明氨基酸变化(例如(AA Gin->His ),.txt 文件中第六行的结尾)。此外,理想情况下,我希望在输出中显示非同义突变,而完全不使用“syn”和“int”。
我尝试了很多方法来做到这一点,但没有一个奏效。请问你能告诉我一种方法吗?
提前谢谢了。
最大限度