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

news2024/9/23 19:18:22

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1932410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql-事务的隔离界别

一.事务的隔离级别 二.查看事务的隔离级别 SELECT TRANSASCTION ISOLATION 三.设置事务隔离级别 SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE] 四.总结 1.事务简介 事务是一组操作的集合…

车载以太网交换机入门基本功(2)— 初识VLAN

在《交换机入门基本功 -上》提到,交换机在物理层面划分通信区域并产生局域网(Local Area Network, LAN)。局域网具有一个特点:连线拓扑一旦确定,一定时间内不会发生通信区域的变动。在实际通信过程中,广播报…

MKS流量计软件MFC通讯驱动使用于C和P系列MFC控制USB接口W10系统

MKS流量计软件MFC通讯驱动使用于C和P系列MFC控制USB接口W10系统

国产精品ORM框架-SqlSugar详解 SqlSugar初识 附案例源码 云草桑 专题一

国产精品ORM框架-SqlSugar详解 1、SqlSugar初识 2、开始实操 3、增删改操作 4、进阶功能 5、集成整合 6、脚手架应用 sqlsugar 官网-CSDN博客 国产精品ORM框架-SqlSugar详解 SqlSugar初识 专题二-CSDN博客 1、SqlSugar初识 1.1 基本概念和历史 SqlSugar 是一款 老牌 …

论文复现丨物流中心选址问题:蜘蛛猴算法求解

路径优化系列文章: 1、路径优化历史文章2、物流中心选址问题论文复现丨改进蜘蛛猴算法求解 物流中心选址问题 一般物流中心选址问题是指:在有限的用户(即需求点)中找出一定数量的地点建立配送中心,实现从物流中心到用户之间的配送&#xf…

实验3.mbr读取硬盘

简介 实验:编写 mbr,读取0盘0道2扇区的内容写入内存,然后跳转执行写好的loader.s 代码 boot/mbr.s ; boot/mbr.s ; 功能:读取磁盘,加载loader到内存并跳转到loader%include "boot.inc" SECTION MBR vsta…

【Python 基础】方法

方法 方法和函数是一回事,只是它是调用在一个值上。例如,如果一个列表值存储在 spam 中,你可以在这个列表上调用 index()列表方法(稍后我会解释),就像spam.index(‘hello’)一样。方法部分跟在这个值后面,以一个句点分隔。 每种数据类型都有它自己的一组方法。例如,列…

Qt5.12.2安装教程

文章目录 文章介绍下载连接安装教程 文章介绍 安装Qt5.12.2 下载连接 点击官网下载 安装包下载完毕 安装教程 点开设置,添加临时储存库,复制连接“https://download.qt.io/online/qtsdkrepository/windows_x86/root/qt/” 点击测试&#xff0…

航空航天用电机控制器和车规级电机控制器有什么区别?

航空航天用电机控制器和车规级电机控制器有什么区别? 1.标准与认证要求2.工作环境与温度范围3.可靠性与容错性4.性能要求5.使用寿命与维护6.成本与批量生产 最近遇到这样一个问题,处在航空航天动力系统行业中,也会经常遇到类似的问题&#xf…

Spring框架(三)——AOP--基础部分

1、概括 将与核心业务无关的代码独立的抽取出来,形成一个独立的组件(抽取公共代码的过程),然后以横向交叉的方式应用到业务流程当中的过程被称为AOP优点 代码复用性强 代码易维护 使开发者更专注于业务逻辑 2、AOP的底层原理&…

探索APP开发中的主流版式设计与应用实践

在当今移动互联网高速发展的时代,APP已成为人们日常生活中不可或缺的一部分。无论是社交娱乐、购物支付还是工作学习,各类APP都以其独特的界面设计和用户体验赢得了用户的青睐。而APP开发的版式设计和页面规范,则是决定用户体验好坏的关键因素…

打卡第15天------二叉树

最近公司给我派活儿太多了,要干好多活儿,好多工作任务要处理,我都没时间刷题了。leetcode上的题目通过数量一直停留在原地不动,我真的很着急呀,我现在每天过的都有一种紧迫感,很着急,有一种与时间赛跑的感觉,真的时间过的太快了,没有任何人能够阻挡住时间的年轮向前推…

SongComposer:让大模型像人类一样具有音乐创作力

人工智能咨询培训老师叶梓 转载标明出处 大模型在翻译、复杂语言环境中的推理等任务中展现出了人类级别的能力。这引发了一个问题:这些模型能否在更具情感、抽象性以及需要专业技能的领域中,如音乐创作,展现出人类的创造力呢?香港…

IAR启动流程深度“起底”

目录 1. IAR启动流程概述 2.可以不用__iar_program_start吗 3.小结 大家好,今天的肌肉也不是很快乐。 今天聊聊IAR特有的一些启动流程以及在调试的时候遇到的一些问题。 1. IAR启动流程概述 ARM M内核芯片里的启动代码通常会提供Arm、gcc、iar等编译器的模板&…

OrangePi 学习摘录

文章目录 1. 参考2. 开发板 Orange-Pi-CM4 预览3. 烧录 Linux 镜像到 TF 卡中4. 制作桌面版镜像qemu/chroot 5. Armbian6. 编译 1. 参考 淘宝 香橙派官网 Orange-Pi-3B Orange-Pi-CM4 基于docker构建香橙派zero系统构建环境 2. 开发板 Orange-Pi-CM4 预览 3. 烧录 Linux 镜像…

[iOS]浅析isa指针

[iOS]浅析isa指针 文章目录 [iOS]浅析isa指针isa指针isa的结构isa的初始化注意事项 上一篇留的悬念不止分类的实现 还有isa指针到底是什么 它是怎么工作的 class方法又是怎么运作的 class_data_bits_t bits; // class_rw_t * plus custom rr/alloc flags 这里面的class又是何方…

【C++11】(lambda)

C11中的lambda与线程。 目录 Lambda:仿函数的缺点:Lambda语法:Lambda使用示例:两数相加:两数交换:解决Goods排序问题: Lambda原理: Lambda: 假设我们有一个商品类&…

controller-from表单1

mvc模式是spring boot 开发web应用程序主要使用模式,mvc分别代表model模型,view是视图 ,controller是控制器 controller是对接用户请求数据调用服务层代码,具体怎么操作 浏览器发送http请求给到dispatcherServlet(前…

echarts 实现水利计算模型-雨量,流量,时间分割线

需求背景解决效果ISQQW代码地址index.vue 需求背景 实现水利计算模型-雨量&#xff0c;流量&#xff0c;时间分割线 解决效果 ISQQW代码地址 链接 index.vue <!--/** * author: liuk * date: 2024/06/13 * describe: 水利计算模型图表 */--> <template><di…

快速创建一个AI应用

千帆官网&#xff1a;https://console.bce.baidu.com/qianfan/overview 完成的demo&#xff1a;https://dog-tired.github.io/spage_ai/ 这篇博客主要讲述使用千帆免费的大模型接口简单的html页面创建一个AI问答机器人 平台能力 选择使用千帆的speed系列模型&#xff0c;免费…