生信软件27 - 基于python的基因注释数据查询/检索库mygene

1. mygene库简介

MyGene.info提供简单易用的REST Web服务来查询/检索基因注释数据,具有以下特点:

mygene技术文档: https://docs.mygene.info/en/latest/

多物种支持: 包括人、小鼠、大鼠、斑马鱼等多个模式生物;
多数据源聚合: 聚合了来自NCBI、Ensembl、UniProt等多个主流数据库的数据;
灵活的查询: 支持多种类型的基因标识符;
批量操作: 支持批量获取和注释,提高工作效率;
多语言支持: 除了Python,还有R和其他语言的支持;

2. mygene库安装

# pip安装
pip install mygene

3. 基因名称查询注释

import mygene
mg = mygene.MyGeneInfo()

# 返回数据格式为字典
gene_info = mg.query('BRCA1', species='human')

print(gene_info)
# {'took': 28, 'total': 62, 'max_score': 90.18249, 'hits': [{'_id': '672', '_score': 90.18249, 'entrezgene': '672', 'name': 'BRCA1 DNA repair associated', 'symbol': 'BRCA1', 'taxid': 9606}, {'_id': '8315', '_score': 59.70592, 'entrezgene': '8315', 'name': 'BRCA1 associated protein', 'symbol': 'BRAP', 'taxid': 9606}, {'_id': '111589215', '_score': 59.70592, 'entrezgene': '111589215', 'name': 'BRCA1 promoter region', 'symbol': 'LOC111589215', 'taxid': 9606}, {'_id': '110485084', '_score': 53.584255, 'entrezgene': '110485084', 'name': 'BRCA1 intronic recombination region', 'symbol': 'LOC110485084', 'taxid': 9606}, {'_id': '8314', '_score': 53.584255, 'entrezgene': '8314', 'name': 'BRCA1 associated protein 1', 'symbol': 'BAP1', 'taxid': 9606}, {'_id': '83990', '_score': 53.584255, 'entrezgene': '83990', 'name': 'BRCA1 interacting helicase 1', 'symbol': 'BRIP1', 'taxid': 9606}, {'_id': '10230', '_score': 48.601166, 'entrezgene': '10230', 'name': 'neighbor of BRCA1 lncRNA 2', 'symbol': 'NBR2', 'taxid': 9606}, {'_id': '111589216', '_score': 48.601166, 'entrezgene': '111589216', 'name': 'BRCA1 intron 2 regulatory region', 'symbol': 'LOC111589216', 'taxid': 9606}, {'_id': '221927', '_score': 48.601166, 'entrezgene': '221927', 'name': 'BRCA1 associated ATM activator 1', 'symbol': 'BRAT1', 'taxid': 9606}, {'_id': '580', '_score': 48.601166, 'entrezgene': '580', 'name': 'BRCA1 associated RING domain 1', 'symbol': 'BARD1', 'taxid': 9606}]}

3.1 基因名称查询注释结果写入文本

# 将结果写入文本
fwrite = open('gene_info.txt', 'w')
# 写入头标志符
write_header = True
list_header = []
for key, value in gene_info.items():
    # 如果value为列表
    if isinstance(value, list):
        for hits in value:     
            # 写入表头
            if write_header:
                for _key, _value in hits.items():
                    list_header.append(f"{_key}".replace('_', ''))
                fwrite.write('\t'.join(list_header) + '\n')
                write_header = False

            # 写入hits数据
            list_context = []
            for _key, _value in hits.items():
                list_context.append(f"{_value}".replace(' ', '_'))
            fwrite.write('\t'.join(list_context) + '\n')
    else:
        continue
    
fwrite.close()

文本结果如下:
文本结果

4. 基因ID查询

# 返回列表
query_result = mg.querymany(['10001', '10002', '10003'], 
				scopes='entrezgene', fields='ensembl.gene', species='human')

print(query_result)
# [{'query': '10001', '_id': '10001', '_score': 26.990025, 'ensembl': {'gene': 'ENSG00000133997'}}, {'query': '10002', '_id': '10002', '_score': 26.989716, 'ensembl': {'gene': 'ENSG00000278570'}}, {'query': '10003', '_id': '10003', '_score': 26.992018, 'ensembl': [{'gene': 'ENSG00000077616'}, {'gene': 'ENSG00000285516'}]}]

4.1 写入基因ID查询结果写入文本

# 将结果写入文本
fwrite = open('querymany_result.txt', 'w')
# 写入头标志符
write_header = True
list_header = []
for index, result in enumerate(query_result):
    if write_header:
        for _key, _value in result.items():
            list_header.append(f"{_key}".replace('_',''))
        fwrite.write('\t'.join(list_header) + '\n')
        write_header = False

    # 写入查询结果
    list_context = []
    for _key, _value in result.items():
        # 判断_value数据类型,对列表和字典单独处理
        if isinstance(_value, list):
            list_values = []
            for __value in _value:
                list_values.append(__value.get('gene', ''))
            list_context.append(";".join(list_values))
        elif isinstance(_value, dict):
            list_context.append(";".join(list(_value.values())))
        else:
            list_context.append(f"{_value}")
        
    fwrite.write('\t'.join(list_context) + '\n')
    
fwrite.close()

文本结果如下:

文本结果

生信软件文章推荐

生信软件1 - 测序下机文件比对结果可视化工具 visNano

生信软件2 - 下游比对数据的统计工具 picard

生信软件3 - mapping比对bam文件质量评估工具 qualimap

生信软件4 - 拷贝数变异CNV分析软件 WisecondorX

生信软件5 - RIdeogram包绘制染色体密度图

生信软件6 - bcftools查找指定区域的变异位点信息

生信软件7 - 多线程并行运行Linux效率工具Parallel

生信软件8 - bedtools进行窗口划分、窗口GC含量、窗口测序深度和窗口SNP统计

生信软件9 - 多公共数据库数据下载软件Kingfisher

生信软件10 - DNA/RNA/蛋白多序列比对图R包ggmsa

生信软件11 - 基于ACMG的CNV注释工具ClassifyCNV

生信软件12 - 基于Symbol和ENTREZID查询基因注释的R包(easyConvert )

生信软件13 - 基于sambamba 窗口reads计数和平均覆盖度统计

生信软件14 - bcftools提取和注释VCF文件关键信息

生信软件15 - 生信NGS数据分析强大的工具集ngs-bits

生信软件16 - 常规探针设计软件mrbait

生信软件17 - 基于fasta文件的捕获探针设计工具catch

生信软件18 - 基于docker部署Web版 Visual Studio Code

生信软件19 - vcftools高级用法技巧合辑

生信软件20 - seqkit+awk+sed+grep高级用法技巧合辑

生信软件21 - 多线程拆分NCBI-SRA文件工具pfastq-dump

生信软件22 - 测序数据5‘和3‘端reads修剪工具sickle

生信软件23 - Samtools和GATK去除PCR重复方法汇总

生信软件24 - 查询物种分类学信息和下载基因组TaxonKit和ncbi-genome-download

生信软件25 - 三代测序数据灵敏比对工具ngmlr

生信软件26 - BWA-MEM比对算法性能更好的bwa-mem2

更多内容请关注公众号【生信与基因组学】,定期更新生信算法和编程、基因组学、统计学、分子生物学、临床检测和深度学习等内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信与基因组学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值