在线使用Python通过染色体id+位置查询基因名列表
前话:使用pyensembl可对hg38进行本地查询,但发现若查询其他的数据库比如hg19,得重新下载对应的数据文件。
查看文献发现,UCSC提供了一个丰富的mysql数据库供我们在线查询各种生物信息(其中就包括hg19和hg38).
UCSC提供的mysql连接字符串(需安装mysql客服端,其中-A=不预加载数据库)
mysql --user=genome --host=genome-mysql.soe.ucsc.edu -A -P 3306
在shell中执行该命令,进入到mysql命令端,先看下有多少数据库:
show databases;
| gorGor4 |
| gorGor5 |
| hetGla1 |
| hetGla2 |
| hg16 |
| hg17 |
| hg18 |
| hg19 |
| hg19Patch10 |
| hg19Patch13 |
| hg38 |
| hg38Patch11 |
238 rows in set (0.20 sec)
选中hg19数据库(大概11132个表┌(。Д。)┐),hg19的基因数据信息在表refGene中,看下表结构:
use hg19;
desc refGene;
MariaDB [hg19]> desc refGene;
+--------------+------------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+------------------------------------+------+-----+---------+-------+
| bin | smallint(5) unsigned | NO | | NULL | |
| name | varchar(255) | NO | MUL | NULL | |
| chrom | varchar(255) | NO | MUL | NULL | |
| strand | char(1) | NO | | NULL | |
| txStart | int(10) unsigned | NO | | NULL | |
| txEnd | int(10) unsigned | NO | | NULL | |
| cdsStart | int(10) unsigned | NO | | NULL | |
| cdsEnd | int(10) unsigned | NO | | NULL | |
| exonCount | int(10) unsigned | NO | | NULL | |
| exonStarts | longblob | NO | | NULL | |
| exonEnds | longblob | NO | | NULL | |
| score | int(11) | YES | | NULL | |
| name2 | varchar(255) | NO | MUL | NULL | |
| cdsStartStat | enum('none','unk','incmpl','cmpl') | NO | | NULL | |
| cdsEndStat | enum('none','unk','incmpl','cmpl') | NO | | NULL | |
| exonFrames | longblob | NO | | NULL | |
+--------------+------------------------------------+------+-----+---------+-------+
16 rows in set (0.20 sec)
若想查询第一号染色体&position=9922112~9985498的基因名,可使用下面的SQL语句(很简单,查询也非常快哈皮)
MariaDB [hg38]> select distinct name2 from refGene where chrom="chr1" and txStart>=9922112 and txEnd<=9985498;
+--------------+
| name2 |
+--------------+
| NMNAT1 |
| LZIC |
| LOC113391335 |
| MIR5697 |
+--------------+
4 rows in set (0.27 sec)
下面是笔者根据自己的需求写的一个python脚本,查询的速度还不算太慢
# -*- coding: utf-8 -*-
'''
@time: 2018/12/7 16:58
这里使用ucsc提供的mysql进行访问
@ author: javis
'''
import pymysql
# 创建db对象,数据库使用hg19
db = pymysql.connect(host='genome-mysql.cse.ucsc.edu', user='genome', password="", database='hg19')
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()def chrom_pos_to_gene(chr, start=None, end=None):"""根据染色体位置查询基因名称:param chr: 染色体编号,字符串类型,如'chr1','chr2'..:param start: 起始位置,必须指定:param end: 终止位置:return: 基因名称集合"""assert start is not None and cursor is not Nonelist_name = []# SQL 查询语句sql = 'select distinct name2 from refGene where chrom="%s" and txStart=%d' % (chr, start)# 若包含始末端if end: sql += ' and txEnd=%d' % end# 执行SQL语句cursor.execute(sql)# 获取所有记录列表results = cursor.fetchall()for row in results:name = row[0]list_name.append(name)return list_namedef get_chrom_info(line):'''获取一个染色体三元组(chr_id,start,end):line path: 待解析的以后记录:return: 染色体三元组'''arr = line.split(',')chr, start, end = arr[2], arr[4], arr[5]if not str.isdecimal(start):return None#可以正常转换start=int(start)end=int(end) if str.isdecimal(end) else Nonereturn (chr,start,end)def get_list_chrom_info(path):'''获取染色体三元组列表(chr_id,start,end):param path: 待解析文件路径:return: 染色体三元组列表'''list_chrinfo = []for line in open(path):info=get_chrom_info(line)if info:genes=chrom_pos_to_gene(*info)print(info,genes)return list_chrinfoif __name__ == '__main__':# path = 'd:/gene.csv'path = r'C:\Users\PJ.Javis\Desktop\GEO\GSE\data\HuGene-1_0-st-v1.na36.hg19.transcript.csv'get_list_chrom_info(path)# 关闭数据库连接db.close()
reference:
http://genome.ucsc.edu/goldenPath/help/mysql.html
https://www.biostars.org/p/47826/
在线使用Python通过染色体id+位置查询基因名列表相关推荐
- python怎么查找代码位置查询_Python查询IP地址归属完整代码
本文实例为大家分享了Python查询IP地址归属的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python # -*- coding: utf-8 -*- #查找IP地址归属地 ...
- python怎么查找代码位置查询_邮编查地址示例代码
#!/usr/bin/python # encoding:utf-8 import urllib2, json, urllib # 1.邮编查地址 data = {} data["appke ...
- python的默认安装位置查询
一般你默认安装的话,python的安装路径是在如下的路径 C:\Users\[你的用户名]\AppData\Local\Programs\Python 如图:
- python在线读-python初级实战-----主机在线情况监控web
背景 公司有600多台服务器,打算写一个小程序,能一眼看见哪些服务器不在线. 大体思路是: 1.把所有服务器ip存进数据库,ping命令判断服务器是否在线 2.更新数据库中ip的状态 3.简单的web ...
- 【python MySQL 笔记】MySQL 查询
[python MySQL 笔记]MySQL 查询 目录 1.数据准备和基本查询 1.1. 数据准备 1.2.基本查询 2. 条件查询 2.1. 比较运算符 2.2. 逻辑运算符 2.3. 模糊查询 ...
- (Python) 牛客 在线编程 python入门
文章目录 前言 AC代码 01 输入输出 NP1 Hello World! NP2 多行输出 NP3 读入字符串 NP4 读入整数数字 NP5 格式化输出(一) NP6 牛牛的小数输出 02 类型转换 ...
- python个人健康自助记录查询系统 毕业设计源码152015
Python个人健康自助记录查询系统 摘 要 目前随着人们对健康认识的不断深入,健康观念也正在由有病治病向无病预防的方向改变,人们开始更加注重生活的质量,追求更健康,更长寿.因此,开发一个面向个人和家 ...
- (附源码)python个人健康自助记录查询系统 毕业设计 152015
Python个人健康自助记录查询系统 摘 要 目前随着人们对健康认识的不断深入,健康观念也正在由有病治病向无病预防的方向改变,人们开始更加注重生活的质量,追求更健康,更长寿.因此,开发一个面向个人和家 ...
- (毕业设计)python个人健康自助记录查询系统 152015
Python个人健康自助记录查询系统 摘 要 目前随着人们对健康认识的不断深入,健康观念也正在由有病治病向无病预防的方向改变,人们开始更加注重生活的质量,追求更健康,更长寿.因此,开发一个面向个人和家 ...
最新文章
- ShaderLab Syntax 基本语法
- 如何用python画数据图-用Python如何画出数据可视化图呢?本文详解
- JMetro版本5.3已发布
- LeetCode 2207. 字符串中最多数目的子字符串(前缀和)
- IDEA 设置自动导入包,以及手动导入包
- power bi报表服务器_如何将Power BI Report Server报表嵌入ASP.Net Web应用程序
- Android程序对不同手机屏幕分辨率自适应的总结
- Windows 修改注册表实现键位修改
- 苹果iPad mini 5蜂窝数据版上架:3896元起
- 自己搭建微信小程序服务器,微信小程序搭建自己的Https服务器
- 硬盘分区的类型:mbr分区和gpt分区的区别
- 简述四代计算机网络及特点,简述四代电子计算机及主要特点
- 迁移学习-域适应损失函数MMD-代码实现及验证
- 开发过程中移动端实现文件下载
- oracle取去年的最后一天,oracle本月、上月、去年同月第一天最后一天
- 开学“收心”指南来了
- 实时时间(24小时制)
- Ubuntu18.04 网卡配置
- 博文视点Web 2.0 大局观
- R 数据分析方法(梅长林)exercise1-4