我正在从事一个项目,我在nano
中编写的以下代码存在问题:
from Bio import SeqIO
import sys
import re
fasta_file = (sys.argv[1])
for myfile in SeqIO.parse(fasta_file, "fasta"):
if len(myfile) > 250:
gene_id = myfile.id
list = re.match('H149xcV\_\w+\_\w+\_\w+', gene_id)
print (">"+list.group(1))
这是我在command-line
上执行命令时收到的错误:
File "mpo.py", line 7, in <module>
gene_id = myfile.id
NameError: name 'myfile' is not defined
我有一个格式为的fasta文件
>H149xcV_Fge342_r3_h2_d1 len=210 path=[0:0-206]
ACTATACATGAGGAGAACATAGAACAAAAATGGGACCATAGATATATAACAATAGAAGATATAGAGAACACAATAGACAACTTATTAGGAAAGAGGTGTGTCGTCATGGAGCTGATGTTCGAGGATACTTTGCATGGTCATTCTTGGATAATTTTGAGTGGGCTATGGGATACACCAAGAGGTTTGGCATTGTTTATGTTGATTATAAGAACGGGC
>H149xcV_ytR1oP_r3_h2_d1 len=306 path=[0:0-207]
ATTAGAGTCTGAGAGAGTCTTGATTTGTCGTCGTCGAGAAATATAGGAGATCTGATTAGAGGAGAGAGCGGCCTAGGCGATGCGCGATATAGCGCTATATAGGCCTAGAGGAGAGTCTCTCTCTTTTAGAAGAGATAATATATATATATATATGGCTCTCCGGCGGGGCCGCGCGAGAGCTCGATCGATCGATATTAGCTGTACGATGCTAGCTAGCTTATATTCGATCGATTATAGCTTAGATCTCTCTCTAAAGGTCGATATCGCTTATGCGCGCGTATATCG
我想重新格式化我的文件,这样它只提供给我唯一的基因id,并且只输出那些长度大于250 bp的基因id
我希望所需的输出如下所示:
>H149xcV_Fge342_r3_h2
>H149xcV_ytR1oP_r3_h2
>H149xcV_DPN78333_r3_h2
>H149xcV_AgV472_r3_h2
>H149xcV_DNP733_r3_h2
正如问题后面的注释中所建议的,要匹配的参数应该是字符串。我要补充的一点是,python3有一个r“”字符串分隔符用于正则表达式。您的代码如下所示:
下划线不是一个特殊的正则表达式字符(我记得),所以不需要转义
match()
函数接受一个正则表达式和您正在搜索的字符串(因此我添加了gene_id)。最后,您希望输出group(0)
。第(0)组表示整场比赛。组(1)来自第一个捕获参数(您没有),因此请使用组(0)使用} 实用程序,并通过所选脚本语言中的一行程序将输出(一个带有序列ID和长度的表)通过管道传输。这里,为了简单起见,我使用Perl:
EMBOSS
包中的^{安装
EMBOSS
,例如,使用conda
:相关问题 更多 >
编程相关推荐