Привет сообществу stackoverflow,
В настоящее время я изучаю модуль биоинформатики как часть биомедицинской степени (я в основном новичок в Python), и в рамках задания по программированию на Python требуется следующая задача:
извлечение мотивных последовательностей (аминокислотных последовательностей, то есть, в основном, строк в программном языке), которые были вырезаны из алгоритмов, реализующих множественное выравнивание последовательностей и впоследствии итеративное сканирование базы данных для генерации лучших консервативных последовательностей. Конечная идея заключается в том, чтобы вывести функциональную значимость из таких "мотивов").
Эти мотивы хранятся в общедоступной базе данных в файлах, которые имеют несколько полей данных, соответствующих каждому белку (идентификатор uniprot, номер доступа, само выравнивание, хранящееся в файле гиперссылки .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, как предложено Саймоном Кокеллом ниже, вывод сценария просто «отсутствует». "в оболочке python, тогда как он должен создавать список, такой как [AAYIGIEVLI, AAYIGIEVLI, AAYIGIEVLI и т. д.] *
Кто-нибудь знает, где логическая ошибка? Любой вклад приветствуется!
Я прошу прощения за обширный текст, я просто надеюсь быть ясным, насколько это возможно. Заранее благодарю за любую помощь!