Python bindings to generate Gosling schema.
Project description
gos 🦆
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]),
)
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | bff6510871897a152c24d267d3d92fdc4e231d716d16b6716f25f446c70b382b |
|
MD5 | 21c01cbd952a6c9eb7a27b6bdf4a4708 |
|
BLAKE2b-256 | cd08f7be29c9335a92cf26e873db426d2b1d37776d1e19f1bbe743afcbb16221 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc7b85928ca6571268237ed0e7e2cbc9d01d149f0533c10f19f82dd5c0892005 |
|
MD5 | 00d400f0be5aed5b3b82066774531eec |
|
BLAKE2b-256 | 591f5700bbffc3e029e858aeeb82fe079b87daa8b8a2f7e2884a68cb7c5468d9 |