【问题标题】:How to slice multiple fasta sequences to substrings with the length in a range in fasta format?如何将多个fasta序列切片为fasta格式范围内长度的子字符串?
【发布时间】:2019-05-31 14:31:19
【问题描述】:

给定一个包含多个不同长度的fasta格式蛋白质序列的文件,如何分别生成一个fasta格式的蛋白质片段(子串)长度为i(i大于或等于5但不大于每个蛋白质的长度) ) ?

例如,蛋白质序列文件:

>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。还有其他一站式解决方案吗?

【问题讨论】:

    标签: python bash perl awk


    【解决方案1】:

    使用 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
    

    希望这会有所帮助。

    【讨论】:

    • 非常感谢!我运行你的代码 "perl -e 'while () {chomp($name = $_);chomp($seq = );$len = length($seq);for ($i = 0; $ i
    • 显然,(3-7)2345.1 DEFGH (3-8)2345.1 DEFGH
    • 重复,并且 (4-8)2345.1 EFGH 不是我想要的结果。还有一点就是结果的数据结构和我想要的不一样,比如>NP_12345.1(1-5) ACDEF。是否有任何错误或其他问题?非常感谢! @tshiono
    • 你的input.txt好像是用DOS换行格式创建的,也就是说,它在行尾包含\r\n。我已修改我的答案以接受该格式。你会再测试一次吗? BR。
    • 是的,你是对的,它现在可以完美运行了!你真是天才!!!感谢您的大力帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 2014-04-06
    • 2022-08-24
    相关资源
    最近更新 更多