我的问题更多是关于如何为每个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
答案 0 :(得分:1)
这适用于我的测试仪。
for file in *.fasta
do
echo ">$file" >> out.fasta
tail -n +2 $file >> out.fasta
echo >> out.fasta
done
此简单版本包含文件扩展名。
即使上一个FASTA文件没有以换行结尾,最后一个回声也可以确保下一个标头出现在自己的行上。
答案 1 :(得分:0)
靠近代码,我将标题作为新标题回显,并在转储文件时省略标题:
#!/bin/bash
for file in *_20102.fa
do
echo ${file%%.*} >> geneA_consensus.fa
tail +2 $file >> geneA_consensus.fa
done
还请注意,我稍微更改了循环变量名称。
答案 2 :(得分:0)
awk
来营救!
$ awk 'FNR==1{print FILENAME; next}1' *_20102.fa > geneA_consensus.fa
不需要循环。