我是生物信息学的初学者,我正在尝试从多个fast-fasta文件创建子多个fasta文件 .
所以我有数百个包含fasta线的hundreads的fasta文件(带有 Headers 的序列) . 我想根据物种名称( Headers 中的指示)将这个fasta分成不同的新fasta文件 .
我有这样的文件:CL0073reads.fas
>>CL0073reads.fas_ang4836665r
TAGGCAGGCGTGGGGGTTTGT
>CL0073reads.fas_ang4864845r
CCTCTTCGGCCCTCA
>CL0073reads.fas_atl679495r
CAAGGACCGTTAGGGGC
>CL0073reads.fas_alb178305r
GCTGACGGCAACGTTAG
我想:CL0073reads_ang.fas
`>CL0073reads.fas_ang4836665r
TAGGCAGGCGTGGGGGTTTGT
>CL0073reads.fas_ang4864845r
CCTCTTCGGCCCTCA`
CL0073reads_atl.fas
`>CL0073reads.fas_atl679495r
CAAGGACCGTTAGGGGC`
CL0073reads_abl.fas
`>CL0073reads.fas_alb178305r
GCTGACGGCAACGTTAG`
我试图用脚本中的awk执行此操作,以便能够通过 for Fas in ${$(find *.fas)}; do awk script.awk<${Fas}
对我的多个文件执行此操作
我成功将我的序列转换为一行fasta .
我真的很感激帮助
2 回答
试试这个:
我为您的输出文件".out"添加了后缀,以便您可以将它们与".fas"输入文件分开 . 改变它以满足您的需求 . 您可以在
find
末尾使用+
而不是\;
来一次在多个文件上运行awk,以便在您使用GNU查找时加快速度,但如上所述,上述内容适用于任何POSIX工具 .以上使用FS(由-F设置)将以
>
开头的每一行拆分为相关部分,然后重新组合,然后形成该行的输出文件名以及下一行>
行之后的所有内容 . 然后它只是将每一行打印到当前输出文件名 .这是另一种看法,只使用“种类”作为文件名,因此应聚 Contract 一文件中的所有变体 .
如果文件按名称排序并检查以前的名称,您可以最小化文件打开/关闭操作,但这更简单...