Для файла, содержащего несколько последовательностей белка в формате fasta с разными длинами, как сгенерировать фрагменты белка (подстроки) в формате fasta с длиной я (i больше или равно 5, но не больше длины каждого белка, соответственно)?
Например, файл последовательностей белка:
>NP_12345.1
ACDEFGH
>XP_543211.2
KLMNOP
...
Я хочу, чтобы формат вывода:
>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
чтобы сгенерировать fast-формат фрагментов белка или пептидов только с 5 аминокислотами, но если пептиды из 6 аминокислот, я должен изменить параметр -W. 6. Есть ли другие универсальные решения?
С 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
Надеюсь это поможет.