Skip to main content

Python bindings to generate Gosling schema.

Project description

gos 🦆

License PyPI Python Version tests Binder Open In Colab

gos is a declarative (epi)genomics visualization library for Python. It is built on top of the Gosling JSON specification, providing an simplified interface for authoring interactive genomic visualizations.

Installation

Here be dragons 🐉

The API is under active development. Feedback is much appreciated and most welcomed.

pip install gosling

Documentation

See the Documentation Site for more information.

Example

import gosling as gos
from gosling.data import multivec

data = multivec(
    url="https://server.gosling-lang.org/api/v1/tileset_info/?d=cistrome-multivec",
    row="sample",
    column="position",
    value="peak",
    categories=["sample 1", "sample 2", "sample 3", "sample 4"],
    binSize=5,
)

base_track = gos.Track(data, width=800, height=100)

heatmap = base_track.mark_rect().encode(
    x=gos.Channel("start:G", axis="top"),
    xe="end:G",
    row=gos.Channel("sample:N", legend=True),
    color=gos.Channel("peak:Q", legend=True),
)

bars = base_track.mark_bar().encode(
    x=gos.Channel("position:G", axis="top"),
    y="peak:Q",
    row="sample:N",
    color=gos.Channel("sample:N", legend=True),
)

lines = base_track.mark_line().encode(
    x=gos.Channel("position:G", axis="top"),
    y="peak:Q",
    row="sample:N",
    color=gos.Channel("sample:N", legend=True),
)

gos.vertical(heatmap, bars, lines).properties(
    title="Visual Encoding",
    subtitle="Gosling provides diverse visual encoding methods",
    layout="linear",
    centerRadius=0.8,
    xDomain=gos.Domain(chromosome="1", interval=[1, 3000500]),
)
Gosling visualization

Example Gallery

We have started a gallery of community examples in gosling/examples/. If you are intereseted in contributing, please feel free to submit a PR! Checkout the existing JSON examples if you are looking for inspiration.

Development

pip install -e '.[dev]'

The schema bindings (gosling/schema/) and JS static assets (gosling/static/) are automatically generated using the following scripts. Please do not edit these files directly.

# generate gosling/schema/*
python tools/generate_schema_wrapper.py

# generate gosling/static/{widget.js,index.js} from src/{widget.ts,index.ts}
yarn install && yarn build:js

# Only run this if editing/using gos.GoslingWidget
jupyter nbextension install --py --symlink --overwrite --sys-prefix gosling
jupyter nbextension enable gosling --py --sys-prefix

Design & implemenation

gos is inspired by and borrows heavily from Altair both in project philosophy and implementation. The internal Python API is auto-generated from the Gosling specification using code adapted directly from Altair to generate Vega-Lite bindings. This design choice gaurentees that visualizations are type-checked in complete concordance with the Gosling specification, and that the Python API remains consitent with the evolving schema over time. Special thanks to Jake Vanderplas and others on schemapi.

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

gosling-0.0.4.tar.gz (12.4 MB view details)

Uploaded Source

Built Distribution

gosling-0.0.4-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

Details for the file gosling-0.0.4.tar.gz.

File metadata

  • Download URL: gosling-0.0.4.tar.gz
  • Upload date:
  • Size: 12.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for gosling-0.0.4.tar.gz
Algorithm Hash digest
SHA256 bff6510871897a152c24d267d3d92fdc4e231d716d16b6716f25f446c70b382b
MD5 21c01cbd952a6c9eb7a27b6bdf4a4708
BLAKE2b-256 cd08f7be29c9335a92cf26e873db426d2b1d37776d1e19f1bbe743afcbb16221

See more details on using hashes here.

Provenance

File details

Details for the file gosling-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: gosling-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

File hashes

Hashes for gosling-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cc7b85928ca6571268237ed0e7e2cbc9d01d149f0533c10f19f82dd5c0892005
MD5 00d400f0be5aed5b3b82066774531eec
BLAKE2b-256 591f5700bbffc3e029e858aeeb82fe079b87daa8b8a2f7e2884a68cb7c5468d9

See more details on using hashes here.

Provenance

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