@vitessce/scatterplot-embedding 3.5.6 → 3.5.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{deflate-d0300d1e.js → deflate-7ff395f6.js} +1 -1
- package/dist/{index-59d93bea.js → index-6931089e.js} +308 -17
- package/dist/index.js +1 -1
- package/dist/{jpeg-96119ba3.js → jpeg-db1f9adb.js} +1 -1
- package/dist/{lerc-c167c85c.js → lerc-9859e1c5.js} +1 -1
- package/dist/{lzw-2bf68d77.js → lzw-4b6e12be.js} +1 -1
- package/dist/{packbits-b40edb17.js → packbits-61eb655b.js} +1 -1
- package/dist/{raw-03df793e.js → raw-3928687d.js} +1 -1
- package/dist/{webimage-1cf2f04f.js → webimage-62020543.js} +1 -1
- package/dist-tsc/DualEmbeddingScatterplotSubscriber.d.ts.map +1 -1
- package/dist-tsc/DualEmbeddingScatterplotSubscriber.js +2 -2
- package/dist-tsc/EmbeddingScatterplotSubscriber.d.ts.map +1 -1
- package/dist-tsc/EmbeddingScatterplotSubscriber.js +2 -1
- package/package.json +7 -7
- package/src/DualEmbeddingScatterplotSubscriber.js +3 -1
- package/src/EmbeddingScatterplotSubscriber.js +3 -1
|
@@ -4369,6 +4369,258 @@ function getNextScope(prevScopes) {
|
|
|
4369
4369
|
} while (prevScopes.includes(nextScope));
|
|
4370
4370
|
return nextScope;
|
|
4371
4371
|
}
|
|
4372
|
+
var loglevel = { exports: {} };
|
|
4373
|
+
(function(module2) {
|
|
4374
|
+
(function(root2, definition) {
|
|
4375
|
+
if (module2.exports) {
|
|
4376
|
+
module2.exports = definition();
|
|
4377
|
+
} else {
|
|
4378
|
+
root2.log = definition();
|
|
4379
|
+
}
|
|
4380
|
+
})(commonjsGlobal, function() {
|
|
4381
|
+
var noop2 = function() {
|
|
4382
|
+
};
|
|
4383
|
+
var undefinedType2 = "undefined";
|
|
4384
|
+
var isIE2 = typeof window !== undefinedType2 && typeof window.navigator !== undefinedType2 && /Trident\/|MSIE /.test(window.navigator.userAgent);
|
|
4385
|
+
var logMethods = [
|
|
4386
|
+
"trace",
|
|
4387
|
+
"debug",
|
|
4388
|
+
"info",
|
|
4389
|
+
"warn",
|
|
4390
|
+
"error"
|
|
4391
|
+
];
|
|
4392
|
+
var _loggersByName = {};
|
|
4393
|
+
var defaultLogger = null;
|
|
4394
|
+
function bindMethod(obj, methodName) {
|
|
4395
|
+
var method = obj[methodName];
|
|
4396
|
+
if (typeof method.bind === "function") {
|
|
4397
|
+
return method.bind(obj);
|
|
4398
|
+
} else {
|
|
4399
|
+
try {
|
|
4400
|
+
return Function.prototype.bind.call(method, obj);
|
|
4401
|
+
} catch (e3) {
|
|
4402
|
+
return function() {
|
|
4403
|
+
return Function.prototype.apply.apply(method, [obj, arguments]);
|
|
4404
|
+
};
|
|
4405
|
+
}
|
|
4406
|
+
}
|
|
4407
|
+
}
|
|
4408
|
+
function traceForIE() {
|
|
4409
|
+
if (console.log) {
|
|
4410
|
+
if (console.log.apply) {
|
|
4411
|
+
console.log.apply(console, arguments);
|
|
4412
|
+
} else {
|
|
4413
|
+
Function.prototype.apply.apply(console.log, [console, arguments]);
|
|
4414
|
+
}
|
|
4415
|
+
}
|
|
4416
|
+
if (console.trace)
|
|
4417
|
+
console.trace();
|
|
4418
|
+
}
|
|
4419
|
+
function realMethod(methodName) {
|
|
4420
|
+
if (methodName === "debug") {
|
|
4421
|
+
methodName = "log";
|
|
4422
|
+
}
|
|
4423
|
+
if (typeof console === undefinedType2) {
|
|
4424
|
+
return false;
|
|
4425
|
+
} else if (methodName === "trace" && isIE2) {
|
|
4426
|
+
return traceForIE;
|
|
4427
|
+
} else if (console[methodName] !== void 0) {
|
|
4428
|
+
return bindMethod(console, methodName);
|
|
4429
|
+
} else if (console.log !== void 0) {
|
|
4430
|
+
return bindMethod(console, "log");
|
|
4431
|
+
} else {
|
|
4432
|
+
return noop2;
|
|
4433
|
+
}
|
|
4434
|
+
}
|
|
4435
|
+
function replaceLoggingMethods() {
|
|
4436
|
+
var level = this.getLevel();
|
|
4437
|
+
for (var i2 = 0; i2 < logMethods.length; i2++) {
|
|
4438
|
+
var methodName = logMethods[i2];
|
|
4439
|
+
this[methodName] = i2 < level ? noop2 : this.methodFactory(methodName, level, this.name);
|
|
4440
|
+
}
|
|
4441
|
+
this.log = this.debug;
|
|
4442
|
+
if (typeof console === undefinedType2 && level < this.levels.SILENT) {
|
|
4443
|
+
return "No console available for logging";
|
|
4444
|
+
}
|
|
4445
|
+
}
|
|
4446
|
+
function enableLoggingWhenConsoleArrives(methodName) {
|
|
4447
|
+
return function() {
|
|
4448
|
+
if (typeof console !== undefinedType2) {
|
|
4449
|
+
replaceLoggingMethods.call(this);
|
|
4450
|
+
this[methodName].apply(this, arguments);
|
|
4451
|
+
}
|
|
4452
|
+
};
|
|
4453
|
+
}
|
|
4454
|
+
function defaultMethodFactory(methodName, _level, _loggerName) {
|
|
4455
|
+
return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);
|
|
4456
|
+
}
|
|
4457
|
+
function Logger(name2, factory) {
|
|
4458
|
+
var self2 = this;
|
|
4459
|
+
var inheritedLevel;
|
|
4460
|
+
var defaultLevel;
|
|
4461
|
+
var userLevel;
|
|
4462
|
+
var storageKey = "loglevel";
|
|
4463
|
+
if (typeof name2 === "string") {
|
|
4464
|
+
storageKey += ":" + name2;
|
|
4465
|
+
} else if (typeof name2 === "symbol") {
|
|
4466
|
+
storageKey = void 0;
|
|
4467
|
+
}
|
|
4468
|
+
function persistLevelIfPossible(levelNum) {
|
|
4469
|
+
var levelName = (logMethods[levelNum] || "silent").toUpperCase();
|
|
4470
|
+
if (typeof window === undefinedType2 || !storageKey)
|
|
4471
|
+
return;
|
|
4472
|
+
try {
|
|
4473
|
+
window.localStorage[storageKey] = levelName;
|
|
4474
|
+
return;
|
|
4475
|
+
} catch (ignore) {
|
|
4476
|
+
}
|
|
4477
|
+
try {
|
|
4478
|
+
window.document.cookie = encodeURIComponent(storageKey) + "=" + levelName + ";";
|
|
4479
|
+
} catch (ignore) {
|
|
4480
|
+
}
|
|
4481
|
+
}
|
|
4482
|
+
function getPersistedLevel() {
|
|
4483
|
+
var storedLevel;
|
|
4484
|
+
if (typeof window === undefinedType2 || !storageKey)
|
|
4485
|
+
return;
|
|
4486
|
+
try {
|
|
4487
|
+
storedLevel = window.localStorage[storageKey];
|
|
4488
|
+
} catch (ignore) {
|
|
4489
|
+
}
|
|
4490
|
+
if (typeof storedLevel === undefinedType2) {
|
|
4491
|
+
try {
|
|
4492
|
+
var cookie = window.document.cookie;
|
|
4493
|
+
var cookieName = encodeURIComponent(storageKey);
|
|
4494
|
+
var location = cookie.indexOf(cookieName + "=");
|
|
4495
|
+
if (location !== -1) {
|
|
4496
|
+
storedLevel = /^([^;]+)/.exec(
|
|
4497
|
+
cookie.slice(location + cookieName.length + 1)
|
|
4498
|
+
)[1];
|
|
4499
|
+
}
|
|
4500
|
+
} catch (ignore) {
|
|
4501
|
+
}
|
|
4502
|
+
}
|
|
4503
|
+
if (self2.levels[storedLevel] === void 0) {
|
|
4504
|
+
storedLevel = void 0;
|
|
4505
|
+
}
|
|
4506
|
+
return storedLevel;
|
|
4507
|
+
}
|
|
4508
|
+
function clearPersistedLevel() {
|
|
4509
|
+
if (typeof window === undefinedType2 || !storageKey)
|
|
4510
|
+
return;
|
|
4511
|
+
try {
|
|
4512
|
+
window.localStorage.removeItem(storageKey);
|
|
4513
|
+
} catch (ignore) {
|
|
4514
|
+
}
|
|
4515
|
+
try {
|
|
4516
|
+
window.document.cookie = encodeURIComponent(storageKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC";
|
|
4517
|
+
} catch (ignore) {
|
|
4518
|
+
}
|
|
4519
|
+
}
|
|
4520
|
+
function normalizeLevel(input) {
|
|
4521
|
+
var level = input;
|
|
4522
|
+
if (typeof level === "string" && self2.levels[level.toUpperCase()] !== void 0) {
|
|
4523
|
+
level = self2.levels[level.toUpperCase()];
|
|
4524
|
+
}
|
|
4525
|
+
if (typeof level === "number" && level >= 0 && level <= self2.levels.SILENT) {
|
|
4526
|
+
return level;
|
|
4527
|
+
} else {
|
|
4528
|
+
throw new TypeError("log.setLevel() called with invalid level: " + input);
|
|
4529
|
+
}
|
|
4530
|
+
}
|
|
4531
|
+
self2.name = name2;
|
|
4532
|
+
self2.levels = {
|
|
4533
|
+
"TRACE": 0,
|
|
4534
|
+
"DEBUG": 1,
|
|
4535
|
+
"INFO": 2,
|
|
4536
|
+
"WARN": 3,
|
|
4537
|
+
"ERROR": 4,
|
|
4538
|
+
"SILENT": 5
|
|
4539
|
+
};
|
|
4540
|
+
self2.methodFactory = factory || defaultMethodFactory;
|
|
4541
|
+
self2.getLevel = function() {
|
|
4542
|
+
if (userLevel != null) {
|
|
4543
|
+
return userLevel;
|
|
4544
|
+
} else if (defaultLevel != null) {
|
|
4545
|
+
return defaultLevel;
|
|
4546
|
+
} else {
|
|
4547
|
+
return inheritedLevel;
|
|
4548
|
+
}
|
|
4549
|
+
};
|
|
4550
|
+
self2.setLevel = function(level, persist) {
|
|
4551
|
+
userLevel = normalizeLevel(level);
|
|
4552
|
+
if (persist !== false) {
|
|
4553
|
+
persistLevelIfPossible(userLevel);
|
|
4554
|
+
}
|
|
4555
|
+
return replaceLoggingMethods.call(self2);
|
|
4556
|
+
};
|
|
4557
|
+
self2.setDefaultLevel = function(level) {
|
|
4558
|
+
defaultLevel = normalizeLevel(level);
|
|
4559
|
+
if (!getPersistedLevel()) {
|
|
4560
|
+
self2.setLevel(level, false);
|
|
4561
|
+
}
|
|
4562
|
+
};
|
|
4563
|
+
self2.resetLevel = function() {
|
|
4564
|
+
userLevel = null;
|
|
4565
|
+
clearPersistedLevel();
|
|
4566
|
+
replaceLoggingMethods.call(self2);
|
|
4567
|
+
};
|
|
4568
|
+
self2.enableAll = function(persist) {
|
|
4569
|
+
self2.setLevel(self2.levels.TRACE, persist);
|
|
4570
|
+
};
|
|
4571
|
+
self2.disableAll = function(persist) {
|
|
4572
|
+
self2.setLevel(self2.levels.SILENT, persist);
|
|
4573
|
+
};
|
|
4574
|
+
self2.rebuild = function() {
|
|
4575
|
+
if (defaultLogger !== self2) {
|
|
4576
|
+
inheritedLevel = normalizeLevel(defaultLogger.getLevel());
|
|
4577
|
+
}
|
|
4578
|
+
replaceLoggingMethods.call(self2);
|
|
4579
|
+
if (defaultLogger === self2) {
|
|
4580
|
+
for (var childName in _loggersByName) {
|
|
4581
|
+
_loggersByName[childName].rebuild();
|
|
4582
|
+
}
|
|
4583
|
+
}
|
|
4584
|
+
};
|
|
4585
|
+
inheritedLevel = normalizeLevel(
|
|
4586
|
+
defaultLogger ? defaultLogger.getLevel() : "WARN"
|
|
4587
|
+
);
|
|
4588
|
+
var initialLevel = getPersistedLevel();
|
|
4589
|
+
if (initialLevel != null) {
|
|
4590
|
+
userLevel = normalizeLevel(initialLevel);
|
|
4591
|
+
}
|
|
4592
|
+
replaceLoggingMethods.call(self2);
|
|
4593
|
+
}
|
|
4594
|
+
defaultLogger = new Logger();
|
|
4595
|
+
defaultLogger.getLogger = function getLogger(name2) {
|
|
4596
|
+
if (typeof name2 !== "symbol" && typeof name2 !== "string" || name2 === "") {
|
|
4597
|
+
throw new TypeError("You must supply a name when creating a logger.");
|
|
4598
|
+
}
|
|
4599
|
+
var logger = _loggersByName[name2];
|
|
4600
|
+
if (!logger) {
|
|
4601
|
+
logger = _loggersByName[name2] = new Logger(
|
|
4602
|
+
name2,
|
|
4603
|
+
defaultLogger.methodFactory
|
|
4604
|
+
);
|
|
4605
|
+
}
|
|
4606
|
+
return logger;
|
|
4607
|
+
};
|
|
4608
|
+
var _log = typeof window !== undefinedType2 ? window.log : void 0;
|
|
4609
|
+
defaultLogger.noConflict = function() {
|
|
4610
|
+
if (typeof window !== undefinedType2 && window.log === defaultLogger) {
|
|
4611
|
+
window.log = _log;
|
|
4612
|
+
}
|
|
4613
|
+
return defaultLogger;
|
|
4614
|
+
};
|
|
4615
|
+
defaultLogger.getLoggers = function getLoggers2() {
|
|
4616
|
+
return _loggersByName;
|
|
4617
|
+
};
|
|
4618
|
+
defaultLogger["default"] = defaultLogger;
|
|
4619
|
+
return defaultLogger;
|
|
4620
|
+
});
|
|
4621
|
+
})(loglevel);
|
|
4622
|
+
var loglevelExports = loglevel.exports;
|
|
4623
|
+
const log$5 = /* @__PURE__ */ getDefaultExportFromCjs(loglevelExports);
|
|
4372
4624
|
const DEFAULT_DARK_COLOR = [50, 50, 50];
|
|
4373
4625
|
const DEFAULT_LIGHT_COLOR$3 = [200, 200, 200];
|
|
4374
4626
|
const DEFAULT_LIGHT2_COLOR = [235, 235, 235];
|
|
@@ -8783,7 +9035,7 @@ function upgradeFrom1_0_14(config2) {
|
|
|
8783
9035
|
Object.entries(propAnalogies).forEach(([oldProp, newType]) => {
|
|
8784
9036
|
var _a2;
|
|
8785
9037
|
if ((_a2 = viewDef.props) == null ? void 0 : _a2[oldProp]) {
|
|
8786
|
-
|
|
9038
|
+
log$5.warn(`Warning: the '${oldProp}' prop on the ${viewDef.component} view is deprecated. Please use the '${newType}' coordination type instead.`);
|
|
8787
9039
|
}
|
|
8788
9040
|
});
|
|
8789
9041
|
});
|
|
@@ -8806,7 +9058,7 @@ function upgradeFrom1_0_15(config2) {
|
|
|
8806
9058
|
Object.entries(coordinationScopes).forEach(([coordinationType, coordinationScope]) => {
|
|
8807
9059
|
if (!Array.isArray(coordinationScope) && typeof coordinationScope === "object") {
|
|
8808
9060
|
if (coordinationType === "dataset") {
|
|
8809
|
-
|
|
9061
|
+
log$5.error("Expected coordinationScopes.dataset value to be either string or string[], but got object.");
|
|
8810
9062
|
}
|
|
8811
9063
|
coordinationScopesBy.dataset[coordinationType] = coordinationScope;
|
|
8812
9064
|
} else if (Array.isArray(coordinationScope) || typeof coordinationScope === "string") {
|
|
@@ -11019,7 +11271,8 @@ const ViewType$1 = {
|
|
|
11019
11271
|
FEATURE_BAR_PLOT: "featureBarPlot",
|
|
11020
11272
|
BIOMARKER_SELECT: "biomarkerSelect",
|
|
11021
11273
|
LINK_CONTROLLER: "linkController",
|
|
11022
|
-
DUAL_SCATTERPLOT: "dualScatterplot"
|
|
11274
|
+
DUAL_SCATTERPLOT: "dualScatterplot",
|
|
11275
|
+
TREEMAP: "treemap"
|
|
11023
11276
|
};
|
|
11024
11277
|
const DataType$2 = {
|
|
11025
11278
|
OBS_LABELS: "obsLabels",
|
|
@@ -11073,6 +11326,7 @@ const FileType$1 = {
|
|
|
11073
11326
|
OBS_LABELS_ANNDATA_ZARR: "obsLabels.anndata.zarr",
|
|
11074
11327
|
FEATURE_LABELS_ANNDATA_ZARR: "featureLabels.anndata.zarr",
|
|
11075
11328
|
SAMPLE_EDGES_ANNDATA_ZARR: "sampleEdges.anndata.zarr",
|
|
11329
|
+
SAMPLE_SETS_ANNDATA_ZARR: "sampleSets.anndata.zarr",
|
|
11076
11330
|
// AnnData - zipped
|
|
11077
11331
|
OBS_FEATURE_MATRIX_ANNDATA_ZARR_ZIP: "obsFeatureMatrix.anndata.zarr.zip",
|
|
11078
11332
|
OBS_FEATURE_COLUMNS_ANNDATA_ZARR_ZIP: "obsFeatureColumns.anndata.zarr.zip",
|
|
@@ -11085,6 +11339,7 @@ const FileType$1 = {
|
|
|
11085
11339
|
OBS_LABELS_ANNDATA_ZARR_ZIP: "obsLabels.anndata.zarr.zip",
|
|
11086
11340
|
FEATURE_LABELS_ANNDATA_ZARR_ZIP: "featureLabels.anndata.zarr.zip",
|
|
11087
11341
|
SAMPLE_EDGES_ANNDATA_ZARR_ZIP: "sampleEdges.anndata.zarr.zip",
|
|
11342
|
+
SAMPLE_SETS_ANNDATA_ZARR_ZIP: "sampleSets.anndata.zarr.zip",
|
|
11088
11343
|
// AnnData - h5ad via reference spec
|
|
11089
11344
|
OBS_FEATURE_MATRIX_ANNDATA_H5AD: "obsFeatureMatrix.anndata.h5ad",
|
|
11090
11345
|
OBS_FEATURE_COLUMNS_ANNDATA_H5AD: "obsFeatureColumns.anndata.h5ad",
|
|
@@ -11097,6 +11352,7 @@ const FileType$1 = {
|
|
|
11097
11352
|
OBS_LABELS_ANNDATA_H5AD: "obsLabels.anndata.h5ad",
|
|
11098
11353
|
FEATURE_LABELS_ANNDATA_H5AD: "featureLabels.anndata.h5ad",
|
|
11099
11354
|
SAMPLE_EDGES_ANNDATA_H5AD: "sampleEdges.anndata.h5ad",
|
|
11355
|
+
SAMPLE_SETS_ANNDATA_H5AD: "sampleSets.anndata.h5ad",
|
|
11100
11356
|
// SpatialData
|
|
11101
11357
|
IMAGE_SPATIALDATA_ZARR: "image.spatialdata.zarr",
|
|
11102
11358
|
LABELS_SPATIALDATA_ZARR: "labels.spatialdata.zarr",
|
|
@@ -11288,12 +11544,15 @@ const CoordinationType$1 = {
|
|
|
11288
11544
|
SAMPLE_SET_FILTER: "sampleSetFilter",
|
|
11289
11545
|
SAMPLE_FILTER_MODE: "sampleFilterMode",
|
|
11290
11546
|
SAMPLE_SET_COLOR: "sampleSetColor",
|
|
11547
|
+
SAMPLE_HIGHLIGHT: "sampleHighlight",
|
|
11291
11548
|
EMBEDDING_POINTS_VISIBLE: "embeddingPointsVisible",
|
|
11292
11549
|
EMBEDDING_CONTOURS_VISIBLE: "embeddingContoursVisible",
|
|
11293
11550
|
EMBEDDING_CONTOURS_FILLED: "embeddingContoursFilled",
|
|
11294
11551
|
EMBEDDING_CONTOUR_PERCENTILES: "embeddingContourPercentiles",
|
|
11295
11552
|
CONTOUR_COLOR_ENCODING: "contourColorEncoding",
|
|
11296
|
-
CONTOUR_COLOR: "contourColor"
|
|
11553
|
+
CONTOUR_COLOR: "contourColor",
|
|
11554
|
+
// Treemap
|
|
11555
|
+
HIERARCHY_LEVELS: "hierarchyLevels"
|
|
11297
11556
|
};
|
|
11298
11557
|
const ViewHelpMapping = {
|
|
11299
11558
|
SCATTERPLOT: "The scatterplot displays two-dimensional (pre-computed) dimensionality reduction results (such as from t-SNE or UMAP). Each point on the scatterplot represents an observation (e.g., cell).",
|
|
@@ -11310,7 +11569,8 @@ const ViewHelpMapping = {
|
|
|
11310
11569
|
OBS_SET_FEATURE_VALUE_DISTRIBUTION: "The observation set feature value distribution view displays a violin plot with values (e.g., expression values) per set (e.g., cell type) for the selected feature (e.g., gene).",
|
|
11311
11570
|
FEATURE_VALUE_HISTOGRAM: "The feature value histogram displays the distribution of values (e.g., expression) for the selected feature (e.g., gene).",
|
|
11312
11571
|
DOT_PLOT: "The dot plot displays summary information about expression of the selected features (e.g., genes) for each selected observation set (e.g., cell type).",
|
|
11313
|
-
FEATURE_BAR_PLOT: "The feature bar plot displays one bar per observation (e.g., cell) along the x-axis, where the value of a selected feature (e.g., gene) is encoded along the y-axis."
|
|
11572
|
+
FEATURE_BAR_PLOT: "The feature bar plot displays one bar per observation (e.g., cell) along the x-axis, where the value of a selected feature (e.g., gene) is encoded along the y-axis.",
|
|
11573
|
+
TREEMAP: "The treemap provides an overview of the current state of sample-level or cell-level selection and filtering."
|
|
11314
11574
|
};
|
|
11315
11575
|
const COMPONENT_COORDINATION_TYPES = {
|
|
11316
11576
|
[ViewType$1.SCATTERPLOT]: [
|
|
@@ -11790,6 +12050,32 @@ const COMPONENT_COORDINATION_TYPES = {
|
|
|
11790
12050
|
CoordinationType$1.OBS_SET_SELECTION,
|
|
11791
12051
|
CoordinationType$1.OBS_SET_FILTER
|
|
11792
12052
|
// TODO: create coordination types for internal state of the biomarker selection view?
|
|
12053
|
+
],
|
|
12054
|
+
[ViewType$1.TREEMAP]: [
|
|
12055
|
+
CoordinationType$1.DATASET,
|
|
12056
|
+
CoordinationType$1.OBS_TYPE,
|
|
12057
|
+
CoordinationType$1.FEATURE_TYPE,
|
|
12058
|
+
CoordinationType$1.FEATURE_VALUE_TYPE,
|
|
12059
|
+
CoordinationType$1.OBS_FILTER,
|
|
12060
|
+
CoordinationType$1.OBS_HIGHLIGHT,
|
|
12061
|
+
CoordinationType$1.OBS_SET_SELECTION,
|
|
12062
|
+
CoordinationType$1.OBS_SET_FILTER,
|
|
12063
|
+
CoordinationType$1.OBS_SELECTION,
|
|
12064
|
+
CoordinationType$1.OBS_SELECTION_MODE,
|
|
12065
|
+
CoordinationType$1.OBS_SET_HIGHLIGHT,
|
|
12066
|
+
CoordinationType$1.OBS_SET_COLOR,
|
|
12067
|
+
CoordinationType$1.OBS_COLOR_ENCODING,
|
|
12068
|
+
CoordinationType$1.ADDITIONAL_OBS_SETS,
|
|
12069
|
+
CoordinationType$1.SAMPLE_TYPE,
|
|
12070
|
+
CoordinationType$1.SAMPLE_SET_SELECTION,
|
|
12071
|
+
CoordinationType$1.SAMPLE_SET_FILTER,
|
|
12072
|
+
CoordinationType$1.SAMPLE_SET_COLOR,
|
|
12073
|
+
CoordinationType$1.SAMPLE_SELECTION,
|
|
12074
|
+
CoordinationType$1.SAMPLE_SELECTION_MODE,
|
|
12075
|
+
CoordinationType$1.SAMPLE_FILTER,
|
|
12076
|
+
CoordinationType$1.SAMPLE_FILTER_MODE,
|
|
12077
|
+
CoordinationType$1.SAMPLE_HIGHLIGHT,
|
|
12078
|
+
CoordinationType$1.HIERARCHY_LEVELS
|
|
11793
12079
|
]
|
|
11794
12080
|
};
|
|
11795
12081
|
const ViewType = {
|
|
@@ -11958,7 +12244,7 @@ function makeConstantWithDeprecationMessage(currObj, oldObj) {
|
|
|
11958
12244
|
const oldKeys = Object.keys(oldObj);
|
|
11959
12245
|
const propKey = String(prop);
|
|
11960
12246
|
if (oldKeys.includes(propKey)) {
|
|
11961
|
-
|
|
12247
|
+
log$5.warn(`Notice about the constant mapping ${propKey}: '${oldObj[propKey][0]}':
|
|
11962
12248
|
${oldObj[propKey][1]}`);
|
|
11963
12249
|
return oldObj[propKey];
|
|
11964
12250
|
}
|
|
@@ -12056,6 +12342,9 @@ const annDataObsSetsArr = z.array(z.object({
|
|
|
12056
12342
|
z.object({
|
|
12057
12343
|
obsSets: annDataObsSetsArr
|
|
12058
12344
|
});
|
|
12345
|
+
z.object({
|
|
12346
|
+
sampleSets: annDataObsSetsArr
|
|
12347
|
+
});
|
|
12059
12348
|
const annDataObsFeatureColumnsArr = z.array(z.object({
|
|
12060
12349
|
path: z.string()
|
|
12061
12350
|
}));
|
|
@@ -19096,7 +19385,7 @@ function stratifyArrays(sampleEdges, sampleIdToObsIdsMap, sampleSets, sampleSetS
|
|
|
19096
19385
|
sampleSetKeys.forEach((sampleSetKey) => {
|
|
19097
19386
|
const finalInsertionIndex = result.get(cellSetKey).get(sampleSetKey).get("i");
|
|
19098
19387
|
if (finalInsertionIndex !== result.get(cellSetKey).get(sampleSetKey).get("obsIndex").length) {
|
|
19099
|
-
|
|
19388
|
+
log$5.warn("The final insertion index is lower than expected.");
|
|
19100
19389
|
}
|
|
19101
19390
|
result.get(cellSetKey).get(sampleSetKey).delete("i");
|
|
19102
19391
|
});
|
|
@@ -124054,16 +124343,16 @@ function addDecoder(cases, importFn) {
|
|
|
124054
124343
|
}
|
|
124055
124344
|
cases.forEach((c2) => registry$1.set(c2, importFn));
|
|
124056
124345
|
}
|
|
124057
|
-
addDecoder([void 0, 1], () => import("./raw-
|
|
124058
|
-
addDecoder(5, () => import("./lzw-
|
|
124346
|
+
addDecoder([void 0, 1], () => import("./raw-3928687d.js").then((m2) => m2.default));
|
|
124347
|
+
addDecoder(5, () => import("./lzw-4b6e12be.js").then((m2) => m2.default));
|
|
124059
124348
|
addDecoder(6, () => {
|
|
124060
124349
|
throw new Error("old style JPEG compression is not supported.");
|
|
124061
124350
|
});
|
|
124062
|
-
addDecoder(7, () => import("./jpeg-
|
|
124063
|
-
addDecoder([8, 32946], () => import("./deflate-
|
|
124064
|
-
addDecoder(32773, () => import("./packbits-
|
|
124065
|
-
addDecoder(34887, () => import("./lerc-
|
|
124066
|
-
addDecoder(50001, () => import("./webimage-
|
|
124351
|
+
addDecoder(7, () => import("./jpeg-db1f9adb.js").then((m2) => m2.default));
|
|
124352
|
+
addDecoder([8, 32946], () => import("./deflate-7ff395f6.js").then((m2) => m2.default));
|
|
124353
|
+
addDecoder(32773, () => import("./packbits-61eb655b.js").then((m2) => m2.default));
|
|
124354
|
+
addDecoder(34887, () => import("./lerc-9859e1c5.js").then((m2) => m2.default));
|
|
124355
|
+
addDecoder(50001, () => import("./webimage-62020543.js").then((m2) => m2.default));
|
|
124067
124356
|
function decodeRowAcc(row, stride) {
|
|
124068
124357
|
let length2 = row.length - stride;
|
|
124069
124358
|
let offset5 = 0;
|
|
@@ -134120,10 +134409,10 @@ function multiSetsToTextureData(multiFeatureValues, multiMatrixObsIndex, setColo
|
|
|
134120
134409
|
const valueTexHeight = Math.max(2, Math.ceil(totalValuesLength / texSize));
|
|
134121
134410
|
const colorTexHeight = Math.max(2, Math.ceil(totalColorsLength / texSize));
|
|
134122
134411
|
if (valueTexHeight > texSize) {
|
|
134123
|
-
|
|
134412
|
+
log$5.error("Error: length of concatenated quantitative feature values larger than maximum texture size");
|
|
134124
134413
|
}
|
|
134125
134414
|
if (colorTexHeight > texSize) {
|
|
134126
|
-
|
|
134415
|
+
log$5.error("Error: length of concatenated quantitative feature values larger than maximum texture size");
|
|
134127
134416
|
}
|
|
134128
134417
|
const totalData = new Uint8Array(texSize * valueTexHeight);
|
|
134129
134418
|
const totalColors = new Uint8Array(texSize * colorTexHeight);
|
|
@@ -148753,6 +149042,7 @@ function EmbeddingScatterplotSubscriber(props) {
|
|
|
148753
149042
|
}
|
|
148754
149043
|
function DualEmbeddingScatterplotSubscriber(props) {
|
|
148755
149044
|
const {
|
|
149045
|
+
uuid,
|
|
148756
149046
|
coordinationScopes
|
|
148757
149047
|
} = props;
|
|
148758
149048
|
const [{
|
|
@@ -148765,6 +149055,7 @@ function DualEmbeddingScatterplotSubscriber(props) {
|
|
|
148765
149055
|
EmbeddingScatterplotSubscriber,
|
|
148766
149056
|
{
|
|
148767
149057
|
...props,
|
|
149058
|
+
uuid: `${uuid}-case`,
|
|
148768
149059
|
sampleSetSelection: caseSampleSetSelection
|
|
148769
149060
|
}
|
|
148770
149061
|
) }),
|
|
@@ -148772,7 +149063,7 @@ function DualEmbeddingScatterplotSubscriber(props) {
|
|
|
148772
149063
|
EmbeddingScatterplotSubscriber,
|
|
148773
149064
|
{
|
|
148774
149065
|
...props,
|
|
148775
|
-
|
|
149066
|
+
uuid: `${uuid}-ctrl`,
|
|
148776
149067
|
sampleSetSelection: ctrlSampleSetSelection
|
|
148777
149068
|
}
|
|
148778
149069
|
) })
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as inflate_1 } from "./pako.esm-68f84e2a.js";
|
|
2
|
-
import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-
|
|
2
|
+
import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-6931089e.js";
|
|
3
3
|
import "react";
|
|
4
4
|
import "@vitessce/vit-s";
|
|
5
5
|
import "react-dom";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DualEmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/DualEmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AACH,0DAVG;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;CAEhB,
|
|
1
|
+
{"version":3,"file":"DualEmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/DualEmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;GAeG;AACH,0DAVG;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;CAEhB,eAyCA"}
|
|
@@ -20,7 +20,7 @@ import { EmbeddingScatterplotSubscriber } from './EmbeddingScatterplotSubscriber
|
|
|
20
20
|
* when using dynamic opacity mode.
|
|
21
21
|
*/
|
|
22
22
|
export function DualEmbeddingScatterplotSubscriber(props) {
|
|
23
|
-
const { coordinationScopes, } = props;
|
|
23
|
+
const { uuid, coordinationScopes, } = props;
|
|
24
24
|
// Get "props" from the coordination space.
|
|
25
25
|
const [{ sampleSetSelection, }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType.DUAL_SCATTERPLOT], coordinationScopes);
|
|
26
26
|
const caseSampleSetSelection = useMemo(() => (sampleSetSelection?.[0]
|
|
@@ -29,5 +29,5 @@ export function DualEmbeddingScatterplotSubscriber(props) {
|
|
|
29
29
|
const ctrlSampleSetSelection = useMemo(() => (sampleSetSelection?.[1]
|
|
30
30
|
? [sampleSetSelection[1]]
|
|
31
31
|
: null), [sampleSetSelection]);
|
|
32
|
-
return (_jsxs("div", { style: { width: '100%', height: '100%', display: 'flex', flexDirection: 'row' }, children: [_jsx("div", { style: { width: '50%', display: 'flex', flexDirection: 'column' }, children: _jsx(EmbeddingScatterplotSubscriber, { ...props, sampleSetSelection: caseSampleSetSelection }) }), _jsx("div", { style: { width: '50%', display: 'flex', flexDirection: 'column' }, children: _jsx(EmbeddingScatterplotSubscriber, { ...props,
|
|
32
|
+
return (_jsxs("div", { style: { width: '100%', height: '100%', display: 'flex', flexDirection: 'row' }, children: [_jsx("div", { style: { width: '50%', display: 'flex', flexDirection: 'column' }, children: _jsx(EmbeddingScatterplotSubscriber, { ...props, uuid: `${uuid}-case`, sampleSetSelection: caseSampleSetSelection }) }), _jsx("div", { style: { width: '50%', display: 'flex', flexDirection: 'column' }, children: _jsx(EmbeddingScatterplotSubscriber, { ...props, uuid: `${uuid}-ctrl`, sampleSetSelection: ctrlSampleSetSelection }) })] }));
|
|
33
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/EmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;GAYG;AACH,sDAVG;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;CAEhB,
|
|
1
|
+
{"version":3,"file":"EmbeddingScatterplotSubscriber.d.ts","sourceRoot":"","sources":["../src/EmbeddingScatterplotSubscriber.js"],"names":[],"mappings":"AA0CA;;;;;;;;;;;;GAYG;AACH,sDAVG;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAEU,mBAAmB;IAErB,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;CAEhB,eAwhBA"}
|
|
@@ -35,7 +35,8 @@ export function EmbeddingScatterplotSubscriber(props) {
|
|
|
35
35
|
const [{ dataset, obsType, featureType, featureValueType, sampleType, embeddingZoom: zoom, embeddingTargetX: targetX, embeddingTargetY: targetY, embeddingTargetZ: targetZ, embeddingType: mapping, obsFilter: cellFilter, obsHighlight: cellHighlight, featureSelection: geneSelection, obsSetSelection: cellSetSelection, obsSetColor: cellSetColor, obsColorEncoding: cellColorEncoding, additionalObsSets: additionalCellSets, embeddingObsSetPolygonsVisible: cellSetPolygonsVisible, embeddingObsSetLabelsVisible: cellSetLabelsVisible, embeddingObsSetLabelSize: cellSetLabelSize, embeddingObsRadius: cellRadiusFixed, embeddingObsRadiusMode: cellRadiusMode, embeddingObsOpacity: cellOpacityFixed, embeddingObsOpacityMode: cellOpacityMode, featureValueColormap: geneExpressionColormap, featureValueColormapRange: geneExpressionColormapRange, tooltipsVisible, sampleSetSelection: sampleSetSelectionFromCoordination, sampleSetColor, embeddingPointsVisible, embeddingContoursVisible, embeddingContoursFilled, embeddingContourPercentiles: contourPercentiles, contourColorEncoding, contourColor, }, { setEmbeddingZoom: setZoom, setEmbeddingTargetX: setTargetX, setEmbeddingTargetY: setTargetY, setEmbeddingTargetZ: setTargetZ, setObsFilter: setCellFilter, setObsSetSelection: setCellSetSelection, setObsHighlight: setCellHighlight, setObsSetColor: setCellSetColor, setObsColorEncoding: setCellColorEncoding, setAdditionalObsSets: setAdditionalCellSets, setEmbeddingObsSetPolygonsVisible: setCellSetPolygonsVisible, setEmbeddingObsSetLabelsVisible: setCellSetLabelsVisible, setEmbeddingObsSetLabelSize: setCellSetLabelSize, setEmbeddingObsRadius: setCellRadiusFixed, setEmbeddingObsRadiusMode: setCellRadiusMode, setEmbeddingObsOpacity: setCellOpacityFixed, setEmbeddingObsOpacityMode: setCellOpacityMode, setFeatureValueColormap: setGeneExpressionColormap, setFeatureValueColormapRange: setGeneExpressionColormapRange, setTooltipsVisible, setEmbeddingPointsVisible, setEmbeddingContoursVisible, setEmbeddingContoursFilled, setEmbeddingContourPercentiles: setContourPercentiles, setContourColorEncoding, }] = useCoordination(COMPONENT_COORDINATION_TYPES[ViewType.SCATTERPLOT], coordinationScopes);
|
|
36
36
|
const { embeddingZoom: initialZoom, embeddingTargetX: initialTargetX, embeddingTargetY: initialTargetY, } = useInitialCoordination(COMPONENT_COORDINATION_TYPES[ViewType.SCATTERPLOT], coordinationScopes);
|
|
37
37
|
const observationsLabel = observationsLabelOverride || obsType;
|
|
38
|
-
const sampleSetSelection = (sampleSetSelectionFromProps
|
|
38
|
+
const sampleSetSelection = (sampleSetSelectionFromProps
|
|
39
|
+
|| sampleSetSelectionFromCoordination);
|
|
39
40
|
const [width, height, deckRef] = useDeckCanvasSize();
|
|
40
41
|
const title = titleOverride || `Scatterplot (${mapping})`;
|
|
41
42
|
const [obsLabelsTypes, obsLabelsData] = useMultiObsLabels(coordinationScopes, obsType, loaders, dataset);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitessce/scatterplot-embedding",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.7",
|
|
4
4
|
"author": "HIDIVE Lab at HMS",
|
|
5
5
|
"homepage": "http://vitessce.io",
|
|
6
6
|
"repository": {
|
|
@@ -20,12 +20,12 @@
|
|
|
20
20
|
"d3-array": "^2.4.0",
|
|
21
21
|
"lodash-es": "^4.17.21",
|
|
22
22
|
"react-aria": "^3.28.0",
|
|
23
|
-
"@vitessce/constants-internal": "3.5.
|
|
24
|
-
"@vitessce/legend": "3.5.
|
|
25
|
-
"@vitessce/scatterplot": "3.5.
|
|
26
|
-
"@vitessce/sets-utils": "3.5.
|
|
27
|
-
"@vitessce/utils": "3.5.
|
|
28
|
-
"@vitessce/vit-s": "3.5.
|
|
23
|
+
"@vitessce/constants-internal": "3.5.7",
|
|
24
|
+
"@vitessce/legend": "3.5.7",
|
|
25
|
+
"@vitessce/scatterplot": "3.5.7",
|
|
26
|
+
"@vitessce/sets-utils": "3.5.7",
|
|
27
|
+
"@vitessce/utils": "3.5.7",
|
|
28
|
+
"@vitessce/vit-s": "3.5.7"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"react": "^18.0.0",
|
|
@@ -24,6 +24,7 @@ import { EmbeddingScatterplotSubscriber } from './EmbeddingScatterplotSubscriber
|
|
|
24
24
|
*/
|
|
25
25
|
export function DualEmbeddingScatterplotSubscriber(props) {
|
|
26
26
|
const {
|
|
27
|
+
uuid,
|
|
27
28
|
coordinationScopes,
|
|
28
29
|
} = props;
|
|
29
30
|
|
|
@@ -48,13 +49,14 @@ export function DualEmbeddingScatterplotSubscriber(props) {
|
|
|
48
49
|
<div style={{ width: '50%', display: 'flex', flexDirection: 'column' }}>
|
|
49
50
|
<EmbeddingScatterplotSubscriber
|
|
50
51
|
{...props}
|
|
52
|
+
uuid={`${uuid}-case`}
|
|
51
53
|
sampleSetSelection={caseSampleSetSelection}
|
|
52
54
|
/>
|
|
53
55
|
</div>
|
|
54
56
|
<div style={{ width: '50%', display: 'flex', flexDirection: 'column' }}>
|
|
55
57
|
<EmbeddingScatterplotSubscriber
|
|
56
58
|
{...props}
|
|
57
|
-
|
|
59
|
+
uuid={`${uuid}-ctrl`}
|
|
58
60
|
sampleSetSelection={ctrlSampleSetSelection}
|
|
59
61
|
/>
|
|
60
62
|
</div>
|
|
@@ -149,7 +149,9 @@ export function EmbeddingScatterplotSubscriber(props) {
|
|
|
149
149
|
);
|
|
150
150
|
|
|
151
151
|
const observationsLabel = observationsLabelOverride || obsType;
|
|
152
|
-
const sampleSetSelection = (
|
|
152
|
+
const sampleSetSelection = (
|
|
153
|
+
sampleSetSelectionFromProps
|
|
154
|
+
|| sampleSetSelectionFromCoordination
|
|
153
155
|
);
|
|
154
156
|
|
|
155
157
|
const [width, height, deckRef] = useDeckCanvasSize();
|