给定一个文件,其中包含多个长度不同的fasta格式的蛋白质序列,如何生成长度为i(i大于或等于5,但不超过每个蛋白质的长度)的fasta格式的蛋白质片段(子串)?
例如,蛋白质序列文件:
>NP_12345.1
ACDEFGH
>XP_543211.2
KLMNOP
...我想要输出fasta格式:
>NP_12345.1(1-5)
ACDEF
>NP_12345.1(1-6)
ACDEFG
>NP_12345.1(1-7)
ACDEFGH
>NP_12345.1(2-6)
CDEFG
>NP_12345.1(2-7)
CDEFGH
>NP_12345.1(3-7)
DEFGH
>XP_543211.2(1-5)
KLMNO
>XP_543211.2(1-6)
KLMNOP
>XP_543211.2(2-6)
LMNOP
...有人能帮帮我吗?提前谢谢。
注意:我可以使用
Seqkit sliding -s 1 -W 5 为了生成只有5个氨基酸的fasta格式的蛋白质片段或肽,但是如果是6个氨基酸的肽,我必须修改参数-W 6。还有其他的一站式解决方案吗?
发布于 2019-01-05 12:07:34
对于Perl,请尝试:
perl -e '
$/ = "\xd\xa"; # required if input.txt is created with DOS newline format
while (<>) {
chomp($name = $_);
chomp($seq = <>);
$len = length($seq);
for ($i = 0; $i <= $len - 5; $i++) {
for ($j = $i + 5; $j <= $len; $j++) {
printf("%s(%d-%d)\n", $name, $i+1, $j);
print substr($seq, $i, $j-$i), "\n";
}
}
}' input.txt这会产生:
>NP_12345.1(1-5)
ACDEF
>NP_12345.1(1-6)
ACDEFG
>NP_12345.1(1-7)
ACDEFGH
>NP_12345.1(2-6)
CDEFG
>NP_12345.1(2-7)
CDEFGH
>NP_12345.1(3-7)
DEFGH
>XP_543211.2(1-5)
KLMNO
>XP_543211.2(1-6)
KLMNOP
>XP_543211.2(2-6)
LMNOP希望这能有所帮助。
https://stackoverflow.com/questions/54048759
复制相似问题