解析代码的输出并不完全相似。不确定是否同步解析 NCBI 核苷酸 xml

Output of parsing code is not all similar. not sure if parsing NCBI nucleotide xml synchronously

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,其中应该有一个基因名称。如何确保我的所有输出都是通用格式的?

尝试替换这行代码

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.