zoukankan      html  css  js  c++  java
  • 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")
    
  • 相关阅读:
    Codeforces Round #368 (Div. 2)D. Persistent Bookcase DFS
    POJ Sudoku 数独填数 DFS
    Memory
    UESTC 771 最大容积(前缀后缀和)
    【题解】P2916 [USACO08NOV]安慰奶牛Cheering up the Cow-C++
    Prim算法与Kruskal(没有代码)
    【题解】P1396 营救-C++
    【题解】Unit Fraction Partition-C++
    【题解】P2078 朋友-C++
    【题解】P1892 [BOI2003]团伙-C++
  • 原文地址:https://www.cnblogs.com/yahengwang/p/10195614.html
Copyright © 2011-2022 走看看