@vitessce/statistical-plots 4.0.0 → 4.0.1

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.
@@ -1,5 +1,5 @@
1
1
  import { i as inflate_1 } from "./pako.esm-SxljTded.js";
2
- import { B as BaseDecoder } from "./index-DKGZofDL.js";
2
+ import { B as BaseDecoder } from "./index-Do9Ri4cE.js";
3
3
  class DeflateDecoder extends BaseDecoder {
4
4
  decodeBlock(buffer) {
5
5
  return inflate_1(new Uint8Array(buffer)).buffer;
@@ -357,6 +357,7 @@ const CoordinationType$1 = {
357
357
  SPATIAL_CHANNEL_LABELS_VISIBLE: "spatialChannelLabelsVisible",
358
358
  SPATIAL_CHANNEL_LABELS_ORIENTATION: "spatialChannelLabelsOrientation",
359
359
  SPATIAL_CHANNEL_LABEL_SIZE: "spatialChannelLabelSize",
360
+ SPATIAL_CHANNELS_SORT_ORDER: "spatialChannelsSortOrder",
360
361
  // Multi-sample / comparative
361
362
  SAMPLE_TYPE: "sampleType",
362
363
  SAMPLE_SELECTION: "sampleSelection",
@@ -942,6 +943,7 @@ const COMPONENT_COORDINATION_TYPES = {
942
943
  CoordinationType$1.SPATIAL_CHANNEL_LABELS_VISIBLE,
943
944
  CoordinationType$1.SPATIAL_CHANNEL_LABELS_ORIENTATION,
944
945
  CoordinationType$1.SPATIAL_CHANNEL_LABEL_SIZE,
946
+ CoordinationType$1.SPATIAL_CHANNELS_SORT_ORDER,
945
947
  CoordinationType$1.PHOTOMETRIC_INTERPRETATION
946
948
  ],
947
949
  [ViewType$1.HEATMAP]: [
@@ -1123,7 +1125,8 @@ const COMPONENT_COORDINATION_TYPES = {
1123
1125
  CoordinationType$1.LEGEND_VISIBLE,
1124
1126
  CoordinationType$1.SPATIAL_CHANNEL_LABELS_VISIBLE,
1125
1127
  CoordinationType$1.SPATIAL_CHANNEL_LABELS_ORIENTATION,
1126
- CoordinationType$1.SPATIAL_CHANNEL_LABEL_SIZE
1128
+ CoordinationType$1.SPATIAL_CHANNEL_LABEL_SIZE,
1129
+ CoordinationType$1.SPATIAL_CHANNELS_SORT_ORDER
1127
1130
  ],
1128
1131
  [ViewType$1.GENOMIC_PROFILES]: [
1129
1132
  CoordinationType$1.DATASET,
@@ -178658,22 +178661,22 @@ function addDecoder(cases2, importFn) {
178658
178661
  }
178659
178662
  cases2.forEach((c2) => registry$1.set(c2, importFn));
178660
178663
  }
178661
- addDecoder([void 0, 1], () => import("./raw-B-zQvZxn.js").then((m2) => m2.default));
178662
- addDecoder(5, () => import("./lzw-BXBJRSoa.js").then((m2) => m2.default));
178664
+ addDecoder([void 0, 1], () => import("./raw-CxnSBy3Z.js").then((m2) => m2.default));
178665
+ addDecoder(5, () => import("./lzw-DzurT5M0.js").then((m2) => m2.default));
178663
178666
  addDecoder(6, () => {
178664
178667
  throw new Error("old style JPEG compression is not supported.");
178665
178668
  });
178666
- addDecoder(7, () => import("./jpeg-BcFUc49m.js").then((m2) => m2.default));
178667
- addDecoder([8, 32946], () => import("./deflate-DW1iET8g.js").then((m2) => m2.default));
178668
- addDecoder(32773, () => import("./packbits-C5DpT4rK.js").then((m2) => m2.default));
178669
+ addDecoder(7, () => import("./jpeg-CsJnGGfB.js").then((m2) => m2.default));
178670
+ addDecoder([8, 32946], () => import("./deflate-CqV6y5ls.js").then((m2) => m2.default));
178671
+ addDecoder(32773, () => import("./packbits-AHl4dCuO.js").then((m2) => m2.default));
178669
178672
  addDecoder(
178670
178673
  34887,
178671
- () => import("./lerc-DvHuJtok.js").then(async (m2) => {
178674
+ () => import("./lerc-BZ3Pqm18.js").then(async (m2) => {
178672
178675
  await m2.zstd.init();
178673
178676
  return m2;
178674
178677
  }).then((m2) => m2.default)
178675
178678
  );
178676
- addDecoder(50001, () => import("./webimage-B3lyoOmq.js").then((m2) => m2.default));
178679
+ addDecoder(50001, () => import("./webimage-DgIqTO3W.js").then((m2) => m2.default));
178677
178680
  function decodeRowAcc(row, stride) {
178678
178681
  let length2 = row.length - stride;
178679
178682
  let offset2 = 0;
@@ -197818,7 +197821,7 @@ function useFilteredVolcanoData(props) {
197818
197821
  const rawSampleSetPathB = coordinationValues.sampleSetFilter[1];
197819
197822
  const sampleSetPathB = [...rawSampleSetPathB];
197820
197823
  sampleSetPathB[0] = sampleSetsColumnNameMappingReversed[rawSampleSetPathB[0]];
197821
- if (isEqual$3(sampleSetPathA, sampleSetSelection[1]) && isEqual$3(sampleSetPathB, sampleSetSelection[0])) {
197824
+ if (isEqual$3(sampleSetPathA, sampleSetSelection[0]) && isEqual$3(sampleSetPathB, sampleSetSelection[1])) {
197822
197825
  shouldSwapFoldChangeDirection = true;
197823
197826
  }
197824
197827
  }
@@ -250744,6 +250747,10 @@ function TreemapSubscriber(props) {
250744
250747
  /* @__PURE__ */ React__default.createElement("div", { style: { position: "absolute", right: "2px", bottom: "2px", fontSize: "10px" } }, unselectedObsCount > 0 ? /* @__PURE__ */ React__default.createElement("span", null, `${commaNumber(unselectedObsCount)} ${pluralize(obsType, unselectedObsCount)} from ${commaNumber(unselectedSampleCount)} ${pluralize(sampleType, unselectedSampleCount)} currently omitted`) : null)
250745
250748
  );
250746
250749
  }
250750
+ const GOLDEN_RATIO = 0.6180339887498948;
250751
+ function topJitter(index2, rangePixels) {
250752
+ return index2 * GOLDEN_RATIO % 1 * rangePixels;
250753
+ }
250747
250754
  function VolcanoPlot(props) {
250748
250755
  const {
250749
250756
  theme,
@@ -250833,10 +250840,10 @@ function VolcanoPlot(props) {
250833
250840
  const obsSetPath = [...rawObsSetPath];
250834
250841
  obsSetPath[0] = obsSetsColumnNameMappingReversed[rawObsSetPath[0]];
250835
250842
  const color2 = obsSetColorScale(obsSetPath);
250836
- obsSetG.append("g").selectAll("circle").data(filteredDf).join("circle").attr("cx", (d) => xScale(d.logFoldChange)).attr("cy", (d) => yScale(d.minusLog10p)).attr("r", 3).attr("opacity", 0.5).attr("fill", color2).on("click", (event2, d) => {
250843
+ obsSetG.append("g").selectAll("circle").data(filteredDf).join("circle").attr("cx", (d) => xScale(d.logFoldChange)).attr("cy", (d, i2) => yScale(d.minusLog10p) + (!Number.isFinite(d.minusLog10p) ? topJitter(i2, 20) : 0)).attr("r", 3).attr("opacity", 0.5).attr("fill", color2).on("click", (event2, d) => {
250837
250844
  onFeatureClick(d.featureId);
250838
250845
  });
250839
- const textElements = obsSetG.append("g").selectAll("text").data(filteredDf).join("text").text((d) => d.featureId).attr("text-anchor", (d) => d.logFoldChange < 0 ? "end" : "start").attr("x", (d) => xScale(d.logFoldChange)).attr("y", (d) => yScale(d.minusLog10p)).style("display", (d) => Math.abs(d.logFoldChange) < (featureLabelFoldChangeThreshold ?? 5) || d.featureSignificance >= (featureLabelSignificanceThreshold ?? 0.01) ? "none" : void 0).attr("fill", color2).on("click", (event2, d) => {
250846
+ const textElements = obsSetG.append("g").selectAll("text").data(filteredDf).join("text").text((d) => d.featureId).attr("text-anchor", (d) => d.logFoldChange < 0 ? "end" : "start").attr("x", (d) => xScale(d.logFoldChange)).attr("y", (d, i2) => yScale(d.minusLog10p) + (!Number.isFinite(d.minusLog10p) ? topJitter(i2, 20) : 0)).style("display", (d) => Math.abs(d.logFoldChange) < (featureLabelFoldChangeThreshold ?? 5) || d.featureSignificance >= (featureLabelSignificanceThreshold ?? 0.01) ? "none" : void 0).attr("fill", color2).on("click", (event2, d) => {
250840
250847
  onFeatureClick(d.featureId);
250841
250848
  });
250842
250849
  textElements.append("title").text((d) => `${featureType}: ${d.featureId}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { b, f, C, e, a, i, D, h, E, F, c, d, T, V } from "./index-DKGZofDL.js";
1
+ import { b, f, C, e, a, i, D, h, E, F, c, d, T, V } from "./index-Do9Ri4cE.js";
2
2
  export {
3
3
  b as CellSetCompositionBarPlotSubscriber,
4
4
  f as CellSetExpressionPlot,
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-DKGZofDL.js";
1
+ import { B as BaseDecoder } from "./index-Do9Ri4cE.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-DKGZofDL.js";
2
+ import { g as getDefaultExportFromCjs, B as BaseDecoder } from "./index-Do9Ri4cE.js";
3
3
  const LercParameters = {
4
4
  AddCompression: 1
5
5
  };
@@ -1,4 +1,4 @@
1
- import { B as BaseDecoder } from "./index-DKGZofDL.js";
1
+ import { B as BaseDecoder } from "./index-Do9Ri4cE.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-DKGZofDL.js";
1
+ import { B as BaseDecoder } from "./index-Do9Ri4cE.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-DKGZofDL.js";
1
+ import { B as BaseDecoder } from "./index-Do9Ri4cE.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-DKGZofDL.js";
1
+ import { B as BaseDecoder } from "./index-Do9Ri4cE.js";
2
2
  class WebImageDecoder extends BaseDecoder {
3
3
  constructor() {
4
4
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"VolcanoPlot.d.ts","sourceRoot":"","sources":["../src/VolcanoPlot.js"],"names":[],"mappings":"AAWA,qDAgQC"}
1
+ {"version":3,"file":"VolcanoPlot.d.ts","sourceRoot":"","sources":["../src/VolcanoPlot.js"],"names":[],"mappings":"AAmBA,qDAgQC"}
@@ -9,6 +9,13 @@ import { select } from 'd3-selection';
9
9
  import { capitalize, getDefaultForegroundColor } from '@vitessce/utils';
10
10
  import { colorArrayToString } from '@vitessce/sets-utils';
11
11
  import { getColorScale, useFilteredVolcanoData } from './utils.js';
12
+ // Deterministic jitter for points clamped at the top of the y-axis.
13
+ // Uses the golden-ratio sequence (index * φ mod 1) which is optimally
14
+ // equidistributed — no clustering regardless of how many points there are.
15
+ const GOLDEN_RATIO = 0.6180339887498948;
16
+ function topJitter(index, rangePixels) {
17
+ return ((index * GOLDEN_RATIO) % 1) * rangePixels;
18
+ }
12
19
  export default function VolcanoPlot(props) {
13
20
  const { theme, width, height, obsType, featureType, obsSetsColumnNameMappingReversed, sampleSetsColumnNameMappingReversed, sampleSetSelection, obsSetSelection, obsSetColor, sampleSetColor, data, marginTop = 5, marginRight = 5, marginLeft = 50, marginBottom = 50, onFeatureClick, featurePointSignificanceThreshold, featurePointFoldChangeThreshold, featureLabelSignificanceThreshold, featureLabelFoldChangeThreshold, } = props;
14
21
  const svgRef = useRef();
@@ -157,7 +164,7 @@ export default function VolcanoPlot(props) {
157
164
  .data(filteredDf)
158
165
  .join('circle')
159
166
  .attr('cx', d => xScale(d.logFoldChange))
160
- .attr('cy', d => yScale(d.minusLog10p))
167
+ .attr('cy', (d, i) => yScale(d.minusLog10p) + (!Number.isFinite(d.minusLog10p) ? topJitter(i, 20) : 0))
161
168
  .attr('r', 3)
162
169
  .attr('opacity', 0.5)
163
170
  .attr('fill', color)
@@ -171,7 +178,7 @@ export default function VolcanoPlot(props) {
171
178
  .text(d => d.featureId)
172
179
  .attr('text-anchor', d => (d.logFoldChange < 0 ? 'end' : 'start'))
173
180
  .attr('x', d => xScale(d.logFoldChange))
174
- .attr('y', d => yScale(d.minusLog10p))
181
+ .attr('y', (d, i) => yScale(d.minusLog10p) + (!Number.isFinite(d.minusLog10p) ? topJitter(i, 20) : 0))
175
182
  .style('display', d => ((Math.abs(d.logFoldChange) < (featureLabelFoldChangeThreshold ?? 5.0)
176
183
  || (d.featureSignificance >= (featureLabelSignificanceThreshold ?? 0.01))) ? 'none' : undefined))
177
184
  .attr('fill', color)
@@ -1 +1 @@
1
- {"version":3,"file":"VolcanoPlot.js","sourceRoot":"","sources":["../src/VolcanoPlot.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VolcanoPlot.js","sourceRoot":"","sources":["../src/VolcanoPlot.js"],"names":[],"mappings":"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"}
package/dist-tsc/utils.js CHANGED
@@ -63,8 +63,8 @@ export function useFilteredVolcanoData(props) {
63
63
  const rawSampleSetPathB = coordinationValues.sampleSetFilter[1];
64
64
  const sampleSetPathB = [...rawSampleSetPathB];
65
65
  sampleSetPathB[0] = sampleSetsColumnNameMappingReversed[rawSampleSetPathB[0]];
66
- if (isEqual(sampleSetPathA, sampleSetSelection[1])
67
- && isEqual(sampleSetPathB, sampleSetSelection[0])) {
66
+ if (isEqual(sampleSetPathA, sampleSetSelection[0])
67
+ && isEqual(sampleSetPathB, sampleSetSelection[1])) {
68
68
  shouldSwapFoldChangeDirection = true;
69
69
  }
70
70
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vitessce/statistical-plots",
3
- "version": "4.0.0",
3
+ "version": "4.0.1",
4
4
  "author": "HIDIVE Lab at HMS",
5
5
  "homepage": "http://vitessce.io",
6
6
  "repository": {
@@ -28,13 +28,13 @@
28
28
  "react-aria": "^3.47.0",
29
29
  "internmap": "^2.0.3",
30
30
  "uuid": "^9.0.0",
31
- "@vitessce/styles": "4.0.0",
32
- "@vitessce/constants-internal": "4.0.0",
33
- "@vitessce/sets-utils": "4.0.0",
34
- "@vitessce/vega": "4.0.0",
35
- "@vitessce/utils": "4.0.0",
36
- "@vitessce/vit-s": "4.0.0",
37
- "@vitessce/gl": "4.0.0"
31
+ "@vitessce/styles": "4.0.1",
32
+ "@vitessce/constants-internal": "4.0.1",
33
+ "@vitessce/sets-utils": "4.0.1",
34
+ "@vitessce/utils": "4.0.1",
35
+ "@vitessce/vega": "4.0.1",
36
+ "@vitessce/gl": "4.0.1",
37
+ "@vitessce/vit-s": "4.0.1"
38
38
  },
39
39
  "devDependencies": {
40
40
  "react": "19.2.6",
@@ -9,6 +9,14 @@ import { capitalize, getDefaultForegroundColor } from '@vitessce/utils';
9
9
  import { colorArrayToString } from '@vitessce/sets-utils';
10
10
  import { getColorScale, useFilteredVolcanoData } from './utils.js';
11
11
 
12
+ // Deterministic jitter for points clamped at the top of the y-axis.
13
+ // Uses the golden-ratio sequence (index * φ mod 1) which is optimally
14
+ // equidistributed — no clustering regardless of how many points there are.
15
+ const GOLDEN_RATIO = 0.6180339887498948;
16
+ function topJitter(index, rangePixels) {
17
+ return ((index * GOLDEN_RATIO) % 1) * rangePixels;
18
+ }
19
+
12
20
  export default function VolcanoPlot(props) {
13
21
  const {
14
22
  theme,
@@ -215,7 +223,7 @@ export default function VolcanoPlot(props) {
215
223
  .data(filteredDf)
216
224
  .join('circle')
217
225
  .attr('cx', d => xScale(d.logFoldChange))
218
- .attr('cy', d => yScale(d.minusLog10p))
226
+ .attr('cy', (d, i) => yScale(d.minusLog10p) + (!Number.isFinite(d.minusLog10p) ? topJitter(i, 20) : 0))
219
227
  .attr('r', 3)
220
228
  .attr('opacity', 0.5)
221
229
  .attr('fill', color)
@@ -230,7 +238,7 @@ export default function VolcanoPlot(props) {
230
238
  .text(d => d.featureId)
231
239
  .attr('text-anchor', d => (d.logFoldChange < 0 ? 'end' : 'start'))
232
240
  .attr('x', d => xScale(d.logFoldChange))
233
- .attr('y', d => yScale(d.minusLog10p))
241
+ .attr('y', (d, i) => yScale(d.minusLog10p) + (!Number.isFinite(d.minusLog10p) ? topJitter(i, 20) : 0))
234
242
  .style('display', d => ((
235
243
  Math.abs(d.logFoldChange) < (featureLabelFoldChangeThreshold ?? 5.0)
236
244
  || (d.featureSignificance >= (featureLabelSignificanceThreshold ?? 0.01))
package/src/utils.js CHANGED
@@ -87,8 +87,8 @@ export function useFilteredVolcanoData(props) {
87
87
  sampleSetPathB[0] = sampleSetsColumnNameMappingReversed[rawSampleSetPathB[0]];
88
88
 
89
89
  if (
90
- isEqual(sampleSetPathA, sampleSetSelection[1])
91
- && isEqual(sampleSetPathB, sampleSetSelection[0])
90
+ isEqual(sampleSetPathA, sampleSetSelection[0])
91
+ && isEqual(sampleSetPathB, sampleSetSelection[1])
92
92
  ) {
93
93
  shouldSwapFoldChangeDirection = true;
94
94
  }