【问题标题】:Output of parsing code is not all similar. not sure if parsing NCBI nucleotide xml synchronously解析代码的输出并不完全相同。不确定是否同步解析 NCBI 核苷酸 xml
【发布时间】:2016-05-23 20:46:09
【问题描述】:
from Bio import Entrez
accessions = ['NM_001195662','NM_001289467','NM_008866']
list1 = []
for i in accessions:
    Entrez.email = "A.N.Other@example.com"
    handle = Entrez.efetch(db="nucleotide", id= i , rettype='gb', retmode='xml')
    record = Entrez.read(handle)
    #print record
    dict1= record[0]["GBSeq_feature-table"]
    dict2 = dict1[1]["GBFeature_quals"]
    insert = []
    insert.append(i)
    insert.append(dict2[0]['GBQualifier_value'])
    insert.append(dict2[2]['GBQualifier_value'])
    insert1 = tuple(insert)
    #print insert1
    list1.append(insert1)
print list1

输出:

[('NM_001195662', 'Rp1', 'retinitis pigmentosa 1 (human)'), ('NM_001289467', 'Sox17', 'GeneID:20671'), ('NM_008866', 'Lypla1', 'lysophospholipase 1')]

我正在尝试从给定来源获取登录号列表,将其放入列表中,并从中获取基因符号和基因名称,并将它们按基因登录、基因符号和基因名称的顺序附加到列表中.然而,当从 NCBI 核苷酸 xml 解析数据时,每个查询的输出都不相同;给我一个应该有基因名称的 GeneID。如何确保我的所有输出都是通用格式的?

【问题讨论】:

  • 答案解决了你的问题吗?
  • 确实如此。我很感激。很抱歉没有尽快回复。
  • 完全没问题。很高兴它起作用了:)

标签: xml parsing bioinformatics biopython


【解决方案1】:

尝试替换这行代码

insert.append(dict2[2]['GBQualifier_value'])

for j in range(len(dict2)):
    if dict2[j].get('GBQualifier_name') == 'note':
        insert.append(dict2[j]['GBQualifier_value'])

基因名称隐藏在标记为note 的部分中,通过遍历这些部分直到您注意到您应该始终获得正确的基因名称。


旁注: 如果你运行很多序列,尝试合并dict1dict2,你只需要dict1创建dict2

【讨论】:

    猜你喜欢
    • 2012-05-18
    • 2023-03-12
    • 1970-01-01
    • 2011-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多