我需要找出我的数据集中哪些蛋白质是该氨基酸基序:PoXGXXHyXHy。我使用的是biopython和python 2.7,但我不是完全的生物信息学家,因此遇到了麻烦。我该如何制作seq_record + 1之类的东西?我尝试在范围内使用,但在SeqIO.parse中不起作用。好吧,我现在陷入了混乱,请有人帮忙吗?我会非常感激。
from Bio import SeqIO
print('enter the path to your fasta file: ' )
user_input = raw_input()
for seq_record in SeqIO.parse(user_input, "fasta"):
aminoacids_count = len(seq_record)
seq_record_trimmed = seq_record[aminoacids_count//2:aminoacids_count + 1]
if 'R' or 'H' or 'K' or 'D' or 'E' or 'S' or 'T' or 'N' or 'Q' in seq_record_trimmed:
if 'R' or 'H' or 'K' or 'D' or 'E' or 'S' or 'T' or 'N' or 'Q' or 'C' or 'U' or 'G' or 'P' or 'A' or 'V' or 'I' or 'L' or 'M' or 'F' or 'Y' or 'W' in seq_record_trimmed:
if 'G' in seq_record_trimmed:
if 'R' or 'H' or 'K' or 'D' or 'E' or 'S' or 'T' or 'N' or 'Q' or 'C' or 'U' or 'G' or 'P' or 'A' or 'V' or 'I' or 'L' or 'M' or 'F' or 'Y' or 'W' in seq_record_trimmed:
if 'R' or 'H' or 'K' or 'D' or 'E' or 'S' or 'T' or 'N' or 'Q' or 'C' or 'U' or 'G' or 'P' or 'A' or 'V' or 'I' or 'L' or 'M' or 'F' or 'Y' or 'W' in seq_record_trimmed:
if 'A' or 'V' or 'I' or 'L' or 'M' or 'F' or 'W' or 'Y' in seq_record_trimmed:
if 'R' or 'H' or 'K' or 'D' or 'E' or 'S' or 'T' or 'N' or 'Q' or 'C' or 'U' or 'G' or 'P' or 'A' or 'V' or 'I' or 'L' or 'M' or 'F' or 'Y' or 'W' in seq_record_trimmed:
if 'A' or 'V' or 'I' or 'L' or 'M' or 'F' or 'W' or 'Y' in seq_record_trimmed:
print(seq_record.id)
continue
else:
break
else:
break
else:
break
else:
break
else:
break
else:
break
else:
break
else:
print(seq_record.id + 'No B_signal has been found')
答案 0 :(得分:0)
那是行不通的。您最好使用一些正则表达式。
from Bio import SeqIO
import re
print('enter the path to your fasta file: ' )
user_input = raw_input()
Po = '[RHKDESTNQ]'
Hy = '[AVILMFWY]'
X = '.'
motif_pattern = Po + X + 'G' + X + X + Hy + X + Hy
motif_regex = re.compile(motif_pattern)
for seq_record in SeqIO.parse(user_input, "fasta"):
aminoacids_count = len(seq_record)
seq_record_trimmed = seq_record[aminoacids_count//2:aminoacids_count + 1]
seq_str = str(seq_record_trimmed.seq)
if motif_regex.search(seq_str):
print(seq_record_trimmed.id)
str(seq_record_trimmed.seq)
将序列转换为普通字符串。在此之前,Seq 对象并不具有字符串的所有功能,例如正则表达式搜索。
regex本身就是一个全新的主题,与Python无关:可以在大多数编程语言中找到它。您可以在线找到有关它的说明。您可以在regex101.com上使用正则表达式。
下一步:'R' or 'H' in seq_record
将无法正常工作。无论seq_record可能是什么,它将始终返回True。您想要的是'R' in seq_record or 'H' in seq_record
,或者,如果您不想重复seq_record:any(p in seq_record for p in 'RH')
。
最后:您控制的流程(如果/其他/中断/继续)看起来很糟糕,并且没有按照您的意图进行。您应该阅读有关如何正确编写的更多信息。
祝你好运。