Skip to main content

Jupyter extension for embedding the genome visualation igv.js in a notebook

Project description

igv Jupyter Extension

Binder

igv-jupyter is an extension for Jupyter Notebook which wraps igv.js. With this extension you can render igv.js in a cell and call its API from the notebook. The extension exposes a python API that mimics the igv.js Browser creation and control APIs. Dictionaries are used for browser and track configuration objects. Track data can be loaded from local or remote URLs, or supplied directly as lists of objects.

Installation

Requirements:

  • python >= 3.6.4
  • jupyter >= 4.2.0
pip install igv

# To install to configuration in your home directory
jupyter serverextension enable --py igv
jupyter nbextension install --py igv
jupyter nbextension enable --py igv


# If using a virtual environment or conda (don't forget to activate
jupyter serverextension enable --py igv --sys-prefix
jupyter nbextension install --py igv --sys-prefix
jupyter nbextension enable --py igv --sys-prefix

Usage

Examples

Example notebooks are available in the github repository. To download without cloning the repository use this link. Notebooks are available in the "examples" directory.

Initialization

To insert an IGV instance into a cell:

(1) create an igv.Browser object,and (2) call showBrowser on the instance.

Example:

import igv

b = igv.Browser({"genome": "hg19"})

The igv.Browser initializer takes a configuration object which is converted to JSON and passed to the igv.js createBrowser function. The configuration object is described in the igv.js documentation.

To instantiate the client side IGV instance in a cell call show()

b.show()

Tracks

To load a track pass a track configuration object to load_track(). Track configuration objects are described in the igv.js documentation. The configuration object will be converted to JSON and passed to the igv.js browser instance.

Data for the track can be loaded by URL or passed directly as an array of JSON objects.

Remote URL

b.load_track(
    {
        "name": "Segmented CN",
        "url": "https://data.broadinstitute.org/igvdata/test/igv-web/segmented_data_080520.seg.gz",
        "format": "seg",
        "indexed": False
    })

Local File

Tracks can be loaded from local files using the Jupyter web server by prepending "files" to the path. The path is relative to the notebook file.

b.load_track(
    {
        "name": "Local VCF",
        "url": "files/data/example.vcf",
        "format": "vcf",
        "type": "variant",
        "indexed": False
    })

Embedded Features

Features can also be passed directly to tracks.

b.load_track({
    "name": "Copy number",
    "type": "seg",
    "displayMode": "EXPANDED",
    "height": 100,
    "isLog": True,
    "features": [
        {
            "chr": "chr20",
            "start": 1233820,
            "end": 1235000,
            "value": 0.8239,
            "sample": "TCGA-OR-A5J2-01"
        },
        {
            "chr": "chr20",
            "start": 1234500,
            "end": 1235180,
            "value": -0.8391,
            "sample": "TCGA-OR-A5J3-01"
        }
    ]
})

Navigation

Zoom in by a factor of 2

b.zoom_in()

Zoom out by a factor of 2

b.zoom_out()

Jump to a specific locus

b.search('chr1:3000-4000')

Jump to a specific gene. This uses the IGV search web service, which currently supports a limited number of genomes: hg38, hg19, and mm10. To configure a custom search service see the igv.js documentation

b.search('myc')

SVG output

Saving the current IGV view as an SVG image requires two calls.

b.get_svg()

b.display_svg()

Events

Note: This is an experimental feature.

def locuschange(data):
    b.locus = data

b.on("locuschange", locuschange)

b.zoom_in()

return b.locus

Development

To build and install from source:

python setup.py build
pip install -e .
jupyter nbextension install --py igv
jupyter nbextension enable --py igv

Creating a conda environment

conda create -n test python=3.7.1
conda activate test
conda install pip
conda install jupyter

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

igv-jupyter-0.9.7.tar.gz (422.9 kB view details)

Uploaded Source

Built Distributions

igv_jupyter-0.9.7-py3.7.egg (425.3 kB view details)

Uploaded Source

igv_jupyter-0.9.7-py3-none-any.whl (422.9 kB view details)

Uploaded Python 3

File details

Details for the file igv-jupyter-0.9.7.tar.gz.

File metadata

  • Download URL: igv-jupyter-0.9.7.tar.gz
  • Upload date:
  • Size: 422.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for igv-jupyter-0.9.7.tar.gz
Algorithm Hash digest
SHA256 0c22318b9686c0e975ed7d1bf806456983ba10f560a6f764fa27c4efd1d924ec
MD5 17e8476aa62106703a0996e973d380bc
BLAKE2b-256 c6a411e043b8c8b09c72009785995d1911e8a04c9879cdbce242b01f1af439c6

See more details on using hashes here.

File details

Details for the file igv_jupyter-0.9.7-py3.7.egg.

File metadata

  • Download URL: igv_jupyter-0.9.7-py3.7.egg
  • Upload date:
  • Size: 425.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for igv_jupyter-0.9.7-py3.7.egg
Algorithm Hash digest
SHA256 0f9cecd6a8c1d1f840842ec0425906922119bb48f56ed32374b1304a5eec2c85
MD5 2e6eaf6cb21291573043e1ad47767ca5
BLAKE2b-256 fbc08dacc3acf38db5c8644acea47697b5b27e7fd75c375528d143d783df4993

See more details on using hashes here.

File details

Details for the file igv_jupyter-0.9.7-py3-none-any.whl.

File metadata

  • Download URL: igv_jupyter-0.9.7-py3-none-any.whl
  • Upload date:
  • Size: 422.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.1

File hashes

Hashes for igv_jupyter-0.9.7-py3-none-any.whl
Algorithm Hash digest
SHA256 6d6a70ffee2c2d7ec7c317619349f211b02cbfe989c3539781c857f4361e71bb
MD5 d36e9adbc8568762b0cb4278eeb56f83
BLAKE2b-256 fc26cbbfa5adec59abf52392f417b238994a7f3978c2442f7b405a5b720c6beb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page