From a666c1e9e235f41ee8e3e5514ad50e9a68a11ebe Mon Sep 17 00:00:00 2001 From: etowahadams Date: Fri, 27 Oct 2023 14:18:23 -0400 Subject: [PATCH] release v0.11.0 --- versioned_docs/version-0.11.0/FAQ.md | 56 + .../version-0.11.0/assets/gosling.schema.json | 9308 +++++++++++++++++ versioned_docs/version-0.11.0/composition.mdx | 214 + versioned_docs/version-0.11.0/data.mdx | 407 + .../version-0.11.0/genome-builds.md | 47 + .../version-0.11.0/getting-started.md | 25 + versioned_docs/version-0.11.0/js-api.md | 244 + versioned_docs/version-0.11.0/mark.mdx | 399 + versioned_docs/version-0.11.0/non-gos-vis.mdx | 42 + .../version-0.11.0/public-datasets.md | 80 + versioned_docs/version-0.11.0/reference.mdx | 443 + .../version-0.11.0/semantic-zoom.mdx | 81 + versioned_docs/version-0.11.0/usage.md | 108 + .../version-0.11.0/user-interaction.md | 134 + .../version-0.11.0/visual-channel.mdx | 210 + .../version-0.11.0-sidebars.json | 57 + versions.json | 1 + 17 files changed, 11856 insertions(+) create mode 100644 versioned_docs/version-0.11.0/FAQ.md create mode 100644 versioned_docs/version-0.11.0/assets/gosling.schema.json create mode 100644 versioned_docs/version-0.11.0/composition.mdx create mode 100644 versioned_docs/version-0.11.0/data.mdx create mode 100644 versioned_docs/version-0.11.0/genome-builds.md create mode 100644 versioned_docs/version-0.11.0/getting-started.md create mode 100644 versioned_docs/version-0.11.0/js-api.md create mode 100644 versioned_docs/version-0.11.0/mark.mdx create mode 100644 versioned_docs/version-0.11.0/non-gos-vis.mdx create mode 100644 versioned_docs/version-0.11.0/public-datasets.md create mode 100644 versioned_docs/version-0.11.0/reference.mdx create mode 100644 versioned_docs/version-0.11.0/semantic-zoom.mdx create mode 100644 versioned_docs/version-0.11.0/usage.md create mode 100644 versioned_docs/version-0.11.0/user-interaction.md create mode 100644 versioned_docs/version-0.11.0/visual-channel.mdx create mode 100644 versioned_sidebars/version-0.11.0-sidebars.json diff --git a/versioned_docs/version-0.11.0/FAQ.md b/versioned_docs/version-0.11.0/FAQ.md new file mode 100644 index 0000000..4b6e6f3 --- /dev/null +++ b/versioned_docs/version-0.11.0/FAQ.md @@ -0,0 +1,56 @@ +--- +title: Frequently Asked Questions +--- + +A list of frequently asked questions about Gosling.js. + +## How to debug gosling specs? + +To check whether your gosling spec is valid, you can either +- copy-and-paste your spec on the [online Editor](http://gosling.js.org) to see if there is any warning message. +- call a validation function `console.log(gosling.validateGoslingSpec(yourSpec));` + +## How to show Gosling Tooltips that are hidden under other components? +You can modify the z-index of the tooltip components to address this issue. + +```css +/* override styles of tooltips */ +.track-mouseover-menu { + z-index: 1; +} +``` +HiGlass defines the original [CSS styles of the tooltips](https://github.com/higlass/higlass/blob/54f5aae61d3474f9e868621228270f0c90ef9343/app/styles/HiGlass.module.scss#L54). + + +## The component is rendered in React but there is no visualization + +bug_screenshot + +For problems like this, please ensure that you have added the following style sheets in your base html file. + +```html + + ... + + + +``` +Please refer to [Use Gosling.js in React App](./#use-goslingjs-in-react-app) for more details. + +## How to make Gosling visualizations responsive? + +To make Gosling visualizations responsive, you need to listen to the resize event and update the `width` property accordingly. +Below is an example in React app. + +```javascript +// Change the width upon resize event of the browser +useEffect(() => { + window.addEventListener( + "resize", + debounce(() => { + // this value is used to set `width` of a track when updating spec + setVisPanelWidth( window.innerWidth ); + }, 500) // wait for 500ms instead of updating right away + ); +}, []); +``` diff --git a/versioned_docs/version-0.11.0/assets/gosling.schema.json b/versioned_docs/version-0.11.0/assets/gosling.schema.json new file mode 100644 index 0000000..5fea403 --- /dev/null +++ b/versioned_docs/version-0.11.0/assets/gosling.schema.json @@ -0,0 +1,9308 @@ +{ + "$ref": "#/definitions/GoslingSpec", + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "Aggregate": { + "enum": [ + "max", + "min", + "mean", + "bin", + "count" + ], + "type": "string" + }, + "Assembly": { + "anyOf": [ + { + "const": "hg38", + "type": "string" + }, + { + "const": "hg19", + "type": "string" + }, + { + "const": "hg18", + "type": "string" + }, + { + "const": "hg17", + "type": "string" + }, + { + "const": "hg16", + "type": "string" + }, + { + "const": "mm10", + "type": "string" + }, + { + "const": "mm9", + "type": "string" + }, + { + "const": "unknown", + "type": "string" + }, + { + "$ref": "#/definitions/ChromSizes" + } + ] + }, + "AxisPosition": { + "enum": [ + "none", + "top", + "bottom", + "left", + "right" + ], + "type": "string" + }, + "BamData": { + "additionalProperties": false, + "description": "Binary Alignment Map (BAM) is the comprehensive raw data of genome sequencing; it consists of the lossless, compressed binary representation of the Sequence Alignment Map-files.", + "properties": { + "extractJunction": { + "description": "Determine whether to extract exon-to-exon junctions. __Default__: `false`", + "type": "boolean" + }, + "indexUrl": { + "description": "URL link to the index file of the BAM file", + "type": "string" + }, + "junctionMinCoverage": { + "description": "Determine the threshold of coverage when extracting exon-to-exon junctions. __Default__: `1`", + "type": "number" + }, + "loadMates": { + "description": "Load mates that are located in the same chromosome. __Default__: `false`", + "type": "boolean" + }, + "maxInsertSize": { + "description": "Determines the threshold of insert sizes for determining the structural variants. __Default__: `5000`", + "type": "number" + }, + "type": { + "const": "bam", + "type": "string" + }, + "url": { + "description": "URL link to the BAM data file", + "type": "string" + } + }, + "required": [ + "type", + "url", + "indexUrl" + ], + "type": "object" + }, + "BedData": { + "additionalProperties": false, + "description": "BED file format", + "properties": { + "customFields": { + "description": "An array of strings, where each string is the name of a non-standard field in the BED file. If there are `n` custom fields, we assume that the last `n` columns of the BED file correspond to the custom fields.", + "items": { + "type": "string" + }, + "type": "array" + }, + "indexUrl": { + "description": "Specify the URL address of the data file index.", + "type": "string" + }, + "sampleLength": { + "description": "Specify the number of rows loaded from the URL.\n\n__Default:__ `1000`", + "type": "number" + }, + "type": { + "const": "bed", + "type": "string" + }, + "url": { + "description": "Specify the URL address of the data file.", + "type": "string" + } + }, + "required": [ + "type", + "url", + "indexUrl" + ], + "type": "object" + }, + "BeddbData": { + "additionalProperties": false, + "description": "Regular BED or similar files can be pre-aggregated for the scalable data exploration. Find our more about this format at [HiGlass Docs](https://docs.higlass.io/data_preparation.html#bed-files).", + "properties": { + "exonIntervalFields": { + "description": "experimental", + "items": [ + { + "additionalProperties": false, + "properties": { + "index": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "index", + "name" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "index": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "index", + "name" + ], + "type": "object" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "genomicFields": { + "description": "Specify the name of genomic data fields.", + "items": { + "additionalProperties": false, + "properties": { + "index": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "index", + "name" + ], + "type": "object" + }, + "type": "array" + }, + "type": { + "const": "beddb", + "type": "string" + }, + "url": { + "description": "Specify the URL address of the data file.", + "type": "string" + }, + "valueFields": { + "description": "Specify the column indexes, field names, and field types.", + "items": { + "additionalProperties": false, + "properties": { + "index": { + "type": "number" + }, + "name": { + "type": "string" + }, + "type": { + "enum": [ + "nominal", + "quantitative" + ], + "type": "string" + } + }, + "required": [ + "index", + "name", + "type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "type", + "url", + "genomicFields" + ], + "type": "object" + }, + "BigWigData": { + "additionalProperties": false, + "properties": { + "aggregation": { + "$ref": "#/definitions/BinAggregate", + "description": "Determine aggregation function to apply within bins. __Default__: `\"mean\"`" + }, + "binSize": { + "description": "Binning the genomic interval in tiles (unit size: 256).", + "type": "number" + }, + "column": { + "description": "Assign a field name of the middle position of genomic intervals. __Default__: `\"position\"`", + "type": "string" + }, + "end": { + "description": "Assign a field name of the end position of genomic intervals. __Default__: `\"end\"`", + "type": "string" + }, + "start": { + "description": "Assign a field name of the start position of genomic intervals. __Default__: `\"start\"`", + "type": "string" + }, + "type": { + "const": "bigwig", + "type": "string" + }, + "url": { + "description": "Specify the URL address of the data file.", + "type": "string" + }, + "value": { + "description": "Assign a field name of quantitative values. __Default__: `\"value\"`", + "type": "string" + } + }, + "required": [ + "type", + "url" + ], + "type": "object" + }, + "BinAggregate": { + "enum": [ + "mean", + "sum" + ], + "type": "string" + }, + "Channel": { + "anyOf": [ + { + "$ref": "#/definitions/ChannelDeep" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "ChannelDeep": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/Text" + } + ] + }, + "ChannelValue": { + "additionalProperties": false, + "properties": { + "value": { + "description": "Assign a constant value for a visual channel.", + "type": [ + "number", + "string" + ] + } + }, + "required": [ + "value" + ], + "type": "object" + }, + "ChromSizes": { + "description": "Custom chromosome sizes, e.g., [[\"foo\", 1000], [\"bar\", 300], [\"baz\", 240]]", + "items": { + "items": [ + { + "type": "string" + }, + { + "type": "number" + } + ], + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "type": "array" + }, + "Color": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/definitions/ValueExtent", + "description": "Values of the data" + }, + "field": { + "description": "Name of the data field", + "type": "string" + }, + "legend": { + "description": "Whether to display legend. __Default__: `false`", + "type": "boolean" + }, + "range": { + "$ref": "#/definitions/Range", + "description": "Determine the colors that should be bound to data value. Default properties are determined considering the field type." + }, + "scale": { + "enum": [ + "linear", + "log" + ], + "type": "string" + }, + "scaleOffset": { + "description": "Whether to use offset of the domain proportionally. This is bound to brushes on the color legend. __Default__: `[0, 1]`", + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "title": { + "description": "Title of the legend. __Default__: `undefined`", + "type": "string" + }, + "type": { + "description": "Specify the data type", + "enum": [ + "quantitative", + "nominal" + ], + "type": "string" + } + }, + "type": "object" + }, + "CoverageTransform": { + "additionalProperties": false, + "description": "Aggregate rows and calculate coverage", + "properties": { + "endField": { + "type": "string" + }, + "groupField": { + "description": "The name of a nominal field to group rows by in prior to piling-up", + "type": "string" + }, + "newField": { + "type": "string" + }, + "startField": { + "type": "string" + }, + "type": { + "const": "coverage", + "type": "string" + } + }, + "required": [ + "type", + "startField", + "endField" + ], + "type": "object" + }, + "CsvData": { + "additionalProperties": false, + "description": "Any small enough tabular data files, such as tsv, csv, BED, BEDPE, and GFF, can be loaded using \"csv\" data specification.", + "properties": { + "chromosomeField": { + "description": "Specify the name of chromosome data fields.", + "type": "string" + }, + "chromosomePrefix": { + "description": "Specify the chromosome prefix if chromosomes are denoted using a prefix besides \"chr\" or a number", + "type": "string" + }, + "genomicFields": { + "description": "Specify the name of genomic data fields.", + "items": { + "type": "string" + }, + "type": "array" + }, + "genomicFieldsToConvert": { + "description": "experimental", + "items": { + "additionalProperties": false, + "properties": { + "chromosomeField": { + "type": "string" + }, + "genomicFields": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "chromosomeField", + "genomicFields" + ], + "type": "object" + }, + "type": "array" + }, + "headerNames": { + "description": "Specify the names of data fields if a CSV file does not contain a header.", + "items": { + "type": "string" + }, + "type": "array" + }, + "longToWideId": { + "description": "experimental", + "type": "string" + }, + "sampleLength": { + "description": "Specify the number of rows loaded from the URL.\n\n__Default:__ `1000`", + "type": "number" + }, + "separator": { + "description": "Specify file separator, __Default:__ ','", + "type": "string" + }, + "type": { + "const": "csv", + "type": "string" + }, + "url": { + "description": "Specify the URL address of the data file.", + "type": "string" + } + }, + "required": [ + "type", + "url" + ], + "type": "object" + }, + "DataDeep": { + "anyOf": [ + { + "$ref": "#/definitions/JsonData" + }, + { + "$ref": "#/definitions/CsvData" + }, + { + "$ref": "#/definitions/BedData" + }, + { + "$ref": "#/definitions/BigWigData" + }, + { + "$ref": "#/definitions/MultivecData" + }, + { + "$ref": "#/definitions/BeddbData" + }, + { + "$ref": "#/definitions/VectorData" + }, + { + "$ref": "#/definitions/MatrixData" + }, + { + "$ref": "#/definitions/BamData" + }, + { + "$ref": "#/definitions/VcfData" + }, + { + "$ref": "#/definitions/GffData" + } + ] + }, + "DataTrack": { + "additionalProperties": false, + "description": "Partial specification of `BasicSingleTrack` to use default visual encoding predefined by data type.", + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "Assigned to `uid` in a HiGlass view config, used for API and caching.", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "data" + ], + "type": "object" + }, + "DataTransform": { + "anyOf": [ + { + "$ref": "#/definitions/FilterTransform" + }, + { + "$ref": "#/definitions/StrConcatTransform" + }, + { + "$ref": "#/definitions/StrReplaceTransform" + }, + { + "$ref": "#/definitions/LogTransform" + }, + { + "$ref": "#/definitions/DisplaceTransform" + }, + { + "$ref": "#/definitions/ExonSplitTransform" + }, + { + "$ref": "#/definitions/GenomicLengthTransform" + }, + { + "$ref": "#/definitions/SvTypeTransform" + }, + { + "$ref": "#/definitions/CoverageTransform" + }, + { + "$ref": "#/definitions/JsonParseTransform" + } + ] + }, + "Datum": { + "additionalProperties": { + "type": [ + "number", + "string" + ] + }, + "description": "Values in the form of JSON.", + "type": "object" + }, + "DisplaceTransform": { + "additionalProperties": false, + "properties": { + "boundingBox": { + "additionalProperties": false, + "properties": { + "endField": { + "description": "The name of a quantitative field that represents the end position.", + "type": "string" + }, + "groupField": { + "description": "The name of a nominal field to group rows by in prior to piling-up.", + "type": "string" + }, + "isPaddingBP": { + "description": "Whether to consider `padding` as the bp length.", + "type": "boolean" + }, + "padding": { + "description": "The padding around visual lements. Either px or bp", + "type": "number" + }, + "startField": { + "description": "The name of a quantitative field that represents the start position.", + "type": "string" + } + }, + "required": [ + "startField", + "endField" + ], + "type": "object" + }, + "maxRows": { + "description": "Specify maximum rows to be generated (default has no limit).", + "type": "number" + }, + "method": { + "$ref": "#/definitions/DisplacementType", + "description": "A string that specifies the type of displacement." + }, + "newField": { + "type": "string" + }, + "type": { + "const": "displace", + "type": "string" + } + }, + "required": [ + "type", + "boundingBox", + "method", + "newField" + ], + "type": "object" + }, + "Displacement": { + "additionalProperties": false, + "properties": { + "padding": { + "type": "number" + }, + "type": { + "$ref": "#/definitions/DisplacementType" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "DisplacementType": { + "enum": [ + "pile", + "spread" + ], + "type": "string" + }, + "DomainChr": { + "additionalProperties": false, + "properties": { + "chromosome": { + "type": "string" + } + }, + "required": [ + "chromosome" + ], + "type": "object" + }, + "DomainChrInterval": { + "additionalProperties": false, + "properties": { + "chromosome": { + "description": "If specified, only showing a certain interval in a chromosome.", + "type": "string" + }, + "interval": { + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "chromosome", + "interval" + ], + "type": "object" + }, + "DomainInterval": { + "additionalProperties": false, + "properties": { + "interval": { + "description": "Show a certain interval within entire chromosome", + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "interval" + ], + "type": "object" + }, + "DummyTrack": { + "additionalProperties": false, + "description": "A placeholder track. In contrast to other tracks, this track does not display any data. Instead it provides empty space for third party tools to display their data on top of.", + "properties": { + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "assembly": { + "const": "unknown", + "description": "No assemblies can be associated with a dummy track", + "type": "string" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "Assigned to `uid` in a HiGlass view config, used for API and caching.", + "type": "string" + }, + "layout": { + "const": "linear", + "description": "Only linear layout are supported at this time", + "type": "string" + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "static": { + "const": true, + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "style": { + "$ref": "#/definitions/DummyTrackStyle", + "description": "Defines how the track is styled" + }, + "title": { + "description": "Text that gets shown on the DummyTrack", + "type": "string" + }, + "type": { + "const": "dummy-track", + "description": "Used to specify the dummy track", + "type": "string" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "zoomLimits": { + "description": "Unused property for DummyTrack", + "items": { + "type": "null" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + }, + "required": [ + "type" + ], + "type": "object" + }, + "DummyTrackStyle": { + "additionalProperties": false, + "properties": { + "background": { + "description": "Background color of the track", + "type": "string" + }, + "outline": { + "description": "Color of the outline of the track", + "type": "string" + }, + "textFontSize": { + "description": "Specify the font size of the title", + "type": "number" + }, + "textFontWeight": { + "description": "Specify the font weight of the title.", + "enum": [ + "bold", + "normal" + ], + "type": "string" + }, + "textStroke": { + "description": "Specify the stroke color of title.", + "type": "string" + }, + "textStrokeWidth": { + "description": "Specify the stroke width of the title.", + "type": "number" + } + }, + "type": "object" + }, + "EventStyle": { + "additionalProperties": false, + "description": "The styles defined here will be applied to the target marks of mouse events, such as a point mark after the user clicks on it.", + "properties": { + "arrange": { + "description": "Show event effects behind or in front of marks.", + "enum": [ + "behind", + "front" + ], + "type": "string" + }, + "color": { + "description": "color of the marks when mouse events are triggered", + "type": "string" + }, + "opacity": { + "description": "opacity of the marks when mouse events are triggered", + "type": "number" + }, + "stroke": { + "description": "stroke color of the marks when mouse events are triggered", + "type": "string" + }, + "strokeOpacity": { + "type": "number" + }, + "strokeWidth": { + "description": "stroke width of the marks when mouse events are triggered", + "type": "number" + } + }, + "type": "object" + }, + "ExonSplitTransform": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "additionalProperties": false, + "properties": { + "chrField": { + "type": "string" + }, + "field": { + "type": "string" + }, + "newField": { + "type": "string" + }, + "type": { + "$ref": "#/definitions/FieldType" + } + }, + "required": [ + "field", + "type", + "newField", + "chrField" + ], + "type": "object" + }, + "type": "array" + }, + "flag": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "value": { + "type": [ + "number", + "string" + ] + } + }, + "required": [ + "field", + "value" + ], + "type": "object" + }, + "separator": { + "type": "string" + }, + "type": { + "const": "exonSplit", + "type": "string" + } + }, + "required": [ + "type", + "separator", + "flag", + "fields" + ], + "type": "object" + }, + "FieldType": { + "enum": [ + "genomic", + "nominal", + "quantitative" + ], + "type": "string" + }, + "FilterTransform": { + "anyOf": [ + { + "$ref": "#/definitions/OneOfFilter" + }, + { + "$ref": "#/definitions/RangeFilter" + }, + { + "$ref": "#/definitions/IncludeFilter" + } + ] + }, + "GenomicDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ] + }, + "GenomicLengthTransform": { + "additionalProperties": false, + "description": "Calculate genomic length using two genomic fields", + "properties": { + "endField": { + "type": "string" + }, + "newField": { + "type": "string" + }, + "startField": { + "type": "string" + }, + "type": { + "const": "genomicLength", + "type": "string" + } + }, + "required": [ + "type", + "startField", + "endField", + "newField" + ], + "type": "object" + }, + "GffData": { + "additionalProperties": false, + "description": "Generic Feature Format Version 3 (GFF3) format data. It parses files that follow the [GFF3 specification](https://github.com/The-Sequence-Ontology/Specifications/blob/master/gff3.md).", + "properties": { + "attributesToFields": { + "description": "Specifies which attributes to include as a fields. GFF files have an \"attributes\" column which contains a list of attributes which are each tag-value pairs (`tag=value`). This option allows for specific attributes to be accessible as a field. For example, if you have an attribute called \"gene_name\" and you want label features on your track using those values, you can use this option so that you can use `\"field\": \"gene_name\"` in the schema.\n\nIf there is a single `value` corresponding to the `tag`, Gosling will parse that value as a string. If there are multiple `value`s corresponding to a `tag`, Gosling will parse it as a comma-separated list string. If a feature does not have a particular attribute, then the attribute value will be set to the `defaultValue`.", + "items": { + "additionalProperties": false, + "properties": { + "attribute": { + "type": "string" + }, + "defaultValue": { + "type": "string" + } + }, + "required": [ + "attribute", + "defaultValue" + ], + "type": "object" + }, + "type": "array" + }, + "indexUrl": { + "description": "URL link to the tabix index file", + "type": "string" + }, + "sampleLength": { + "description": "The maximum number of samples to be shown on the track. Samples are uniformly randomly selected so that this threshold is not exceeded. __Default:__ `1000`", + "type": "number" + }, + "type": { + "const": "gff", + "type": "string" + }, + "url": { + "description": "URL link to the GFF file", + "type": "string" + } + }, + "required": [ + "type", + "url", + "indexUrl" + ], + "type": "object" + }, + "GoslingSpec": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "const": "overlay", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "responsiveSize": { + "$ref": "#/definitions/ResponsiveSize", + "description": "Determine whether to make the size of `GoslingComponent` bound to its parent element. __Default__: `false`" + }, + "responsiveSpec": { + "items": { + "additionalProperties": false, + "properties": { + "selectivity": { + "items": { + "$ref": "#/definitions/SelectivityCondition" + }, + "type": "array" + }, + "spec": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "enum": [ + "overlay", + "stack" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PartialTrack" + }, + { + "$ref": "#/definitions/OverlaidTracks" + } + ] + }, + "type": "array" + } + ] + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + } + }, + "required": [ + "spec", + "selectivity" + ], + "type": "object" + }, + "type": "array" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "alignment", + "tracks" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "const": "stack", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "description": { + "type": "string" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "responsiveSize": { + "$ref": "#/definitions/ResponsiveSize", + "description": "Determine whether to make the size of `GoslingComponent` bound to its parent element. __Default__: `false`" + }, + "responsiveSpec": { + "items": { + "additionalProperties": false, + "properties": { + "selectivity": { + "items": { + "$ref": "#/definitions/SelectivityCondition" + }, + "type": "array" + }, + "spec": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "enum": [ + "overlay", + "stack" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PartialTrack" + }, + { + "$ref": "#/definitions/OverlaidTracks" + } + ] + }, + "type": "array" + } + ] + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + } + }, + "required": [ + "spec", + "selectivity" + ], + "type": "object" + }, + "type": "array" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PartialTrack" + }, + { + "$ref": "#/definitions/OverlaidTracks" + } + ] + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "tracks" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "description": { + "type": "string" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "responsiveSize": { + "$ref": "#/definitions/ResponsiveSize", + "description": "Determine whether to make the size of `GoslingComponent` bound to its parent element. __Default__: `false`" + }, + "responsiveSpec": { + "items": { + "additionalProperties": false, + "properties": { + "selectivity": { + "items": { + "$ref": "#/definitions/SelectivityCondition" + }, + "type": "array" + }, + "spec": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "enum": [ + "overlay", + "stack" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PartialTrack" + }, + { + "$ref": "#/definitions/OverlaidTracks" + } + ] + }, + "type": "array" + } + ] + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + } + }, + "required": [ + "spec", + "selectivity" + ], + "type": "object" + }, + "type": "array" + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "title": { + "type": "string" + }, + "tracks": { + "items": { + "$ref": "#/definitions/Track" + }, + "type": "array" + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "tracks" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "arrangement": { + "description": "Specify how multiple views are arranged.", + "enum": [ + "parallel", + "serial", + "horizontal", + "vertical" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "description": { + "type": "string" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "responsiveSize": { + "$ref": "#/definitions/ResponsiveSize", + "description": "Determine whether to make the size of `GoslingComponent` bound to its parent element. __Default__: `false`" + }, + "responsiveSpec": { + "items": { + "additionalProperties": false, + "properties": { + "selectivity": { + "items": { + "$ref": "#/definitions/SelectivityCondition" + }, + "type": "array" + }, + "spec": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "arrangement": { + "description": "Specify how multiple views are arranged.", + "enum": [ + "parallel", + "serial", + "horizontal", + "vertical" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "views": { + "description": "An array of view specifications", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/SingleView" + }, + { + "$ref": "#/definitions/MultipleViews" + } + ] + }, + "type": "array" + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + } + }, + "required": [ + "spec", + "selectivity" + ], + "type": "object" + }, + "type": "array" + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "title": { + "type": "string" + }, + "views": { + "description": "An array of view specifications", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/SingleView" + }, + { + "$ref": "#/definitions/MultipleViews" + } + ] + }, + "type": "array" + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "views" + ], + "type": "object" + } + ] + }, + "IncludeFilter": { + "additionalProperties": false, + "properties": { + "field": { + "description": "A filter is applied based on the values of the specified data field", + "type": "string" + }, + "include": { + "description": "Check whether the value includes a substring.", + "type": "string" + }, + "not": { + "description": "when `{\"not\": true}`, apply a NOT logical operation to the filter.\n\n__Default:__ `false`", + "type": "boolean" + }, + "type": { + "const": "filter", + "type": "string" + } + }, + "required": [ + "field", + "include", + "type" + ], + "type": "object" + }, + "JsonData": { + "additionalProperties": false, + "description": "The JSON data format allows users to include data directly in the Gosling's JSON specification.", + "properties": { + "chromosomeField": { + "description": "Specify the name of chromosome data fields.", + "type": "string" + }, + "genomicFields": { + "description": "Specify the name of genomic data fields.", + "items": { + "type": "string" + }, + "type": "array" + }, + "genomicFieldsToConvert": { + "description": "experimental", + "items": { + "additionalProperties": false, + "properties": { + "chromosomeField": { + "type": "string" + }, + "genomicFields": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "chromosomeField", + "genomicFields" + ], + "type": "object" + }, + "type": "array" + }, + "sampleLength": { + "description": "Specify the number of rows loaded from the URL.\n\n__Default:__ `1000`", + "type": "number" + }, + "type": { + "const": "json", + "description": "Define data type.", + "type": "string" + }, + "values": { + "description": "Values in the form of JSON.", + "items": { + "$ref": "#/definitions/Datum" + }, + "type": "array" + } + }, + "required": [ + "type", + "values" + ], + "type": "object" + }, + "JsonParseTransform": { + "additionalProperties": false, + "description": "Parse JSON Object Array and append vertically", + "properties": { + "baseGenomicField": { + "description": "Base genomic position when parsing relative position.", + "type": "string" + }, + "field": { + "description": "The field that contains the JSON object array.", + "type": "string" + }, + "genomicField": { + "description": "Relative genomic position to parse.", + "type": "string" + }, + "genomicLengthField": { + "description": "Length of genomic interval.", + "type": "string" + }, + "type": { + "const": "subjson", + "type": "string" + } + }, + "required": [ + "type", + "field", + "baseGenomicField", + "genomicField", + "genomicLengthField" + ], + "type": "object" + }, + "Layout": { + "enum": [ + "linear", + "circular" + ], + "type": "string" + }, + "LogBase": { + "anyOf": [ + { + "type": "number" + }, + { + "const": "e", + "type": "string" + } + ] + }, + "LogTransform": { + "additionalProperties": false, + "properties": { + "base": { + "$ref": "#/definitions/LogBase", + "description": "If not specified, 10 is used." + }, + "field": { + "type": "string" + }, + "newField": { + "description": "If specified, store transformed values in a new field.", + "type": "string" + }, + "type": { + "const": "log", + "type": "string" + } + }, + "required": [ + "type", + "field" + ], + "type": "object" + }, + "LogicalOperation": { + "enum": [ + "less-than", + "lt", + "LT", + "greater-than", + "gt", + "GT", + "less-than-or-equal-to", + "ltet", + "LTET", + "greater-than-or-equal-to", + "gtet", + "GTET" + ], + "type": "string" + }, + "Mark": { + "enum": [ + "point", + "line", + "area", + "bar", + "rect", + "text", + "withinLink", + "betweenLink", + "rule", + "triangleLeft", + "triangleRight", + "triangleBottom", + "brush", + "header" + ], + "type": "string" + }, + "MatrixData": { + "additionalProperties": false, + "properties": { + "binSize": { + "description": "Determine the number of nearby cells to aggregate. __Default__: `1`", + "type": "number" + }, + "column": { + "description": "The name of the first genomic field. __Default__: `x`", + "type": "string" + }, + "row": { + "description": "The name of the first genomic field. __Default__: `y`", + "type": "string" + }, + "type": { + "const": "matrix", + "type": "string" + }, + "url": { + "description": "URL link to the matrix data file", + "type": "string" + }, + "value": { + "description": "The name of the value field. __Default__: `value`", + "type": "string" + } + }, + "required": [ + "type", + "url" + ], + "type": "object" + }, + "MouseEventsDeep": { + "additionalProperties": false, + "description": "Options for determining mouse events in detail, e.g., turning on specific events only", + "properties": { + "click": { + "description": "Whether to enable click events.", + "type": "boolean" + }, + "enableMouseOverOnMultipleMarks": { + "description": "Determine whether all marks underneath the mouse point should be affected by mouse over. __Default__: `false`", + "type": "boolean" + }, + "groupMarksByField": { + "description": "Group marks using keys in a data field. This affects how a set of marks are highlighted/selected by interaction. __Default__: `undefined`", + "type": "string" + }, + "mouseOver": { + "description": "Whether to enable mouseover events.", + "type": "boolean" + }, + "rangeSelect": { + "description": "Whether to send range selection events.", + "type": "boolean" + } + }, + "type": "object" + }, + "MultipleViews": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "arrangement": { + "description": "Specify how multiple views are arranged.", + "enum": [ + "parallel", + "serial", + "horizontal", + "vertical" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "views": { + "description": "An array of view specifications", + "items": { + "anyOf": [ + { + "$ref": "#/definitions/SingleView" + }, + { + "$ref": "#/definitions/MultipleViews" + } + ] + }, + "type": "array" + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "views" + ], + "type": "object" + }, + "MultivecData": { + "additionalProperties": false, + "description": "Two-dimensional quantitative values, one axis for genomic coordinate and the other for different samples, can be converted into HiGlass' `\"multivec\"` data. For example, multiple BigWig files can be converted into a single multivec file. You can also convert sequence data (FASTA) into this format where rows will be different nucleotide bases (e.g., A, T, G, C) and quantitative values represent the frequency. Find out more about this format at [HiGlass Docs](https://docs.higlass.io/data_preparation.html#multivec-files).", + "properties": { + "aggregation": { + "$ref": "#/definitions/BinAggregate", + "description": "Determine aggregation function to apply within bins. __Default__: `\"mean\"`" + }, + "binSize": { + "description": "Binning the genomic interval in tiles (unit size: 256).", + "type": "number" + }, + "categories": { + "description": "assign names of individual samples.", + "items": { + "type": "string" + }, + "type": "array" + }, + "column": { + "description": "Assign a field name of the middle position of genomic intervals. __Default__: `\"position\"`", + "type": "string" + }, + "end": { + "description": "Assign a field name of the end position of genomic intervals. __Default__: `\"end\"`", + "type": "string" + }, + "row": { + "description": "Assign a field name of samples. __Default__: `\"category\"`", + "type": "string" + }, + "start": { + "description": "Assign a field name of the start position of genomic intervals. __Default__: `\"start\"`", + "type": "string" + }, + "type": { + "const": "multivec", + "type": "string" + }, + "url": { + "description": "Specify the URL address of the data file.", + "type": "string" + }, + "value": { + "description": "Assign a field name of quantitative values. __Default__: `\"value\"`", + "type": "string" + } + }, + "required": [ + "type", + "url" + ], + "type": "object" + }, + "OneOfFilter": { + "additionalProperties": false, + "properties": { + "field": { + "description": "A filter is applied based on the values of the specified data field", + "type": "string" + }, + "not": { + "description": "when `{\"not\": true}`, apply a NOT logical operation to the filter.\n\n__Default:__ `false`", + "type": "boolean" + }, + "oneOf": { + "description": "Check whether the value is an element in the provided list.", + "items": { + "type": [ + "string", + "number", + "null" + ] + }, + "type": "array" + }, + "type": { + "const": "filter", + "type": "string" + } + }, + "required": [ + "field", + "oneOf", + "type" + ], + "type": "object" + }, + "Opacity": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/definitions/ValueExtent", + "description": "Values of the data" + }, + "field": { + "description": "Name of the data field", + "type": "string" + }, + "range": { + "$ref": "#/definitions/ValueExtent", + "description": "Ranges of visual channel values" + }, + "type": { + "description": "Specify the data type", + "enum": [ + "quantitative", + "nominal" + ], + "type": "string" + } + }, + "type": "object" + }, + "Orientation": { + "enum": [ + "horizontal", + "vertical" + ], + "type": "string" + }, + "OverlaidTrack": { + "additionalProperties": false, + "description": "Superposing multiple tracks.", + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "Assigned to `uid` in a HiGlass view config, used for API and caching.", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlay": { + "items": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "id": { + "description": "Assigned to `uid` in a HiGlass view config, used for API and caching.", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + }, + "type": "array" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "overlay" + ], + "type": "object" + }, + "OverlaidTracks": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "const": "overlay", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "alignment", + "tracks" + ], + "type": "object" + }, + "PartialTrack": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "assembly": { + "anyOf": [ + { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + { + "const": "unknown", + "description": "No assemblies can be associated with a dummy track", + "type": "string" + } + ], + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "encoding": { + "additionalProperties": { + "$ref": "#/definitions/Channel" + }, + "type": "object" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "Assigned to `uid` in a HiGlass view config, used for API and caching.", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "anyOf": [ + { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + { + "const": "linear", + "description": "Only linear layout are supported at this time", + "type": "string" + } + ], + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlay": { + "items": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "id": { + "description": "Assigned to `uid` in a HiGlass view config, used for API and caching.", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + }, + "type": "array" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "anyOf": [ + { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + { + "const": true, + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + } + ], + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`." + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "anyOf": [ + { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + { + "$ref": "#/definitions/DummyTrackStyle", + "description": "Defines how the track is styled" + } + ], + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "template": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "type": { + "const": "dummy-track", + "description": "Used to specify the dummy track", + "type": "string" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "anyOf": [ + { + "$ref": "#/definitions/ZoomLimits" + }, + { + "description": "Unused property for DummyTrack", + "items": { + "type": "null" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + ] + } + }, + "type": "object" + }, + "PredefinedColors": { + "enum": [ + "viridis", + "grey", + "spectral", + "warm", + "cividis", + "bupu", + "rdbu", + "hot", + "pink" + ], + "type": "string" + }, + "Range": { + "anyOf": [ + { + "$ref": "#/definitions/ValueExtent" + }, + { + "$ref": "#/definitions/PredefinedColors" + } + ] + }, + "RangeFilter": { + "additionalProperties": false, + "properties": { + "field": { + "description": "A filter is applied based on the values of the specified data field", + "type": "string" + }, + "inRange": { + "description": "Check whether the value is in a number range.", + "items": { + "type": "number" + }, + "type": "array" + }, + "not": { + "description": "when `{\"not\": true}`, apply a NOT logical operation to the filter.\n\n__Default:__ `false`", + "type": "boolean" + }, + "type": { + "const": "filter", + "type": "string" + } + }, + "required": [ + "field", + "inRange", + "type" + ], + "type": "object" + }, + "ResponsiveSize": { + "anyOf": [ + { + "type": "boolean" + }, + { + "additionalProperties": false, + "properties": { + "height": { + "type": "boolean" + }, + "width": { + "type": "boolean" + } + }, + "type": "object" + } + ] + }, + "Row": { + "additionalProperties": false, + "properties": { + "clip": { + "description": "Clip row when the actual y value exceeds the max value of the y scale. Used only for bar marks at the moment. __Default__: `true`", + "type": "boolean" + }, + "domain": { + "$ref": "#/definitions/ValueExtent", + "description": "Values of the data" + }, + "field": { + "description": "Name of the data field", + "type": "string" + }, + "grid": { + "description": "Whether to display grid. __Default__: `false`", + "type": "boolean" + }, + "legend": { + "description": "Whether to display legend. __Default__: `false`", + "type": "boolean" + }, + "padding": { + "description": "Determines the size of inner white spaces on the top and bottom of individiual rows. __Default__: `0`", + "type": "number" + }, + "range": { + "$ref": "#/definitions/ValueExtent", + "description": "Determine the start and end position of rendering area of this track along vertical axis. __Default__: `[0, height]`" + }, + "type": { + "const": "nominal", + "description": "Specify the data type", + "type": "string" + } + }, + "type": "object" + }, + "SelectivityCondition": { + "additionalProperties": false, + "properties": { + "measure": { + "enum": [ + "width", + "height", + "aspectRatio" + ], + "type": "string" + }, + "operation": { + "$ref": "#/definitions/LogicalOperation" + }, + "target": { + "description": "Does the condition applied to the visualization itself or its container? __Default__: `'self'`", + "enum": [ + "self", + "container" + ], + "type": "string" + }, + "threshold": { + "description": "Threshold in the unit of pixels.", + "type": "number" + } + }, + "required": [ + "operation", + "measure", + "threshold" + ], + "type": "object" + }, + "SingleTrack": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "Assigned to `uid` in a HiGlass view config, used for API and caching.", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "data", + "mark" + ], + "type": "object" + }, + "SingleView": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "const": "overlay", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "responsiveSpec": { + "items": { + "additionalProperties": false, + "properties": { + "selectivity": { + "items": { + "$ref": "#/definitions/SelectivityCondition" + }, + "type": "array" + }, + "spec": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "enum": [ + "overlay", + "stack" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PartialTrack" + }, + { + "$ref": "#/definitions/OverlaidTracks" + } + ] + }, + "type": "array" + } + ] + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + } + }, + "required": [ + "spec", + "selectivity" + ], + "type": "object" + }, + "type": "array" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "alignment", + "tracks" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "const": "stack", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "responsiveSpec": { + "items": { + "additionalProperties": false, + "properties": { + "selectivity": { + "items": { + "$ref": "#/definitions/SelectivityCondition" + }, + "type": "array" + }, + "spec": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "enum": [ + "overlay", + "stack" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PartialTrack" + }, + { + "$ref": "#/definitions/OverlaidTracks" + } + ] + }, + "type": "array" + } + ] + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + } + }, + "required": [ + "spec", + "selectivity" + ], + "type": "object" + }, + "type": "array" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PartialTrack" + }, + { + "$ref": "#/definitions/OverlaidTracks" + } + ] + }, + "type": "array" + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "tracks" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "responsiveSpec": { + "items": { + "additionalProperties": false, + "properties": { + "selectivity": { + "items": { + "$ref": "#/definitions/SelectivityCondition" + }, + "type": "array" + }, + "spec": { + "additionalProperties": false, + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "alignment": { + "enum": [ + "overlay", + "stack" + ], + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "baselineY": { + "type": "number" + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "color": { + "anyOf": [ + { + "$ref": "#/definitions/Color" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "dataTransform": { + "items": { + "$ref": "#/definitions/DataTransform" + }, + "type": "array" + }, + "displacement": { + "$ref": "#/definitions/Displacement" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "experimental": { + "additionalProperties": false, + "properties": { + "mouseEvents": { + "anyOf": [ + { + "type": "boolean" + }, + { + "$ref": "#/definitions/MouseEventsDeep" + } + ] + }, + "performanceMode": { + "default": false, + "description": "Render visual marks with less smooth curves to increase rendering performance. Only supported for `elliptical` `linkStyle` `withinLink` currently.", + "type": "boolean" + } + }, + "type": "object" + }, + "flipY": { + "type": "boolean" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "The ID of a view that is maintained for the use of JS API functions, e.g., positions of a view", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "mark": { + "$ref": "#/definitions/Mark" + }, + "opacity": { + "anyOf": [ + { + "$ref": "#/definitions/Opacity" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "overrideTemplate": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "row": { + "anyOf": [ + { + "$ref": "#/definitions/Row" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "size": { + "anyOf": [ + { + "$ref": "#/definitions/Size" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "stretch": { + "type": "boolean" + }, + "stroke": { + "anyOf": [ + { + "$ref": "#/definitions/Stroke" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "strokeWidth": { + "anyOf": [ + { + "$ref": "#/definitions/StrokeWidth" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "text": { + "anyOf": [ + { + "$ref": "#/definitions/Text" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "tooltip": { + "items": { + "$ref": "#/definitions/Tooltip" + }, + "type": "array" + }, + "tracks": { + "anyOf": [ + { + "items": { + "$ref": "#/definitions/PartialTrack" + }, + "type": "array" + }, + { + "items": { + "anyOf": [ + { + "$ref": "#/definitions/PartialTrack" + }, + { + "$ref": "#/definitions/OverlaidTracks" + } + ] + }, + "type": "array" + } + ] + }, + "visibility": { + "items": { + "$ref": "#/definitions/VisibilityCondition" + }, + "type": "array" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "x": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "x1e": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "xe": { + "anyOf": [ + { + "$ref": "#/definitions/X" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "y1e": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "ye": { + "anyOf": [ + { + "$ref": "#/definitions/Y" + }, + { + "$ref": "#/definitions/ChannelValue" + } + ] + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "type": "object" + } + }, + "required": [ + "spec", + "selectivity" + ], + "type": "object" + }, + "type": "array" + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "tracks": { + "items": { + "$ref": "#/definitions/Track" + }, + "type": "array" + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "tracks" + ], + "type": "object" + } + ] + }, + "Size": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/definitions/ValueExtent", + "description": "Values of the data" + }, + "field": { + "description": "Name of the data field", + "type": "string" + }, + "legend": { + "description": "not supported: Whether to display legend. __Default__: `false`", + "type": "boolean" + }, + "range": { + "$ref": "#/definitions/ValueExtent", + "description": "Ranges of visual channel values" + }, + "type": { + "description": "Specify the data type", + "enum": [ + "quantitative", + "nominal" + ], + "type": "string" + } + }, + "type": "object" + }, + "SizeVisibilityCondition": { + "additionalProperties": false, + "properties": { + "conditionPadding": { + "description": "Specify the buffer size (in pixel) of width or height when calculating the visibility.\n\n__Default__: `0`", + "type": "number" + }, + "measure": { + "description": "Specify which aspect of the `target` will be compared to the `threshold`.", + "enum": [ + "width", + "height" + ], + "type": "string" + }, + "operation": { + "$ref": "#/definitions/LogicalOperation", + "description": "A string that specifies the logical operation to conduct between `threshold` and the `measure` of `target`. Support\n\n- greater than : \"greater-than\", \"gt\", \"GT\"\n\n- less than : \"less-than\", \"lt\", \"LT\"\n\n- greater than or equal to : \"greater-than-or-equal-to\", \"gtet\", \"GTET\"\n\n- less than or equal to : \"less-than-or-equal-to\", \"ltet\", \"LTET\"" + }, + "target": { + "description": "Target specifies the object that you want to compare with the threshold.", + "enum": [ + "track", + "mark" + ], + "type": "string" + }, + "threshold": { + "anyOf": [ + { + "type": "number" + }, + { + "const": "|xe-x|", + "type": "string" + } + ], + "description": "Specify the threshold as one of:\n\n- A number representing a fixed threshold in the unit of pixels;\n\n- `\"|xe-x|\"`, using the distance between `xe` and `x` as threshold" + }, + "transitionPadding": { + "description": "Specify the buffer size (in pixel) of width or height for smooth transition.\n\n__Default__: `0`", + "type": "number" + } + }, + "required": [ + "measure", + "operation", + "target", + "threshold" + ], + "type": "object" + }, + "StrConcatTransform": { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "newField": { + "type": "string" + }, + "separator": { + "type": "string" + }, + "type": { + "const": "concat", + "type": "string" + } + }, + "required": [ + "type", + "fields", + "newField", + "separator" + ], + "type": "object" + }, + "StrReplaceTransform": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "newField": { + "type": "string" + }, + "replace": { + "items": { + "additionalProperties": false, + "properties": { + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to" + ], + "type": "object" + }, + "type": "array" + }, + "type": { + "const": "replace", + "type": "string" + } + }, + "required": [ + "type", + "field", + "newField", + "replace" + ], + "type": "object" + }, + "Stroke": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/definitions/ValueExtent", + "description": "Values of the data" + }, + "field": { + "description": "Name of the data field", + "type": "string" + }, + "legend": { + "description": "Whether to display legend. __Default__: `false`", + "type": "boolean" + }, + "range": { + "$ref": "#/definitions/Range", + "description": "Ranges of visual channel values" + }, + "scaleOffset": { + "description": "Whether to use offset of the domain proportionally. This is bound to brushes on the color legend. __Default__: `[0, 1]`", + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "title": { + "description": "Title of the legend. __Default__: `undefined`", + "type": "string" + }, + "type": { + "description": "Specify the data type", + "enum": [ + "quantitative", + "nominal" + ], + "type": "string" + } + }, + "type": "object" + }, + "StrokeWidth": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/definitions/ValueExtent", + "description": "Values of the data" + }, + "field": { + "description": "Name of the data field", + "type": "string" + }, + "range": { + "$ref": "#/definitions/ValueExtent", + "description": "Ranges of visual channel values" + }, + "type": { + "description": "Specify the data type", + "enum": [ + "quantitative", + "nominal" + ], + "type": "string" + } + }, + "type": "object" + }, + "Style": { + "additionalProperties": false, + "properties": { + "align": { + "description": "Specify the alignment of marks. This property is currently only supported for `triangle` marks.", + "enum": [ + "left", + "right" + ], + "type": "string" + }, + "background": { + "type": "string" + }, + "backgroundOpacity": { + "type": "number" + }, + "brush": { + "additionalProperties": false, + "description": "Customize the style of the brush mark in the `rangeSelect` mouse event.", + "properties": { + "color": { + "description": "color of the marks when mouse events are triggered", + "type": "string" + }, + "opacity": { + "description": "opacity of the marks when mouse events are triggered", + "type": "number" + }, + "stroke": { + "description": "stroke color of the marks when mouse events are triggered", + "type": "string" + }, + "strokeOpacity": { + "type": "number" + }, + "strokeWidth": { + "description": "stroke width of the marks when mouse events are triggered", + "type": "number" + } + }, + "type": "object" + }, + "curve": { + "description": "Specify the curve of `rule` marks.", + "enum": [ + "top", + "bottom", + "left", + "right" + ], + "type": "string" + }, + "dashed": { + "description": "Specify the pattern of dashes and gaps for `rule` marks.", + "items": { + "type": "number" + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + }, + "dx": { + "description": "Offset the position of marks in x direction. This property is currently only supported for `text` marks", + "type": "number" + }, + "dy": { + "description": "Offset the position of marks in y direction. This property is currently only supported for `text` marks.", + "type": "number" + }, + "enableSmoothPath": { + "description": "Whether to enable smooth paths when drawing curves.\n\n__Default__: `false`", + "type": "boolean" + }, + "inlineLegend": { + "description": "Specify whether to show legend in a single horizontal line?", + "type": "boolean" + }, + "legendTitle": { + "description": "If defined, show legend title on the top or left", + "type": "string" + }, + "linePattern": { + "additionalProperties": false, + "description": "Specify the pattern of dashes and gaps for `rule` marks.", + "properties": { + "size": { + "type": "number" + }, + "type": { + "enum": [ + "triangleLeft", + "triangleRight" + ], + "type": "string" + } + }, + "required": [ + "type", + "size" + ], + "type": "object" + }, + "linkConnectionType": { + "description": "Specify the connetion type of `betweenLink` marks.\n\n__Default__: `\"corner\"`", + "enum": [ + "straight", + "curve", + "corner" + ], + "type": "string" + }, + "linkMinHeight": { + "description": "The minimum height of `withinLink` and `betweenLink` marks. Unit is a percentagle. __Default__: `0.5`", + "type": "number" + }, + "linkStyle": { + "description": "The style of `withinLink` and `betweenLink` marks. __Default__: `'circular'` `'elliptical'` will be used as a default option.", + "enum": [ + "elliptical", + "circular", + "straight" + ], + "type": "string" + }, + "matrixExtent": { + "description": "Determine to show only one side of the diagonal in a HiGlass matrix. __Default__: `\"full\"`", + "enum": [ + "full", + "upper-right", + "lower-left" + ], + "type": "string" + }, + "mouseOver": { + "$ref": "#/definitions/EventStyle", + "description": "Customize visual effects of `mouseOver` events on marks." + }, + "outline": { + "type": "string" + }, + "outlineWidth": { + "type": "number" + }, + "select": { + "$ref": "#/definitions/EventStyle", + "description": "Customize visual effects of `rangeSelect` events on marks ." + }, + "textAnchor": { + "description": "Specify the alignment of `text` marks to a given point.", + "enum": [ + "start", + "middle", + "end" + ], + "type": "string" + }, + "textFontSize": { + "description": "Specify the font size of `text` marks. Can also be specified using the `size` channel option of `text` marks.", + "type": "number" + }, + "textFontWeight": { + "description": "Specify the font weight of `text` marks.", + "enum": [ + "bold", + "normal" + ], + "type": "string" + }, + "textStroke": { + "description": "Specify the stroke of `text` marks. Can also be specified using the `stroke` channel option of `text` marks.", + "type": "string" + }, + "textStrokeWidth": { + "description": "Specify the stroke width of `text` marks. Can also be specified using the `strokeWidth` channel option of `text` marks.", + "type": "number" + }, + "withinLinkVerticalLines": { + "description": "Whether to show vertical lines that connect to the baseline (axis) when `y` and `ye` are both used. __Default__: `false`", + "type": "boolean" + } + }, + "type": "object" + }, + "SvTypeTransform": { + "additionalProperties": false, + "properties": { + "firstBp": { + "additionalProperties": false, + "description": "Based on the BEDPE, infer SV types. SV types are specified as one of the following strings: DUP, TRA, DEL, t2tINV, h2hINV.", + "properties": { + "chrField": { + "type": "string" + }, + "posField": { + "type": "string" + }, + "strandField": { + "type": "string" + } + }, + "required": [ + "chrField", + "posField", + "strandField" + ], + "type": "object" + }, + "newField": { + "type": "string" + }, + "secondBp": { + "additionalProperties": false, + "description": "Based on the BEDPE, infer SV types. SV types are specified as one of the following strings: DUP, TRA, DEL, t2tINV, h2hINV.", + "properties": { + "chrField": { + "type": "string" + }, + "posField": { + "type": "string" + }, + "strandField": { + "type": "string" + } + }, + "required": [ + "chrField", + "posField", + "strandField" + ], + "type": "object" + }, + "type": { + "const": "svType", + "type": "string" + } + }, + "required": [ + "type", + "firstBp", + "secondBp", + "newField" + ], + "type": "object" + }, + "TemplateTrack": { + "additionalProperties": false, + "description": "Template specification that will be internally converted into `SingleTrack` for rendering.", + "properties": { + "_assignedHeight": { + "type": "number" + }, + "_assignedWidth": { + "description": "Internal: Used for responsive spec", + "type": "number" + }, + "_invalidTrack": { + "description": "internal", + "type": "boolean" + }, + "_renderingId": { + "description": "internal", + "type": "string" + }, + "assembly": { + "$ref": "#/definitions/Assembly", + "description": "A string that specifies the genome builds to use. Currently support `\"hg38\"`, `\"hg19\"`, `\"hg18\"`, `\"hg17\"`, `\"hg16\"`, `\"mm10\"`, `\"mm9\"`, and `\"unknown\"`.\n\n__Note:__: with `\"unknown\"` assembly, genomic axes do not show chrN: in labels." + }, + "centerRadius": { + "description": "Proportion of the radius of the center white space.\n\n__Default:__ `0.3`", + "type": "number" + }, + "data": { + "$ref": "#/definitions/DataDeep" + }, + "encoding": { + "additionalProperties": { + "$ref": "#/definitions/Channel" + }, + "type": "object" + }, + "endAngle": { + "description": "Specify the end angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "height": { + "description": "Specify the track height in pixels.", + "type": "number" + }, + "id": { + "description": "Assigned to `uid` in a HiGlass view config, used for API and caching.", + "type": "string" + }, + "innerRadius": { + "description": "Specify the inner radius of tracks when (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "layout": { + "$ref": "#/definitions/Layout", + "description": "Specify the layout type of all tracks." + }, + "linkingId": { + "description": "Specify an ID for [linking multiple views](http://gosling-lang.org/docs/user-interaction#linking-views)", + "type": "string" + }, + "orientation": { + "$ref": "#/definitions/Orientation", + "description": "Specify the orientation." + }, + "outerRadius": { + "description": "Specify the outer radius of tracks when `{\"layout\": \"circular\"}`.", + "type": "number" + }, + "overlayOnPreviousTrack": { + "type": "boolean" + }, + "prerelease": { + "additionalProperties": false, + "description": "internal", + "type": "object" + }, + "spacing": { + "description": "The size of the gap (1) between tracks, (2) between views, and (3) of the origin of circular tracks. The effect of this property depends on where on the spec you specify the `spacing`.\n\nIn a linear layout, this value is used in pixels, while in a circular layout, this value is used relative to the height of the tracks or views.", + "type": "number" + }, + "startAngle": { + "description": "Specify the start angle (in the range of [0, 360]) of circular tracks (`{\"layout\": \"circular\"}`).", + "type": "number" + }, + "static": { + "description": "Whether to disable [Zooming and Panning](http://gosling-lang.org/docs/user-interaction#zooming-and-panning), __Default:__ `false`.", + "type": "boolean" + }, + "style": { + "$ref": "#/definitions/Style", + "description": "Define the [style](http://gosling-lang.org/docs/visual-channel#style-related-properties) of multive views. Will be overwritten by the style of children elements (e.g., view, track)." + }, + "subtitle": { + "type": "string" + }, + "template": { + "type": "string" + }, + "title": { + "description": "If defined, will show the textual label on the left-top corner of a track.", + "type": "string" + }, + "width": { + "description": "Specify the track width in pixels.", + "type": "number" + }, + "xAxis": { + "$ref": "#/definitions/AxisPosition", + "description": "not supported" + }, + "xDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic x-axis" + }, + "xOffset": { + "description": "Specify the x offset of views in the unit of pixels", + "type": "number" + }, + "yDomain": { + "anyOf": [ + { + "$ref": "#/definitions/DomainInterval" + }, + { + "$ref": "#/definitions/DomainChrInterval" + }, + { + "$ref": "#/definitions/DomainChr" + } + ], + "description": "Specify the visible region of genomic y-axis" + }, + "yOffset": { + "description": "Specify the y offset of views in the unit of pixels", + "type": "number" + }, + "zoomLimits": { + "$ref": "#/definitions/ZoomLimits" + } + }, + "required": [ + "template", + "data" + ], + "type": "object" + }, + "Text": { + "additionalProperties": false, + "properties": { + "domain": { + "description": "Values of the data", + "items": { + "type": "string" + }, + "type": "array" + }, + "field": { + "description": "Name of the data field", + "type": "string" + }, + "range": { + "description": "Ranges of visual channel values", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "Specify the data type", + "enum": [ + "quantitative", + "nominal" + ], + "type": "string" + } + }, + "type": "object" + }, + "Tooltip": { + "additionalProperties": false, + "properties": { + "alt": { + "description": "Name of the data field for showing in the tooltip. Will use the field name if not specified.", + "type": "string" + }, + "field": { + "description": "Specifiy a data field whose value will show in the tooltip.", + "type": "string" + }, + "format": { + "description": "format of the data value.", + "type": "string" + }, + "type": { + "$ref": "#/definitions/FieldType", + "description": "Type of the data field." + } + }, + "required": [ + "field", + "type" + ], + "type": "object" + }, + "Track": { + "anyOf": [ + { + "$ref": "#/definitions/SingleTrack" + }, + { + "$ref": "#/definitions/OverlaidTrack" + }, + { + "$ref": "#/definitions/DataTrack" + }, + { + "$ref": "#/definitions/TemplateTrack" + }, + { + "$ref": "#/definitions/DummyTrack" + } + ] + }, + "ValueExtent": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "items": { + "type": "number" + }, + "type": "array" + } + ] + }, + "VcfData": { + "additionalProperties": false, + "description": "The Variant Call Format (VCF).", + "properties": { + "indexUrl": { + "description": "URL link to the tabix index file", + "type": "string" + }, + "sampleLength": { + "description": "The maximum number of rows to be loaded from the URL. __Default:__ `1000`", + "type": "number" + }, + "type": { + "const": "vcf", + "type": "string" + }, + "url": { + "description": "URL link to the VCF file", + "type": "string" + } + }, + "required": [ + "type", + "url", + "indexUrl" + ], + "type": "object" + }, + "VectorData": { + "additionalProperties": false, + "description": "One-dimensional quantitative values along genomic position (e.g., bigwig) can be converted into HiGlass' `\"vector\"` format data. Find out more about this format at [HiGlass Docs](https://docs.higlass.io/data_preparation.html#bigwig-files).", + "properties": { + "aggregation": { + "$ref": "#/definitions/BinAggregate", + "description": "Determine aggregation function to apply within bins. __Default__: `\"mean\"`" + }, + "binSize": { + "description": "Binning the genomic interval in tiles (unit size: 256).", + "type": "number" + }, + "column": { + "description": "Assign a field name of the middle position of genomic intervals. __Default__: `\"position\"`", + "type": "string" + }, + "end": { + "description": "Assign a field name of the end position of genomic intervals. __Default__: `\"end\"`", + "type": "string" + }, + "start": { + "description": "Assign a field name of the start position of genomic intervals. __Default__: `\"start\"`", + "type": "string" + }, + "type": { + "const": "vector", + "type": "string" + }, + "url": { + "description": "Specify the URL address of the data file.", + "type": "string" + }, + "value": { + "description": "Assign a field name of quantitative values. __Default__: `\"value\"`", + "type": "string" + } + }, + "required": [ + "type", + "url" + ], + "type": "object" + }, + "VisibilityCondition": { + "anyOf": [ + { + "$ref": "#/definitions/SizeVisibilityCondition" + }, + { + "$ref": "#/definitions/ZoomLevelVisibilityCondition" + } + ] + }, + "X": { + "additionalProperties": false, + "properties": { + "aggregate": { + "$ref": "#/definitions/Aggregate", + "description": "Specify how to aggregate data. __Default__: `undefined`" + }, + "axis": { + "$ref": "#/definitions/AxisPosition", + "description": "Specify where should the axis be put" + }, + "domain": { + "$ref": "#/definitions/GenomicDomain", + "description": "Values of the data" + }, + "field": { + "description": "Name of the data field.", + "type": "string" + }, + "grid": { + "description": "Whether to display grid. __Default__: `false`", + "type": "boolean" + }, + "legend": { + "description": "Whether to display legend. __Default__: `false`", + "type": "boolean" + }, + "linkingId": { + "description": "Users need to assign a unique linkingId for [linking views](/docs/user-interaction#linking-views) and [Brushing and Linking](/docs/user-interaction#brushing-and-linking)", + "type": "string" + }, + "range": { + "$ref": "#/definitions/ValueExtent", + "description": "Values of the visual channel." + }, + "type": { + "const": "genomic", + "description": "Specify the data type.", + "type": "string" + } + }, + "type": "object" + }, + "Y": { + "additionalProperties": false, + "properties": { + "aggregate": { + "$ref": "#/definitions/Aggregate", + "description": "Specify how to aggregate data. __Default__: `undefined`" + }, + "axis": { + "$ref": "#/definitions/AxisPosition", + "description": "Specify where should the axis be put" + }, + "baseline": { + "description": "Custom baseline of the y-axis. __Default__: `0`", + "type": [ + "string", + "number" + ] + }, + "domain": { + "anyOf": [ + { + "$ref": "#/definitions/ValueExtent" + }, + { + "$ref": "#/definitions/GenomicDomain" + } + ], + "description": "Values of the data" + }, + "field": { + "description": "Name of the data field.", + "type": "string" + }, + "flip": { + "description": "Whether to flip the y-axis. This is done by inverting the `range` property. __Default__: `false`", + "type": "boolean" + }, + "grid": { + "description": "Whether to display grid. __Default__: `false`", + "type": "boolean" + }, + "legend": { + "description": "Whether to display legend. __Default__: `false`", + "type": "boolean" + }, + "linkingId": { + "description": "Users need to assign a unique linkingId for [linking views](/docs/user-interaction#linking-views) and [Brushing and Linking](/docs/user-interaction#brushing-and-linking)", + "type": "string" + }, + "range": { + "$ref": "#/definitions/ValueExtent", + "description": "Values of the visual channel." + }, + "type": { + "description": "Specify the data type.", + "enum": [ + "quantitative", + "nominal", + "genomic" + ], + "type": "string" + }, + "zeroBaseline": { + "description": "Specify whether to use zero baseline. __Default__: `true`", + "type": "boolean" + } + }, + "type": "object" + }, + "ZoomLevelVisibilityCondition": { + "additionalProperties": false, + "properties": { + "conditionPadding": { + "description": "Specify the buffer size (in pixel) of width or height when calculating the visibility.\n\n__Default__: `0`", + "type": "number" + }, + "measure": { + "const": "zoomLevel", + "description": "Specify which aspect of the `target` will be compared to the `threshold`.", + "type": "string" + }, + "operation": { + "$ref": "#/definitions/LogicalOperation", + "description": "A string that specifies the logical operation to conduct between `threshold` and the `measure` of `target`. Support\n\n- greater than : \"greater-than\", \"gt\", \"GT\"\n\n- less than : \"less-than\", \"lt\", \"LT\"\n\n- greater than or equal to : \"greater-than-or-equal-to\", \"gtet\", \"GTET\"\n\n- less than or equal to : \"less-than-or-equal-to\", \"ltet\", \"LTET\"" + }, + "target": { + "description": "Target specifies the object that you want to compare with the threshold.", + "enum": [ + "track", + "mark" + ], + "type": "string" + }, + "threshold": { + "description": "Set a threshold in the unit of base pairs (bp)", + "type": "number" + }, + "transitionPadding": { + "description": "Specify the buffer size (in pixel) of width or height for smooth transition.\n\n__Default__: `0`", + "type": "number" + } + }, + "required": [ + "measure", + "operation", + "target", + "threshold" + ], + "type": "object" + }, + "ZoomLimits": { + "items": { + "type": [ + "number", + "null" + ] + }, + "maxItems": 2, + "minItems": 2, + "type": "array" + } + } +} diff --git a/versioned_docs/version-0.11.0/composition.mdx b/versioned_docs/version-0.11.0/composition.mdx new file mode 100644 index 0000000..55d44fb --- /dev/null +++ b/versioned_docs/version-0.11.0/composition.mdx @@ -0,0 +1,214 @@ +--- +title: Composition +description: Visualizations organized into tracks and views. +--- + +import {TableWrapper} from '@site/react-components/DocComponments/table' +import GoslingSchema from './assets/gosling.schema.json' + +Gosling visualizations are composed from **tracks** and **views**. + +A **`track`** is a unit building block in Gosling which can be represented as a bar chart, a line chart, or an ideogram. +Multiple tracks can be grouped into together into a **`view`**. A view defines the genomic location for all the tracks it +contains, and the tracks define the data to be visualized. + + + + + + +In Gosling, you can compose multiple tracks and views in diverse ways using the following properties: + +1. You can display genomic positions of a view either in Cartesian coordinates (**linear**) or in polar coordinates (**circular**) using the `layout` property. +2. You can determine to either **overlay** or **stack** multiple tracks when composing them into a view using a `alignment` property. +3. You use juxtapose multiple views in four different ways (i.e., **parallel**, **serial**, **vertical**, **horizontal**) using the `arrangement` property. + +```javascript +{ + "arrangement": "parallel", // how to arrange multiple views + "views": [ + { + // a single view can contain multiple tracks + "layout": "circular", // specify the layout of a view + "alignment": "stack", // specify how to align several tracks + "tracks": [ + {/** track 1 **/}, + {/** track 2 **/}, + ... + ] + }, + { + /** another view **/ + }, + ... + ] +} +``` + + +## Specify the View Layout + +In each view, genomic coordinate can be represented in either a **circular** or **linear** layout. + +In the following figure the upper track is using a linear layout while the bottom one is a circular layout. + +linear vs circular + +Users can either specify the layout of all views in the root level + +```javascript +{ + "layout": "linear", //specify the layout of all views + "views":[...] +} +``` + +or specify/override the layout of a certain view in its own definition + +```javascript +{ + "layout": "linear", //specify the layout of all tracks in this view + "tracks":[...] +} +``` + +To enable an easy switch, both `linear` and `circular` layout can be specified through `width` and `height`. +**Note:** the meaning of `height` is different in `circular` and `linear` layout. +A `linear` layout is controlled by the following properties: + +| property | type | description | +| -------- | ------ | ----------------------------- | +| width | number | width (in pixel) of the view | +| height | number | height (in pixel) of the view | + +A `circular` layout is controlled by the following properties: + +| property | type | description | +| ------------ | ------ | ------------------------------------------------------------------------------- | +| width | number | width (in pixel) of the view | +| height | number | you need to specify the height of each track to control the ratio of their ticknesses | +| centerRadius | number | `radius of the center white space` / `radius of the whole view`. default = 0.3 | + + + + +## Align Multiple Tracks in One View + + +The `alignment` propoerty allow users to either `"overlay"` or `"stack"` several tracks. + + +When setting `alignment` as `"overlay"`, multiple `tracks` are overlaid on top of others. +When setting `alignment` as `"stack"`, multiple `tracks` are vertically concantenated. +The default value of `alignment` is `"stack"`. + +alignment of multiple tracks + +Multiple `tracks` can compose one single `view`, which has the following properties: + +| property | type | description | +| ------------ | ------- | ------------| +| layout | string | specify the layout type of all tracks, either "linear" or "circular" | +| alignment | string | specify how to align tracks, either "stack" or "overlay". default="stack"| +| spacing | number | specify the space between tracks in pixels (if `layout` is `linear`) or in percentage ranging from `0` to `100` (if `layout` is `circular`) | +| static | boolean | whether to disable [Zooming and Panning](./user-interaction#zooming-and-panning), __default__=false. | +| assembly | string | currently support "hg38", "hg19", "hg18", "hg17", "hg16", "mm10", "mm9" | +| linkingId | string | specify an ID for [linking multiple views](./user-interaction#linking-views) | +| centerRadius | number | specify the proportion of the radius of the center white space. A number between [0,1], default=0.3 | +| width | number | required when setting `alignment: overlay` | +| height | number | required when setting `alignment: overlay` | + + + +## Arrange Multiple Views +Goslings supports multi-view visualizations. +Users can specify the visualizations in `"views"` and arrange them through the `arrangement` property. + +```javascript +{ + "arrangement": "parallel", + "views": [ + // one view is composed of tracks that share the same layout property (linear or circular) + { + "layout": "linear", + "tracks": [...] + }, + // One view can have a hierarchical structure. + // For example, the view below is composed of two sub-views + { + "arrangement": "serial", + "views": [ + { + "tracks": [...] + }, + { + "tracks": [...] + } + ] + } + ] +} +``` + +Gosling supports four types of arrangemet: `"parallel"`, `"serial"`, `"vertical"`, `"horizontal"`. +arrangement of multiple views + +**Below are the properties that are supported in a multi-view gosling visualization** + + +## Inherit Property in Nested Structure + +Both `view` and `track` supports nested structures: One `view` can have several children `views`, and one `track` can have several children `tracks`. Properties can be inherited from upper-level specifications or overwritten locally. + +```javascript +// nested structures in views +{ + "arrangement": "parallel", + "views": [ + {/** a single view **/ }, + { + // a view with children views + "arrangement": "parallel", + "views": [...] + } + ] +} +``` + +```javascript +// nested structures in tracks +{ + "alignment":"overlay", + "views":[{ + "tracks": [{ + // the parent track + "data": ... , // specify data + "x": ..., + "y": ..., + "color":..., + "alignment": "overlay", + "tracks": [ + // the children tracks + // point mark and line mark have the same data, x, y, color encoding + { + "mark": "line", + }, + { + "mark": "point", + // specify the size of point mark + "size": {"field": "peak", "type": "quantitative", "range": [0, 6]} + } + ] + }] + }] +} +``` + +Use the nested structure if you want to use overlaid tracks inside stacked tracks. + + +Try examples in the online editor: + +[Line chart (line + point)]() + +[Ideogram (text + rect + triangle)]() diff --git a/versioned_docs/version-0.11.0/data.mdx b/versioned_docs/version-0.11.0/data.mdx new file mode 100644 index 0000000..925eaf3 --- /dev/null +++ b/versioned_docs/version-0.11.0/data.mdx @@ -0,0 +1,407 @@ +--- +title: Data +description: CSV, GFF3, VCF, BED, JSON, BAM and more! +--- + +import GoslingSchema from './assets/gosling.schema.json'; +import {TableWrapper} from '@site/react-components/DocComponments/table' + +Users can specify the data of each visualization (i.e., `track`) through a `track.data` property. +```javascript +{ + "tracks":[{ + "data": {...}, // specify the data used in this track + "mark": "rect", + "color": ..., + ... + }] +} +``` + +## Supported Data Formats + +For the flexible data exploration, Gosling supports two different kinds of datasets: + +1. **Plain Datasets** (No HiGlass Server): These datasets can be directly used in Gosling without requiring any data preprocessing, +including [CSV](#csv-no-higlass-server), [JSON](#json-no-higlass-server), [BigWig](#bigwig-no-higlass-server), [BAM](#bam-no-higlass-server), +[BED](#bed-no-higlass-server). + +2. **Pre-aggregated Datasets** (HiGlass Server): These datasets are preprocessed for the scalable data exploration and require a HiGlass server to access them in Gosling, +including [Vector](#vector-require-higlass-server), [Multivec](#multivec-require-higlass-server), and [BEDDB](#beddb-require-higlass-server). +To learn more about preprocessing your data and setting up the [server](https://github.com/higlass/higlass-server), please visit the [HiGlass website](https://docs.higlass.io/). + + +### CSV (No HiGlass Server) + +Any small enough tabular data files, such as tsv, csv, BED, BEDPE, and GFF, can be loaded using `"csv"` data specification. + +```javascript +{ + "tracks": [ + { + "data": { + "url": "https://raw.githubusercontent.com/sehilyi/gemini-datasets/master/data/UCSC.HG38.Human.CytoBandIdeogram.csv", + "type": "csv", + "chromosomeField": "Chromosome", + "genomicFields": ["chromStart", "chromEnd"] + }, + ..., + }] +} + +``` + + + +### GFF3 (No HiGlass Server) + +This format allows for files that follow the [GFF3 specification](https://github.com/The-Sequence-Ontology/Specifications/blob/master/gff3.md). + +[GFF file demo](https://gosling-lang.github.io/gosling.js/?example=doc_gff) + +Currently, the GFF3 file must have an accompanying index file. If you do not have an index file for your GFF3 file, you +can create one using [tabix](http://www.htslib.org/doc/tabix.html). Otherwise, you can treat the GFF3 file as if it were a CSV file and use the CSV data specification, but this will not be as performant for large files. + +The field names correspond to the names of the columns. For example, the field which corresponds to the "start" column, +is called "start". The standard GFF fields are as follows: `seq_id`, `source`, `type`, `start`, `end`, `score`, `strand`, `phase`, and `attributes`. + +Here is an example GFF3 file line: + +``` +U00096.3 Genbank gene 352706 354592 . + . Name=prpE;gbkey=Gene;gene=prpE;gene_biotype=protein_coding;gene_synonym=ECK0332,yahU;locus_tag=b0335 +``` + +This will be parsed as the following: +``` +{ + ​seq_id: "U00096.3"​​ + ​source: "Genbank" + ​type: "gene" + ​start: 352706 + ​end: 354592 + ​phase: null + ​strand: "+" + ​score: null + ​attributes: Object { Name: (1) […], gbkey: (1) […], Name: (1) […], … } + ​child_features: Array [] + ​derived_features: Array [] ​​ +} +``` +If we include the option `attributesToFields: [{attribute: "Name", defaultValue: "unknown"}]`, then the `Name` attribute +will included as a field: +``` +{ + Name: "prpE" + ​seq_id: "U00096.3"​​ + ​source: "Genbank" + ​type: "gene" + ​start: 352706 + ​end: 354592 + ​phase: null + ​strand: "+" + ​score: null + ​attributes: Object { ID: (1) […], Dbxref: (2) […], Name: (1) […], … } + ​child_features: Array [] + ​derived_features: Array [] ​​ +} +``` +This allows `Name` to be used as a field in Gosling to label features. + +```javascript +{ + "tracks":[{ + "data": { + "url": "https://s3.amazonaws.com/gosling-lang.org/data/gff/E_coli_MG1655.gff3.gz", + "indexUrl": "https://s3.amazonaws.com/gosling-lang.org/data/gff/E_coli_MG1655.gff3.gz.tbi", + "type": "gff" + }, + "mark": "rect", + "x": {"field": "start"}, // example using one of the standard fields + "xe": {"field": "end"}, + ... // other configurations of this track + }] +} +``` + + + +### VCF (No HiGlass Server) + +This format allow files that follow the [VCF specification](https://samtools.github.io/hts-specs/VCFv4.2.pdf). Currently, we only support the usage of VCF files that have a corresponding index file. + +[VCF file demo showing indels](https://gosling-lang.github.io/gosling.js/?example=doc_vcf_indels) + +[VCF file demo showing point mutations](https://gosling-lang.github.io/gosling.js/?example=doc_vcf_point_mutations) + + + +```javascript +{ + "tracks":[{ + "data": { + "url": "https://somatic-browser-test.s3.amazonaws.com/browserExamples/7a921087-8e62-4a93-a757-fd8cdbe1eb8f.consensus.20161006.somatic.indel.sorted.vcf.gz", + "indexUrl": "https://somatic-browser-test.s3.amazonaws.com/browserExamples/7a921087-8e62-4a93-a757-fd8cdbe1eb8f.consensus.20161006.somatic.indel.sorted.vcf.gz.tbi", + "type": "vcf", + "sampleLength": 5000 + }, + ... // other configurations of this track + }] +} +``` + + + + +### JSON (No HiGlass Server) + +This format allows users to include data directly in the Gosling's JSON specification. + +```javascript +{ + "tracks":[{ + "data": { + "type": "json", + "chromosomeField": "Chromosome", + "genomicFields": [ + "chromStart", + "chromEnd" + ], + "values": [ + { + "Chromosome": "chr1", + "chromStart": 0, + "chromEnd": 2300000, + "Name": "p36.33", + "Stain": "gneg" + }, + { + "Chromosome": "chr1", + "chromStart": 2300000, + "chromEnd": 5300000, + "Name": "p36.32", + "Stain": "gpos25" + }, ... + ] + }, + ... // other configurations of this track + }] +} +``` + + + +The property `"genomicFieldsToConvert"` enables users to convert chromosome fields into genomic fields, which facilitates the creation of [links between various chromosomes](/docs/mark#link). + +### BigWig (No HiGlass Server) + +```javascript +{ + "tracks":[{ + "data": { + "url": 'https://s3.amazonaws.com/gosling-lang.org/data/4DNFIMPI5A9N.bw', + "type": "bigwig", + "column": "position", + "value": "peak" + }, + ... // other configurations of this track + }] +} +``` + + + +### BAM (No HiGlass Server) + + + +### BED (No HiGlass Server) +This format allows for BED files that follow the [BED specification](https://raw.githubusercontent.com/samtools/hts-specs/master/BEDv1.pdf) to be used. +There are 12 standard fields (`chrom`, `chromStart`, `chromEnd`, `name`, `score`, `strand`, `thickStart`, `thickEnd`, `itemRgb`, `blockCount`, `blockSizes`, and `blockStarts`). +The first three fields (`chrom`, `chromStart`, `chromEnd`) are required. If custom fields are specified, they +will not be able to rename the first three fields. + +Currently, the BED file must have an accompanying index file. If you do not have an index file for your BED file, you +can create one using [tabix](http://www.htslib.org/doc/tabix.html). Otherwise, you can treat the BED file as if it were a +CSV file and use the CSV data specification, but this will not be as performant for large files. + +[BED file demo](https://gosling-lang.github.io/gosling.js/?example=doc_bed) +```javascript +{ + "tracks":[{ + "data": { + "url": "https://s3.amazonaws.com/gosling-lang.org/data/bed/chr1_CDS_BED12.bed.gz", + "indexUrl": "https://s3.amazonaws.com/gosling-lang.org/data/bed/chr1_CDS_BED12.bed.gz.tbi" + "type": "bed", + }, + "mark": "rect", + "x": {"field": "chromStart", "type": "genomic"}, // example using one of the standard fields + "xe": {"field": "chromEnd", "type": "genomic"}, + ... // other configurations of this track + }] +} +``` + + + +### Vector (Require HiGlass Server) + +One-dimensional quantitative values along genomic position (e.g., bigwig) can be converted into HiGlass' `"vector"` format data. Find out more about this format at [HiGlass Docs](https://docs.higlass.io/data_preparation.html#bigwig-files). + +```javascript +{ + "tracks":[{ + "data": { + "url": 'https://resgen.io/api/v1/tileset_info/?d=VLFaiSVjTjW6mkbjRjWREA', + "type": "vector", + "column": "position", + "value": "peak" + }, + ... // other configurations of this track + }] +} +``` + + + +### Multivec (Require HiGlass Server) + +Two-dimensional quantitative values, one axis for genomic coordinate and the other for different samples, can be converted into HiGlass' `"multivec"` data. For example, multiple BigWig files can be converted into a single multivec file. You can also convert sequence data (FASTA) into this format where rows will be different nucleotide bases (e.g., A, T, G, C) and quantitative values represent the frequency. Find out more about this format at [HiGlass Docs](https://docs.higlass.io/data_preparation.html#multivec-files). + +```javascript +{ + "tracks":[{ + "data": { + "url": "https://resgen.io/api/v1/tileset_info/?d=UvVPeLHuRDiYA3qwFlm7xQ", + "type": "multivec", + "row": "sample", + "column": "position", + "value": "peak", + "categories": ["sample 1", "sample 2", "sample 3", "sample 4"] + }, + ...// other configurations of this track + }] +} +``` + + + + +### BEDDB (Require HiGlass Server) + +Regular BED, or similar, files can be pre-aggregated for the scalable data exploration. Find our more about this format at [HiGlass Docs](https://docs.higlass.io/data_preparation.html#bed-files). + +```javascript +{ + "tracks":[{ + "data": { + "url": "https://higlass.io/api/v1/tileset_info/?d=OHJakQICQD6gTD7skx4EWA", + "type": "beddb", + "genomicFields": [ + {"index": 1, "name": "start"}, + {"index": 2, "name": "end"} + ], + "valueFields": [ + {"index": 5, "name": "strand", "type": "nominal"}, + {"index": 3, "name": "name", "type": "nominal"} + ], + "exonIntervalFields": [ + {"index": 12, "name": "start"}, + {"index": 13, "name": "end"} + ] + }, + ... // other configurations of this track + }] +} +``` + + + + + +## Data Transform + + + Gosling supports a diverse set of data transforms, including + {GoslingSchema["definitions"]['DataTransform'].anyOf.map((d, i)=>{ + let name = d.$ref.replace('#/definitions/', '') + /** + seperate camel-case names. + e.g., "JSONParseTransform" => "JSON Parse Transform" + */ + name = name.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z])([A-Z][a-z])/g, '$1 $2') + // replace white space ' ' to '-' to avoid the %20 in url + return + {name} + {i==GoslingSchema["definitions"]['DataTransform'].anyOf.length-1 ? '. ': ', '} }) + } + + + +```javascript +{ + "tracks":[{ + "data": ..., + // a list of data transforms can be applied to the data + "dataTransform": [ + { "type": "filter", "field": "type", "oneOf": ["gene"] }, + { "type": "filter", "field": "strand", "oneOf": ["+"], "not": true } + ], + "mark": "rect", + ..., + }] +} +``` + +### Filter Transform + +Users can apply three types of filters: `oneOf`, `inRange`, `include`. +Each filter transform has the following properties: + +**Properties of One Of Filter** + + +**Properties of In Range Filter** + + +**Properties of Include Filter** + + +### Str Concat Transform + + + +### Str Replace Transform + + + +### Log Transform + + + +### Displace Transform + + + +### Exon Split Transform + + + +### Coverage Transform + + + +### JSON Parse Transform + + + +Apart from these data transforms, users can also aggregate data values (min, max, bin, mean, and count). [Read more about data aggregation](#x) + + +#### Types + +##### Type:Datum + + + +##### Type: BoundingBox + diff --git a/versioned_docs/version-0.11.0/genome-builds.md b/versioned_docs/version-0.11.0/genome-builds.md new file mode 100644 index 0000000..9134769 --- /dev/null +++ b/versioned_docs/version-0.11.0/genome-builds.md @@ -0,0 +1,47 @@ +--- +title: Genome +description: Specify the the genome your visualization uses. +--- +For Gosling to show the correct genomic axis range for your data, you must specify what genome or human genome assembly Gosling should use. + +## Human genome +You can specify which human genome assembly your data uses using the `assembly` property (default: `"hg38"`). + +```typescript +{ + "assembly": "hg38", // Globally define assembly to all tracks except ones that specify a certain assembly + "tracks": [{ + ..., "assembly": "hg19" // Use a different assembly for this track + }], + ... +} +``` + +Gosling currently supports the following six genome builds: `"hg38"`, `"hg19"`, `"hg17"`, `"hg16"`, `"mm10"`, `"mm9"`, and `"unknown"`. + +## Non-human genomes +For non-human genomes, you can specify custom chromosome sizes. For example, the E. coli genome has a single chromosome, which has a length of 4641652 bases. +``` typescript +{ + "assembly": [["chr1", 4641652], ["chr2", 323132]], // two chromosomes, one with length 4641652 nt, one with length 323132 + "tracks": [{ + ..., + }], + ... +} +``` + +You can also specify multiple chromosomes! + +``` typescript +{ + "assembly": [["U00096.3", 4641652], []], // The E. coli chromosome name is U00096.3 + "tracks": [{ + ..., + }], + ... +} +``` + + +When `{"assembly": "unknown"}`, the genomic axes do not display `chrN:` in labels. \ No newline at end of file diff --git a/versioned_docs/version-0.11.0/getting-started.md b/versioned_docs/version-0.11.0/getting-started.md new file mode 100644 index 0000000..19ff53c --- /dev/null +++ b/versioned_docs/version-0.11.0/getting-started.md @@ -0,0 +1,25 @@ +--- +title: Getting Started +slug: / +--- + +Gosling.js is a declarative grammar for interactive (epi)genomics visualization on the Web. + +To get started with Gosling, we recommend going through the [Create Single Track Visualization Tutorial](/tutorials). Then, you can explore examples in the [online editor](https://gosling.js.org), go through the [grammar guide](category/grammar-guide), and start building your own Gosling visualizations using the [grammar reference](reference) and [Javascript API](js-api) documentation. + +Please see [usage guide](usage) to learn about all the contexts in which Gosling can be used. + +## What is a grammar for data visualization? +Words are combined together into sentences based on their parts of speech and grammar rules. In a similar way, visual components (such as a coordinate axis, plot markers, and legend) have specific roles and are combined according to certain rules. You probably know these rules without realizing it! These roles and rules have been made explicit such as in the [Grammar of Graphics](https://link.springer.com/book/10.1007/0-387-28695-0). + +Similarly, *genomic* data visualizations can be understood as being made up of components which follow a set of rules. The **Gosling grammar** formalizes these rules for genomic data visualizations. + +How is the Gosling grammar used in practice? A Gosling visualization is defined using a **Gosling specification**, which is a JSON object. The structure and values within this JSON object are determined by the Gosling grammar. See the example below to see how parts of a Gosling specification corresponds to its visualization. + + + +## Javascript API + +**Gosling.js** takes the Gosling specification as an input and creates the visualization defined by it. You can programmatically interact with this visualization using **Javascript API functions**. + +For example, you can use an API function to make the visualization zoom to a particular genomic position, or you can subscribe to click events in the visualization. This is useful to building your own interactive visualizations with Gosling! \ No newline at end of file diff --git a/versioned_docs/version-0.11.0/js-api.md b/versioned_docs/version-0.11.0/js-api.md new file mode 100644 index 0000000..46ac88d --- /dev/null +++ b/versioned_docs/version-0.11.0/js-api.md @@ -0,0 +1,244 @@ +--- +title: JavaScript API +--- + +## GoslingComponent + +A React component which takes a Gosling specification and generates the visualization defined by it. + +```javascript +import { GoslingComponent} from 'gosling.js'; + + +``` + + +| Parameter | Type | Description | +| ----------------- | ------ | ------------------------------------------------------------------------ | +| `spec` | object | The [Gosling specification](reference) the component will create a visualization from | +| `padding` | number | Padding around the component | +| `margin` | number | Margin around the component | +| `border` | string | Border style of the component | +| `id` | string | Id of the component | +| `className` | string | CSS class to apply to the component | +| `theme` | object | See [themes](../../themes) | +| `urlToFetchOptions` | object | Each object follows the form `"{[url: string]: RequestInit}"` where [RequestInit](https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules_typedoc_node_modules_typescript_lib_lib_dom_d_.requestinit.html) is also an object. When fetching data from URL which matches a key in this object, Gosling will use the corresponding `RequestInit` when making the fetch request. | + + +## GoslingComponent ref + +`GoslingComponent` can take a [Ref](https://react.dev/learn/referencing-values-with-refs) which exposes an API which can be used to control or respond to changes in the +component. + +```javascript +import React, { useRef, useEffect } from "react"; +import { GoslingComponent} from 'gosling.js'; + +const gosRef = useRef(null) + + + +if (gosRef.current) { + // then you can use any Gosling API you want + // highlight-start + gosRef.current.api.exportPdf(); + // highlight-end + } +``` + +To find an working example, please visit [gosling-lang/gosling-react](https://github.com/gosling-lang/gosling-react). + +### zoomTo + +This function makes a view navigate to a specific genomic position with the animated transition. + +```javascript +gosRef.current.zoomTo(viewId: string, position: string, padding?: number, duration?: number) +``` + +**Parameters** + +| Parameter | Type | Description | +| --- | --- | --- | +| `viewId` | string | The ID of a view that you want to control. This ID is consistent to what you specify as `track.id` in your spec. | +| `position` | string | The genomic position that your view should be navigated to. You can either specify chromosome (e.g., `chr1`) or a chromosome and range pair (e.g., `chr1:1-10000`). | +| `padding?` | number | This determines the padding around the specified position. The unit of this number is a base pair (Default: `0`). | +| `duration?` | number | A duration of the animated transition in ms (Default: `1000`). | + +### zoomToExtent + +```javascript +gosRef.current.api.zoomToExtend(viewId: string, duration?: number) +``` + +This function zooms out the specified view to see entire genome. + +**Parameters** + +| Parameter | Type | Description | +| --------- | ------ | ---------------------------------------------------------------------------------------------------- | +| `viewId` | string | The ID of a view that you want to control. This ID is consistent to what you specify as `track.id` in your spec. | +| `duration?` | number | A duration of the animated transition in ms (Default: `1000`). | + +### zoomToGene + +```javascript +gosRef.current.zoomToGene(viewId: string, gene: string, padding?: number, duration?: number) +``` + +This function makes a view navigate to a certain gene with animated transition. + +**Parameters** + +| Parameter | Type | Description | +| --------- | ------ | ---------------------------------------------------------------------------------------------------- | +| `viewId` | string | The ID of a view that you want to control. This ID is consistent to what you specify as `track.id` in your spec. | +| `gene` | string | The target gene symbol that your view should be navigated to (e.g., `MYC`). | +| `padding?` | number | This determines the padding around the specified position. The unit of this number is a base pair (Default: `0`). | +| `duration?` | number | A duration of the animated transition in ms (Default: `1000`). | + +### getViewIds + +```javascript +gosRef.current.getViewIds(); +``` + +**Return** + +Returns a list of IDs that are assigned to individual views. +This function can be used prior to navigation functions to check whether certain view IDs exist. + +### exportPng + +```javascript +gosRef.current.exportPng(transparentBackground?: boolean) +``` + +**Parameters** + +| Parameter | Type | Description | +| ------------------------ | ------- | ------------------------------------------------------------------------- | +| `transparentBackground?` | boolean | Determine if the background should be transparent or not (Default: `false`). | +### exportPdf + +```javascript +gosRef.current.exportPdf(transparentBackground?: boolean) +``` + +**Parameters** + +| Parameter | Type | Description | +| ------------------------ | ------- | ------------------------------------------------------------------------- | +| `transparentBackground?` | boolean | Determine if the background should be transparent or not (Default: `false`). | +### getCanvas + +```javascript +gosRef.current.getCanvas(options?: { resolution?: number; transparentBackground?: boolean }) +``` + +**Parameters** + + +| Parameter | Type | Description | Default | +| ------------------------- | ------- | ---------------------------------------------------------------------------------------------------- | ------- | +| `options.resolution?` | number | Relative resolution of Gosling.js visualization | `4` | +| `options.transparentBackground?` | boolean | Determine if the background should be transparent or not | `false` | + +**Return** +Returns a canvas that renders Gosling.js visualization: + +```javascript +{ + canvas: HTMLCanvasElement; + canvasWidth: number; + canvasHeight: number; + resolution: number; +} +``` + +### subscribe + +```javascript +gosRef.current.subscribe(eventName:string, callback: (msg:string, eventData)=>void) +``` + +Subscribe the callback function to the specified event. + +**Parameters** + +| Parameter | Type | Description | +| --- | --- | --- | +| `eventName` | string | Specify the event using its name. One of `"mouseOver"`, `"rangeSelect"`, `"click"`, `"rawData"`, `"onNewTrack"`, `"onNewView"`, `"location"`. | +| `callback` | `(msg:string, eventData)=>void` | A function that is subscribed to the specified event. | + - For `"onNewTrack"` and `"onNewView"`, the `eventData` contains just the `id` of a track or view that has been added. These API functions can be useful if you want to know when certain tracks and views have been added. + + ```javascript + { + id: string; + } + ``` + + - For `"rawData"`, the `eventData` stores columnar data that has been used internally in Gosling to display the view: + + ```javascript + { + id: string, + data: {[k:string]: number|string}[] + } + ``` + + - For `"mouseOver"` or `"Click"`, the `eventData` stores the genomic position of the event and the columnar data corresponding to the visual mark that is either clicked or mouse overed. + + ```javascript + { + id: string, + data: {[k:string]: number|string}[], + genomicPosition: {chromosome: string, position: number} + } + ``` + + - For `"rangeSelect"`, the `eventData` stores the genomic range of the range select event and the columnar data corresponding to all selected visual marks that are within a range brush. + + ```javascript + { + id: string, + data: {[k:string]: number|string}[], + genomicRange: [ + {chromosome: string, position: number}, + {chromosome: string, position: number} + ] + } + ``` + + - For `"location"`, the `eventData` contains the genomic range of a track. Every time a track axis range changes, this + API gets updated. For example, if a user zooms in to a track, the axis range changes, and the location API gets updated. + If the axis starts before the first chromosome, the start of the genomic range will return the beginning of the first chromosome. + If the axis ends after the last chromosome, the end of the genomic range will be the last position in the last chromosome. + + ```javascript + { + id: string, + genomicRange: [ + {chromosome: string, position: number}, + {chromosome: string, position: number} + ] + } + ``` + +### unsubscribe + +```javascript +gosRef.current.unsubscribe(eventName:string) +``` + +Unsubscribe the callback function from the specified event. +**Parameters** + +| Parameter | Type | Description | +| --- | --- | --- | +| `eventName` | string | Name of the event. One of `"mouseOver"`, `"rangeSelect"`, `"click"`, `"rawData"`, `"location"`. | diff --git a/versioned_docs/version-0.11.0/mark.mdx b/versioned_docs/version-0.11.0/mark.mdx new file mode 100644 index 0000000..f4fdc5b --- /dev/null +++ b/versioned_docs/version-0.11.0/mark.mdx @@ -0,0 +1,399 @@ +--- +title: Mark +description: Basic elements like point, line, bar, text, triangle. +--- + + +Visual marks (e.g., points, lines, and bars) are the basic graphical elements of a visualization. Note here that we call one visualization a `track` in Gosling. +The core of constructing a visualization is to bind selected **data fields** to the **visual channels** (e.g., size, color, and position) of a chosen **mark type**. + +The `mark` property of a track is defined by a string that describes the mark type. +```javascript +{ + "tracks":[ + /** a track using rect marks */ + { + "mark": "rect", + ... // other track properties + }, + + /** a track using line marks */ + { + "mark": "line", + ... // other track properties + } + ], + ... // other visualization properties +} +``` +Gosling supports the following primitive `mark` types: [Point](#point), [Line](#line), +[Area](#area), [Bar](#bar), [Rect](#rect), [Text](#text), [Link](#link), [Triangle](#triangle). + +## Point +[:link: source code](https://github.com/gosling-lang/gosling.js/blob/master/src/core/mark/point.ts) + +The mark `point` represents one data point using a circular shape. Visual channels of the circle, such as radius, color, and vertical/horizontal position, are used to represent values of the data point. Popular charts such as scatter plots and bubble charts use `point` mark. + +point_example + +[Try it in the online editor]() + +```javascript +// an example of point marks +{ + "tracks":[{ + "data": { + "url": ..., + "type": ... + }, + // mark type + "mark": "point", + // mark visual channels + "x": { + "field": "position", // data field + "type": "genomic", // type of data field + "axis": "top" + }, + "y": { + "field": "peak", + "type": "quantitative" + }, + ... // other encodings and styles + }] +} +``` +## Line +[:link: source code](https://github.com/gosling-lang/gosling.js/blob/master/src/core/mark/line.ts) + +The mark `line` represents a set of data points using a line that connects these points. + +line_example + +[Try it in the online editor]() + +```javascript +// an example of using line marks +{ + "tracks":[{ + "data": { + "url": ..., + "type": ... + }, + // specify mark type + "mark": "line", + // specify mark visual channels + "x": { + "field": "position", // data field + "type": "genomic", // type of data field + "axis": "top" // position of the x axis + }, + "y": { + "field": "peak", + "type": "quantitative" + }, + ... // other encodings and styles + }] +} +``` +## Area +[:link: source code](https://github.com/gosling-lang/gosling.js/blob/master/src/core/mark/area.ts) + +The mark `area` represents a set of data points as an area shape. The upper edge of the area shape is a line that connects all the points and the bottom edge is the x axis. + +area_example + +[Try it in the online editor]() + +```javascript +// an example of area marks +{ + "tracks":[{ + "data": { + "url": ..., + "type": ... + }, + // mark type + "mark": "area", + // mark visual channels + "x": { + "field": "position", // data field + "type": "genomic", // type of data field + "axis": "top" + }, + "y": { + "field": "peak", + "type": "quantitative" + }, + "color": ..., + ... // other encodings and styles + }] +} +``` + +## Bar +[:link: source code](https://github.com/gosling-lang/gosling.js/blob/master/src/core/mark/bar.ts) + +The `bar` mark is designed for drawing bar charts. Each bar shows the value of one data point through its height. + +bar_example + +[Try it in the online editor]() + +```javascript +// an example of area marks +{ + "tracks":[{ + "data": { + "url": ..., + "type": ... + }, + // mark type + "mark": "bar", + // mark visual channels + "x": { + "field": "position", // data field + "type": "genomic", // type of data field + "axis": "top" + }, + // y indicates the visual encoding of the bar height + "y": { + "field": "peak", + "type": "quantitative" + }, + ... // other encodings and styles + }] +} +``` + +## Rect +[:link: source code](https://github.com/gosling-lang/gosling.js/blob/master/src/core/mark/rect.ts) + +The `rect` mark is designed for representing genomic intervals using rectangular shapes. Left and right edge of the rectangle indicate the start and end genomic positions, respectively. + +rect_example + +[Try it in the online editor]() + +```javascript +// an example of rect marks +{ + "traks":[ + { + "data": ..., + // specify the type of mark + "mark": "rect", + // bind the color of each rect mark to the data field: Stain + "color": { + "field": "Stain", + "type": "nominal",, + "domain": ["gneg", "gpos25", "gpos50", "gpos75", "gpos100", "gvar"], + "range": ["white", "#D9D9D9", "#979797", "#636363", "black", "#A0A0F2"] + }, + // bind the start position of each rect mark to the data field: chromStart + "x": { + "field": "chromStart", + "type": "genomic", + "axis": "top" + }, + // bind the end position of each rect mark to the data field: chromEnd + "xe": { + "field": "chromEnd", "type": "genomic" + }, + "size": { + "value": 30 // specify the constant height of each rect mark + } + }, + ... // other encodings and styles of the rect mark + ], +} + +``` + +The `rect` mark can also be used for the matrix visualization of genomic interaction data. + +rect_matrix_example + +[Try it in the online editor]() + +## Text +[:link: source code](https://github.com/gosling-lang/gosling.js/blob/master/src/core/mark/text.ts) + +The `text` mark is designed to display textual labels. For example, gene names and nucleobases can be displayed with `text` marks. + +text_example + +[Try it in the online editor]() + +```javascript +{ + "tracks":[{ + "data": ..., + + // specify the type of mark + "mark": "text", + + // specify styles of the mark + "style": {"textStrokeWidth": 0}, + + // bind visual channels to corresponding data fields + "x": {"field": "start", "type": "genomic", "axis": "top"}, + "xe": {"field": "end", "type": "genomic"}, + "y": {"field": "count", "type": "quantitative"}, + "color": { + "field": "base", + "type": "nominal", + "domain": ["A", "T", "G", "C"] + }, + + // specify the text content + "text": {"field": "base", "type": "nominal"} + }] +} +``` + +## Link +[:link: source code](https://github.com/gosling-lang/gosling.js/blob/master/src/core/mark/link.ts) + +The **link** mark is designed to show connections between chromosomes. +Gosling supports both `"withinLink"`, links within one track, and `"betweenLink"`, links between different tracks. + +link_example + +[Try it in the online editor]() + + +```javascript +{ + "tracks": [ + { + "data": {...}, + + "mark": "withinLink", // specify the mark type + + // bind visual channels to corresponding data fields + + // x and xe indicates the start point of the arc + "x": { + "field": "s1", + "type": "genomic", + "domain": {"chromosome": "1"}, + "axis": "top" + }, + "xe": {"field": "e1", "type": "genomic"}, + + // x and xe indicates the end point of the arc + "x1": { + "field": "s2", + "type": "genomic", + "domain": {"chromosome": "1"}, + "axis": "top" + }, + "x1e": {"field": "e2", "type": "genomic"}, + + // specify styles of the mark + "stroke": {"value": "steelblue"}, + "style": {"circularLink": true} + } + ] +} +``` + +When connections between points on **different chromosomes** need to be created, the `genomicFieldsToConvert` property should be used at the time of loading data. + +:::caution + Currently `genomicFieldsToConvert` is experimental and only supported in CSV and JSON data. +:::caution + + + +```javascript + { + "tracks": [{ + "title": "Visualization with data loaded via JSON object", + "data": { + "type": "json", + // convert chromosome fields into genomic fields + // highlight-start + "genomicFieldsToConvert": [ + { + "chromosomeField": "chrStart", + "genomicFields": ["start1", "end1"] + }, + { + "chromosomeField": "chrEnd", + "genomicFields": ["start2", "end2"] + } + ], + // highlight-end + "values": [ + { + "chrStart": "chr1", + "start1": 1221574, + "end1": 1221575, + "chrEnd": "chr13", + "start2": 36001515, + "end2": 36001516 + }, + { + "chrStart": "chr10", + "start1": 9257519, + "end1": 9257520, + "chrEnd": "chr18", + "start2": 82441834, + "end2": 82441835 + } + ] + }, + "style": {"linkStyle": "elliptical"}, + "mark": "withinLink", + // connect chrStart (chr1, chr10) to chrEnd (chr13, chr18) + // highlight-start + "x": {"field": "start1", "type": "genomic"}, + "xe": {"field": "end2", "type": "genomic"}, + // highlight-end + "stroke": {"value": "magenta"}, + "width": 500, + "height": 180 + }] + } +``` + +[Try it in the online editor]() + +## Triangle +[:link: source code](https://github.com/gosling-lang/gosling.js/blob/master/src/core/mark/triangle.ts) + + +triangle + +[Try it in the online editor]() + +Gosling supports three types of triangle marks: `triangleLeft`, `triangleRight`, `triangleBottom` + +```javascript +{ + "tracks": [ + { + "data": {...}, + + "mark": "triangleRight", // specify the mark type + + // bind visual channels to corresponding data fields + + /** x indicates the position of the mark on a genomic axis */ + "x": { + "field": "end", + "type": "genomic", + "axis": "top" + }, + /** the size of the triangle */ + "size": {"value": 15} + }, + + { + /** another track */ + }, + ... + ] +} +``` diff --git a/versioned_docs/version-0.11.0/non-gos-vis.mdx b/versioned_docs/version-0.11.0/non-gos-vis.mdx new file mode 100644 index 0000000..515cc92 --- /dev/null +++ b/versioned_docs/version-0.11.0/non-gos-vis.mdx @@ -0,0 +1,42 @@ +--- +title: Integrating non-Gosling visualizations +--- + +import {TableWrapper} from '@site/react-components/DocComponments/table' +import GoslingSchema from './assets/gosling.schema.json' + +# Integrating non-Gosling visualizations + +You may want to visualize a non-Gosling visualization within a Gosling visualization, such as showing a lineage tree along with multiple sequences. + +In Gosling, you can do this by using `DummyTrack` as a placeholder to create space for your non-Gosling visualization. +Your non-Gosling visualization can then be overlaid on top of the `DummyTrack` using [JS API functions](./js-api) to +get the position of the placeholder. + +:::caution +`DummyTrack` can only be used with a linear `layout` at the moment. +::: + +[DummyTrack demo in the Editor](https://gosling-lang.github.io/gosling.js/?example=doc_dummy_track) + +Here's a `DummyTrack` specification example +```javascript +"tracks": [ + { + "type": "dummy-track", + "title": "Placeholder", + "id": "my_track", + "height": 200, + "width": 300, + "style": {"background": "#e6e6e6", "textFontSize": 8, "textFontWeight": "normal"} + } +], + +``` + +`DummyTrack` properties: + + +`DummyTrack` has a `style` property which can take an object with the following properties: + + \ No newline at end of file diff --git a/versioned_docs/version-0.11.0/public-datasets.md b/versioned_docs/version-0.11.0/public-datasets.md new file mode 100644 index 0000000..eb497e4 --- /dev/null +++ b/versioned_docs/version-0.11.0/public-datasets.md @@ -0,0 +1,80 @@ +--- +title: Public Datasets +--- +To help using Gosling for the first time, this document provides some useful datasets that can be directly used in Gosling. + +For the flexible data exploration, Gosling supports two different kinds of datasets: + +1. **Plain Datasets**: For the convenience, Gosling allows to use several data formats directly in the system without requiring to preprocess data or set up a dedicated server (i.e., HiGlass server). + + +2. **Pre-aggregated Datasets**: To allow scalable data exploration, Gosling supports using HiGlass' preprocessed datasets which requires the dedicated HiGlass server. + +In this document, we provide a list of public datasets in those two classes. For the pre-aggregated ones listed below, we provide them in our Gosling's server, so you do not need to set up your own HiGlass server to visualize them. + +> **Tip.** When you are using online editor, you can check out a "Data Preview" panel on the right-bottom part of the interface to see how the actual data looks like. + +## List of Plain Datasets +- Type: CSV +- URL: https://raw.githubusercontent.com/sehilyi/gemini-datasets/master/data/UCSC.HG38.Human.CytoBandIdeogram.csv +- Description: hg38 cytoband +- Soruce: UCSC +--- +- Type: BigWig +- URL: https://s3.amazonaws.com/gosling-lang.org/data/4DNFIMPI5A9N.bw +- Source: 4DN (https://data.4dnucleome.org/files-processed/4DNFIMPI5A9N/#file-overview) +--- +- Type: CSV +- URL: https://s3.amazonaws.com/gosling-lang.org/data/COVID/NC_045512.2-Genes.csv +- Description: Gene Annotations of SARS-CoV-2 in NC_045512.2 +- Source: https://genome.ucsc.edu/covid19.html +--- +- Type: CSV +- URL: https://raw.githubusercontent.com/sehilyi/gemini-datasets/master/data/circos-segdup-edited.txt +- Description: Circos Segmental Duplication +- Source: https://github.com/nicgirault/circosJS/blob/master/demo/data/segdup.csv +## List of Pre-aggregated Datasets +- Type: BEDDB (Originally, a bed file) +- URL: https://server.gosling-lang.org/api/v1/tileset_info/?d=gene-annotation +- Description: hg38 gene annotation +- Source: http://hgdownload.cse.ucsc.edu/goldenPath/hg38/database/ + +--- +- Type: Multivec (Originally, multiple bigwig files) +- URL: https://server.gosling-lang.org/api/v1/tileset_info/?d=cistrome-multivec +- Description: Multiple samples of ChIP-seq and DNase-seq analysis +- Source: Cistrome Browser (http://cistrome.org/db/#/) + +--- + +- Type: Multivec (Originally, a FASTA file) +- URL: https://server.gosling-lang.org/api/v1/tileset_info/?d=sequence-multivec +- Description: hg38 sequence +- Source: UCSC (https://hgdownload.soe.ucsc.edu/goldenPath/hg38/bigZips/) + +--- + +- Type: BEDDB (Originally, a VCF file) +- URL: https://server.gosling-lang.org/api/v1/tileset_info/?d=clinvar-beddb +- Description: hg38 ClinVar data +- Source: https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/ + +--- +- Type: Multivec (Originally, a VCF file) +- URL: https://server.gosling-lang.org/api/v1/tileset_info/?d=clinvar-multivec +- Description: Density of ClinVar data by seven pathogenicity categories +- Source: https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh38/ + +```ts +categories: [ + 'Benign', + 'Benign/Likely_benign', + 'Likely_benign', + 'Uncertain_significance', + 'Likely_pathogenic', + 'Pathogenic/Likely_pathogenic', + 'Pathogenic', + 'risk_factor', + 'Conflicting_interpretations_of_pathogenicity' +] +``` diff --git a/versioned_docs/version-0.11.0/reference.mdx b/versioned_docs/version-0.11.0/reference.mdx new file mode 100644 index 0000000..0e9cf79 --- /dev/null +++ b/versioned_docs/version-0.11.0/reference.mdx @@ -0,0 +1,443 @@ +--- +title: Grammar Reference +description: Documentation of the Gosling grammar. +--- + +import { TableWrapper } from "@site/react-components/DocComponments/table"; +import GoslingSchema from "./assets/gosling.schema.json"; + +This is the reference documentation for the Gosling grammar. + +A Gosling visualization is created using a **Gosling specification**, which is a JSON object. +The possible keys and values of the JSON object are determined by the Gosling grammar. + +## Specification Root + +The root object a Gosling specification is a [View](#view) with the following optional properties. + +| property | type | description | +| ----------- | ------ | ---------------------------------------------------------- | +| `title` | string | Title of the visualization | +| `subtitle` | number | Subtitle of the visualization, shown below the title | +| `description` | number | Description of the visualization, shown below the subtitle | + +#### Example: + +```javascript +{ + // highlight-start + "title": "My First Gosling Visualization", + "subtitle": "The first of many", + "description": "This describes what you see", + // highlight-end + "tracks": [ + ... + ] +} +``` + + + +## View + +There are two types of views: **track-containing views**, and **view-containing views**. + +### Track-containing view + +A view which contains the "track" property defines the genomic location for all the tracks it contains. + +:::info +Track-containing views can also take any [Track](#track) property, which the tracks within it will inherit +::: + +| property | type | description | +| --------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `tracks` | ([Track](#track) \| Track-containing [View](#view))[] | The tracks or views that are contained within the view. The axes of these tracks and views will be synced together. **Required**. | +| `alignment` | string | One of `"stack"` or `"overlay"`. If `"overlay"` is set, the tracks within the view will be overlaid on top of each other. If `"stack"` is set, the tracks will be placed next to each other. **Default:** `"stack"` | + +#### Example + +This is an outline of a track-containing view. + +```javascript +{ + // Optional properties from Track that the tracks will inherit + "xDomain": {"chromosome": "chr1", "interval": [1, 3000500]}, + + // highlight-start + // Track-containing view specific properties + "alignment": "overlay", // How the tracks will be aligned + "tracks": [ + ... + ] + // highlight-end +} +``` + +### View-containing view + +A view can also contain multiple views. The genomic axes of these sub-views will not be synced together. + +| property | type | description | +| ----------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `views` | [View[]](#view) | Views to show within the view. If a view takes this property, the `"tracks"` property should not be set. In addition, the view cannot contain any [Track](#track) properties. | +| `arrangement` | string | One of `"parallel"`, `"serial"`, `"vertical"`, `"horizontal"` | + +#### Example +This is an outline of a Gosling specification containing multiple views. + +```javascript +{ + "arrangement": "horizontal", // can be "parallel", "serial", "vertical", "horizontal" + "views": [ + ... + ] +} +``` + +### Optional properties + +Regardless of whether a view contains tracks or views, a view can these additional properties: + + + + + + + +## Track + +A **`track`** is a unit building block in Gosling which can be represented as a bar chart, a line chart, or an ideogram. +The genomic range of multiple tracks can be synchronized when the tracks belong to the same [View](#view). + +### Track layout properties + +These properties specify the layout and data to be used in the track. + + + + + + +### Track encoding properties + +These properties specify how to associate data to visual elements. + + + +#### Example + +This is a Gosling specification of a view containing a single track. + +``` javascript +{ + "tracks": [ + // highlight-start + { + "layout": "linear", + "width": 800, + "height": 180, + "data": { + "url": "https://resgen.io/api/v1/tileset_info/?d=UvVPeLHuRDiYA3qwFlm7xQ", + "type": "multivec", + "row": "sample", + "column": "position", + "value": "peak", + "categories": ["sample 1"], + "binSize": 5 + }, + "mark": "bar", + "x": {"field": "start", "type": "genomic"}, + "xe": {"field": "end", "type": "genomic"}, + "y": {"field": "peak", "type": "quantitative"} + } + // highlight-end + ] +} +``` + +### Track template property + +A track can use a preset track template using this property. + +| property | type | description | +| -------- | ------ | ----------------------------------- | +| `template` | string | The template to use with the track. | + +### DummyTrack + +A DummyTrack is a track that is used a placeholder in a Gosling visualization. [Non-Gosling visualizations](non-gos-vis) can be incorporated using it. + + + +#### Example +This is a Gosling specification containing a single DummyTrack. + +``` javascript + +{ + "tracks": [ + // highlight-start + { + "type": "dummy-track", + "title": "Placeholder", + "id": "my_track", + "height": 200, + "width": 300, + "style": {"background": "#e6e6e6", "textFontSize": 8, "textFontWeight": "normal"} + } + //highlight-end + ] +} + +``` + +## Visual Channel + +Different visual channels are supported depending on the mark type. + +| mark type | supported visual channels | +| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| [`point`](/docs/mark#point) | [`x`](#x), [`y`](#), [`row`](#row), [`size`](#size), [`color`](#color), [`strokeWidth`](#strokeWidth), [`opacity`](#opacity) | +| [`line`](/docs/mark#line) | [`x`](#x), [`y`](#y), [`row`](#row), [`color`](#color), [`strokeWidth`](#strokeWidth) | +| [`rect`](/docs/mark#rect) | [`x`](#x), [`xe`](#x), [`row`](#row), [`color`](#color), [`strokeWidth`](#strokeWidth), [`opacity`](#opacity) | +| [`bar`](/docs/mark#bar) | [`x`](#x), [`y`](#y), [`row`](#row), [`color`](#color), [`strokeWidth`](#strokeWidth), [`opacity`](#opacity) | +| [`area`](/docs/mark#area) | [`x`](#x), [`y`](#y), [`row`](#row), [`color`](#color), [`strokeWidth`](#strokeWidth) | +| [`link`](/docs/mark#link) | [`x`](#x), [`xe`](#x), [`x1`](#x1-y1-x1e-y1e), [`x1e`](#x1-y1-x1e-y1e), [`color`](#color), [`opacity`](#opacity) | +| [`triangle`](/docs/mark#triangle) | [`x`](#x), [`xe`](#x), [`row`](#row), [`size`](#size), [`color`](#color), [`opacity`](#opacity) | +| [`text`](/docs/mark#text) | [`x`](#x), [`xe`](#x), [`row`](#row), [`color`](#color), [`opacity`](#opacity) | + +### ChannelValue + + +### X +X specifies a mark's position in the horizontal direction. + + + +#### DomainInterval + + +#### DomainChr + + +#### DomainChrInterval + + + +### Y +Y specifies a mark's position in the vertical direction. + + + + +### Text + + + +### Color + + + +### Size + + + +### Row + +Row is used with to stratify a visualization with categorical values. + + + +### Opacity + + + +### Stroke + + + +### StrokeWidth + + + +### VisibilityCondition + +These are for [semantic zoom](semantic-zoom). + +#### SizeVisibilityCondition + + + +#### ZoomLevelVisibilityCondition + + + +### Tooltip + + + + + +## Style + +A [View](#view) and [Track](#track) have a `style` property which can be set to an object with the following properties. + + + +#### linePattern + + + + +### EventStyle + + + +### Brush + + + +### DummyTrackStyle + +A [DummyTrack](#dummytrack) can take an style object with the following properties: + + + +## Data + +### JsonData + + + +#### Datum + + + +### CsvData + + + +### BedData + + + +### BigWigData + + + +### MultivecData + + + +### BeddbData + + + +### VectorData + + + +### MatrixData + + + +### BamData + + + +### VcfData + + + +### GffData + + + + + +## DataTransform + +### OneOfFilter + + + +### IncludeFilter + + + +### StrConcatTransform + + + +### StrReplaceTransform + + + +### LogTransform + + + +### DisplaceTransform + + + +#### boundingBox + + + +### ExonSplitTransform + + + +### GenomicLengthTransform + + + +### SvTypeTransform + + + +#### firstBp + + + +#### secondBp + + + +### CoverageTransform + + + +### JsonParseTransform + + diff --git a/versioned_docs/version-0.11.0/semantic-zoom.mdx b/versioned_docs/version-0.11.0/semantic-zoom.mdx new file mode 100644 index 0000000..8073584 --- /dev/null +++ b/versioned_docs/version-0.11.0/semantic-zoom.mdx @@ -0,0 +1,81 @@ +--- +title: Semantic Zoom +description: Dynamically switch between different representations +--- + +import {TableWrapper} from '@site/react-components/DocComponments/table' +import GoslingSchema from './assets/gosling.schema.json' + +## Why Semantic Zoom + +Advanced zooming technique, called Semantic Zooming, allows users to dynamically switch between visual representations upon zooming in and out. + +For example, detailed information of nucleotide bases can be shown with textual labels when zoomed in while it can be switched to show the overall distribution of the bases using a stacked bar chart when zoomed out. + + +### Example: Sequence Visualization +semantic_zoom_fine + +semantic_zoom_coarse + +[Try this example in the online editor]() + +### Example: Cyto Band +semantic_zoom_coarse + +semantic_zoom_fine + +**Top**: only `rect` marks are represented; **Bottom:** `text` and `triangle` marks are presented when zooming in to show more details. +[Try this example in the online editor]() + +## Semantic Zooming in Gosling + +Semantic zoom is achieved by controlling `alignment` and `visibility`. +[alignment](./composition#align-multiple-tracks-in-one-view) enables users to overlap multiple marks on top of one other, thus allowing users to create different visualizations for the same data. +`visibility` controls the visibility of visual marks, thus allowing the switch between different visualizations based on the zoom level. + + +The `visibility` of corresponding marks are decided by whether the `measure` of `target` and the `threshold` satisfy the specified `operation`. +For example, in the code below, text marks only show when the width (`measure`) of the mark (`target`) is greater-than (`operation`) 20 (`threshold`). + +```javascript +{ + // example of semantic zoom: show text marks when zooming in + + "tracks":[{ + "data":..., + "x": ..., + "y": ..., + // overlay overlaps bar marks and text marks for the same data + "alignment": "overlay", + "tracks":[ + //a track with bar marks always shows + { + "mark": "bar", + ... + }, + //a track with text marks only shows when the width of mark is greater than 20 + { + "mark": "text", + "visibility": [{ + "operation": "greater-than", + "measure": "width", + "threshold": "20", + "target": "mark" + }] + } + ] + }] +} +``` + +Gosling supports users in controlling the visibility based on either +the size of the specified target (`{"measure": "width"|"height"}`) +or the zoom level of the specified target (`{"measure": "zoomLevel"}`). + +### Control Visibility through Size + + +### Control Visibility through Zoom Level + + diff --git a/versioned_docs/version-0.11.0/usage.md b/versioned_docs/version-0.11.0/usage.md new file mode 100644 index 0000000..3d27e20 --- /dev/null +++ b/versioned_docs/version-0.11.0/usage.md @@ -0,0 +1,108 @@ +--- +title: Usage +--- + +# Usage + +Gosling can be used and deployed in a variety of contexts. + +- In the [online editor](#online-editor) +- In Python using [Gos](https://gosling-lang.github.io/gos/) +- In a [HTML page](#html) +- In a [React application](#react) + +## Online Editor + +You can visit the [online editor](https://gosling.js.org) to start trying Gosling immediately. + +### Load a Gosling Spec From Your Github Gist + +1. To load a spec you first have to create a gist with a file named gosling.js\* that specifies the spec. +1. You can additionally specify a `readme.md` file to describe your spec. +1. Also be sure to give your gist a fabulous title. It'll be shown in the gosling editor. + You can then open your visualization at http:///?gist=/. + + For example, https://gosling.js.org/?gist=wangqianwen0418/1cc79f00990806f07b379ae6a7c7b7b3 + +## HTML + +Gosling can be embedded directly into your HTML page by adding gosling.js and several other dependencies in script tags. + +```html + + + + Gosling Visualization + + + + +
+ + + +``` + +## React + +Beginning with version 0.9.30, Gosling now supports React v18 (You can still use React v16 or v17). +If you are using a Gosling version prior to 0.9.30, please continue to use React v16. + +Install `gosling.js` and its dependent libraries: + +```sh +yarn add gosling.js higlass pixi.js react@18 react-dom@18 +``` + +Add the following stylesheet to your base `html` file: + +```html + + + +``` + +Use the Gosling.js' react component to visualize your data: + +```js +import { GoslingComponent } from "gosling.js"; +function App() { + return ; +} +``` + +Please visit [gosling-react](https://github.com/gosling-lang/gosling-react) to find detailed instruction on using React. diff --git a/versioned_docs/version-0.11.0/user-interaction.md b/versioned_docs/version-0.11.0/user-interaction.md new file mode 100644 index 0000000..6c98c12 --- /dev/null +++ b/versioned_docs/version-0.11.0/user-interaction.md @@ -0,0 +1,134 @@ +--- +title: User Interaction +--- + +## Zooming and Panning + + +Each visualization in Gosling supports the Zooming and Panning interaction. +Users can zoom in/out a visualization using the scrolling up/down actions. +Users can pan by clicking on the visualization and then drag it in the desired direction. + +Zooming and panning are controlled through the `static` property, which has a default value of `false`. +When `static = true`, zooming and panning are disabled. +Users can set the `static` property of all tracks at the root level or specify it in a single track definition. +```javascript +{ + "static": true, //disable zoom & pan for all tracks + "tracks": [ + { + "static": false, // enable zoom & pan for this track + ... + }, + { + ... + }, + ... + ] +} +``` + +## Linking Views + + +When views/tracks are linked, the zooming and panning performed in one view/track will be automatically applied to the linked views/tracks. + +[Try it in the online editor]() + +Views and tracks can be linked through an user-assigned id. +This id is assigned to a `track` through the `x.linkingId` property, and assigned to a `view` through the `linkingId` property. + +```javascript +// linking serveral tracks +{ + "tracks":[ + // track A + { + "data": ..., + "mark": "rect", + "x": { + ..., // other properties of x channel + "linkingId": "a unique string" // assign a linking id for the track A + } + }, + // track B + { + "data": ..., + "mark": "point", + "x": { + ..., // other properties of x channel + "linkingId": "a unique string" // the same linking id links track A and track B + } + }, + ... // other tracks + ] +} +``` + +```javascript +// linking views and tracks +{ + "views": [ + { + // view A + "linkingId": "detail", + .... + }, + { + // view B + "linkingId": "detail", + .... + }, + { + // view C + "tracks":[ + { + // this track wil be linked to view A and view B + "x": {"linkingId": "detail", ...}, + ... + }, + {...} // without the linkingId, this track will not be linked + ] + } + ] +} +``` + +## Brushing and Linking +Users can use **brushing** to select a subset of the data items using a rectangle. Users can modify the left and right edge of the rectangle to modify the selection. The selected data items can be linked to data items in another track. + +[Try it in the online editor]() + +```javascript +{ + "tracks":[ + // track A + { + "data": ..., + "mark": "line", + ..., + + // create a rectangle brush + "alignment": "overlay", + "tracks": [ + {}, // this dummy object cannot be removed + { + "mark": "rect-brush", + "x": {"linkingId": "linking-with-brush"}, // assign a unique id to the brush + "color": {"value":"steelBlue"} + } + ] + }, + // track B + { + "data": ..., + "mark": "point", + "x": { + ..., // other properties of x channel + "linkingId": "a unique string" // the same linking id links track B and the brush in track A + } + }, + ... // other tracks + ] +} +``` \ No newline at end of file diff --git a/versioned_docs/version-0.11.0/visual-channel.mdx b/versioned_docs/version-0.11.0/visual-channel.mdx new file mode 100644 index 0000000..8584c93 --- /dev/null +++ b/versioned_docs/version-0.11.0/visual-channel.mdx @@ -0,0 +1,210 @@ +--- +title: Visual Channel +description: Associate marks to data and change how marks look. +--- + +import {TableWrapper} from '@site/react-components/DocComponments/table' +import GoslingSchema from './assets/gosling.schema.json' + +The visual appearance of a mark is controlled by a set of visual channels (e.g., size, position, and color). +One visual channel can be either: +- bound to a data field (as shown in line 13-16) +- assigned a constant value (as shown in line 23). + +```javascript +// an example configuration for a line chart (x and y are encoded) + +{ + "tracks":[{ + "data": { + "url": ..., + "type": ... + }, + // specify the mark type + "mark": "line", + + // visual channel 'x' is bound to a genomic data field + // highlight-start + "x": { + "field": "position", + "type": "genomic" + }, + // highlight-end + // visual channel 'y' is bound to a quantitative data field called "peak" + "y": { + "field": "peak", + "type": "quantitative" + }, + // visual channel color is assigned a constant value + // highlight-start + "color": {"value": "steelblue"} + // highlight-end + }] +} + +``` + +## Encode a Visual Channel + +To bind a visual channel to a data field, Gosling creates a mapping from the values of the data field (e.g., `[gnes, gpos25, gpos50, ...]`) to the values of the visual channel (e.g., the position of a bar). +We call the values of a data field **domain** and the values of a visual channel **range**. + +For example, the code below creates a mapping from the data `field` "Stain" to the color of the `rect` mark. +"gneg" will show as a white rect mark, "gpos100" will show as a black rect mark. +```javascript +{ + "tracks": [{ + "mark": "rect", + "color": { + "field": "Stain", + "type": "nominal", + "domain": ["gneg", "gpos25", "gpos50", "gpos75", "gpos100", "gvar"], + "range": ["white", "#D9D9D9", "#979797", "#636363", "black", "#A0A0F2"] + }, + ... // other visual channels + }] +} +``` + +As the table shown below, different marks support different visual channels. + +| mark type | supported visual channels | +| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| [`point`](/docs/mark#point) | [`x`](#x--xe), [`y`](#y--ye), [`row`](#row), [`size`](#size), [`color`](#color), [`strokeWidth`](#strokeWidth), [`opacity`](#opacity) | +| [`line`](/docs/mark#line) | [`x`](#x--xe), [`y`](#y--ye), [`row`](#row), [`color`](#color), [`strokeWidth`](#strokeWidth) | +| [`rect`](/docs/mark#rect) | [`x`](#x--xe), [`xe`](#x--xe), [`row`](#row), [`color`](#color), [`strokeWidth`](#strokeWidth), [`opacity`](#opacity) | +| [`bar`](/docs/mark#bar) | [`x`](#x--xe), [`y`](#y--ye), [`row`](#row), [`color`](#color), [`strokeWidth`](#strokeWidth), [`opacity`](#opacity) | +| [`area`](/docs/mark#area) | [`x`](#x--xe), [`y`](#y--ye), [`row`](#row), [`color`](#color), [`strokeWidth`](#strokeWidth) | +| [`link`](/docs/mark#link) | [`x`](#x--xe), [`xe`](#x--xe), [`x1`](#x1-y1-x1e-y1e), [`x1e`](#x1-y1-x1e-y1e), [`color`](#color), [`opacity`](#opacity) | +| [`triangle`](/docs/mark#triangle) | [`x`](#x--xe), [`xe`](#x--xe), [`row`](#row), [`size`](#size), [`color`](#color), [`opacity`](#opacity) | +| [`text`](/docs/mark#text) | [`x`](#x--xe), [`xe`](#x--xe), [`row`](#row), [`color`](#color), [`opacity`](#opacity) | + +## Supported Visual Channels + +### x & xe +`x` specifies a mark's position in the horizontal direction. +Following the common practice in genomic visluazation, Gosling uses `x` axis inclusively for genomic coordinates. + + + +`xe` stands for the end position of a visual mark along the x-axis. This is usually used together with `x` to specify the start and the end positions of a visual mark in the horizontal direction. + +### y & ye +`y` specify a mark's position in the vertical direction. + + + +`ye` stands for the end of y axis. `ye` is usually used with `y` to specify the start position and the end position of a visual mark in the vertical direction, respectively. + +### x1 x1e y1 y1e +The four channels are used together only with `betweenLink` and `withinLink` marks. +In this case, `x` and `xe` are used with `x1` and `x1e` to specify a pair of genomic intervals that need to be connected using band representations. Similarly, `y` and `ye` can be used with `y1` and `y1e` to show band connection along the vertical axis. + +x x1 example + + +### row + +Channel `row` is used with channel `y` to stratify a visualization with categorical values. + +- Without specifying `row`: +without row example + +- Line charts are stratified with sample names (`"row": { "field": "sample", "type": "nominal" }`). +with row example + +```javascript +{ + "tracks":[ + { + // specify data source + "data": { + "url": "https://resgen.io/api/v1/tileset_info/?d=UvVPeLHuRDiYA3qwFlm7xQ", + "type": "tileset" + }, + "metadata": { + "type": "higlass-multivec", + "row": "sample", + "column": "position", + "value": "peak", + "categories": ["sample 1", "sample 2", "sample 3", "sample 4"] + }, + // specify the mark type + "mark": "line", + // specify visual channels + "x": { + "field": "position", + "type": "genomic", + "domain": {"chromosome": "1", "interval": [1, 3000500]}, + "axis": "top" + }, + "y": {"field": "peak", "type": "quantitative"}, + "color": {"field": "sample", "type": "nominal", "legend": true}, + // visual channel row is bound with the data field: sample + "row": {"field": "sample", "type": "nominal"} + } + ] + +} +``` + + + +### size +Channel `size` indicates the size of the visual mark. It determines either the radius of a circle (`mark: point`), the vertical length of a triangle (`mark: triangleRight`, `mark: triangleLeft`, `mark: triangleBottom`), the vertical length of a rectangle (`mark: rect`), the thickness of a line (`mark: line`). + + + +### text + +`text` channel is used only in `text` mark to specify what textual information to display. + + + +### color +The channel `color` specifies the foreground color of a mark. + + + + +### stroke +Channel `stroke` defines the outline color of the specified mark. Gosling supports `stroke` in the following marks: `rect`, `area`, `point`, `bar`, `link`. + + +### strokeWidth +Channel `strokeWidth` defines the outline thickness of the mark shape. Gosling supports `strokeWidth` in the following marks: `rect`, `area`, `point`, `bar`, `link`. + + +### opacity +The `opacity` channel determines the transparency level of a mark. The opacity of the foreground color (i.e., `color`) and the outline color (i.e., `stroke`) will be affected by this channel. + + + + +## Style-related Properties + +```javascript +{ + "style": { + /** + * style-related properties + * specify the style of all tracks + */ + } + "tracks": [ + { + ..., + "style": { + /** specify the style of a single track */ + } + }, + ... + ], + ... +} + +``` + +These properties specify the visual appearances of a track that are not bound with data fields. + + \ No newline at end of file diff --git a/versioned_sidebars/version-0.11.0-sidebars.json b/versioned_sidebars/version-0.11.0-sidebars.json new file mode 100644 index 0000000..0c1457b --- /dev/null +++ b/versioned_sidebars/version-0.11.0-sidebars.json @@ -0,0 +1,57 @@ +{ + "docs": [ + { + "type": "doc", + "id": "getting-started" + }, + { + "type": "doc", + "id": "usage" + }, + { + "type": "category", + "label": "Grammar Guide", + "link": { + "type": "generated-index", + "title": "Grammar Guide", + "description": "This is a guide to the Gosling grammar. If this is your first time looking at the docs, we recommend starting with Composition, Mark, and Visual Channel.", + "keywords": [ + "guides" + ] + }, + "collapsed": true, + "items": [ + "composition", + "data", + "mark", + "visual-channel", + "genome-builds", + "user-interaction", + "semantic-zoom" + ] + }, + { + "type": "doc", + "label": "Grammar Reference", + "id": "reference" + }, + { + "type": "doc", + "label": "JavaScript API", + "id": "js-api" + }, + { + "type": "doc", + "label": "Integrating non-Gosling visualizations", + "id": "non-gos-vis" + }, + { + "type": "doc", + "id": "public-datasets" + }, + { + "type": "doc", + "id": "FAQ" + } + ] +} diff --git a/versions.json b/versions.json index cc81f51..e307c07 100644 --- a/versions.json +++ b/versions.json @@ -1,4 +1,5 @@ [ + "0.11.0", "0.10.1.1", "0.10.1", "0.9.30",