我目前正在尝试解析以下文件类型(.fasta):
>SeqID=0001__GroupID=0001
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0002__GroupID=0001
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0003__GroupID=0002
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0004__GroupID=0003
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0005__GroupID=0003
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0006__GroupID=0004
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
按组ID提取序列。我有一个要按以下格式提取的ID文件:
GroupID=0002
GroupID=0003
我一直在使用以下命令:
$ grep -A 1 -f groupIDs_to_extract.txt sequences_file.fasta > output.txt
想法是在输入文本文件中使用每个ID执行grep,并包含以下上下文行以实际提取序列。因此,根据我的示例,输出将是来自第2组和第3组的所有序列:
>SeqID=0003__GroupID=0002
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0004__GroupID=0003
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0005__GroupID=0003
ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
但是,它只是在最后输出整个sequences_file.fasta,我不知道为什么。有人可以帮忙吗?
答案 0 :(得分:1)
原来我的文件实际格式如下:
>SeqID=0001__GroupID=0001 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0002__GroupID=0001 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0003__GroupID=0002 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
>SeqID=0004__GroupID=0003 ATGCATGCATGCATGCATGCATGCATGCATGCATGCATGCATGC
我没有注意到我的文本编辑器(gedit)包装了文本,因此它看起来像一个普通的.fasta文件。
我使用正则表达式查找+替换来添加换行符以正确格式化,现在grep按预期工作。
顺便说一下,我改变了命令的结尾:
$ grep -A 1 -f groupIDs_to_extract.txt sequences_file.fasta | grep -v "\--" > output.txt
如果你使用了context命令,它就删除了那个grep。