NCBI 的 taxonomy的names.dmp 如何批量查找 scientific name

# -*- coding: utf-8 -*-
"""
Created on Mon Jul  7 17:17:13 2021

@author: dujidan
"""

import sys


# taxid <=> name
def taxid2name(input_taxid_list):
    taxid_name_file = 'taxonomy/names.dmp'
    taxid_name_dict = {}
    name_taxid_dict = {}

    with open(taxid_name_file) as f_tn:
        tn_data_list = [i.split('\t') for i in f_tn.read().strip().split('\n')]
    for line_list in tn_data_list:
        taxid = line_list[0]
        name = line_list[2]
        unique_name = line_list[4]    
        name_class = line_list[6]        
        if name_class == 'scientific name':
            taxid_name_dict[taxid] = name
            # print(unique_name)
            if unique_name == '':
                name_taxid_dict[name] = taxid
            else:
                name_taxid_dict[unique_name] = taxid
    # print(len(taxid_name_dict.keys()), len(name_taxid_dict.keys()))
    
    # if type(input_taxid_list) is list:
    #     input_taxid_list = input_taxid_list
    # else:
    input_taxid_list = eval(str(input_taxid_list))
    for input_taxid in input_taxid_list:
        t_name = taxid_name_dict[str(input_taxid)]
        print(f'{input_taxid}\t{t_name}')


if __name__ == '__main__':
    if len(sys.argv) != 2:
        print(f'Error:\n   python3 {sys.argv[0]} \t [input_taxid_list]')
        sys.exit(1)
            
    input_taxid = sys.argv[1]  # ['2683680', '844', '582', '1773', '246273', '573', '492670', '562', '29575', '346', '310769', '28901', '2058152', '470', '913107', '487', '548', '244366', '1719']  # sys.argv[1]
    taxid2name(input_taxid)

相关事宜查看上一篇nodes.dmp 的文章,2者的应用对象是相互关的

https://blog.csdn.net/dujidan/article/details/118804763

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值