Multiscale Sequence Plot#

import gosling as gos

data = gos.multivec(
    url="https://server.gosling-lang.org/api/v1/tileset_info/?d=sequence-multivec",
    row="base",
    column="position",
    value="count",
    categories=["A", "T", "G", "C"]
)

text = gos.Track(data).mark_text().encode(
    x="start:G",
    xe="end:G",
    size=gos.value(24),
    color=gos.value("white"),
    text="base:N",
).visibility_lt(
    measure="width", threshold="|xe-x|", transitionPadding=30, target="mark"
).visibility_lt(
    measure="zoomLevel", threshold=10, target="track"
).transform_filter_not("count", oneOf=[0])

bar = gos.Track(data).mark_bar().encode(
    x="position:G",
    y=gos.Y("count:Q", axis="none"),
    color=gos.Color("base:N", domain=["A", "T", "G", "C"], legend=True)
)

gos.overlay(bar, text).properties(
    title="Multi-Scale Sequence Plot",
    xDomain=gos.GenomicDomain(interval=[1000000, 1000010]),
    width=725,
    height=100
)