SeqIO: "в дескрипторе не найдено записей"

Я только начинаю работать с Python и BioPython, и у меня нет большого опыта программирования. Я был бы благодарен за любую помощь, которую вы, ребята, могли бы оказать мне.

Я пытаюсь извлечь последовательности CDS и / или рРНК из genbank. Важно, что я получаю только открытую рамку для чтения, поэтому я не просто вытягиваю всю последовательность. Когда я запускаю приведенный ниже код, появляется сообщение об ошибке:

в дескрипторе не найдено записей

для строки кода, которая гласит: record = SeqIO.read(handle, "genbank"), Я не уверен, как исправить эту проблему. Я включил код, который я использую ниже.

Кроме того, если есть более простой способ сделать это или опубликовать код, я был бы признателен, если бы вы, ребята, дали мне знать.

Спасибо!

# search sequences by a combination of keywords
# need to find (number of) results to set 'retmax' value
handle = Entrez.esearch(db = searchdb, term = searchterm)
records = Entrez.read(handle)
handle.close()
# repeat search with appropriate 'retmax' value
all_handle = Entrez.esearch(db = searchdb, term = searchterm, retmax = records['Count'])
records = Entrez.read(all_handle)

print " "
print "Number of sequences found:", records['Count'] #printing to make sure that code is working thus far. 
print " "

locations = [] # store locations of target sequences
sequences = [] # store target sequences

for i in range(0,int(records['Count'])) :
    handle = Entrez.efetch(db = searchdb, id = records['IdList'][i], rettype = "gb", retmode = "xml") 
    record = SeqIO.read(handle, "genbank")
    for feature in record.features:
        if feature.type==searchfeaturetype: #searches features for proper feature type
            if searchgeneproduct in feature.qualifiers['product'][0]: #searches features for proper gene product
                if str(feature.qualifiers) not in locations: # no repeat location entries
                    locations.append(str(feature.location)) # appends location entry
                    sequences.append(feature.extract(record.seq)) # append sequence

1 ответ

Решение

Вы запрашиваете xml из генбанка, когда SeqIO.read ожидает, что формат будет форматом плоского файла genbank. Попробуйте изменить свой efetch линия к этому:

handle = Entrez.efetch(db = searchdb, id = records['IdList'][i], rettype = "gb", retmode = "txt") 
Другие вопросы по тегам