问候 stackoverflow 社区,
我目前正在关注生物信息学模块作为生物医学学位的一部分(我基本上是 python 新手),并且作为 Python 编程任务的一部分需要以下任务:
提取基序序列(氨基酸序列,因此基本上是程序语言中的字符串,已从实现多序列比对和随后迭代数据库扫描以生成最佳保守序列的算法中切除。最终的想法是从这样的“图案”)。
这些基序存储在公共数据库中的文件中,这些文件具有对应于每个蛋白质的多个数据字段(uniprot ID、登录号、存储在超链接 .seq 文件中的比对本身),目前其中一个在此范围内感兴趣。数据字段称为“提取的主题集”。
我的问题是如何编写一个基本上解析“主题字符串”并将它们输出到文件的脚本。我现在已经对脚本进行了编码,使其如下所示(我还没有将结果写入文件):
import os, re, sys, string
printsdb = open('/users/spyros/folder1/python/PRINTSmotifs/prints41_1.kdat', 'r')
protname = None
final_motifs = []
for line in printsdb.readlines():
if line.startswith('gc;'):
protname = line.lstrip()
#string.lower(name) # convert to lowercase
break
def extract_final_motifs(protname):
"""Extracts the sequences of the 'final motifs sets' for a PRINTS entry.
Sequences are on lines starting 'fd;' A simple regex is used for retrieval"""
for line in printsdb.readlines():
if line.startswith('fd;'):
final_motifs = re.compile('^\s+([A-Z]+)\s+<')
final_motifs = final_motifs.match(line)
#print(final_motifs.groups()[0])
motif_dict = {protname : final_motifs}
break
return
motif_dict = extract_final_motifs('ADENOSINER')
print(motif_dict)
现在的问题是,虽然我的代码在原始数据库文件 (prints41_!.kdat) 上循环而不是使用 urllib 模块连接到公共数据库,正如下面 Simon Cockell 所建议的那样,脚本的输出在python shell,而它应该创建一个列表,例如 [AAYIGIEVLI, AAYIGIEVLI, AAYIGIEVLI, etc..]
有人知道逻辑错误在哪里吗?任何输入表示赞赏!我为冗长的文字道歉,我只是希望尽可能清楚。提前感谢您的帮助!