首页 > 解决方案 > 将序列列表转换为多个文件的 fasta

问题描述

我有数千个文件,它们是序列名称的列表,后跟它们的序列,每行一个,如下所示:

L.abdalai.LJAMM.14363.SanMartindeLosAndes        CCCTAAGAATAATTTGTT
L.carlosgarini.LJAMM.14070.LagunadelMaule        CCCTAAGAAT-ATTTGTT
L.cf.silvai.DD.038.Sarco                         CCCTAAGAAT-ATTTGTT

我想将它们更改为 fasta 格式,所以看起来像:

>L.abdalai.LJAMM.14363.SanMartindeLosAndes       
CCCTAAGAATAATTTGTTCAGAAAAGATATTTAATTATAT
>L.carlosgarini.LJAMM.14070.LagunadelMaule
CCCTAAGAAT-ATTTGTTCAGAAAAGATATTTAATTATAT
>L.cf.silvai.DD.038.Sarco
CCCTAAGAAT-ATTTGTTCAGAAAAGATATTTAATTATAT

我在 Mac 上工作。
谢谢!

标签: awkbioinformaticsfasta

解决方案


我相信您简化了示例输入,因此与您的预期输出不同。
如果不是这样,并且我的解决方案不起作用,请在我的回答下发表评论让我知道。

因此,使用 awk,您可以这样做:

awk -v OFS="\n" '$1=">" $1' file
>L.abdalai.LJAMM.14363.SanMartindeLosAndes
CCCTAAGAATAATTTGTT
>L.carlosgarini.LJAMM.14070.LagunadelMaule
CCCTAAGAAT-ATTTGTT
>L.cf.silvai.DD.038.Sarco
CCCTAAGAAT-ATTTGTT

如果您想就地更改,请安装 GNU gawk,并使用gawk -i inplace ....
如果您希望行尾为Carriages,请添加/更改为-v ORS="\r" -v OFS="\r"

但是,您也可以,也许最好使用sed

sed -e 's/\([^[:space:]]*\)[[:space:]]*\([^[:space:]]*\)/>\1\n\2/' file

-i''像这样添加:sed -i'' -e ...就地更改文件。


推荐阅读