用于在Python中从公共数据库解析生物序列的脚本

问候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等..] 有没有人知道逻辑错误在哪里?任何输入赞赏!! 我为广泛的文本道歉,我只希望尽可能清楚。在此先感谢您的帮助!     
已邀请:
你正在做的第一件事几乎是正确的,但你必须将
"extracted motif sets"
lien2改为变量说
line
for
循环将做的是将文件逐行返回为
for
之后的变量
line
。现在问题是如何形成
lysozyme.seq
文件。听起来没有任何数据字段有任何间距。然后这意味着你可能会做
line.split(" ")
line.split("t")
t
meastab。拆分将执行它所说的每次看到一个
" "
"t"
时根据你在程序中写的内容分配字符串。 找到文件的Saning目录应该不是很难,这里可能有一些问题。 如果您发布数据或其中一个文件的一部分,以便我们可以查看它,我们可以帮助您解析它:)。     
您是否注意到您的功能没有返回值?这就是无的原因。     

要回复问题请先登录注册