加载中......

UCSC数据库数据调用cruzdb

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")
posted @ 2018-12-29 14:03  青蛙快飞  阅读(878)  评论(0编辑  收藏  举报