前话:使用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+位置查询基因名列表相关推荐

  1. python怎么查找代码位置查询_Python查询IP地址归属完整代码

    本文实例为大家分享了Python查询IP地址归属的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python # -*- coding: utf-8 -*- #查找IP地址归属地 ...

  2. python怎么查找代码位置查询_邮编查地址示例代码

    #!/usr/bin/python # encoding:utf-8 import urllib2, json, urllib # 1.邮编查地址 data = {} data["appke ...

  3. python的默认安装位置查询

    一般你默认安装的话,python的安装路径是在如下的路径 C:\Users\[你的用户名]\AppData\Local\Programs\Python 如图:

  4. python在线读-python初级实战-----主机在线情况监控web

    背景 公司有600多台服务器,打算写一个小程序,能一眼看见哪些服务器不在线. 大体思路是: 1.把所有服务器ip存进数据库,ping命令判断服务器是否在线 2.更新数据库中ip的状态 3.简单的web ...

  5. 【python MySQL 笔记】MySQL 查询

    [python MySQL 笔记]MySQL 查询 目录 1.数据准备和基本查询 1.1. 数据准备 1.2.基本查询 2. 条件查询 2.1. 比较运算符 2.2. 逻辑运算符 2.3. 模糊查询 ...

  6. (Python) 牛客 在线编程 python入门

    文章目录 前言 AC代码 01 输入输出 NP1 Hello World! NP2 多行输出 NP3 读入字符串 NP4 读入整数数字 NP5 格式化输出(一) NP6 牛牛的小数输出 02 类型转换 ...

  7. python个人健康自助记录查询系统 毕业设计源码152015

    Python个人健康自助记录查询系统 摘 要 目前随着人们对健康认识的不断深入,健康观念也正在由有病治病向无病预防的方向改变,人们开始更加注重生活的质量,追求更健康,更长寿.因此,开发一个面向个人和家 ...

  8. (附源码)python个人健康自助记录查询系统 毕业设计 152015

    Python个人健康自助记录查询系统 摘 要 目前随着人们对健康认识的不断深入,健康观念也正在由有病治病向无病预防的方向改变,人们开始更加注重生活的质量,追求更健康,更长寿.因此,开发一个面向个人和家 ...

  9. (毕业设计)python个人健康自助记录查询系统 152015

    Python个人健康自助记录查询系统 摘 要 目前随着人们对健康认识的不断深入,健康观念也正在由有病治病向无病预防的方向改变,人们开始更加注重生活的质量,追求更健康,更长寿.因此,开发一个面向个人和家 ...

最新文章

  1. ShaderLab Syntax 基本语法
  2. 如何用python画数据图-用Python如何画出数据可视化图呢?本文详解
  3. JMetro版本5.3已发布
  4. LeetCode 2207. 字符串中最多数目的子字符串(前缀和)
  5. IDEA 设置自动导入包,以及手动导入包
  6. power bi报表服务器_如何将Power BI Report Server报表嵌入ASP.Net Web应用程序
  7. Android程序对不同手机屏幕分辨率自适应的总结
  8. Windows 修改注册表实现键位修改
  9. 苹果iPad mini 5蜂窝数据版上架:3896元起
  10. 自己搭建微信小程序服务器,微信小程序搭建自己的Https服务器
  11. 硬盘分区的类型:mbr分区和gpt分区的区别
  12. 简述四代计算机网络及特点,简述四代电子计算机及主要特点
  13. 迁移学习-域适应损失函数MMD-代码实现及验证
  14. 开发过程中移动端实现文件下载
  15. oracle取去年的最后一天,oracle本月、上月、去年同月第一天最后一天
  16. 开学“收心”指南来了
  17. 实时时间(24小时制)
  18. Ubuntu18.04  网卡配置
  19. 博文视点Web 2.0 大局观
  20. R 数据分析方法(梅长林)exercise1-4

热门文章

  1. HDU - 1753 - 大明A+B
  2. 初识cocos creator,做一款H5小游戏
  3. openVINO 安装出现 is not a symbolic link
  4. 一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!
  5. 《Beauty of Mathmatics - 数学之美》的简单总结与推荐
  6. 百望云获评“中国大数据独角兽” 数实相融 算启未来
  7. OPC UA协议网关常见问题
  8. C++ vector 内存释放
  9. 【无标题】LED电源 AP5160宽电压降压恒流 PCB方案
  10. python代码调试模式运行