From f7763585e8e0ba23bf81409bff3c997910651f2c Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Wed, 1 Mar 2023 17:21:32 -0500 Subject: [PATCH 01/11] FOR THE LOVE OF GOD NEVER LET THIS COME THROUGH --- dist/deepscatter.js | 6 +++++- src/tile.ts | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dist/deepscatter.js b/dist/deepscatter.js index 3aecaff44..07184496b 100644 --- a/dist/deepscatter.js +++ b/dist/deepscatter.js @@ -34093,7 +34093,11 @@ class QuadTile extends Tile { const buffer = await response.arrayBuffer(); this.download_state = "Complete"; this._table_buffer = buffer; - this._batch = tableFromIPC(buffer).batches[0]; + const batch = tableFromIPC(buffer).batches[0]; + const ids_as_ints = new BigInt64Array([...batch.getChild("_id")].map((d) => parseInt(d))); + add_or_delete_column(batch, "_id", null); + add_or_delete_column(batch, "_id", ids_as_ints); + this._batch; const metadata = this._batch.schema.metadata; const extent2 = metadata.get("extent"); if (extent2) { diff --git a/src/tile.ts b/src/tile.ts index d260790fd..d62937426 100644 --- a/src/tile.ts +++ b/src/tile.ts @@ -432,7 +432,12 @@ export class QuadTile extends Tile { const buffer = await response.arrayBuffer(); this.download_state = 'Complete'; this._table_buffer = buffer; - this._batch = tableFromIPC(buffer).batches[0]; + const batch = tableFromIPC(buffer).batches[0]; + const ids_as_ints = new BigInt64Array([...batch.getChild('_id')].map(d => parseInt(d))) + // First delete + add_or_delete_column(batch, '_id', null); + add_or_delete_column(batch, '_id', ids_as_ints); + this._batch const metadata = this._batch.schema.metadata; const extent = metadata.get('extent'); if (extent) { From aee4a91a7fa4ee70c7942f18ce11856f21efa177 Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Mon, 6 Mar 2023 12:02:03 -0500 Subject: [PATCH 02/11] partial state --- dist/deepscatter.js | 5 ++++- src/tile.ts | 15 ++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/dist/deepscatter.js b/dist/deepscatter.js index 07184496b..6df97a452 100644 --- a/dist/deepscatter.js +++ b/dist/deepscatter.js @@ -34094,8 +34094,11 @@ class QuadTile extends Tile { this.download_state = "Complete"; this._table_buffer = buffer; const batch = tableFromIPC(buffer).batches[0]; - const ids_as_ints = new BigInt64Array([...batch.getChild("_id")].map((d) => parseInt(d))); + const ids_as_ints = new BigInt64Array([...batch.getChild("_id")].map((d) => BigInt(d))); add_or_delete_column(batch, "_id", null); + if ("_id" in batch.schema.fields) { + throw "Failed to delete _id column"; + } add_or_delete_column(batch, "_id", ids_as_ints); this._batch; const metadata = this._batch.schema.metadata; diff --git a/src/tile.ts b/src/tile.ts index d62937426..29a68365a 100644 --- a/src/tile.ts +++ b/src/tile.ts @@ -432,12 +432,17 @@ export class QuadTile extends Tile { const buffer = await response.arrayBuffer(); this.download_state = 'Complete'; this._table_buffer = buffer; - const batch = tableFromIPC(buffer).batches[0]; - const ids_as_ints = new BigInt64Array([...batch.getChild('_id')].map(d => parseInt(d))) + this._batch = tableFromIPC(buffer).batches[0]; + console.log(this._batch) + const ids_as_ints = new BigInt64Array([...this._batch.getChild('_id')].map(d => BigInt(d))) // First delete - add_or_delete_column(batch, '_id', null); - add_or_delete_column(batch, '_id', ids_as_ints); - this._batch + this._batch = add_or_delete_column(this._batch, '_id', null); + if ('_id' in this._batch.schema.fields) { + throw 'Failed to delete _id column'; + } + console.log(this._batch.schema) + console.log({ids_as_ints}) + this._batch = add_or_delete_column(this._batch, '_id', ids_as_ints); const metadata = this._batch.schema.metadata; const extent = metadata.get('extent'); if (extent) { From f582e051dccfe628de8655b1baee0cec91356006 Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Mon, 6 Mar 2023 18:10:47 -0500 Subject: [PATCH 03/11] improving id-based transformations --- dist/deepscatter.js | 36 ++++++++++++++++++++++++------------ src/Dataset.ts | 31 ++++++++++++++++++++++++------- src/deepscatter.ts | 5 +++-- src/tile.ts | 3 --- tsconfig.json | 2 +- 5 files changed, 52 insertions(+), 25 deletions(-) diff --git a/dist/deepscatter.js b/dist/deepscatter.js index 6df97a452..35cd94b53 100644 --- a/dist/deepscatter.js +++ b/dist/deepscatter.js @@ -34093,14 +34093,13 @@ class QuadTile extends Tile { const buffer = await response.arrayBuffer(); this.download_state = "Complete"; this._table_buffer = buffer; - const batch = tableFromIPC(buffer).batches[0]; - const ids_as_ints = new BigInt64Array([...batch.getChild("_id")].map((d) => BigInt(d))); - add_or_delete_column(batch, "_id", null); - if ("_id" in batch.schema.fields) { + this._batch = tableFromIPC(buffer).batches[0]; + const ids_as_ints = new BigInt64Array([...this._batch.getChild("_id")].map((d) => BigInt(d))); + this._batch = add_or_delete_column(this._batch, "_id", null); + if ("_id" in this._batch.schema.fields) { throw "Failed to delete _id column"; } - add_or_delete_column(batch, "_id", ids_as_ints); - this._batch; + this._batch = add_or_delete_column(this._batch, "_id", ids_as_ints); const metadata = this._batch.schema.metadata; const extent2 = metadata.get("extent"); if (extent2) { @@ -34609,7 +34608,7 @@ function add_or_delete_column(batch, field_name, data) { throw new Error("Must pass data to bind_column"); } if (data !== null) { - if (data instanceof Float32Array) { + if (data instanceof Float32Array || data instanceof BigInt64Array) { tb[field_name] = makeVector(data).data[0]; } else { tb[field_name] = data.data[0]; @@ -34643,16 +34642,28 @@ function add_or_delete_column(batch, field_name, data) { return new_batch; } function supplement_identifiers(batch, ids, field_name, key_field = "_id") { - const hashtab = /* @__PURE__ */ new Set(); - for (const item of Object.keys(ids)) { - const code = [0, 1, 2, 3].map((i) => item.charCodeAt(i) || "").join(""); - hashtab.add(code); - } + const keytype = typeof Object.keys(ids)[0]; + console.log({ keytype }); const updatedFloatArray = new Float32Array(batch.numRows); const kfield = batch.getChild(key_field); if (kfield === null) { throw new Error(`Field ${key_field} not found in batch`); } + if (keytype === "bigint") { + let i = 0; + for (const value of kfield.data[0].values) { + if (ids[kfield.get(i)] !== void 0) { + updatedFloatArray[i] = ids[value]; + } + i++; + } + return updatedFloatArray; + } + const hashtab = /* @__PURE__ */ new Set(); + for (const item of Object.keys(ids)) { + const code = [0, 1, 2, 3].map((i) => item.charCodeAt(i) || "").join(""); + hashtab.add(code); + } const offsets = kfield.data[0].valueOffsets; const values = kfield.data[0].values; for (let i = 0; i < batch.numRows; i++) { @@ -35719,6 +35730,7 @@ class Scatterplot { } add_identifier_column(name, codes, key_field) { const true_codes = Array.isArray(codes) ? Object.fromEntries(codes.map((next) => [next, 1])) : codes; + console.log({ true_codes }); this._root.add_label_identifiers(true_codes, name, key_field); } async add_labels_from_url(url, name, label_key, size_key, options) { diff --git a/src/Dataset.ts b/src/Dataset.ts index c1673f209..b7db9936d 100644 --- a/src/Dataset.ts +++ b/src/Dataset.ts @@ -517,7 +517,7 @@ export function add_or_delete_column( throw new Error('Must pass data to bind_column'); } if (data !== null) { - if (data instanceof Float32Array) { + if (data instanceof Float32Array || data instanceof BigInt64Array) { tb[field_name] = makeVector(data).data[0]; } else { tb[field_name] = data.data[0] as Data; @@ -562,24 +562,40 @@ export function add_or_delete_column( */ function supplement_identifiers( batch: RecordBatch, - ids: Record, + ids: Record | Record, field_name: string, key_field = '_id' ): ArrowBuildable { /* Add the identifiers from the batch to the ids array */ // A quick lookup before performing a costly string decode. - const hashtab = new Set(); - for (const item of Object.keys(ids)) { - const code = [0, 1, 2, 3].map((i) => item.charCodeAt(i) || '').join(''); - hashtab.add(code); - } + const keytype : 'string' | 'bigint' = typeof(Object.keys(ids)[0]) + console.log({ keytype }) const updatedFloatArray = new Float32Array(batch.numRows); + const kfield = batch.getChild(key_field); if (kfield === null) { throw new Error(`Field ${key_field} not found in batch`); } + if (keytype === 'bigint') { + let i = 0; + for (const value of kfield.data[0].values) { + if (ids[kfield.get(i)] !== undefined) { + updatedFloatArray[i] = ids[value] as number; + } + i++; + } + return updatedFloatArray; + } + + const hashtab = new Set(); + + for (const item of Object.keys(ids)) { + const code = [0, 1, 2, 3].map((i) => item.charCodeAt(i) || '').join(''); + hashtab.add(code); + } + const offsets = kfield.data[0].valueOffsets; const values = kfield.data[0].values; // For every identifier, look if it's in the id array. @@ -593,5 +609,6 @@ function supplement_identifiers( } } } + return updatedFloatArray; } diff --git a/src/deepscatter.ts b/src/deepscatter.ts index 45fc44256..71a6bb585 100644 --- a/src/deepscatter.ts +++ b/src/deepscatter.ts @@ -148,15 +148,16 @@ export default class Scatterplot { */ add_identifier_column( name: string, - codes: string[] | Record, + codes: string[] | bigint[] | Record | Record, key_field: string ) { const true_codes: Record = Array.isArray(codes) ? Object.fromEntries(codes.map((next) => [next, 1])) : codes; - + console.log({true_codes}) this._root.add_label_identifiers(true_codes, name, key_field); } + async add_labels_from_url( url: string, name: string, diff --git a/src/tile.ts b/src/tile.ts index 29a68365a..435774e01 100644 --- a/src/tile.ts +++ b/src/tile.ts @@ -433,15 +433,12 @@ export class QuadTile extends Tile { this.download_state = 'Complete'; this._table_buffer = buffer; this._batch = tableFromIPC(buffer).batches[0]; - console.log(this._batch) const ids_as_ints = new BigInt64Array([...this._batch.getChild('_id')].map(d => BigInt(d))) // First delete this._batch = add_or_delete_column(this._batch, '_id', null); if ('_id' in this._batch.schema.fields) { throw 'Failed to delete _id column'; } - console.log(this._batch.schema) - console.log({ids_as_ints}) this._batch = add_or_delete_column(this._batch, '_id', ids_as_ints); const metadata = this._batch.schema.metadata; const extent = metadata.get('extent'); diff --git a/tsconfig.json b/tsconfig.json index e58cce517..53a2dfcbc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,4 +13,4 @@ }, "$schema": "https://json.schemastore.org/tsconfig", "display": "Recommended" -} +} \ No newline at end of file From 46fb1faf47428cc222ffab20a64a41c3245a1b02 Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Tue, 7 Mar 2023 10:49:28 -0500 Subject: [PATCH 04/11] handle bigint join keys --- src/Dataset.ts | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/Dataset.ts b/src/Dataset.ts index b7db9936d..c632a623b 100644 --- a/src/Dataset.ts +++ b/src/Dataset.ts @@ -567,10 +567,8 @@ function supplement_identifiers( key_field = '_id' ): ArrowBuildable { /* Add the identifiers from the batch to the ids array */ - + console.log("MY IDS", {ids}) // A quick lookup before performing a costly string decode. - const keytype : 'string' | 'bigint' = typeof(Object.keys(ids)[0]) - console.log({ keytype }) const updatedFloatArray = new Float32Array(batch.numRows); const kfield = batch.getChild(key_field); @@ -578,13 +576,19 @@ function supplement_identifiers( throw new Error(`Field ${key_field} not found in batch`); } + let keytype = 'string'; + if (kfield?.type?.typeId === 2) { + keytype = 'bigint'; + } + if (keytype === 'bigint') { - let i = 0; - for (const value of kfield.data[0].values) { - if (ids[kfield.get(i)] !== undefined) { - updatedFloatArray[i] = ids[value] as number; + for (let i = 0; i < batch.numRows; i++) { + // the object coerces bigints to strings. We just live with that. + const value = ids[String(kfield.get(i))] + if (value !== undefined) { + updatedFloatArray[i] = value as number; + console.log("FOUND", value, kfield.get(i)) } - i++; } return updatedFloatArray; } From de40c29e56118cb52d73e24ae33ffefbd30e8c5d Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Tue, 7 Mar 2023 10:49:38 -0500 Subject: [PATCH 05/11] handle bigint join keys --- dist/deepscatter.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/dist/deepscatter.js b/dist/deepscatter.js index f88352e1c..b8632c9f3 100644 --- a/dist/deepscatter.js +++ b/dist/deepscatter.js @@ -34649,20 +34649,24 @@ function add_or_delete_column(batch, field_name, data) { return new_batch; } function supplement_identifiers(batch, ids, field_name, key_field = "_id") { - const keytype = typeof Object.keys(ids)[0]; - console.log({ keytype }); + var _a2; + console.log("MY IDS", { ids }); const updatedFloatArray = new Float32Array(batch.numRows); const kfield = batch.getChild(key_field); if (kfield === null) { throw new Error(`Field ${key_field} not found in batch`); } + let keytype = "string"; + if (((_a2 = kfield == null ? void 0 : kfield.type) == null ? void 0 : _a2.typeId) === 2) { + keytype = "bigint"; + } if (keytype === "bigint") { - let i = 0; - for (const value of kfield.data[0].values) { - if (ids[kfield.get(i)] !== void 0) { - updatedFloatArray[i] = ids[value]; + for (let i = 0; i < batch.numRows; i++) { + const value = ids[String(kfield.get(i))]; + if (value !== void 0) { + updatedFloatArray[i] = value; + console.log("FOUND", value, kfield.get(i)); } - i++; } return updatedFloatArray; } From aa1f98db51aff26aaea5c7f6923bfd87e7a26eac Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Tue, 7 Mar 2023 10:53:29 -0500 Subject: [PATCH 06/11] remove dangerous code --- dist/deepscatter.js | 9 --------- src/Dataset.ts | 2 -- src/deepscatter.ts | 1 - src/tile.ts | 7 ------- 4 files changed, 19 deletions(-) diff --git a/dist/deepscatter.js b/dist/deepscatter.js index b8632c9f3..47cf26927 100644 --- a/dist/deepscatter.js +++ b/dist/deepscatter.js @@ -34101,12 +34101,6 @@ class QuadTile extends Tile { this.download_state = "Complete"; this._table_buffer = buffer; this._batch = tableFromIPC(buffer).batches[0]; - const ids_as_ints = new BigInt64Array([...this._batch.getChild("_id")].map((d) => BigInt(d))); - this._batch = add_or_delete_column(this._batch, "_id", null); - if ("_id" in this._batch.schema.fields) { - throw "Failed to delete _id column"; - } - this._batch = add_or_delete_column(this._batch, "_id", ids_as_ints); const metadata = this._batch.schema.metadata; const extent2 = metadata.get("extent"); if (extent2) { @@ -34650,7 +34644,6 @@ function add_or_delete_column(batch, field_name, data) { } function supplement_identifiers(batch, ids, field_name, key_field = "_id") { var _a2; - console.log("MY IDS", { ids }); const updatedFloatArray = new Float32Array(batch.numRows); const kfield = batch.getChild(key_field); if (kfield === null) { @@ -34665,7 +34658,6 @@ function supplement_identifiers(batch, ids, field_name, key_field = "_id") { const value = ids[String(kfield.get(i))]; if (value !== void 0) { updatedFloatArray[i] = value; - console.log("FOUND", value, kfield.get(i)); } } return updatedFloatArray; @@ -35741,7 +35733,6 @@ class Scatterplot { } add_identifier_column(name, codes, key_field) { const true_codes = Array.isArray(codes) ? Object.fromEntries(codes.map((next) => [next, 1])) : codes; - console.log({ true_codes }); this._root.add_label_identifiers(true_codes, name, key_field); } async add_labels_from_url(url, name, label_key, size_key, options) { diff --git a/src/Dataset.ts b/src/Dataset.ts index c632a623b..1367ad008 100644 --- a/src/Dataset.ts +++ b/src/Dataset.ts @@ -567,7 +567,6 @@ function supplement_identifiers( key_field = '_id' ): ArrowBuildable { /* Add the identifiers from the batch to the ids array */ - console.log("MY IDS", {ids}) // A quick lookup before performing a costly string decode. const updatedFloatArray = new Float32Array(batch.numRows); @@ -587,7 +586,6 @@ function supplement_identifiers( const value = ids[String(kfield.get(i))] if (value !== undefined) { updatedFloatArray[i] = value as number; - console.log("FOUND", value, kfield.get(i)) } } return updatedFloatArray; diff --git a/src/deepscatter.ts b/src/deepscatter.ts index 07badea24..f7ee143e0 100644 --- a/src/deepscatter.ts +++ b/src/deepscatter.ts @@ -154,7 +154,6 @@ export default class Scatterplot { const true_codes: Record = Array.isArray(codes) ? Object.fromEntries(codes.map((next) => [next, 1])) : codes; - console.log({true_codes}) this._root.add_label_identifiers(true_codes, name, key_field); } diff --git a/src/tile.ts b/src/tile.ts index 435774e01..d260790fd 100644 --- a/src/tile.ts +++ b/src/tile.ts @@ -433,13 +433,6 @@ export class QuadTile extends Tile { this.download_state = 'Complete'; this._table_buffer = buffer; this._batch = tableFromIPC(buffer).batches[0]; - const ids_as_ints = new BigInt64Array([...this._batch.getChild('_id')].map(d => BigInt(d))) - // First delete - this._batch = add_or_delete_column(this._batch, '_id', null); - if ('_id' in this._batch.schema.fields) { - throw 'Failed to delete _id column'; - } - this._batch = add_or_delete_column(this._batch, '_id', ids_as_ints); const metadata = this._batch.schema.metadata; const extent = metadata.get('extent'); if (extent) { From 4518d24ac8dc41646fc0e2bb3ee26557eb13b52d Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Tue, 14 Mar 2023 09:26:39 -0400 Subject: [PATCH 07/11] undefined color fix --- dist/deepscatter.js | 2 +- src/ColorAesthetic.ts | 2 +- src/tile.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/deepscatter.js b/dist/deepscatter.js index 47cf26927..c6f5b3efd 100644 --- a/dist/deepscatter.js +++ b/dist/deepscatter.js @@ -23908,7 +23908,7 @@ class Color extends Aesthetic { ); const colors2 = []; for (const label of this.domain) { - if (dict_values[label]) { + if (dict_values[label] === void 0) { colors2.push(range2[dict_values[label]]); } else { colors2.push("gray"); diff --git a/src/ColorAesthetic.ts b/src/ColorAesthetic.ts index 8a76f1579..fe5af9911 100644 --- a/src/ColorAesthetic.ts +++ b/src/ColorAesthetic.ts @@ -272,7 +272,7 @@ export class Color extends Aesthetic< ); const colors = []; for (const label of this.domain) { - if (dict_values[label]) { + if (dict_values[label] === undefined) { colors.push(range[dict_values[label]]); } else { colors.push('gray'); diff --git a/src/tile.ts b/src/tile.ts index d260790fd..7b2ec0aea 100644 --- a/src/tile.ts +++ b/src/tile.ts @@ -67,7 +67,7 @@ export abstract class Tile { public numeric_id: number; // bindings to regl buffers holdings shadows of the RecordBatch. public _buffer_manager?: TileBufferManager; - constructor(dataset: this) { + constructor(dataset: Dataset) { // Accepts prefs only for the case of the root tile. this.promise = Promise.resolve(); this.download_state = 'Unattempted'; From 3b66c7b5ab7934162169377b224dcff03a5b0b5a Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Tue, 14 Mar 2023 09:46:24 -0400 Subject: [PATCH 08/11] release notes/version change --- package.json | 6 +++--- release_notes.md | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index f3bf0bd3b..0215baaba 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { "name": "deepscatter", "type": "module", - "version": "2.8.0", + "version": "2.9.0", "description": "Fast, animated zoomable scatterplots scaling to billions of points", "files": [ - "dist" + "dist" ], "module": "./dist/deepscatter.js", "main": "./dist/deepscatter.umd.cjs", @@ -85,4 +85,4 @@ "typedoc": "^0.23.24", "vite": "^3.2.4" } -} +} \ No newline at end of file diff --git a/release_notes.md b/release_notes.md index 403ca5507..8caed7672 100644 --- a/release_notes.md +++ b/release_notes.md @@ -1,3 +1,17 @@ +# 2.9.2 + +- Fix bug in manually-assigned categorical color schemes involving the first color always being gray. + +# 2.9.1 + +- Fix regression bug for log-scales on linear color schemes. + +# 2.9.0 + +- Allow asynchronous transformations. This is an internal change that allows alteration of tiles using any external resources--for instance, fetching search results from the Web or running duckdb on wasm. +- Various changes resulting from that. +- Customizable options for foreground/background behavior passed to the API as 'background_options'. + # 2.8.0 - Add new 'foreground' aesthetic; when enabled, this moves points to the front of the screen and makes points behind it not clickable. From 8cfbab3c50876c1c3738f543a4401857c25d3c10 Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Tue, 14 Mar 2023 09:46:48 -0400 Subject: [PATCH 09/11] version bump 2.9.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0215baaba..15bd14322 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "deepscatter", "type": "module", - "version": "2.9.0", + "version": "2.9.2", "description": "Fast, animated zoomable scatterplots scaling to billions of points", "files": [ "dist" From d9158e066bbdb6a278c1b55b1c482b1268b8bf9b Mon Sep 17 00:00:00 2001 From: Ben Schmidt Date: Tue, 14 Mar 2023 09:47:32 -0400 Subject: [PATCH 10/11] rebuild typescript docs --- docs/assets/search.js | 2 +- docs/classes/default.html | 215 +++++++++++++++++++++++++++----------- 2 files changed, 156 insertions(+), 61 deletions(-) diff --git a/docs/assets/search.js b/docs/assets/search.js index 339dbbad4..d0b30777a 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = JSON.parse("{\"kinds\":{\"128\":\"Class\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\"},\"rows\":[{\"kind\":128,\"name\":\"default\",\"url\":\"classes/default.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"_renderer\",\"url\":\"classes/default.html#_renderer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"width\",\"url\":\"classes/default.html#width\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"height\",\"url\":\"classes/default.html#height\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"_root\",\"url\":\"classes/default.html#_root\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"elements\",\"url\":\"classes/default.html#elements\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"secondary_renderers\",\"url\":\"classes/default.html#secondary_renderers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"div\",\"url\":\"classes/default.html#div\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"bound\",\"url\":\"classes/default.html#bound\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"_zoom\",\"url\":\"classes/default.html#_zoom\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"plot_queue\",\"url\":\"classes/default.html#plot_queue\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"prefs\",\"url\":\"classes/default.html#prefs\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"ready\",\"url\":\"classes/default.html#ready\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"click_handler\",\"url\":\"classes/default.html#click_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"tooltip_handler\",\"url\":\"classes/default.html#tooltip_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"label_click_handler\",\"url\":\"classes/default.html#label_click_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"on_zoom\",\"url\":\"classes/default.html#on_zoom\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"mark_ready\",\"url\":\"classes/default.html#mark_ready\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/default.html#mark_ready.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"default.mark_ready\"},{\"kind\":2048,\"name\":\"bind\",\"url\":\"classes/default.html#bind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"add_identifier_column\",\"url\":\"classes/default.html#add_identifier_column\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"add_labels_from_url\",\"url\":\"classes/default.html#add_labels_from_url\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"add_labels\",\"url\":\"classes/default.html#add_labels\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"reinitialize\",\"url\":\"classes/default.html#reinitialize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"visualize_tiles\",\"url\":\"classes/default.html#visualize_tiles\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"make_big_png\",\"url\":\"classes/default.html#make_big_png\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"destroy\",\"url\":\"classes/default.html#destroy\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"update_prefs\",\"url\":\"classes/default.html#update_prefs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"stop_labellers\",\"url\":\"classes/default.html#stop_labellers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"dim\",\"url\":\"classes/default.html#dim\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":262144,\"name\":\"tooltip_html\",\"url\":\"classes/default.html#tooltip_html\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/default.html#tooltip_html.tooltip_html-1.__type-6\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"default.tooltip_html.tooltip_html\"},{\"kind\":262144,\"name\":\"label_click\",\"url\":\"classes/default.html#label_click\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/default.html#label_click.label_click-1.__type-4\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"default.label_click.label_click\"},{\"kind\":262144,\"name\":\"click_function\",\"url\":\"classes/default.html#click_function\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/default.html#click_function.click_function-1.__type-2\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"default.click_function.click_function\"},{\"kind\":2048,\"name\":\"plotAPI\",\"url\":\"classes/default.html#plotAPI\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"unsafe_plotAPI\",\"url\":\"classes/default.html#unsafe_plotAPI\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"root_table\",\"url\":\"classes/default.html#root_table\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":262144,\"name\":\"query\",\"url\":\"classes/default.html#query\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"drawContours\",\"url\":\"classes/default.html#drawContours\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"sample_points\",\"url\":\"classes/default.html#sample_points\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"contours\",\"url\":\"classes/default.html#contours\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,34.012]],[\"comment/0\",[]],[\"name/1\",[1,34.012]],[\"comment/1\",[]],[\"name/2\",[2,34.012]],[\"comment/2\",[]],[\"name/3\",[3,34.012]],[\"comment/3\",[]],[\"name/4\",[4,34.012]],[\"comment/4\",[]],[\"name/5\",[5,34.012]],[\"comment/5\",[]],[\"name/6\",[6,34.012]],[\"comment/6\",[]],[\"name/7\",[7,34.012]],[\"comment/7\",[]],[\"name/8\",[8,34.012]],[\"comment/8\",[]],[\"name/9\",[9,34.012]],[\"comment/9\",[]],[\"name/10\",[10,34.012]],[\"comment/10\",[]],[\"name/11\",[11,34.012]],[\"comment/11\",[]],[\"name/12\",[12,34.012]],[\"comment/12\",[]],[\"name/13\",[13,34.012]],[\"comment/13\",[]],[\"name/14\",[14,34.012]],[\"comment/14\",[]],[\"name/15\",[15,34.012]],[\"comment/15\",[]],[\"name/16\",[16,34.012]],[\"comment/16\",[]],[\"name/17\",[17,34.012]],[\"comment/17\",[]],[\"name/18\",[18,34.012]],[\"comment/18\",[]],[\"name/19\",[19,23.026]],[\"comment/19\",[]],[\"name/20\",[20,34.012]],[\"comment/20\",[]],[\"name/21\",[21,34.012]],[\"comment/21\",[]],[\"name/22\",[22,34.012]],[\"comment/22\",[]],[\"name/23\",[23,34.012]],[\"comment/23\",[]],[\"name/24\",[24,34.012]],[\"comment/24\",[]],[\"name/25\",[25,34.012]],[\"comment/25\",[]],[\"name/26\",[26,34.012]],[\"comment/26\",[]],[\"name/27\",[27,34.012]],[\"comment/27\",[]],[\"name/28\",[28,34.012]],[\"comment/28\",[]],[\"name/29\",[29,34.012]],[\"comment/29\",[]],[\"name/30\",[30,34.012]],[\"comment/30\",[]],[\"name/31\",[31,34.012]],[\"comment/31\",[]],[\"name/32\",[19,23.026]],[\"comment/32\",[]],[\"name/33\",[32,34.012]],[\"comment/33\",[]],[\"name/34\",[19,23.026]],[\"comment/34\",[]],[\"name/35\",[33,34.012]],[\"comment/35\",[]],[\"name/36\",[19,23.026]],[\"comment/36\",[]],[\"name/37\",[34,34.012]],[\"comment/37\",[]],[\"name/38\",[35,34.012]],[\"comment/38\",[]],[\"name/39\",[36,34.012]],[\"comment/39\",[]],[\"name/40\",[37,34.012]],[\"comment/40\",[]],[\"name/41\",[38,34.012]],[\"comment/41\",[]],[\"name/42\",[39,34.012]],[\"comment/42\",[]],[\"name/43\",[40,34.012]],[\"comment/43\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":19,\"name\":{\"19\":{},\"32\":{},\"34\":{},\"36\":{}},\"comment\":{}}],[\"_renderer\",{\"_index\":2,\"name\":{\"2\":{}},\"comment\":{}}],[\"_root\",{\"_index\":5,\"name\":{\"5\":{}},\"comment\":{}}],[\"_zoom\",{\"_index\":10,\"name\":{\"10\":{}},\"comment\":{}}],[\"add_identifier_column\",{\"_index\":21,\"name\":{\"21\":{}},\"comment\":{}}],[\"add_labels\",{\"_index\":23,\"name\":{\"23\":{}},\"comment\":{}}],[\"add_labels_from_url\",{\"_index\":22,\"name\":{\"22\":{}},\"comment\":{}}],[\"bind\",{\"_index\":20,\"name\":{\"20\":{}},\"comment\":{}}],[\"bound\",{\"_index\":9,\"name\":{\"9\":{}},\"comment\":{}}],[\"click_function\",{\"_index\":33,\"name\":{\"35\":{}},\"comment\":{}}],[\"click_handler\",{\"_index\":14,\"name\":{\"14\":{}},\"comment\":{}}],[\"constructor\",{\"_index\":1,\"name\":{\"1\":{}},\"comment\":{}}],[\"contours\",{\"_index\":40,\"name\":{\"43\":{}},\"comment\":{}}],[\"default\",{\"_index\":0,\"name\":{\"0\":{}},\"comment\":{}}],[\"destroy\",{\"_index\":27,\"name\":{\"27\":{}},\"comment\":{}}],[\"dim\",{\"_index\":30,\"name\":{\"30\":{}},\"comment\":{}}],[\"div\",{\"_index\":8,\"name\":{\"8\":{}},\"comment\":{}}],[\"drawcontours\",{\"_index\":38,\"name\":{\"41\":{}},\"comment\":{}}],[\"elements\",{\"_index\":6,\"name\":{\"6\":{}},\"comment\":{}}],[\"height\",{\"_index\":4,\"name\":{\"4\":{}},\"comment\":{}}],[\"label_click\",{\"_index\":32,\"name\":{\"33\":{}},\"comment\":{}}],[\"label_click_handler\",{\"_index\":16,\"name\":{\"16\":{}},\"comment\":{}}],[\"make_big_png\",{\"_index\":26,\"name\":{\"26\":{}},\"comment\":{}}],[\"mark_ready\",{\"_index\":18,\"name\":{\"18\":{}},\"comment\":{}}],[\"on_zoom\",{\"_index\":17,\"name\":{\"17\":{}},\"comment\":{}}],[\"plot_queue\",{\"_index\":11,\"name\":{\"11\":{}},\"comment\":{}}],[\"plotapi\",{\"_index\":34,\"name\":{\"37\":{}},\"comment\":{}}],[\"prefs\",{\"_index\":12,\"name\":{\"12\":{}},\"comment\":{}}],[\"query\",{\"_index\":37,\"name\":{\"40\":{}},\"comment\":{}}],[\"ready\",{\"_index\":13,\"name\":{\"13\":{}},\"comment\":{}}],[\"reinitialize\",{\"_index\":24,\"name\":{\"24\":{}},\"comment\":{}}],[\"root_table\",{\"_index\":36,\"name\":{\"39\":{}},\"comment\":{}}],[\"sample_points\",{\"_index\":39,\"name\":{\"42\":{}},\"comment\":{}}],[\"secondary_renderers\",{\"_index\":7,\"name\":{\"7\":{}},\"comment\":{}}],[\"stop_labellers\",{\"_index\":29,\"name\":{\"29\":{}},\"comment\":{}}],[\"tooltip_handler\",{\"_index\":15,\"name\":{\"15\":{}},\"comment\":{}}],[\"tooltip_html\",{\"_index\":31,\"name\":{\"31\":{}},\"comment\":{}}],[\"unsafe_plotapi\",{\"_index\":35,\"name\":{\"38\":{}},\"comment\":{}}],[\"update_prefs\",{\"_index\":28,\"name\":{\"28\":{}},\"comment\":{}}],[\"visualize_tiles\",{\"_index\":25,\"name\":{\"25\":{}},\"comment\":{}}],[\"width\",{\"_index\":3,\"name\":{\"3\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file +window.searchData = JSON.parse("{\"kinds\":{\"128\":\"Class\",\"512\":\"Constructor\",\"1024\":\"Property\",\"2048\":\"Method\",\"65536\":\"Type literal\",\"262144\":\"Accessor\"},\"rows\":[{\"kind\":128,\"name\":\"default\",\"url\":\"classes/default.html\",\"classes\":\"tsd-kind-class\"},{\"kind\":512,\"name\":\"constructor\",\"url\":\"classes/default.html#constructor\",\"classes\":\"tsd-kind-constructor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"_renderer\",\"url\":\"classes/default.html#_renderer\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"width\",\"url\":\"classes/default.html#width\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"height\",\"url\":\"classes/default.html#height\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"_root\",\"url\":\"classes/default.html#_root\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"elements\",\"url\":\"classes/default.html#elements\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"secondary_renderers\",\"url\":\"classes/default.html#secondary_renderers\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"div\",\"url\":\"classes/default.html#div\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"bound\",\"url\":\"classes/default.html#bound\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"_zoom\",\"url\":\"classes/default.html#_zoom\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"plot_queue\",\"url\":\"classes/default.html#plot_queue\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"prefs\",\"url\":\"classes/default.html#prefs\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"ready\",\"url\":\"classes/default.html#ready\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"click_handler\",\"url\":\"classes/default.html#click_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"hooks\",\"url\":\"classes/default.html#hooks\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"tooltip_handler\",\"url\":\"classes/default.html#tooltip_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"label_click_handler\",\"url\":\"classes/default.html#label_click_handler\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"on_zoom\",\"url\":\"classes/default.html#on_zoom\",\"classes\":\"tsd-kind-property tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":1024,\"name\":\"mark_ready\",\"url\":\"classes/default.html#mark_ready\",\"classes\":\"tsd-kind-property tsd-parent-kind-class tsd-is-private\",\"parent\":\"default\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/default.html#mark_ready.__type\",\"classes\":\"tsd-kind-type-literal tsd-parent-kind-property\",\"parent\":\"default.mark_ready\"},{\"kind\":2048,\"name\":\"bind\",\"url\":\"classes/default.html#bind\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"add_identifier_column\",\"url\":\"classes/default.html#add_identifier_column\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"add_labels_from_url\",\"url\":\"classes/default.html#add_labels_from_url\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"add_labels\",\"url\":\"classes/default.html#add_labels\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"reinitialize\",\"url\":\"classes/default.html#reinitialize\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"visualize_tiles\",\"url\":\"classes/default.html#visualize_tiles\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"make_big_png\",\"url\":\"classes/default.html#make_big_png\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"destroy\",\"url\":\"classes/default.html#destroy\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"update_prefs\",\"url\":\"classes/default.html#update_prefs\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"add_hook\",\"url\":\"classes/default.html#add_hook\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"remove_hook\",\"url\":\"classes/default.html#remove_hook\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"stop_labellers\",\"url\":\"classes/default.html#stop_labellers\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"dim\",\"url\":\"classes/default.html#dim\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":262144,\"name\":\"tooltip_html\",\"url\":\"classes/default.html#tooltip_html\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/default.html#tooltip_html.tooltip_html-1.__type-6\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"default.tooltip_html.tooltip_html\"},{\"kind\":262144,\"name\":\"label_click\",\"url\":\"classes/default.html#label_click\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/default.html#label_click.label_click-1.__type-4\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"default.label_click.label_click\"},{\"kind\":262144,\"name\":\"click_function\",\"url\":\"classes/default.html#click_function\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":65536,\"name\":\"__type\",\"url\":\"classes/default.html#click_function.click_function-1.__type-2\",\"classes\":\"tsd-kind-type-literal\",\"parent\":\"default.click_function.click_function\"},{\"kind\":2048,\"name\":\"plotAPI\",\"url\":\"classes/default.html#plotAPI\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"start_transformations\",\"url\":\"classes/default.html#start_transformations\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"unsafe_plotAPI\",\"url\":\"classes/default.html#unsafe_plotAPI\",\"classes\":\"tsd-kind-method tsd-parent-kind-class tsd-is-private\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"root_table\",\"url\":\"classes/default.html#root_table\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":262144,\"name\":\"query\",\"url\":\"classes/default.html#query\",\"classes\":\"tsd-kind-accessor tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"drawContours\",\"url\":\"classes/default.html#drawContours\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"sample_points\",\"url\":\"classes/default.html#sample_points\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"},{\"kind\":2048,\"name\":\"contours\",\"url\":\"classes/default.html#contours\",\"classes\":\"tsd-kind-method tsd-parent-kind-class\",\"parent\":\"default\"}],\"index\":{\"version\":\"2.3.9\",\"fields\":[\"name\",\"comment\"],\"fieldVectors\":[[\"name/0\",[0,34.864]],[\"comment/0\",[]],[\"name/1\",[1,34.864]],[\"comment/1\",[]],[\"name/2\",[2,34.864]],[\"comment/2\",[]],[\"name/3\",[3,34.864]],[\"comment/3\",[]],[\"name/4\",[4,34.864]],[\"comment/4\",[]],[\"name/5\",[5,34.864]],[\"comment/5\",[]],[\"name/6\",[6,34.864]],[\"comment/6\",[]],[\"name/7\",[7,34.864]],[\"comment/7\",[]],[\"name/8\",[8,34.864]],[\"comment/8\",[]],[\"name/9\",[9,34.864]],[\"comment/9\",[]],[\"name/10\",[10,34.864]],[\"comment/10\",[]],[\"name/11\",[11,34.864]],[\"comment/11\",[]],[\"name/12\",[12,34.864]],[\"comment/12\",[]],[\"name/13\",[13,34.864]],[\"comment/13\",[]],[\"name/14\",[14,34.864]],[\"comment/14\",[]],[\"name/15\",[15,34.864]],[\"comment/15\",[]],[\"name/16\",[16,34.864]],[\"comment/16\",[]],[\"name/17\",[17,34.864]],[\"comment/17\",[]],[\"name/18\",[18,34.864]],[\"comment/18\",[]],[\"name/19\",[19,34.864]],[\"comment/19\",[]],[\"name/20\",[20,23.877]],[\"comment/20\",[]],[\"name/21\",[21,34.864]],[\"comment/21\",[]],[\"name/22\",[22,34.864]],[\"comment/22\",[]],[\"name/23\",[23,34.864]],[\"comment/23\",[]],[\"name/24\",[24,34.864]],[\"comment/24\",[]],[\"name/25\",[25,34.864]],[\"comment/25\",[]],[\"name/26\",[26,34.864]],[\"comment/26\",[]],[\"name/27\",[27,34.864]],[\"comment/27\",[]],[\"name/28\",[28,34.864]],[\"comment/28\",[]],[\"name/29\",[29,34.864]],[\"comment/29\",[]],[\"name/30\",[30,34.864]],[\"comment/30\",[]],[\"name/31\",[31,34.864]],[\"comment/31\",[]],[\"name/32\",[32,34.864]],[\"comment/32\",[]],[\"name/33\",[33,34.864]],[\"comment/33\",[]],[\"name/34\",[34,34.864]],[\"comment/34\",[]],[\"name/35\",[20,23.877]],[\"comment/35\",[]],[\"name/36\",[35,34.864]],[\"comment/36\",[]],[\"name/37\",[20,23.877]],[\"comment/37\",[]],[\"name/38\",[36,34.864]],[\"comment/38\",[]],[\"name/39\",[20,23.877]],[\"comment/39\",[]],[\"name/40\",[37,34.864]],[\"comment/40\",[]],[\"name/41\",[38,34.864]],[\"comment/41\",[]],[\"name/42\",[39,34.864]],[\"comment/42\",[]],[\"name/43\",[40,34.864]],[\"comment/43\",[]],[\"name/44\",[41,34.864]],[\"comment/44\",[]],[\"name/45\",[42,34.864]],[\"comment/45\",[]],[\"name/46\",[43,34.864]],[\"comment/46\",[]],[\"name/47\",[44,34.864]],[\"comment/47\",[]]],\"invertedIndex\":[[\"__type\",{\"_index\":20,\"name\":{\"20\":{},\"35\":{},\"37\":{},\"39\":{}},\"comment\":{}}],[\"_renderer\",{\"_index\":2,\"name\":{\"2\":{}},\"comment\":{}}],[\"_root\",{\"_index\":5,\"name\":{\"5\":{}},\"comment\":{}}],[\"_zoom\",{\"_index\":10,\"name\":{\"10\":{}},\"comment\":{}}],[\"add_hook\",{\"_index\":30,\"name\":{\"30\":{}},\"comment\":{}}],[\"add_identifier_column\",{\"_index\":22,\"name\":{\"22\":{}},\"comment\":{}}],[\"add_labels\",{\"_index\":24,\"name\":{\"24\":{}},\"comment\":{}}],[\"add_labels_from_url\",{\"_index\":23,\"name\":{\"23\":{}},\"comment\":{}}],[\"bind\",{\"_index\":21,\"name\":{\"21\":{}},\"comment\":{}}],[\"bound\",{\"_index\":9,\"name\":{\"9\":{}},\"comment\":{}}],[\"click_function\",{\"_index\":36,\"name\":{\"38\":{}},\"comment\":{}}],[\"click_handler\",{\"_index\":14,\"name\":{\"14\":{}},\"comment\":{}}],[\"constructor\",{\"_index\":1,\"name\":{\"1\":{}},\"comment\":{}}],[\"contours\",{\"_index\":44,\"name\":{\"47\":{}},\"comment\":{}}],[\"default\",{\"_index\":0,\"name\":{\"0\":{}},\"comment\":{}}],[\"destroy\",{\"_index\":28,\"name\":{\"28\":{}},\"comment\":{}}],[\"dim\",{\"_index\":33,\"name\":{\"33\":{}},\"comment\":{}}],[\"div\",{\"_index\":8,\"name\":{\"8\":{}},\"comment\":{}}],[\"drawcontours\",{\"_index\":42,\"name\":{\"45\":{}},\"comment\":{}}],[\"elements\",{\"_index\":6,\"name\":{\"6\":{}},\"comment\":{}}],[\"height\",{\"_index\":4,\"name\":{\"4\":{}},\"comment\":{}}],[\"hooks\",{\"_index\":15,\"name\":{\"15\":{}},\"comment\":{}}],[\"label_click\",{\"_index\":35,\"name\":{\"36\":{}},\"comment\":{}}],[\"label_click_handler\",{\"_index\":17,\"name\":{\"17\":{}},\"comment\":{}}],[\"make_big_png\",{\"_index\":27,\"name\":{\"27\":{}},\"comment\":{}}],[\"mark_ready\",{\"_index\":19,\"name\":{\"19\":{}},\"comment\":{}}],[\"on_zoom\",{\"_index\":18,\"name\":{\"18\":{}},\"comment\":{}}],[\"plot_queue\",{\"_index\":11,\"name\":{\"11\":{}},\"comment\":{}}],[\"plotapi\",{\"_index\":37,\"name\":{\"40\":{}},\"comment\":{}}],[\"prefs\",{\"_index\":12,\"name\":{\"12\":{}},\"comment\":{}}],[\"query\",{\"_index\":41,\"name\":{\"44\":{}},\"comment\":{}}],[\"ready\",{\"_index\":13,\"name\":{\"13\":{}},\"comment\":{}}],[\"reinitialize\",{\"_index\":25,\"name\":{\"25\":{}},\"comment\":{}}],[\"remove_hook\",{\"_index\":31,\"name\":{\"31\":{}},\"comment\":{}}],[\"root_table\",{\"_index\":40,\"name\":{\"43\":{}},\"comment\":{}}],[\"sample_points\",{\"_index\":43,\"name\":{\"46\":{}},\"comment\":{}}],[\"secondary_renderers\",{\"_index\":7,\"name\":{\"7\":{}},\"comment\":{}}],[\"start_transformations\",{\"_index\":38,\"name\":{\"41\":{}},\"comment\":{}}],[\"stop_labellers\",{\"_index\":32,\"name\":{\"32\":{}},\"comment\":{}}],[\"tooltip_handler\",{\"_index\":16,\"name\":{\"16\":{}},\"comment\":{}}],[\"tooltip_html\",{\"_index\":34,\"name\":{\"34\":{}},\"comment\":{}}],[\"unsafe_plotapi\",{\"_index\":39,\"name\":{\"42\":{}},\"comment\":{}}],[\"update_prefs\",{\"_index\":29,\"name\":{\"29\":{}},\"comment\":{}}],[\"visualize_tiles\",{\"_index\":26,\"name\":{\"26\":{}},\"comment\":{}}],[\"width\",{\"_index\":3,\"name\":{\"3\":{}},\"comment\":{}}]],\"pipeline\":[]}}"); \ No newline at end of file diff --git a/docs/classes/default.html b/docs/classes/default.html index 8bb46695d..23ce31c50 100644 --- a/docs/classes/default.html +++ b/docs/classes/default.html @@ -14,7 +14,11 @@ -

Class default<T>

+

Class default<T>

+
+

The core type of the module is a single scatterplot that manages +all data and renderering.

+

Type Parameters

    @@ -25,7 +29,7 @@

    Hierarchy

    • default
+
  • Defined in deepscatter.ts:41
  • @@ -45,8 +49,9 @@

    Properties

    div elements? height +hooks label_click_handler -mark_ready +mark_ready on_zoom? plot_queue prefs @@ -64,7 +69,8 @@

    Accessors

    Methods

    -
    add_identifier_column +
    add_hook +add_identifier_column add_labels add_labels_from_url bind @@ -75,8 +81,10 @@

    Methods

    make_big_png plotAPI reinitialize +remove_hook root_table sample_points +start_transformations stop_labellers unsafe_plotAPI update_prefs @@ -98,63 +106,74 @@

    T extends Parameters

    • -
      selector: string
    • +
      selector: string
      +

      A DOM selector for the div in which the scatterplot will live.

      +
    • -
      width: number
    • +
      width: number
      +

      The width of the scatterplot (in pixels)

      +
    • -
      height: number
    +
    height: number
    +

    The height of the scatterplot (in pixels)

    +

    Returns default<T>

    +
  • Defined in deepscatter.ts:71
  • Properties

    _renderer: ReglRenderer<T>
    +
  • Defined in deepscatter.ts:42
  • _root: Dataset<any>
    +
  • Defined in deepscatter.ts:45
  • _zoom: default
    +
  • Defined in deepscatter.ts:51
  • bound: boolean
    +
  • Defined in deepscatter.ts:49
  • click_handler: ClickFunction
    +
  • Defined in deepscatter.ts:57
  • div: Selection<any, any, any, any>
    +
  • Defined in deepscatter.ts:48
  • elements?: Selection<SVGElement, any, any, any>[]
    +
  • Defined in deepscatter.ts:46
  • height: number
    +
  • Defined in deepscatter.ts:44
  • +
    + +
    hooks: Record<string, Hook> = {}
    label_click_handler: LabelClick
    -
    - +
  • Defined in deepscatter.ts:60
  • +
    +
    mark_ready: (() => void) = ...

    Type declaration

    @@ -165,42 +184,42 @@

    Type declaration

  • Returns void

  • +
  • Defined in deepscatter.ts:63
  • on_zoom?: onZoomCallback
    +
  • Defined in deepscatter.ts:62
  • plot_queue: Promise<void> = ...
    +
  • Defined in deepscatter.ts:53
  • -
    prefs: APICall
    +
  • Defined in deepscatter.ts:54
  • ready: Promise<void>
    +
  • Defined in deepscatter.ts:56
  • -
    secondary_renderers: Record<string, Renderer> = {}
    +
  • Defined in deepscatter.ts:47
  • tooltip_handler: TooltipHTML
    +
  • Defined in deepscatter.ts:59
  • width: number
    +
  • Defined in deepscatter.ts:43
  • Accessors

    @@ -223,7 +242,7 @@
    datum: StructRowProxyany

    Returns void

    +
  • Defined in deepscatter.ts:496
  • set click_function(func: ((datum: StructRowProxy<any>, plot: any) => void)): void
  • @@ -246,7 +265,7 @@
    plot: any
  • Returns void

    Returns void

    +
  • Defined in deepscatter.ts:493
    • @@ -267,7 +286,7 @@
      datum: GeoJsonProperties
      plot: any

    Returns void

    +
  • Defined in deepscatter.ts:489
  • set label_click(func: ((datum: GeoJsonProperties, plot: any) => void)): void
  • @@ -290,7 +309,7 @@
    plot: any
  • Returns void

    Returns void

    +
  • Defined in deepscatter.ts:485
  • +
  • Defined in deepscatter.ts:713
    • @@ -322,7 +341,7 @@
      datum: StructRowProxyany

    Returns string

    +
  • Defined in deepscatter.ts:480
  • set tooltip_html(func: ((datum: StructRowProxy<any>, plot: any) => string)): void
  • @@ -345,13 +364,37 @@
    plot: any
  • Returns string

    Returns void

    +
  • Defined in deepscatter.ts:476
  • Methods

    +
    + +
      + +
    • +

      Hooks provide a mechanism to run arbitrary code after call of plotAPI has resolved. +This is useful for--e.g.--updating a legend only when the plot changes.

      +
      +
      +

      Parameters

      +
        +
      • +
        name: string
        +

        The name of the hook to add.

        +
      • +
      • +
        hook: Hook
        +

        A function to run after each plot command.

        +
      • +
      • +
        unsafe: boolean = false
      +

      Returns void

      - +
    • Parameters

      @@ -361,7 +404,7 @@
      name: string

      The name of the new column to be created. If it already exists, this will throw an error in invocation

    • -
      codes: string[] | Record<string, number>
      +
      codes: string[] | bigint[] | Record<string, number> | Record<bigint, number>

      The codes to be assigned labels. This can be either a list of ids (in which case all ids will have the value 1.0 assigned) or a keyed of values like {'Rome': 3, 'Vienna': 13} in which case the numeric values will be used.

    • @@ -371,11 +414,11 @@
      key_field: string

    Returns void

    +
  • Defined in deepscatter.ts:149
    • - +
    • Parameters

      @@ -397,14 +440,14 @@
      size_key: undefined

      A field in the dataset to associate with the size of the labels.

    • -
      options: LabelOptions
    +
    options: LabelOptions = {}

    Returns void

    +
  • Defined in deepscatter.ts:200
    • - +
    • Parameters

      @@ -416,10 +459,12 @@
      name: string
    • label_key: string
    • -
      size_key: undefined | string
    +
    size_key: undefined | string
    +
  • +
    options: LabelOptions
  • Returns Promise<void>

    +
  • Defined in deepscatter.ts:160
    • @@ -442,7 +487,7 @@
      height: number

    Returns void

    +
  • Defined in deepscatter.ts:93
    • @@ -455,7 +500,7 @@

      Parameters

      aes: any

    Returns void

    +
  • Defined in deepscatter.ts:758
  • +
  • Defined in deepscatter.ts:412
    • @@ -485,7 +530,7 @@
      dimension: string

    Returns ConcreteAesthetic

    +
  • Defined in deepscatter.ts:472
    • @@ -500,7 +545,7 @@
      contours: any
      drawTo: any

    Returns void

    +
  • Defined in deepscatter.ts:719
    • @@ -517,12 +562,15 @@
      points: numbernumber = 100

    Returns Promise<void>

    +
  • Defined in deepscatter.ts:317
    • +

      Plots a set of prefs, and returns a promise that resolves +upon the completion of the plot (not including any time for transitions).

      +

      Parameters

        @@ -530,7 +578,7 @@

        Parameters

        prefs: APICall

      Returns Promise<void>

    +
  • Defined in deepscatter.ts:504
  • +
  • Defined in deepscatter.ts:213
  • +
    + +
      + +
    • +
      +

      Parameters

      +
        +
      • +
        name: string
      • +
      • +
        unsafe: boolean = false
      +

      Returns void

    +
  • Defined in deepscatter.ts:702
    • @@ -559,7 +622,35 @@

      Parameters

      n: number = 10

    Returns Record<string, string | number>[]

    +
  • Defined in deepscatter.ts:746
  • +
    + +
      + +
    • +

      Get a short head start on transformations. This prevents a flicker +when a new data field needs to be loaded onto the GPU.

      + +

      Returns

      A promise that resolves immediately if there's no work to do, +or after the delay if there is.

      +
      +
      +

      Parameters

      +
        +
      • +
        prefs: APICall
        +

        The API call to prepare.

        +
      • +
      • +
        delay: number = 110
        +

        Delay in milliseconds to give the data to get onto the GPU. +110 ms seems like a decent compromise; barely perceptible to humans as a UI response +time, but enough time +for three animation ticks to run.

        +
      +

      Returns Promise<void>

    +
  • Defined in deepscatter.ts:453
    • @@ -586,7 +677,7 @@
      prefs: APICall

    Returns Promise<void>

    +
  • Defined in deepscatter.ts:605
    • @@ -599,7 +690,7 @@

      Parameters

      prefs: APICall

    Returns void

    +
  • Defined in deepscatter.ts:417
  • +
  • Defined in deepscatter.ts:280