组合多个fasta序列

组合多个fasta序列

我有这个文件,其中有许多序列,最多 500 个序列,其中一些序列具有相同的名称,我想将复制合并到一个中

file 1

>1
aa
>2
cc
>3
tt
>4
atc
>2
tag
>1
gg

outfile 

>1
aagg
>2
cctag
>3
tt
>4
atc

答案1

这是一个 Awk 脚本:

#!/usr/bin/awk -f

/^>/    { header = $0 }
!/^>/   { sequence[header] = sequence[header] $0 }

END {
    for (head in sequence) {
        printf("%s\n%s\n", head, sequence[head])
    }
}

它将完整的 Fasta 文件解析到内存中,连接具有相同标头的所有序列数据。最后,它会输出数据。

请注意,这种方法是不好对于大型 Fasta 文件,并且肯定会在基因组大小的文件上完全崩溃(内存不足)。在这些情况下,为了找到更好的方法,可以考虑将解析的数据存储到最后连接的文件中。不过我还没有考虑过实现这一点。

运行脚本:

$ awk -f ./script.awk file.fa
>1
aagg
>2
cctag
>3
tt
>4
atc

相关内容