如何将具有相同名称的fasta文件连接到一个具有不同headers的文件中?
How to concatenate fasta files with identical names into one file with different headers?
我的问题更多是关于如何为每个 fasta 序列重命名 header 行,因为我知道如何将一堆 fasta 文件连接成一个文件。问题是,在生成我的文件后,每个文件都具有完全相同的 header(所分析基因的名称)。所以我想做的只是组合序列,而不是保持相同的 header,我想使用文件名作为 header.
例如,我有两个 fasta 文件,第一个是:
Homo_sapien_XYZ_20102.fa
在这个文件中,顺序是:
>gene_X
ACTGAGGCCAATGAA...
然后是第二个文件:
Homo_sapein_ABC_20102.fa
>gene_X
CCCTGAGTAGAT...
当我连接这些文件时,我最终得到一个具有不同序列但相同 headers 的新文件(并且由于我用来生成这些单独序列的脚本的性质,我无法更改 header 此步骤之前的名称)。
>gene_X
ACTGAGGCCAATGAA...
>gene_X
CCCTGAGTAGAT...
这会有问题,所以我希望使用文件名重写 header,所以它最终是:
>Homo_sapien_XYZ_20102
ACTGAGGCCAATGAA...
>Homo_sapein_ABC_20102
CCCTGAGTAGAT...
有人知道怎么做吗?我用来创建一个序列文件的代码行很简单:
#!/bin/bash
for files in *_20102.fa
do
cat ${files} >> geneA_consensus.fa
done
awk
救援!
$ awk 'FNR==1{print FILENAME; next}1' *_20102.fa > geneA_consensus.fa
不需要循环。
这适用于我的测试集。
for file in *.fasta
do
echo ">$file" >> out.fasta
tail -n +2 $file >> out.fasta
echo >> out.fasta
done
这个简单版本包括文件扩展名。
最后一个回显确保下一个 header 出现在它自己的行中,即使之前的 FASTA 文件没有以换行符结尾。
我的问题更多是关于如何为每个 fasta 序列重命名 header 行,因为我知道如何将一堆 fasta 文件连接成一个文件。问题是,在生成我的文件后,每个文件都具有完全相同的 header(所分析基因的名称)。所以我想做的只是组合序列,而不是保持相同的 header,我想使用文件名作为 header.
例如,我有两个 fasta 文件,第一个是:
Homo_sapien_XYZ_20102.fa
在这个文件中,顺序是:
>gene_X
ACTGAGGCCAATGAA...
然后是第二个文件:
Homo_sapein_ABC_20102.fa
>gene_X
CCCTGAGTAGAT...
当我连接这些文件时,我最终得到一个具有不同序列但相同 headers 的新文件(并且由于我用来生成这些单独序列的脚本的性质,我无法更改 header 此步骤之前的名称)。
>gene_X
ACTGAGGCCAATGAA...
>gene_X
CCCTGAGTAGAT...
这会有问题,所以我希望使用文件名重写 header,所以它最终是:
>Homo_sapien_XYZ_20102
ACTGAGGCCAATGAA...
>Homo_sapein_ABC_20102
CCCTGAGTAGAT...
有人知道怎么做吗?我用来创建一个序列文件的代码行很简单:
#!/bin/bash
for files in *_20102.fa
do
cat ${files} >> geneA_consensus.fa
done
awk
救援!
$ awk 'FNR==1{print FILENAME; next}1' *_20102.fa > geneA_consensus.fa
不需要循环。
这适用于我的测试集。
for file in *.fasta
do
echo ">$file" >> out.fasta
tail -n +2 $file >> out.fasta
echo >> out.fasta
done
这个简单版本包括文件扩展名。
最后一个回显确保下一个 header 出现在它自己的行中,即使之前的 FASTA 文件没有以换行符结尾。