【发布时间】:2018-02-21 05:54:30
【问题描述】:
我想对我的 fasta 文件进行子集化,以检索属于给定群体的序列。以下是我的文件示例。
>CLocus_12706_Sample_44_Locus_36326_Allele_0 [JoJo_s113.fq; groupI, 125578, +]
TGCAGCATGCTGGTGAACGCGTCATCATAAGCCTGTTGGCGAGCCAGCAGAAGGCGGCATGGGCAGCACTTAATAGGACGCACGTCCTCTGTGTCA
>CLocus_12706_Sample_46_Locus_34641_Allele_0 [JoJo_s115.fq; groupI, 125578, +]
>CLocus_12706_Sample_69_Locus_37751_Allele_0 [LakeCamp_s033.fq; groupI, 125578, +]
TGCAGCATGCTGGTGAACGCGTCATCATAAGCCTGTTGGCGAGCCAGCAGAAGGCGGCATGGGCAGCACTTAATAGGACGCACGTCCTCTGTGTCA
>CLocus_12706_Sample_70_Locus_33595_Allele_0 [LakeCamp_s034.fq; groupI, 125578, +]
TGCAGCATGCTGGTGAACGCGTCATCATAAGCCTGTTGGCGAGCCAGCAGAAGGCGGCATGGGCAGCACTTAATAGGACGCACGTCCTCTGTGTCA
>CLocus_72879_Sample_136_Locus_80036_Allele_0 [NaknekRiver_s148.fq; groupV, 11333693, -]
TGCAGAACGAGATGAGGACAAACACACTCACCACTCTGTGGACATGTAGACGGCTGGCCTGTCCTACCAAGGACAAATACTCCCACAACAGTCCAA
人口是 id 的一部分,例如“LakeCamp”或“JoJo”或“NaknekRiver”。
我试图按照这篇文章来弄清楚如何提取序列。 https://unix.stackexchange.com/questions/253499/extracting-subset-from-fasta-file
为此,我执行了以下操作,“JoJo”是这里选择的人口,我的输入文件是“fasta8c18subset.fa”。
awk -vrs=">" 'BEGIN{t["JoJo"]=1}{if($1 in t){printf ">%s",$0}}' fasta8c18subset.fa
我运行此程序时没有收到错误,但也没有输出。
作为输出,我想获得与该群体相关的整个标题和序列。因此,例如,如果我尝试提取“LakeCamp”样本,我希望输出文件包含以下内容
>CLocus_12706_Sample_69_Locus_37751_Allele_0 [LakeCamp_s033.fq; groupI, 125578, +]
TGCAGCATGCTGGTGAACGCGTCATCATAAGCCTGTTGGCGAGCCAGCAGAAGGCGGCATGGGCAGCACTTAATAGGACGCACGTCCTCTGTGTCA
>CLocus_12706_Sample_70_Locus_33595_Allele_0 [LakeCamp_s034.fq; groupI, 125578, +]
TGCAGCATGCTGGTGAACGCGTCATCATAAGCCTGTTGGCGAGCCAGCAGAAGGCGGCATGGGCAGCACTTAATAGGACGCACGTCCTCTGTGTCA
想法?
【问题讨论】:
-
你能在这里发布你想要的输出吗?对于上面有很多问题,比如 -vrs 应该是 -vRS 并且您正在 BEGIN 中创建一个数组,该数组将在读取 Input_file 之前执行,然后您尝试遍历该数组 t 中没有值所以它不会打印任何东西,请向我们展示所需的输出,以便我们在这里为您提供帮助。
-
非常感谢!我编辑了最初的问题,以在输出文件中包含我需要的内容。
标签: unix awk bioinformatics fasta