如何使用awk基于ID文件提取fasta序列数据

时间:2019-10-28 12:34:40

标签: awk

我以前曾使用awk命令根据单独的标头ID文件提取fasta序列数据。但是,这些不适用于下面的特定示例。

输入Fasta序列文件(seq.fasta)

>106677020 product=phosphatidylinositol 3-kinase catalytic subunit type 3-like
tttaaaaaaaaaaaaaaaaaaaaaaaaaaaaatttgtatactcCCTTCAGTGGCTAAAACCTCAGCTACAGGCAGCGAATCAATGAACTGTAGAAAACCATGTTTAGTGCTAGTGGCAAGAACCCTATATGGTGTAAGTTTCAAGTCCAGGTTTTCACTACGCAATAATTTATCCATCAGAGTGATTATTTGGAGAATAAGTTGATCCTGCCTTAAATCATccccatttttgaaaattgctACATATTCTGTACCAGCTGTGGTTACAAATGTTAATCTTGCAGGCATTAATGCTGACTTGAAAAGTGTAGCTTTCTCAGGTATGATgccttttacatatatatttgaatcTAAAGGAAGCGGTAGTGGTTCGAAgtttgagaaattaattttaaatgtatcagTGTCTGCTAGCAATGCCTGAAGTctatccattttcttttttctattcccACTTTCTCTGGCAATAGTTTTCATCAATTTCACtaatttatcaacaaaattttgttgacgtttaataaaattttgacgaTTTTGCCATTCTGGTGGTCCATATTGTAAAGCTTGCAAAAACATCTTCATAACTTTAAGGTACATGCTGCGAGGTTTATTATCTTGCTTAGCTAAATCATGGTCTTCACATTCAGTTAGCAggtaccaataaaaataattggccAATGTACTGTTTTGACATGCCCTATGAATTAAGAAGGAAGCAAGGTCCATTGTTTTGGAATCTTCTACTGAACTCTCTGTTTTAATGTCAACTGATCCAGAAATactttcttcaataattttagtttgagACGATTTTTTGTAGGCTTCTGAAATATCCtcgaaattttcatatttcagagCTTGCACTAATTGTAAAAGATAAAGGAGTAAATCTTCATCTGGAGCCTTTTGTAGTCTGGTAACAGCGTACCTTCGAACTGATGGGTGGGTAAAATAAGGGCTTAATAACTGAAGGGCATCTTCTACTTCCATCGGTGACCACACATGTAACATATGTATCGCTTGTTTCACTTCACCACTTAGGCTCCAATTCACACATTTTAAGAACTTGGTCAAAGCTTTCTTCTGAGAGCTCAAATAAAATCTGAATTTCCACAGTAGATCTTGCTCTTCAGTAGTAAGTTGTTGCGTAGGAGGATAGGCTACTATCCGATTTAAAGTATCTCTAACTGTAGCATTAGGTTTTAAATCTTTATCTGATAATCCACTGCGCCAACTTCGAGCTAAATTATGATGTTTACTTTCCACTAAATTTTCTTGAAGTATTTCTGGGTCATGGACTGTTACAATATCAGGATGGGCATGGAATTGAAAAACTTCATCTCCATCTTGTTCAAACCAAACTATAGAATAGGGTGTCCCATTGACAGTAGCCTGAGGGAATTCAATCATTAGGtataaatattcagaaattcttttctctttatcatttattttctcaatttcacGGAAGGTCAACCTATCCAACCAATCAATGACAGGCATAAACCCATTTCTATGTTTCTTCGCCAATTTTGCAAGTCTTTGCATATTTTCATTACCTGTACCTGGAGTTTTTCCAGGCGTAGTACAATTTTCTGATCCATCAGCAACAACATCAGGCCACACTTTTAAATCCAACATACCTTGACGAAAAACATTATGCTTACCAAACAATGTAATTGAAGAACCTCCAACTGGTCTCATGGTAGATGGGCCAATACAATCATAAATGGTGATTGCCAATATTGCATTACGTGGCAGGTCAGAATACATTATAGGTAGTGTTAACCACTCGCTCCATGTCCAGCGATTTGTAAAATTCTTGTAAGAAGTCAG
>106677021 product=putative transferase CAF17 homolog%2C mitochondrial
AAAGTGTAtacttaatagttaattttaaagtagTAGACAATTTAAGCTAATCGTGATTTACTTGACATTTCTTGATTATAGCTTAAGTTGctctattgtttataatataattggatgaaagtaattatgatataataatttggaagattctgttaatattttgattttaaattaaggatAATGTTGAGATACCCAGTTTCATGTACATTTTTAGGCTATATCAAAAGAAGTATTTTGCTCAGTTGCAGATACAACCACAGTAAAACCGATTTTCGTTTGGAAGAACTCAATCATCGAAAAATTGTAAGATTGTCTGGAGAAGAATCTTCTAACTTTTTGCAAGGTTTGGTCACTAATGATGTCAATAATATCTCTTCTTCAATGTACAccatgtttttaaacaataggGGGCGGATTTTATTTGACTCGATTATCTACCCTGCTAAAGAGAAAGATACCTTCCTGTTGGAGTGTGATTCTCAAGCTATGCACCAATTAATCAAACATCTAAATATGTATaagctcagaaaaaaaattgcaatctCTCTAGCTTCTGAATTGAATGTATGGTGTATTTACAATCCTAAGCTTGTTGATAATTCAAATGAGGCAAAAGTTTCTTCTACCGAGACATTTGATATGAATGctgttgataaaaatttaatgattacacCCGACCCTCGAACTAATTTGTTAGGTTACCGTATTATTGCCAAAGAAGGTGATGAAATACCTAATTTGCCTAAAAGTGATTTGTATACACTATGCCGATATAAATTAGGCATTGGTGAAGGCATTGACGAACTTCTCTTCGAACAAAGTTTTCCTCTTGAAATGAACTGTGATTACCTTAATGGTGTATCTTTTAACAAGGGATGTTACATTGGACAAGAACTGACTGCAAGATCATTTCATACTGGTGTAATTAGGAAACGGTTAATGCCTCTTATTTTTGAGTCTGAGGCACTCGGTATTCCAATAAATACACCTATCGAAGATCCTAATATTACTAGAAAGTCACCCATCGGAAAAGTTAGGACTGTTAAAGGTGTGAATGGTATTGGGTTGATGCGTGTATCCGAAACAATAGAatctaaatctttaaaaataattaattttatggcaAGATCTTATATTCCAGGTTGGTGGCCTGAAGAAACTGTAGAGCAAAcatatgtcaaaataaaaaaataatttattgattatttgta
>106677022 product=uncharacterized LOC106677022
TACAGTTTAAATAGGAGGCAATCTAGTTCCAACGGTCGCAGTACCCCGCCTAGACAAACCCACACCGTTGCCAACATGAAATTCGCTATT
GTTTGCCTGTTGGCAGTCAGTGCAGTGAGCGCCTCTCGCTACAGGAGGTCCCTCGTCGGATGGCCGCTTGGTCTAGCTAGCCACGGAGCGGTCGCTGTAGGACTCTCCCATCCTGGAGCAGTGGCCGTTGGCCTGTCCCATCCAGGAGCAGTAGCCATTGGACCTTCCCACACCGGGTCTGTAGCTGTAGGACCATCACATACCGGATCCATTGCTGTCGGACCATCCCACACAGGATCGATCGCCGTTGGACCTTCCCATACTGGATCAATAGCTGTCGGACCATCCCATACCGGATCAGTAGCTATCGGACCATCTCACACCGGGGCTGTCGTCGCTCCAGGTGTGGTCTTAGCAGCTCCCGCCATTGCTGCACCCCTCATCGCTCCAGTGGCTCCAGCCCTTGCTTTTGGACCCCATGTTGGTCTCCTTGGACTTCATGGAATCCATGGTTAGCTGtctcaaattaattaacattaactaataaagtaaaattttatgacaAATATTCTGCCAAATCTGTTACGTTTGTCTTATGTACAAGtcttgtaaattttagtaaataaatataatcatgtaTCAGTACTACCCAATTATGACAAATACGCCAatataaacaatgta

输入ID文件(id.txt)

106677020
106677022

预期输出(output.fasta)

>106677020 product=phosphatidylinositol 3-kinase catalytic subunit type 3-like
tttaaaaaaaaaaaaaaaaaaaaaaaaaaaaatttgtatactcCCTTCAGTGGCTAAAACCTCAGCTACAGGCAGCGAATCAATGAACTGTAGAAAACCATGTTTAGTGCTAGTGGCAAGAACCCTATATGGTGTAAGTTTCAAGTCCAGGTTTTCACTACGCAATAATTTATCCATCAGAGTGATTATTTGGAGAATAAGTTGATCCTGCCTTAAATCATccccatttttgaaaattgctACATATTCTGTACCAGCTGTGGTTACAAATGTTAATCTTGCAGGCATTAATGCTGACTTGAAAAGTGTAGCTTTCTCAGGTATGATgccttttacatatatatttgaatcTAAAGGAAGCGGTAGTGGTTCGAAgtttgagaaattaattttaaatgtatcagTGTCTGCTAGCAATGCCTGAAGTctatccattttcttttttctattcccACTTTCTCTGGCAATAGTTTTCATCAATTTCACtaatttatcaacaaaattttgttgacgtttaataaaattttgacgaTTTTGCCATTCTGGTGGTCCATATTGTAAAGCTTGCAAAAACATCTTCATAACTTTAAGGTACATGCTGCGAGGTTTATTATCTTGCTTAGCTAAATCATGGTCTTCACATTCAGTTAGCAggtaccaataaaaataattggccAATGTACTGTTTTGACATGCCCTATGAATTAAGAAGGAAGCAAGGTCCATTGTTTTGGAATCTTCTACTGAACTCTCTGTTTTAATGTCAACTGATCCAGAAATactttcttcaataattttagtttgagACGATTTTTTGTAGGCTTCTGAAATATCCtcgaaattttcatatttcagagCTTGCACTAATTGTAAAAGATAAAGGAGTAAATCTTCATCTGGAGCCTTTTGTAGTCTGGTAACAGCGTACCTTCGAACTGATGGGTGGGTAAAATAAGGGCTTAATAACTGAAGGGCATCTTCTACTTCCATCGGTGACCACACATGTAACATATGTATCGCTTGTTTCACTTCACCACTTAGGCTCCAATTCACACATTTTAAGAACTTGGTCAAAGCTTTCTTCTGAGAGCTCAAATAAAATCTGAATTTCCACAGTAGATCTTGCTCTTCAGTAGTAAGTTGTTGCGTAGGAGGATAGGCTACTATCCGATTTAAAGTATCTCTAACTGTAGCATTAGGTTTTAAATCTTTATCTGATAATCCACTGCGCCAACTTCGAGCTAAATTATGATGTTTACTTTCCACTAAATTTTCTTGAAGTATTTCTGGGTCATGGACTGTTACAATATCAGGATGGGCATGGAATTGAAAAACTTCATCTCCATCTTGTTCAAACCAAACTATAGAATAGGGTGTCCCATTGACAGTAGCCTGAGGGAATTCAATCATTAGGtataaatattcagaaattcttttctctttatcatttattttctcaatttcacGGAAGGTCAACCTATCCAACCAATCAATGACAGGCATAAACCCATTTCTATGTTTCTTCGCCAATTTTGCAAGTCTTTGCATATTTTCATTACCTGTACCTGGAGTTTTTCCAGGCGTAGTACAATTTTCTGATCCATCAGCAACAACATCAGGCCACACTTTTAAATCCAACATACCTTGACGAAAAACATTATGCTTACCAAACAATGTAATTGAAGAACCTCCAACTGGTCTCATGGTAGATGGGCCAATACAATCATAAATGGTGATTGCCAATATTGCATTACGTGGCAGGTCAGAATACATTATAGGTAGTGTTAACCACTCGCTCCATGTCCAGCGATTTGTAAAATTCTTGTAAGAAGTCAG
>106677022 product=uncharacterized LOC106677022
TACAGTTTAAATAGGAGGCAATCTAGTTCCAACGGTCGCAGTACCCCGCCTAGACAAACCCACACCGTTGCCAACATGAAATTCGCTATT
GTTTGCCTGTTGGCAGTCAGTGCAGTGAGCGCCTCTCGCTACAGGAGGTCCCTCGTCGGATGGCCGCTTGGTCTAGCTAGCCACGGAGCGGTCGCTGTAGGACTCTCCCATCCTGGAGCAGTGGCCGTTGGCCTGTCCCATCCAGGAGCAGTAGCCATTGGACCTTCCCACACCGGGTCTGTAGCTGTAGGACCATCACATACCGGATCCATTGCTGTCGGACCATCCCACACAGGATCGATCGCCGTTGGACCTTCCCATACTGGATCAATAGCTGTCGGACCATCCCATACCGGATCAGTAGCTATCGGACCATCTCACACCGGGGCTGTCGTCGCTCCAGGTGTGGTCTTAGCAGCTCCCGCCATTGCTGCACCCCTCATCGCTCCAGTGGCTCCAGCCCTTGCTTTTGGACCCCATGTTGGTCTCCTTGGACTTCATGGAATCCATGGTTAGCTGtctcaaattaattaacattaactaataaagtaaaattttatgacaAATATTCTGCCAAATCTGTTACGTTTGTCTTATGTACAAGtcttgtaaattttagtaaataaatataatcatgtaTCAGTACTACCCAATTATGACAAATACGCCAatataaacaatgta

我尝试了以下所有awk命令,包括假定序列数据的命令,其中大多数来自其他试图做同样事情的帖子。过去,第一个命令一直对我有用,但是尚不清楚为什么在这种情况下不使用它。我得到的只是一个空的输出文件:

awk -F'>' 'NR==FNR{ids[$0]; next} NF>1{f=($2 in ids)} f' id.txt seq.fasta > output.fasta
awk 'NR==FNR{ids[$0];next} /^>/{f=($1 in ids)} f' id.txt seq.fasta > output.fasta
awk -F'>' 'NR==FNR{ids[$0];next} /^>/{f=($1 in ids)} f' id.txt seq.fasta > output.fasta

1 个答案:

答案 0 :(得分:1)

您接近了!您要做的是在读取第二个文件之前但在读取第一个文件之后将record separator RS设置为>

类似这样的东西:

awk 'NR==FNR{ids[$0]; next} ($1 in ids){ printf ">" $0 }' id.txt RS='>' seq.fasta

由于在分割记录时>被awk“吞噬”了,因此以后需要使用printf ">"显式打印它。另外,我不打印换行符,因为它们保留在缓冲区中。