我以前曾使用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
答案 0 :(得分:1)
您接近了!您要做的是在读取第二个文件之前但在读取第一个文件之后将record separator RS设置为>
。
类似这样的东西:
awk 'NR==FNR{ids[$0]; next} ($1 in ids){ printf ">" $0 }' id.txt RS='>' seq.fasta
由于在分割记录时>
被awk“吞噬”了,因此以后需要使用printf ">"
显式打印它。另外,我不打印换行符,因为它们保留在缓冲区中。