Contents Menu Expand Light mode Dark mode Auto light/dark, in light mode Auto light/dark, in dark mode Skip to content
gos
Logo
gos

Getting Started

  • Installation
  • Development Install

Gallery

  • Example Gallery
  • Basic marks
    • Hi-C Heatmap
    • Point Plot
    • Text Marks
    • Area Chart
    • Bar Chart
    • Line Chart
    • Brushing and Linking
  • Composite visualizations
    • Comparative Matrices
    • Gene Annotation
    • Ideograms
  • Interactive visualizations
    • Multiscale Lollipop Plot
    • Multiscale Sequence Plot
    • Overview + Details
  • Others
    • Circos
    • SARS-CoV-2
    • Single-cell Epigenomic Analysis

User Guide

  • API Reference
    • gosling.View
    • gosling.Track
    • gosling.Color
    • gosling.ColorValue
    • gosling.Opacity
    • gosling.OpacityValue
    • gosling.Row
    • gosling.RowValue
    • gosling.Size
    • gosling.SizeValue
    • gosling.Stroke
    • gosling.StrokeValue
    • gosling.StrokeWidth
    • gosling.StrokeWidthValue
    • gosling.Text
    • gosling.TextValue
    • gosling.Tooltip
    • gosling.X
    • gosling.X1
    • gosling.X1Value
    • gosling.X1e
    • gosling.X1eValue
    • gosling.XValue
    • gosling.Xe
    • gosling.XeValue
    • gosling.Y
    • gosling.Y1
    • gosling.Y1Value
    • gosling.Y1e
    • gosling.Y1eValue
    • gosling.YValue
    • gosling.Ye
    • gosling.YeValue
    • gosling.horizontal
    • gosling.overlay
    • gosling.parallel
    • gosling.serial
    • gosling.stack
    • gosling.value
    • gosling.vertical
    • gosling.Aggregate
    • gosling.Assembly
    • gosling.AxisPosition
    • gosling.BamData
    • gosling.BedData
    • gosling.BeddbData
    • gosling.BigWigData
    • gosling.BinAggregate
    • gosling.Channel
    • gosling.ChannelDeep
    • gosling.ChannelValue
    • gosling.ChromSizes
    • gosling.Color
    • gosling.CoverageTransform
    • gosling.CsvData
    • gosling.DataDeep
    • gosling.DataTransform
    • gosling.Datum
    • gosling.DisplaceTransform
    • gosling.Displacement
    • gosling.DisplacementType
    • gosling.DomainChr
    • gosling.DomainChrInterval
    • gosling.DomainInterval
    • gosling.DummyTrack
    • gosling.DummyTrackStyle
    • gosling.EventStyle
    • gosling.ExonSplitTransform
    • gosling.FieldType
    • gosling.FilterTransform
    • gosling.GenomicDomain
    • gosling.GenomicLengthTransform
    • gosling.GffData
    • gosling.GoslingSchema
    • gosling.GoslingSpec
    • gosling.IncludeFilter
    • gosling.JsonData
    • gosling.JsonParseTransform
    • gosling.Layout
    • gosling.LogBase
    • gosling.LogTransform
    • gosling.LogicalOperation
    • gosling.Mark
    • gosling.MatrixData
    • gosling.MouseEventsDeep
    • gosling.MultipleViews
    • gosling.MultivecData
    • gosling.OneOfFilter
    • gosling.Opacity
    • gosling.Orientation
    • gosling.OverlaidTrack
    • gosling.OverlaidTracks
    • gosling.PartialTrack
    • gosling.PredefinedColors
    • gosling.Range
    • gosling.RangeFilter
    • gosling.ResponsiveSize
    • gosling.Root
    • gosling.Row
    • gosling.SchemaBase
    • gosling.SelectivityCondition
    • gosling.SingleTrack
    • gosling.SingleView
    • gosling.Size
    • gosling.SizeVisibilityCondition
    • gosling.StrConcatTransform
    • gosling.StrReplaceTransform
    • gosling.Stroke
    • gosling.StrokeWidth
    • gosling.Style
    • gosling.SvTypeTransform
    • gosling.TemplateTrack
    • gosling.Text
    • gosling.Tooltip
    • gosling.Track
    • gosling.ValueExtent
    • gosling.VcfData
    • gosling.VectorData
    • gosling.VisibilityCondition
    • gosling.X
    • gosling.Y
    • gosling.ZoomLevelVisibilityCondition
    • gosling.ZoomLimits
  • Local Data
  • Exporting Visualizations
  • Themes
  • Custom Themes
Back to top
View this page

IdeogramsΒΆ

import gosling as gos

def ideogram_with_bars(chromosome: str, width: int):
    """
    Ideograms
    """
    data = gos.csv(
        url="https://raw.githubusercontent.com/sehilyi/gemini-datasets/master/data/UCSC.HG38.Human.CytoBandIdeogram.csv",
        chromosomeField="Chromosome",
        genomicFields=["chromStart", "chromEnd"],
    )

    arms = gos.Track(data).mark_rect().encode(
        color=gos.Color("Stain:N",
            domain=["gneg", "gpos25", "gpos50", "gpos75", "gpos100", "gvar"],
            range=["white", "#D9D9D9", "#979797", "#636363", "black", "#A0A0F2"],
        ),
        x=gos.X("chromStart:G", axis="none"),
        xe="chromEnd:G",
        stroke=gos.value("black"),
        strokeWidth=gos.value(0.5),
    ).transform_filter_not("Stain", oneOf=["acen"])

    arm_labels = arms.mark_text().encode(
        text="Name:N",
        color=gos.Color("Stain:N",
            domain=["gneg", "gpos25", "gpos50", "gpos75", "gpos100", "gvar"],
            range=["black", "#636363", "black", "#D9D9D9", "white", "black"],
        ),
        strokeWidth=gos.value(0)
    ).visibility_lt(
        target='mark',
        measure='width',
        threshold='|xe-x|',
        transitionPadding=10
    )

    centromere_base = gos.Track(data).encode(
        x=gos.X("chromStart:G"),
        xe="chromEnd:G",
        color=gos.value('red'),
    ).transform_filter(
        "Stain", oneOf=["acen"]
    )

    centromere_1 = centromere_base.mark_triangleLeft().transform_filter(
        "Name", include="p"
    )

    centromere_2 = centromere_base.mark_triangleRight().transform_filter(
        "Name", include="q"
    )

    ideogram = gos.overlay(arms, arm_labels, centromere_1, centromere_2).properties(width=width, height=20)

    """
    Stacked Bar Charts
    """
    mvdata = gos.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"],
        binSize=2,
    )

    bar = gos.Track(mvdata).mark_bar().encode(
        x="start:G",
        xe="end:G",
        y="peak:Q",
        color=gos.Color("sample:N"),
    ).properties(width=width, height=20)

    return gos.stack(bar, ideogram).properties(
        xDomain=gos.GenomicDomain(chromosome=chromosome),
        spacing=0
    )

"""
Composition
"""
gos.parallel(
    ideogram_with_bars("chr1", 1000),
    ideogram_with_bars("chr2", 970),
    ideogram_with_bars("chr3", 800),
    ideogram_with_bars("chr4", 770),
    ideogram_with_bars("chr5", 740)
).properties(
    static=True
)
Next
Multiscale Lollipop Plot
Previous
Gene Annotation
Copyright © 2021, Trevor Manz
Made with Sphinx and @pradyunsg's Furo