@vitessce/scatterplot-gating 4.0.4 → 4.0.6

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/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { G } from "./index-CCqY8Pij.js";
1
+ import { G } from "./index-BUVBbXFQ.js";
2
2
  export {
3
3
  G as GatingSubscriber
4
4
  };
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CCqY8Pij.js";
1
+ import { B as BaseDecoder } from "./index-BUVBbXFQ.js";
2
2
  const dctZigZag = new Int32Array([
3
3
  0,
4
4
  1,
@@ -1,5 +1,5 @@
1
1
  import { i as inflate_1 } from "./pako.esm-SxljTded.js";
2
- import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-CCqY8Pij.js";
2
+ import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-BUVBbXFQ.js";
3
3
  const LercParameters = {
4
4
  AddCompression: 1
5
5
  };
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CCqY8Pij.js";
1
+ import { B as BaseDecoder } from "./index-BUVBbXFQ.js";
2
2
  const MIN_BITS = 9;
3
3
  const CLEAR_CODE = 256;
4
4
  const EOI_CODE = 257;
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CCqY8Pij.js";
1
+ import { B as BaseDecoder } from "./index-BUVBbXFQ.js";
2
2
  class PackbitsDecoder extends BaseDecoder {
3
3
  decodeBlock(buffer) {
4
4
  const dataView = new DataView(buffer);
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CCqY8Pij.js";
1
+ import { B as BaseDecoder } from "./index-BUVBbXFQ.js";
2
2
  class RawDecoder extends BaseDecoder {
3
3
  decodeBlock(buffer) {
4
4
  return buffer;
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-CCqY8Pij.js";
1
+ import { B as BaseDecoder } from "./index-BUVBbXFQ.js";
2
2
  class WebImageDecoder extends BaseDecoder {
3
3
  constructor() {
4
4
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"GatingSubscriber.d.ts","sourceRoot":"","sources":["../src/GatingSubscriber.js"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;KAYK;AACL,wCAVK;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAES,cAAc,EAA7B,OAAO;IACS,mBAAmB;IAErB,kBAAkB,EAAhC,MAAM;CAEhB,OA6cF"}
1
+ {"version":3,"file":"GatingSubscriber.d.ts","sourceRoot":"","sources":["../src/GatingSubscriber.js"],"names":[],"mappings":"AAsCA;;;;;;;;;;;;KAYK;AACL,wCAVK;IAAsB,IAAI,EAAlB,MAAM;IACQ,KAAK,EAAnB,MAAM;IACQ,kBAAkB,EAAhC,MAAM;IAES,cAAc,EAA7B,OAAO;IACS,mBAAmB;IAErB,kBAAkB,EAAhC,MAAM;CAEhB,OAseF"}
@@ -1,10 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import React, { useState, useEffect, useCallback, useMemo, } from 'react';
2
+ import React, { useState, useEffect, useCallback, useMemo, useDeferredValue, } from 'react';
3
3
  import { extent } from 'd3-array';
4
4
  import { isEqual } from 'lodash-es';
5
5
  import { pluralize as plur, capitalize, commaNumber, getValueTransformFunction, VALUE_TRANSFORM_OPTIONS, } from '@vitessce/utils';
6
6
  import { TitleInfo, useDeckCanvasSize, useReady, useUrls, useUint8FeatureSelection, useExpressionValueGetter, useObsSetsData, useFeatureSelection, useObsFeatureMatrixIndices, useCoordination, useInitialCoordination, useLoaders, useSetComponentHover, useSetComponentViewInfo, useCoordinationScopes, } from '@vitessce/vit-s';
7
- import { getCellSetPolygons, mergeObsSets, setObsSelection, getCellColors, } from '@vitessce/sets-utils';
7
+ import { getCellSetPolygons, mergeObsSets, setObsSelection, treeToColorIndicesArray, colorIndicesFromCodes, } from '@vitessce/sets-utils';
8
8
  import { Scatterplot, ScatterplotTooltipSubscriber, ScatterplotOptions, getPointSizeDevicePixels, getPointOpacity, EmptyMessage, } from '@vitessce/scatterplot';
9
9
  import { ViewType, COMPONENT_COORDINATION_TYPES, ViewHelpMapping } from '@vitessce/constants-internal';
10
10
  import GatingScatterplotOptions from './GatingScatterplotOptions.js';
@@ -45,7 +45,7 @@ export function GatingSubscriber(props) {
45
45
  const featureSelectionX = useMemo(() => (gatingFeatureSelectionX ? [gatingFeatureSelectionX] : null), [gatingFeatureSelectionX]);
46
46
  const featureSelectionY = useMemo(() => (gatingFeatureSelectionY ? [gatingFeatureSelectionY] : null), [gatingFeatureSelectionY]);
47
47
  // Get data from loaders using the data hooks.
48
- const [{ obsSets: cellSets }, obsSetsStatus, obsSetsUrls, obsSetsError] = useObsSetsData(loaders, dataset, false, { setObsSetSelection: setCellSetSelection, setObsSetColor: setCellSetColor }, { obsSetSelection: cellSetSelection, obsSetColor: cellSetColor }, { obsType });
48
+ const [{ obsSets: cellSets, obsSetsColumns }, obsSetsStatus, obsSetsUrls, obsSetsError,] = useObsSetsData(loaders, dataset, false, { setObsSetSelection: setCellSetSelection, setObsSetColor: setCellSetColor }, { obsSetSelection: cellSetSelection, obsSetColor: cellSetColor }, { obsType });
49
49
  const [
50
50
  // eslint-disable-next-line no-unused-vars
51
51
  expressionDataColor, loadedColor, featureSelectionColorStatus, featureSelectionColorErrors,] = useFeatureSelection(loaders, dataset, false, gatingFeatureSelectionColor, { obsType, featureType, featureValueType });
@@ -105,6 +105,7 @@ export function GatingSubscriber(props) {
105
105
  featureSelectionX, featureSelectionY,
106
106
  ]);
107
107
  const [dynamicCellRadius, setDynamicCellRadius] = useState(cellRadiusFixed);
108
+ const [isSelectionPending, setIsSelectionPending] = useState(false);
108
109
  const [dynamicCellOpacity, setDynamicCellOpacity] = useState(cellOpacityFixed);
109
110
  const [originalViewState, setOriginalViewState] = useState(null);
110
111
  const mergedCellSets = useMemo(() => mergeObsSets(cellSets, additionalCellSets), [cellSets, additionalCellSets]);
@@ -112,14 +113,30 @@ export function GatingSubscriber(props) {
112
113
  setObsSelection(v, additionalCellSets, cellSetColor, setCellSetSelection, setAdditionalCellSets, setCellSetColor, setCellColorEncoding);
113
114
  }, [additionalCellSets, cellSetColor, setCellColorEncoding,
114
115
  setAdditionalCellSets, setCellSetColor, setCellSetSelection]);
115
- const cellColors = useMemo(() => getCellColors({
116
- cellSets: mergedCellSets,
117
- cellSetSelection,
118
- cellSetColor,
119
- obsIndex,
120
- theme,
121
- }), [mergedCellSets, theme,
122
- cellSetSelection, cellSetColor, obsIndex]);
116
+ // A set selection or color change re-encodes every observation in the memos
117
+ // below, which at atlas scale takes longer than a frame. Deferring these values
118
+ // lets React commit the urgent update first — the sets manager checkbox that
119
+ // initiated the change paints immediately — and re-render this view afterwards.
120
+ const deferredCellSetSelection = useDeferredValue(cellSetSelection);
121
+ const deferredCellSetColor = useDeferredValue(cellSetColor);
122
+ // Positional rather than keyed by observation ID: at atlas scale an ID-keyed color
123
+ // Map costs one string hash lookup per point per render, plus a per-observation
124
+ // color array whenever the selected sets carry confidence scores.
125
+ const obsColorIndices = useMemo(() => (
126
+ // When the loader provides raw categorical codes over this same observation
127
+ // axis (checked by reference), the encoding is one typed-array pass with no
128
+ // tree walk. colorIndicesFromCodes returns null for selections it cannot
129
+ // resolve (e.g. user-defined lasso selections), falling back to the tree.
130
+ (obsSetsColumns && obsSetsColumns.obsIndex === obsIndex
131
+ && colorIndicesFromCodes({
132
+ columns: obsSetsColumns.columns,
133
+ obsIndex,
134
+ selectedNamePaths: deferredCellSetSelection,
135
+ cellSetColor: deferredCellSetColor,
136
+ theme,
137
+ }))
138
+ || treeToColorIndicesArray(mergedCellSets, deferredCellSetSelection, deferredCellSetColor, obsIndex, theme)), [mergedCellSets, deferredCellSetSelection, deferredCellSetColor, obsIndex, theme,
139
+ obsSetsColumns]);
123
140
  // cellSetPolygonCache is an array of tuples like [(key0, val0), (key1, val1), ...],
124
141
  // where the keys are cellSetSelection arrays.
125
142
  const [cellSetPolygonCache, setCellSetPolygonCache] = useState([]);
@@ -127,26 +144,25 @@ export function GatingSubscriber(props) {
127
144
  const cacheGet = (cache, key) => cache.find(el => isEqual(el[0], key))?.[1];
128
145
  const cellSetPolygons = useMemo(() => {
129
146
  if ((cellSetLabelsVisible || cellSetPolygonsVisible)
130
- && !cacheHas(cellSetPolygonCache, cellSetSelection)
147
+ && !cacheHas(cellSetPolygonCache, deferredCellSetSelection)
131
148
  && mergedCellSets?.tree?.length
132
149
  && obsXY
133
150
  && obsIndex
134
- && cellSetColor?.length) {
151
+ && deferredCellSetColor?.length) {
135
152
  const newCellSetPolygons = getCellSetPolygons({
136
153
  obsIndex,
137
154
  obsEmbedding: obsXY,
138
155
  cellSets: mergedCellSets,
139
- cellSetSelection,
140
- cellSetColor,
156
+ cellSetSelection: deferredCellSetSelection,
157
+ cellSetColor: deferredCellSetColor,
141
158
  theme,
142
159
  });
143
- setCellSetPolygonCache(cache => [...cache, [cellSetSelection, newCellSetPolygons]]);
160
+ setCellSetPolygonCache(cache => [...cache, [deferredCellSetSelection, newCellSetPolygons]]);
144
161
  return newCellSetPolygons;
145
162
  }
146
- return cacheGet(cellSetPolygonCache, cellSetSelection) || [];
163
+ return cacheGet(cellSetPolygonCache, deferredCellSetSelection) || [];
147
164
  }, [cellSetPolygonsVisible, cellSetPolygonCache, cellSetLabelsVisible, theme,
148
- obsIndex, obsXY, mergedCellSets, cellSetSelection, cellSetColor]);
149
- const cellSelection = useMemo(() => Array.from(cellColors.keys()), [cellColors]);
165
+ obsIndex, obsXY, mergedCellSets, deferredCellSetSelection, deferredCellSetColor]);
150
166
  const [xRange, yRange, xExtent, yExtent, numCells] = useMemo(() => {
151
167
  if (obsXY && obsXY.data && obsXY.shape) {
152
168
  const cellCount = obsXY.shape[1];
@@ -190,8 +206,10 @@ export function GatingSubscriber(props) {
190
206
  // eslint-disable-next-line react-hooks/exhaustive-deps
191
207
  }, [xRange, yRange, xExtent, yExtent, numCells,
192
208
  width, height, zoom, initialTargetX, initialTargetY, averageFillDensity]);
193
- const cellSelectionSet = useMemo(() => new Set(cellSelection), [cellSelection]);
194
- const getCellIsSelected = useCallback((object, { index }) => ((cellSelectionSet || new Set([])).has(obsIndex[index]) ? 1.0 : 0.0), [cellSelectionSet, obsIndex]);
209
+ // With no set selection every observation counts as selected, matching the
210
+ // behavior of the ID-keyed color map this replaced.
211
+ const allCellsSelected = !(deferredCellSetSelection && mergedCellSets);
212
+ const getCellIsSelected = useCallback((object, { index }) => ((allCellsSelected || obsColorIndices.colorIndices[index] !== 0) ? 1.0 : 0.0), [allCellsSelected, obsColorIndices]);
195
213
  const cellRadius = (cellRadiusMode === 'manual' ? cellRadiusFixed : dynamicCellRadius);
196
214
  const cellOpacity = (cellOpacityMode === 'manual' ? cellOpacityFixed : dynamicCellOpacity);
197
215
  const { normData: uint8ExpressionData } = useUint8FeatureSelection(expressionDataColor);
@@ -222,12 +240,12 @@ export function GatingSubscriber(props) {
222
240
  setTargetY(target[1]);
223
241
  setTargetZ(target[2] || 0);
224
242
  };
225
- return (_jsxs(TitleInfo, { title: title, info: `${commaNumber(cellsCount)} ${plur(obsType, cellsCount)}`, closeButtonVisible: closeButtonVisible, downloadButtonVisible: downloadButtonVisible, removeGridComponent: removeGridComponent, urls: urls, theme: theme, isReady: isReady, helpText: helpText, errors: errors, options: (_jsx(ScatterplotOptions, { observationsLabel: obsType, cellRadius: cellRadiusFixed, setCellRadius: setCellRadiusFixed, cellRadiusMode: cellRadiusMode, setCellRadiusMode: setCellRadiusMode, cellOpacity: cellOpacityFixed, setCellOpacity: setCellOpacityFixed, cellOpacityMode: cellOpacityMode, setCellOpacityMode: setCellOpacityMode, cellSetLabelsVisible: cellSetLabelsVisible, setCellSetLabelsVisible: setCellSetLabelsVisible, cellSetLabelSize: cellSetLabelSize, setCellSetLabelSize: setCellSetLabelSize, cellSetPolygonsVisible: cellSetPolygonsVisible, setCellSetPolygonsVisible: setCellSetPolygonsVisible, cellColorEncoding: cellColorEncoding, setCellColorEncoding: setCellColorEncoding, geneExpressionColormap: geneExpressionColormap, setGeneExpressionColormap: setGeneExpressionColormap, geneExpressionColormapRange: geneExpressionColormapRange, setGeneExpressionColormapRange: setGeneExpressionColormapRange, children: _jsx(GatingScatterplotOptions, { featureType: featureType, gatingFeatureSelectionX: gatingFeatureSelectionX, setGatingFeatureSelectionX: setGatingFeatureSelectionX, gatingFeatureSelectionY: gatingFeatureSelectionY, setGatingFeatureSelectionY: setGatingFeatureSelectionY, gatingFeatureValueTransform: featureValueTransform, setGatingFeatureValueTransform: (newValue) => {
243
+ return (_jsxs(TitleInfo, { title: title, info: `${commaNumber(cellsCount)} ${plur(obsType, cellsCount)}`, closeButtonVisible: closeButtonVisible, downloadButtonVisible: downloadButtonVisible, removeGridComponent: removeGridComponent, urls: urls, theme: theme, isReady: isReady && !isSelectionPending, helpText: helpText, errors: errors, options: (_jsx(ScatterplotOptions, { observationsLabel: obsType, cellRadius: cellRadiusFixed, setCellRadius: setCellRadiusFixed, cellRadiusMode: cellRadiusMode, setCellRadiusMode: setCellRadiusMode, cellOpacity: cellOpacityFixed, setCellOpacity: setCellOpacityFixed, cellOpacityMode: cellOpacityMode, setCellOpacityMode: setCellOpacityMode, cellSetLabelsVisible: cellSetLabelsVisible, setCellSetLabelsVisible: setCellSetLabelsVisible, cellSetLabelSize: cellSetLabelSize, setCellSetLabelSize: setCellSetLabelSize, cellSetPolygonsVisible: cellSetPolygonsVisible, setCellSetPolygonsVisible: setCellSetPolygonsVisible, cellColorEncoding: cellColorEncoding, setCellColorEncoding: setCellColorEncoding, geneExpressionColormap: geneExpressionColormap, setGeneExpressionColormap: setGeneExpressionColormap, geneExpressionColormapRange: geneExpressionColormapRange, setGeneExpressionColormapRange: setGeneExpressionColormapRange, children: _jsx(GatingScatterplotOptions, { featureType: featureType, gatingFeatureSelectionX: gatingFeatureSelectionX, setGatingFeatureSelectionX: setGatingFeatureSelectionX, gatingFeatureSelectionY: gatingFeatureSelectionY, setGatingFeatureSelectionY: setGatingFeatureSelectionY, gatingFeatureValueTransform: featureValueTransform, setGatingFeatureValueTransform: (newValue) => {
226
244
  setFeatureValueTransform(newValue);
227
245
  setTargetX(null);
228
246
  setTargetY(null);
229
247
  setZoom(null);
230
- }, gatingFeatureValueTransformCoefficient: featureValueTransformCoefficient, setGatingFeatureValueTransformCoefficient: setFeatureValueTransformCoefficient, geneSelectOptions: featureIndex, transformOptions: VALUE_TRANSFORM_OPTIONS }) })), children: [_jsx(EmptyMessage, { visible: !(gatingFeatureSelectionX && gatingFeatureSelectionY), message: `Select two ${plur(featureType, 2)} in the plot settings.` }), _jsx(Scatterplot, { ref: deckRef, uuid: uuid, theme: theme, hideTools: !(gatingFeatureSelectionX && gatingFeatureSelectionY), hideRecenter: !(gatingFeatureSelectionX && gatingFeatureSelectionY), viewState: { zoom, target: [targetX, targetY, targetZ] }, setViewState: setViewState, originalViewState: originalViewState, obsEmbeddingIndex: obsIndex, obsEmbedding: obsXY, cellFilter: cellFilter, cellSelection: cellSelection, cellHighlight: cellHighlight, cellColors: cellColors, cellSetPolygons: cellSetPolygons, cellSetLabelSize: cellSetLabelSize, cellSetLabelsVisible: cellSetLabelsVisible, cellSetPolygonsVisible: cellSetPolygonsVisible, setCellFilter: setCellFilter, setCellSelection: setCellSelectionProp, setCellHighlight: setCellHighlight, cellRadius: cellRadius, cellOpacity: cellOpacity, cellColorEncoding: cellColorEncoding, geneExpressionColormap: geneExpressionColormap, geneExpressionColormapRange: geneExpressionColormapRange, setComponentHover: () => {
248
+ }, gatingFeatureValueTransformCoefficient: featureValueTransformCoefficient, setGatingFeatureValueTransformCoefficient: setFeatureValueTransformCoefficient, geneSelectOptions: featureIndex, transformOptions: VALUE_TRANSFORM_OPTIONS }) })), children: [_jsx(EmptyMessage, { visible: !(gatingFeatureSelectionX && gatingFeatureSelectionY), message: `Select two ${plur(featureType, 2)} in the plot settings.` }), _jsx(Scatterplot, { ref: deckRef, uuid: uuid, onSelectionBusy: setIsSelectionPending, theme: theme, hideTools: !(gatingFeatureSelectionX && gatingFeatureSelectionY), hideRecenter: !(gatingFeatureSelectionX && gatingFeatureSelectionY), viewState: { zoom, target: [targetX, targetY, targetZ] }, setViewState: setViewState, originalViewState: originalViewState, obsEmbeddingIndex: obsIndex, obsEmbedding: obsXY, cellFilter: cellFilter, cellHighlight: cellHighlight, obsColorIndices: obsColorIndices, cellSetPolygons: cellSetPolygons, cellSetLabelSize: cellSetLabelSize, cellSetLabelsVisible: cellSetLabelsVisible, cellSetPolygonsVisible: cellSetPolygonsVisible, setCellFilter: setCellFilter, setCellSelection: setCellSelectionProp, setCellHighlight: setCellHighlight, cellRadius: cellRadius, cellOpacity: cellOpacity, cellColorEncoding: cellColorEncoding, geneExpressionColormap: geneExpressionColormap, geneExpressionColormapRange: geneExpressionColormapRange, setComponentHover: () => {
231
249
  setComponentHover(uuid);
232
250
  }, updateViewInfo: setComponentViewInfo, getExpressionValue: getExpressionValue, getCellIsSelected: getCellIsSelected, embeddingPointsVisible: true }), !disableTooltip && (_jsx(ScatterplotTooltipSubscriber, { parentUuid: uuid, obsHighlight: cellHighlight, width: width, height: height, getObsInfo: getObsInfo }))] }));
233
251
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GatingSubscriber.js","sourceRoot":"","sources":["../src/GatingSubscriber.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GatingSubscriber.js","sourceRoot":"","sources":["../src/GatingSubscriber.js"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitessce/scatterplot-gating",
3
- "version": "4.0.4",
3
+ "version": "4.0.6",
4
4
  "author": "HIDIVE Lab at HMS",
5
5
  "homepage": "http://vitessce.io",
6
6
  "repository": {
@@ -19,12 +19,12 @@
19
19
  "d3-array": "^2.4.0",
20
20
  "lodash-es": "^4.17.21",
21
21
  "react-aria": "^3.47.0",
22
- "@vitessce/constants-internal": "4.0.4",
23
- "@vitessce/scatterplot": "4.0.4",
24
- "@vitessce/utils": "4.0.4",
25
- "@vitessce/styles": "4.0.4",
26
- "@vitessce/vit-s": "4.0.4",
27
- "@vitessce/sets-utils": "4.0.4"
22
+ "@vitessce/styles": "4.0.6",
23
+ "@vitessce/constants-internal": "4.0.6",
24
+ "@vitessce/sets-utils": "4.0.6",
25
+ "@vitessce/utils": "4.0.6",
26
+ "@vitessce/vit-s": "4.0.6",
27
+ "@vitessce/scatterplot": "4.0.6"
28
28
  },
29
29
  "devDependencies": {
30
30
  "react": "19.2.6",
@@ -1,5 +1,5 @@
1
1
  import React, {
2
- useState, useEffect, useCallback, useMemo,
2
+ useState, useEffect, useCallback, useMemo, useDeferredValue,
3
3
  } from 'react';
4
4
  import { extent } from 'd3-array';
5
5
  import { isEqual } from 'lodash-es';
@@ -24,7 +24,8 @@ import {
24
24
  useCoordinationScopes,
25
25
  } from '@vitessce/vit-s';
26
26
  import {
27
- getCellSetPolygons, mergeObsSets, setObsSelection, getCellColors,
27
+ getCellSetPolygons, mergeObsSets, setObsSelection, treeToColorIndicesArray,
28
+ colorIndicesFromCodes,
28
29
  } from '@vitessce/sets-utils';
29
30
  import {
30
31
  Scatterplot, ScatterplotTooltipSubscriber, ScatterplotOptions,
@@ -155,7 +156,9 @@ export function GatingSubscriber(props) {
155
156
  ), [gatingFeatureSelectionY]);
156
157
 
157
158
  // Get data from loaders using the data hooks.
158
- const [{ obsSets: cellSets }, obsSetsStatus, obsSetsUrls, obsSetsError] = useObsSetsData(
159
+ const [
160
+ { obsSets: cellSets, obsSetsColumns }, obsSetsStatus, obsSetsUrls, obsSetsError,
161
+ ] = useObsSetsData(
159
162
  loaders, dataset, false,
160
163
  { setObsSetSelection: setCellSetSelection, setObsSetColor: setCellSetColor },
161
164
  { obsSetSelection: cellSetSelection, obsSetColor: cellSetColor },
@@ -251,6 +254,7 @@ export function GatingSubscriber(props) {
251
254
  ]);
252
255
 
253
256
  const [dynamicCellRadius, setDynamicCellRadius] = useState(cellRadiusFixed);
257
+ const [isSelectionPending, setIsSelectionPending] = useState(false);
254
258
  const [dynamicCellOpacity, setDynamicCellOpacity] = useState(cellOpacityFixed);
255
259
 
256
260
  const [originalViewState, setOriginalViewState] = useState(null);
@@ -268,14 +272,34 @@ export function GatingSubscriber(props) {
268
272
  }, [additionalCellSets, cellSetColor, setCellColorEncoding,
269
273
  setAdditionalCellSets, setCellSetColor, setCellSetSelection]);
270
274
 
271
- const cellColors = useMemo(() => getCellColors({
272
- cellSets: mergedCellSets,
273
- cellSetSelection,
274
- cellSetColor,
275
- obsIndex,
276
- theme,
277
- }), [mergedCellSets, theme,
278
- cellSetSelection, cellSetColor, obsIndex]);
275
+ // A set selection or color change re-encodes every observation in the memos
276
+ // below, which at atlas scale takes longer than a frame. Deferring these values
277
+ // lets React commit the urgent update first — the sets manager checkbox that
278
+ // initiated the change paints immediately — and re-render this view afterwards.
279
+ const deferredCellSetSelection = useDeferredValue(cellSetSelection);
280
+ const deferredCellSetColor = useDeferredValue(cellSetColor);
281
+
282
+ // Positional rather than keyed by observation ID: at atlas scale an ID-keyed color
283
+ // Map costs one string hash lookup per point per render, plus a per-observation
284
+ // color array whenever the selected sets carry confidence scores.
285
+ const obsColorIndices = useMemo(() => (
286
+ // When the loader provides raw categorical codes over this same observation
287
+ // axis (checked by reference), the encoding is one typed-array pass with no
288
+ // tree walk. colorIndicesFromCodes returns null for selections it cannot
289
+ // resolve (e.g. user-defined lasso selections), falling back to the tree.
290
+ (obsSetsColumns && obsSetsColumns.obsIndex === obsIndex
291
+ && colorIndicesFromCodes({
292
+ columns: obsSetsColumns.columns,
293
+ obsIndex,
294
+ selectedNamePaths: deferredCellSetSelection,
295
+ cellSetColor: deferredCellSetColor,
296
+ theme,
297
+ }))
298
+ || treeToColorIndicesArray(
299
+ mergedCellSets, deferredCellSetSelection, deferredCellSetColor, obsIndex, theme,
300
+ )
301
+ ), [mergedCellSets, deferredCellSetSelection, deferredCellSetColor, obsIndex, theme,
302
+ obsSetsColumns]);
279
303
 
280
304
  // cellSetPolygonCache is an array of tuples like [(key0, val0), (key1, val1), ...],
281
305
  // where the keys are cellSetSelection arrays.
@@ -284,28 +308,28 @@ export function GatingSubscriber(props) {
284
308
  const cacheGet = (cache, key) => cache.find(el => isEqual(el[0], key))?.[1];
285
309
  const cellSetPolygons = useMemo(() => {
286
310
  if ((cellSetLabelsVisible || cellSetPolygonsVisible)
287
- && !cacheHas(cellSetPolygonCache, cellSetSelection)
311
+ && !cacheHas(cellSetPolygonCache, deferredCellSetSelection)
288
312
  && mergedCellSets?.tree?.length
289
313
  && obsXY
290
314
  && obsIndex
291
- && cellSetColor?.length) {
315
+ && deferredCellSetColor?.length) {
292
316
  const newCellSetPolygons = getCellSetPolygons({
293
317
  obsIndex,
294
318
  obsEmbedding: obsXY,
295
319
  cellSets: mergedCellSets,
296
- cellSetSelection,
297
- cellSetColor,
320
+ cellSetSelection: deferredCellSetSelection,
321
+ cellSetColor: deferredCellSetColor,
298
322
  theme,
299
323
  });
300
- setCellSetPolygonCache(cache => [...cache, [cellSetSelection, newCellSetPolygons]]);
324
+ setCellSetPolygonCache(
325
+ cache => [...cache, [deferredCellSetSelection, newCellSetPolygons]],
326
+ );
301
327
  return newCellSetPolygons;
302
328
  }
303
- return cacheGet(cellSetPolygonCache, cellSetSelection) || [];
329
+ return cacheGet(cellSetPolygonCache, deferredCellSetSelection) || [];
304
330
  }, [cellSetPolygonsVisible, cellSetPolygonCache, cellSetLabelsVisible, theme,
305
- obsIndex, obsXY, mergedCellSets, cellSetSelection, cellSetColor]);
306
-
331
+ obsIndex, obsXY, mergedCellSets, deferredCellSetSelection, deferredCellSetColor]);
307
332
 
308
- const cellSelection = useMemo(() => Array.from(cellColors.keys()), [cellColors]);
309
333
 
310
334
  const [xRange, yRange, xExtent, yExtent, numCells] = useMemo(() => {
311
335
  if (obsXY && obsXY.data && obsXY.shape) {
@@ -357,10 +381,12 @@ export function GatingSubscriber(props) {
357
381
  }, [xRange, yRange, xExtent, yExtent, numCells,
358
382
  width, height, zoom, initialTargetX, initialTargetY, averageFillDensity]);
359
383
 
360
- const cellSelectionSet = useMemo(() => new Set(cellSelection), [cellSelection]);
384
+ // With no set selection every observation counts as selected, matching the
385
+ // behavior of the ID-keyed color map this replaced.
386
+ const allCellsSelected = !(deferredCellSetSelection && mergedCellSets);
361
387
  const getCellIsSelected = useCallback((object, { index }) => (
362
- (cellSelectionSet || new Set([])).has(obsIndex[index]) ? 1.0 : 0.0
363
- ), [cellSelectionSet, obsIndex]);
388
+ (allCellsSelected || obsColorIndices.colorIndices[index] !== 0) ? 1.0 : 0.0
389
+ ), [allCellsSelected, obsColorIndices]);
364
390
 
365
391
  const cellRadius = (cellRadiusMode === 'manual' ? cellRadiusFixed : dynamicCellRadius);
366
392
  const cellOpacity = (cellOpacityMode === 'manual' ? cellOpacityFixed : dynamicCellOpacity);
@@ -408,7 +434,7 @@ export function GatingSubscriber(props) {
408
434
  removeGridComponent={removeGridComponent}
409
435
  urls={urls}
410
436
  theme={theme}
411
- isReady={isReady}
437
+ isReady={isReady && !isSelectionPending}
412
438
  helpText={helpText}
413
439
  errors={errors}
414
440
  options={(
@@ -463,6 +489,7 @@ export function GatingSubscriber(props) {
463
489
  <Scatterplot
464
490
  ref={deckRef}
465
491
  uuid={uuid}
492
+ onSelectionBusy={setIsSelectionPending}
466
493
  theme={theme}
467
494
  hideTools={!(gatingFeatureSelectionX && gatingFeatureSelectionY)}
468
495
  hideRecenter={!(gatingFeatureSelectionX && gatingFeatureSelectionY)}
@@ -472,9 +499,8 @@ export function GatingSubscriber(props) {
472
499
  obsEmbeddingIndex={obsIndex}
473
500
  obsEmbedding={obsXY}
474
501
  cellFilter={cellFilter}
475
- cellSelection={cellSelection}
476
502
  cellHighlight={cellHighlight}
477
- cellColors={cellColors}
503
+ obsColorIndices={obsColorIndices}
478
504
  cellSetPolygons={cellSetPolygons}
479
505
  cellSetLabelSize={cellSetLabelSize}
480
506
  cellSetLabelsVisible={cellSetLabelsVisible}