from re import finditer # 导入正则表达式模块中的 finditer 方法
from urllib.request import urlopen # 导入 urllib.request 模块中的 urlopen 方法,用于打开 URL
uniport = "http://www.uniprot.org/uniprot/%s.fasta" # UniProt 数据库中蛋白质信息的 URL模板
# 打开包含蛋白质ID的文件
with open('rosalind_mprt.txt', 'r') as file:
# 逐行读取蛋白质ID
for protein in file:
protein = protein.strip() # 去除行末尾的换行符等空白字符
# 从UniProt数据库中获取蛋白质序列内容
f = urlopen(uniport % protein).read().decode('utf-8')
lines = f.splitlines() # 将蛋白质序列内容按行分割为列表
if len(lines) > 1: # 检查蛋白质序列是否包含多于一行的内容
f = ''.join(lines[1:]) # 合并除第一行外的所有行作为蛋白质序列内容
else:
print('Error: Protein sequence is too short for', protein) # 输出错误信息并跳过处理下一个蛋白质
continue
# 使用正则表达式查找磷酸化位点序列的位置
locs = [g.start() + 1 for g in finditer(r'(?=N[^P][ST][^P])', f)]
# 如果找到多个磷酸化位点序列,输出蛋白质ID和位置信息
if locs and len(locs) > 1:
print(protein)
print(' '.join(map(str, locs))) # 将位置信息转换为字符串并以空格分隔输出
rosalind Finding a Protein Motif
发布于 2024-03-11 8 次阅读
Comments NOTHING