https://github.com/Wy2160640/cruzdb

UCSC基因组数据库是注释,调节和变异以及越来越多的分类群的各种数据的重要资源。 该库旨在简化数据的利用,以便我们可以进行复杂的分析,而无需采用易于操作,容易出错的操作。 作为动机,以下是一些功能的示例:

>>> from cruzdb import Genome

>>> g = Genome(db="hg18")

>>> muc5b = g.refGene.filter_by(name2="MUC5B").first()
>>> muc5b
refGene(chr11:MUC5B:1200870-1239982) >>> muc5b.strand
'+' # the first 4 introns
>>> muc5b.introns[:4]
[(1200999L, 1203486L), (1203543L, 1204010L), (1204082L, 1204420L), (1204682L, 1204836L)] # the first 4 exons.
>>> muc5b.exons[:4]
[(1200870L, 1200999L), (1203486L, 1203543L), (1204010L, 1204082L), (1204420L, 1204682L)] # note that some of these are not coding because they are < cdsStart
>>> muc5b.cdsStart
1200929L # the extent of the 5' utr.
>>> muc5b.utr5
(1200870L, 1200929L) # we can get the (first 4) actual CDS's with:
>>> muc5b.cds[:4]
[(1200929L, 1200999L), (1203486L, 1203543L), (1204010L, 1204082L), (1204420L, 1204682L)] # the cds sequence from the UCSC DAS server as a list with one entry per cds
>>> muc5b.cds_sequence #doctest: +ELLIPSIS
['atgggtgccccgagcgcgtgccggacgctggtgttggctctggcggccatgctcgtggtgccgcaggcag', ...] >>> transcript = g.knownGene.filter_by(name="uc001aaa.2").first()
>>> transcript.is_coding
False # convert a genome coordinate to a local coordinate.
>>> transcript.localize(transcript.txStart)
0L # or localize to the CDNA position.
>>> print transcript.localize(transcript.cdsStart, cdna=True)
None

命令行调用

python -m cruzdb hg18 input.bed refGene cpgIslandExt

使用版本hg18中的refGene和cpgIslandExt表注释间隔。

数据框

......是这样的。我们可以从桌子上得到一个:

>>> df = g.dataframe('cpgIslandExt')
>>> df.columns #doctest: +ELLIPSIS
Index([chrom, chromStart, chromEnd, name, length, cpgNum, gcNum, perCpg, perGc, obsExp], dtype=object)

通过将'refGene'更改为'knownGene',可以使用knownGene注释重复上述所有操作。 而且,它可以很容易地完成一组基因。

空间的

可以使用k近邻,上游和下游搜索。 上行和下游搜索使用查询功能的链来确定方向:

>>> nearest = g.knearest("refGene", "chr1", 9444, 9555, k=6)
>>> up_list = g.upstream("refGene", "chr1", 9444, 9555, k=6)
>>> down_list = g.downstream("refGene", "chr1", 9444, 9555, k=6)

镜像

以上使用UCSC的mysql接口。 现在可以通过以下方式将任何表从UCSC镜像到本地sqlite数据库:

>>> import os
>>> if os.path.exists("/tmp/u.db"): os.unlink('/tmp/u.db') >>> g = Genome('hg18') >>> gs = g.mirror(['chromInfo'], 'sqlite:////tmp/u.db')

然后用作:

>>> gs.chromInfo
<class 'cruzdb.sqlsoup.chromInfo'>

代码

大多数每行功能都在Feature类的cruzdb/models.py中实现。 如果要向功能添加内容(如现有feature.utr5),请在此处添加。
这些表使用sqlalchemy反映并映射到cruzdb/__ init__.py中Genome类的__getattr__方法中,所以像这样调用:

genome.knownGene

调用__getattr__方法,将表arg设置为'knownGene',然后反映该表,并返回父类为Feature和sqlalchemy的declarative_base的对象。

贡献

要开始编码,获取一些UCSC表的副本可能很有礼貌,以免使UCSC服务器过载。 你可以运行类似的东西:

Genome('hg18').mirror(["refGene", "cpgIslandExt", "chromInfo", "knownGene", "kgXref"], "sqlite:////tmp/hg18.db")

然后连接将是这样的:

g = Genome("sqlite:////tmp/hg18.db")

UCSC数据库数据调用cruzdb的更多相关文章

  1. 如何完成dedecms外部数据库调用|跨数据库数据调用

    第1步:打开网站include\taglib文件夹中找到sql.lib.php文件,并直接复制一些此文件出来,并把复制出来的这个文件重命名为mysql.lib.php. 注:mysql.lib.php ...

  2. 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

    效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   ...

  3. 关于JPA封装数据库数据到实体不调用属性的get和set的方法解决办法

    今天发现JPA封装数据库数据到实体并不调用属性的get和set的,郁闷,本来想在set方法做改字段的值处理的谁知道遇到这个情况: @Column(name = acode) @Access(value ...

  4. 在使用ajax实现三级联动调用数据库数据并通过调出的数据进行二级表单查询

    在使用ajax实现三级联动查询数据库数据后再使用ajax无刷新方式使用三级联动调出的数据进行二级查询 但是现在遇到问题,在二级查询的时候期望是将数据以表格的形式展示在三级联动的下方,但是现在在查询后会 ...

  5. 读取数据库数据,并将数据整合成3D饼图在jsp中显示

    首先我将生成饼图的方法独立写成一个PieChar.java类,详细代码如下:(数据库需要自己建,如有需要的话) import java.io.IOException; import java.sql. ...

  6. jxl读数据库数据生成xls 并下载

    1.所需jar jxl-2.6.10.jar jxls-core-1.0-RC-3.jar jxls-reader-1.0-RC-3.jar 2. excel修改行宽度封装 SheetColumn.j ...

  7. atitit.数据验证--db数据库数据验证约束

    atitit.数据验证--db数据库数据验证约束 1. 为了加强账户数据金额的安全性,需要增加验证字段..1 2. 创建帐户1 3. 更改账户2 4. ---code3 5. --fini4 1. 为 ...

  8. ECMall的MySQL数据调用的简单方法

    很多ecmall开发者会问,怎么使用Ecmall的mysql类库进行数据调用.从原理上来讲Ecmall的数据调用是以数据模块+模块类库的方式进行mysql数据调用的,所有数据模块都存储在include ...

  9. .net c#将数据库数据对象转换为实体值对象

    using System; using System.Data; namespace Sunlib { public static class DataHelper { //将数据库数据对象转换为实体 ...

随机推荐

  1. Effective java -- 9 并发/序列化

    关于同步的问题,想弄明白java,同步不会是不行的.这不书弄完后还会从<java并发编程实战>和<java并发编程的艺术>选一本或者都看. 第六十六条:同步访问共享的可变数据说 ...

  2. Linux 中 bashrc 中的 rc 是什么意思

    刚刚配置 .bashrc 文件时,突然想,这里面的 rc 是什么意思? 使用了这么长时间,这个都不知道,这是醉了.Google 之,还真有不少人探究过,哈哈. 这个 ubuntu 中文论坛里,有人回答 ...

  3. nginx expires缓存提升网站负载

    语法: expires [time|epoch|max|off]默认值: expires off作用域: http, server, location使用本指令可以控制HTTP应答中的“Expires ...

  4. Spring Cloud之搭建动态Zuul网关路由转发

    传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器.这时候我们结合上节课内容整合SpringCloud Config分布式配置中心,实现动态路由规则. 将yml的内容粘贴到码云 ...

  5. Spring Cloud之整合ZK作为注册中心

    Eureka已经闭源了,用zk可以替代之 Eureka 作为注册中心 Dubbo也是zk作为注册中心的 Zookeeper简介 Zookeeper是一个分布式协调工具,可以实现服务注册与发现.注册中心 ...

  6. 大话设计模式--抽象工厂模式 Abstract Factory -- C++实现实例

    1. 抽象工厂模式: 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定他们具体的类. 下面是工厂方法模式: 下面是抽象工厂模式: 和工厂方法模式相比 抽象工厂模式可以有多个Product抽象, ...

  7. jQuery与javascript库

    [jquery-javascript库] 为了简化javascript的开发,诞生了javascript程序库,他封装了很多预定的对象和实用函数.下面是几种流行的javascript程序库:proto ...

  8. 原生js监听input值改变事件

    哈哈哈,又来了,今天闲来无事,实验了下原生js监听input value值改变事件,下面就来说道说道: 本来写监听input值便获是用jquery的,之前的随笔写了,就是这个方法,地址:http:// ...

  9. zepto不支持animate({scrollTop:"100px"})的解决办法

    在移动web项目的开发中,遇到一个通过点击页面自动到相应的楼层处的需求,最初的想法就是使用html的target属性进行切换,但实际效果十分死板,显得毫无交互性.该前端架构采用zepto这个轻库进行开 ...

  10. hdu-5650 so easy(水题)

    题目链接: so easy Time Limit: 2000/1000 MS (Java/Others)   Memory Limit: 65536/65536 K (Java/Others)Tota ...