将文件名添加到循环内的多个fasta文件的fasta标头中

时间:2017-08-22 09:00:42

标签: bash awk bioinformatics fasta sequencing

我有10个fasta文件(每个文件包含10个样本中每个样本的20个基因序列)。我想创建20个文件,特定于10个样本的每个基因。我按照以下步骤提取了标题中带有file_name的基因:

pyfasta extract --header --fasta test.fasta gene_name1 | awk '/^>/ {$0=$0 "_file1"}1' > gene_name1.fasta

我成功地为每个样本(循环中的一部分)创建了每个基因的多个基因fasta文件:

pyfasta extract --header --fasta $sample.fasta gene_name1 >> gene_name1.fasta 
pyfasta extract --header --fasta $sample.fasta gene_name2 >> gene_name2.fasta

但是,我无法将file_name添加到循环中的文件头中(但可以为开头提到的1个文件执行)。

总的来说,我的目标是从所有fasta文件(多线程)中提取具有相似基因名称的基因,并制作基因特异性fasta文件,其中包含基因名称和文件名的更新标题(以便我知道从哪个文件那个基因来了)+将基因序列附加到该基因名称的文件中。以下是示例输入和输出文件:

Input files:
#file1.fasta

>gene1
ATGC..............................max upto 120 characters per line
TTTG..............................................................
>gene2
ATGA
>gene3
ATGTTT

#file2.fasta

>gene1
ATGG
>gene2
ATGC
>gene3
ATGTT

Expected output files:

#gene1.fasta
>gene1_file1
ATGC...........................................................
TTTG...........................................................
>gene1_file2
ATGG

#gene2.fasta
>gene2_file1
ATGA
>gene2_file2
ATGC

请指导。 感谢。

1 个答案:

答案 0 :(得分:1)

您的问题不明确,但听起来您只需要:

... | awk -v fname="$sample" '/^>/ {$0=$0 "_" fname}1'