использование Python для извлечения отсутствующих последовательностей - команда 'split' не работает - PullRequest
1 голос
/ 02 января 2012

У меня есть набор (белковых) последовательностей, которые были найдены с помощью программного обеспечения, но они короче по длине, чем исходные в базе данных. Я загрузил всю базу данных, и теперь у меня есть этот набор неполных последовательностейкоторые были найдены, и исходная база данных, из которой были найдены последовательности.

Пример результата от программного обеспечения:

>tr|E7EWP2|E7EWP2_HUMAN  Uncharacterized protein OS=Homo sapiens GN=TRIO PE=4 SV=2
KEFIMAELIQTEKAYVRDLRECMDTYLWEMTSGVE

Последовательность в базе данных:

>tr|E7EWP2|E7EWP2_HUMAN  Uncharacterized protein OS=Homo sapiens GN=TRIO PE=4 SV=2
ARRKEFIMAELIQTEKAYVRDLRECMDTYLWEMTSGVEEIP

Таким образом, отсутствующие остатки - «ARR», и, в конце концов, «EIP», у меня есть около 70 неполных последовательностей, как это?Я хотел бы написать программу на Python, которая может автоматически извлекать полные последовательности из базы данных.Я действительно новичок в Python, конечно, я постараюсь написать свой собственный код, я хотел бы знать, есть ли какие-либо библиотеки или что-то вроде модулей биопиона, которые могут сделать это.Мой план состоит в том, чтобы взять интервалы из моего результата, расширить их и выбрать его в исходной базе данных, но я не знаю, как действовать дальше.

Я хотел бы получить list_seq = [ARR,KEFIMAELIQTEKAYVRDLRECMDTYLWEMTSGVE,EIP], чтобы я мог дальшеиспользуйте list_seq[0] r.strip(3) и list_seq[1] l.strip[3], чтобы я получил полную последовательность.но list_seq не работает.

Заранее спасибо

1 Ответ

4 голосов
/ 02 января 2012

Вы можете использовать метод index из BioPython SeqIO.Метод index индексирует записи базы данных по белкам id и не загружает полную базу данных в память, что позволяет осуществлять эффективный поиск с использованием полных, больших баз данных (в качестве альтернативы вы можете использовать обычную базу данных типа sqlite для первого хранения ваших записей и выполнения поискана нем):

from Bio import SeqIO

db1 = "dbase.fasta"
db2 = "my_collection.fasta"

dbase_dict = SeqIO.index(db1, "fasta")
my_record_dict = SeqIO.index(db2, "fasta")

for record in my_record_dict:
    if record in dbase_dict:
        rec_dbase = dbase_dict[record]
        rec_mine = my_record_dict[record]
        if rec_dbase.seq != rec_mine.seq:
            print rec_dbase

Эта программа просто распечатывает записи с различиями.С этого момента вы можете сохранить их в списке или записать в файл fasta

...