【问题标题】:How do I navigate results of a Biopython Entrez efetch?如何导航 Biopython Entrez efetch 的结果?
【发布时间】:2014-09-02 21:11:27
【问题描述】:

当我运行以下命令时;

from Bio.Blast import NCBIWWW
from Bio import Entrez, SeqIO
Entrez.email = "A.N.Other@example.com"
handle = Entrez.efetch(db="Protein", id= "75192198", rettype = "xml")
record = Entrez.read(handle)

我得到了一个很难搜索的“Bio.Entrez.Parser.DictionaryElement”。如果我想说获取氨基酸序列,我必须输入这样的内容;

record["Bioseq-set_seq-set"][0]["Seq-entry_seq"]["Bioseq"]["Bioseq_inst"]["Seq-inst"]["Seq-inst_seq-data"]["Seq-data"]["Seq-data_iupacaa"]["IUPACaa"]

我知道必须有一种更简单的方法来索引这些结果中的元素。如果有人能帮我解决这个问题,我将不胜感激。

【问题讨论】:

    标签: python python-2.7 biopython ncbi


    【解决方案1】:

    如果您想要的是序列,那么不要以“xml”格式查询它,而是通过更改rettype 参数以(例如)FASTA format 查询它。然后就像使用SeqIO 解析它一样简单。

    handle = Entrez.efetch(db="Protein", id= "75192198", rettype = "fasta")
    
    for r in SeqIO.parse(handle, "fasta"):
        print r.id, r.seq
    

    这是因为handle 的内容看起来像:

    print handle.read()
    # >gi|75192198|sp|Q9MAH8.1|TCP3_ARATH RecName: Full=Transcription factor TCP3
    # MAPDNDHFLDSPSPPLLEMRHHQSATENGGGCGEIVEVQGGHIVRSTGRKDRHSKVCTAKGPRDRRVRLS
    # APTAIQFYDVQDRLGFDRPSKAVDWLITKAKSAIDDLAQLPPWNPADTLRQHAAAAANAKPRKTKTLISP
    # PPPQPEETEHHRIGEEEDNESSFLPASMDSDSIADTIKSFFPVASTQQSYHHQPPSRGNTQNQDLLRLSL
    # QSFQNGPPFPNQTEPALFSGQSNNQLAFDSSTASWEQSHQSPEFGKIQRLVSWNNVGAAESAGSTGGFVF
    # ASPSSLHPVYSQSQLLSQRGPLQSINTPMIRAWFDPHHHHHHHQQSMTTDDLHHHHPYHIPPGIHQSAIP
    # GIAFASSGEFSGFRIPARFQGEQEEHGGDNKPSSASSDSRH
    

    如果您仍然需要一些其他元信息(例如基因内的转录因子结合位点,或生物体的分类),您还可以通过提供参数rettype="gb" 并解析为以 genbank 格式下载它"gb"。您可以在示例here 中了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-29
      • 2014-11-04
      • 1970-01-01
      • 2023-02-06
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多