【问题标题】:Add filename to fasta headers of multiple fasta files inside loop将文件名添加到循环内多个 fasta 文件的 fasta 标头
【发布时间】:2017-08-22 09:00:42
【问题描述】:

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

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

请指导。 谢谢。

【问题讨论】:

标签: bash awk bioinformatics fasta sequencing


【解决方案1】:

您的问题不清楚,但听起来您只需要:

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

【讨论】:

    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2014-03-27
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多