使用Python检索缺少的序列-“split”命令不起作用

使用Python检索缺少的序列-“split”命令不起作用,python,split,biopython,Python,Split,Biopython,我有一组使用软件发现的proteInsequence,但它们的长度比数据库中的原始序列短。我下载了整个数据库,现在我有一组已发现的不完整序列,以及从中找到序列的原始数据库 来自软件的示例结果: >tr|E7EWP2|E7EWP2_HUMAN Uncharacterized protein OS=Homo sapiens GN=TRIO PE=4 SV=2 KEFIMAELIQTEKAYVRDLRECMDTYLWEMTSGVE 数据库中的顺序: >tr|E7EWP2|E7EWP2_

我有一组使用软件发现的proteInsequence,但它们的长度比数据库中的原始序列短。我下载了整个数据库,现在我有一组已发现的不完整序列,以及从中找到序列的原始数据库

来自软件的示例结果:

>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非常陌生,当然我会尝试编写自己的代码,我想知道是否有库或类似biopython模块的东西可以做到这一点。 我的计划是从我的结果中提取间隔,展开它们并在原始数据库中选择它,但我不知道如何进一步进行

我想得到list_seq=[ARR,KEFIMAELIQTEKAYVRDLRECMDTYLWEMTSGVE,EIP],这样我就可以进一步使用list_seq[0]r.strip3和list_seq[1]l.strip[3]来获得完整的序列。但列表顺序不起作用

提前感谢

您可以使用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文件

您可以使用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文件

很酷的故事,现在开始工作,当你有特定的编程问题时回来。Jochen想要传达的是,问题是为我编写此程序,而不是本网站的目的。如果您展示自己解决问题的努力,您将有很好的机会获得帮助。您可能希望查看。抱歉,我的问题不是要求某人编写代码,而是获取一些关于如何处理此问题的有用建议,抱歉,如果我的问题不是这样,我已相应地编辑了问题。请,试试abcdef.split'cd',你就会明白为什么你的代码部分没有按你想要的那样工作。如果你想从有用的建议中获利,而不是有人来编写代码,你应该从一些好的教程开始,网上有很多。很酷的故事,现在开始工作,当你有一个特定的编程问题时再回来。Jochen想要传达的是,这个问题就是为我写这个程序,这不是这个网站的目的。如果您展示自己解决问题的努力,您将有很好的机会获得帮助。您可能希望查看。抱歉,我的问题不是要求某人编写代码,而是获取一些关于如何处理此问题的有用建议,抱歉,如果我的问题不是这样,我已相应地编辑了问题。请,试试abcdef.split'cd',你就会明白为什么你的代码部分没有按你想要的那样工作。如果你想从有用的建议中获益,而不是有人来编写代码,你应该从一些好的教程开始,网络上有很多。我想从数据库中分离我的序列,即list_seq=rec_dbase.seq.splitrec_mine.seq,但我不知道为什么它不起作用?@hari,如果答案回答了您的第一个问题,请在询问新的、完全不同的问题之前选择答案。另一方面,如果您将问题文本回滚到其原始状态,并在其他帖子中询问新问题,则会更加清楚。我想从数据库中拆分我的序列,即list_seq=rec_dbase.seq.splitrec_mine.seq,但我不知道为什么它不起作用?@hari,如果答案回答了您的第一个问题,请在询问新的、完全不同的问题之前选择答案。另一方面,如果您将问题文本回滚到其原始状态,并在其他帖子中询问新问题,则会更加清楚。