使用Python检索丢失的序列 - 'split'命令不执行

2024-10-02 12:29:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组(蛋白质)序列,是用软件发现的,但它们的长度比数据库中原始序列的长度短。我下载了整个数据库,现在我有了这些已发现的不完整序列集和从中找到序列的原始数据库。

软件结果示例:

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

数据库中的序列:

^{pr2}$

所以缺失的残基是‘ARR’,最后是‘EIP’,我有大约70个这样的不完整序列?我想写一个Python程序,它可以自动从数据库中检索完整的序列。 我对python很陌生,当然我会尝试编写自己的代码,我想知道是否有库或类似biopython模块之类的东西可以做到这一点。 我的计划是从我的结果中提取时间间隔,展开它们并在原始数据库中选择它,但我不知道如何继续下去。

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

提前谢谢


Tags: 数据库示例软件序列蛋白质seqtrlist
1条回答
网友
1楼 · 发布于 2024-10-02 12:29:01

您可以使用biopythonseqio中的index方法。index方法按蛋白质id索引数据库记录,并且不在内存中加载完整的数据库,从而允许使用完整的大型数据库进行高效搜索(或者,您可以使用传统的dbase,如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文件

相关问题 更多 >

    热门问题