【问题标题】:How to concatenate fasta files with identical names into one file with different headers?如何将具有相同名称的fasta文件连接到一个具有不同标题的文件中?
【发布时间】:2019-05-24 23:25:28
【问题描述】:

我的问题更多是关于如何重命名每个 fasta 序列的标题行,因为我知道如何将一堆 fasta 文件连接到一个文件中。问题是,在生成我的文件后,每个文件都有完全相同的标题(被分析的基因的名称)。所以我想做的只是组合序列,而不是保持相同的标题,我想使用文件名作为标题。

例如,我有两个 fasta 文件,第一个是:

Homo_sapien_XYZ_20102.fa

在这个文件里面的顺序是:

>gene_X
ACTGAGGCCAATGAA...

然后是第二个文件:

Homo_sapein_ABC_20102.fa

>gene_X
CCCTGAGTAGAT...

当我连接这些文件时,我最终会得到一个具有不同序列但标题相同的新文件(并且由于我用来生成这些单独序列的脚本的性质,我无法在此步骤之前更改标题名称)。

>gene_X
ACTGAGGCCAATGAA...
>gene_X
CCCTGAGTAGAT...

这将是有问题的,所以我希望使用文件名重写该标题,所以它最终是:

>Homo_sapien_XYZ_20102
ACTGAGGCCAATGAA...
>Homo_sapein_ABC_20102
CCCTGAGTAGAT...

有人知道怎么做吗?我用来创建一个序列文件的代码行很简单:

#!/bin/bash

for files in *_20102.fa
do
    cat ${files} >> geneA_consensus.fa
done

【问题讨论】:

    标签: bash fasta consensus


    【解决方案1】:

    awk 来救援!

    $ awk 'FNR==1{print FILENAME; next}1' *_20102.fa > geneA_consensus.fa
    

    不需要循环。

    【讨论】:

    • 没有用,它把所有东西都放在一行上,要么合并,要么被最后一个文件覆盖。
    • 如果来自 Windows,您的行尾可能是 \r\n。您可以通过在文件上运行 dos2unix 来修复它们。或者,添加-v RS='\r?\n' 选项。
    • 我在 windows 上使用 bash,用 nano 编写脚本,因为我之前总是遇到这些行尾问题。但我现在开始工作了:)
    【解决方案2】:

    这适用于我的测试集。

    for file in *.fasta
    do
       echo ">$file" >> out.fasta
       tail -n +2 $file >> out.fasta
       echo >> out.fasta
    done
    

    这个简单的版本包括文件扩展名。

    即使之前的 FASTA 文件没有以换行符结尾,最后一个回显也可确保下一个标头出现在自己的行中。

    【讨论】:

      猜你喜欢
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多