@vitessce/launcher 3.9.8 → 3.9.10
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/{OrbitControls-D_ACWA92.js → OrbitControls-EUhjZYox.js} +1 -1
- package/dist/{ReactNeuroglancer-DJRTUBG7.js → ReactNeuroglancer-Du5EgkkS.js} +1 -1
- package/dist/{deflate-D0JH4rkz.js → deflate-DdUMPfPX.js} +1 -1
- package/dist/{higlass-PHabY4jK.js → higlass-BQr7sqN0.js} +1 -1
- package/dist/{index-1U4gELip.js → index-HfN7ntLr.js} +3 -3
- package/dist/{index-D2vPxKer.js → index-RsK7cASr.js} +2 -2
- package/dist/{index-DBTEa182.js → index-dq5Rjqj6.js} +130 -74
- package/dist/index.js +1 -1
- package/dist/{jpeg-BztqQwoS.js → jpeg-ZLpwudQ0.js} +1 -1
- package/dist/{lerc-9qrJ4PEa.js → lerc-ClZhA-Ay.js} +1 -1
- package/dist/{lzw-GyLKEjHd.js → lzw-Clq2S7lv.js} +1 -1
- package/dist/{packbits-DJsZJlYo.js → packbits-CoBPy7Ka.js} +1 -1
- package/dist/{raw-BChW8Bv2.js → raw-CgEyy76y.js} +1 -1
- package/dist/{troika-three-text.esm-BqEm25-I.js → troika-three-text.esm-C5MetR4O.js} +1 -1
- package/dist/{webimage-BlgQb3bb.js → webimage-Cqw15JzH.js} +1 -1
- package/package.json +9 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aG as getDefaultExportFromCjs, aH as Raycaster, W as OrthographicCamera, K as PerspectiveCamera, av as Scene, aI as PCFSoftShadowMap, aJ as VSMShadowMap, aK as PCFShadowMap, aL as BasicShadowMap, aM as NoToneMapping, aN as ACESFilmicToneMapping, e as Vector3, V as Vector2, aO as Clock, aP as WebGLRenderer, aQ as Camera, x as BufferGeometry, r as Material, aR as Layers, a1 as Texture, aC as RGBAFormat, ay as UnsignedByteType, C as Color, aj as _extends, aS as THREE, aT as EventDispatcher, aU as MOUSE, aV as TOUCH, aW as Spherical, Q as Quaternion, an as Ray, ak as Plane } from "./index-
|
|
1
|
+
import { aG as getDefaultExportFromCjs, aH as Raycaster, W as OrthographicCamera, K as PerspectiveCamera, av as Scene, aI as PCFSoftShadowMap, aJ as VSMShadowMap, aK as PCFShadowMap, aL as BasicShadowMap, aM as NoToneMapping, aN as ACESFilmicToneMapping, e as Vector3, V as Vector2, aO as Clock, aP as WebGLRenderer, aQ as Camera, x as BufferGeometry, r as Material, aR as Layers, a1 as Texture, aC as RGBAFormat, ay as UnsignedByteType, C as Color, aj as _extends, aS as THREE, aT as EventDispatcher, aU as MOUSE, aV as TOUCH, aW as Spherical, Q as Quaternion, an as Ray, ak as Plane } from "./index-dq5Rjqj6.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import React__default, { useReducer, useRef, useEffect, useLayoutEffect, useDebugValue, useState, useMemo } from "react";
|
|
4
4
|
var constants = { exports: {} };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aG as getDefaultExportFromCjs, b1 as requireAssign, b2 as require_export, b3 as require_core, b4 as require_fails, b5 as require_toObject, b6 as require_objectKeys, b7 as require_cof, b8 as require_wks, b9 as require_iterators, ba as requireWeb_dom_iterable, bb as requireEs6_string_iterator, bc as require_anObject, bd as require_hide, be as require_ctx, bf as require_toLength, bg as require_global, bh as require_objectDp, bi as require_descriptors, bj as require_isObject, bk as require_objectCreate, bl as require_iterDefine, bm as require_iterStep, bn as require_meta, bo as require_isArray, bp as require_iobject, bq as require_setToStringTag, br as require_aFunction, bs as requireIterator, bt as require_propertyDesc, a_ as commonjsGlobal, bu as requireEs6_symbol, bv as requireDefineProperty, bw as require_toIobject, bx as require_objectGopd, by as require_html, bz as require_domCreate, bA as require_library, bB as requireSymbol, bC as require_objectPie, bD as require_has, bE as require_redefine, bF as require_objectAssign, bG as diffCameraState, ao as jsxRuntimeExports } from "./index-
|
|
1
|
+
import { aG as getDefaultExportFromCjs, b1 as requireAssign, b2 as require_export, b3 as require_core, b4 as require_fails, b5 as require_toObject, b6 as require_objectKeys, b7 as require_cof, b8 as require_wks, b9 as require_iterators, ba as requireWeb_dom_iterable, bb as requireEs6_string_iterator, bc as require_anObject, bd as require_hide, be as require_ctx, bf as require_toLength, bg as require_global, bh as require_objectDp, bi as require_descriptors, bj as require_isObject, bk as require_objectCreate, bl as require_iterDefine, bm as require_iterStep, bn as require_meta, bo as require_isArray, bp as require_iobject, bq as require_setToStringTag, br as require_aFunction, bs as requireIterator, bt as require_propertyDesc, a_ as commonjsGlobal, bu as requireEs6_symbol, bv as requireDefineProperty, bw as require_toIobject, bx as require_objectGopd, by as require_html, bz as require_domCreate, bA as require_library, bB as requireSymbol, bC as require_objectPie, bD as require_has, bE as require_redefine, bF as require_objectAssign, bG as diffCameraState, ao as jsxRuntimeExports } from "./index-dq5Rjqj6.js";
|
|
2
2
|
import React__default from "react";
|
|
3
3
|
var assignExports = requireAssign();
|
|
4
4
|
const _Object$assign = /* @__PURE__ */ getDefaultExportFromCjs(assignExports);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as inflate_1 } from "./pako.esm-SxljTded.js";
|
|
2
|
-
import { aX as BaseDecoder } from "./index-
|
|
2
|
+
import { aX as BaseDecoder } from "./index-dq5Rjqj6.js";
|
|
3
3
|
class DeflateDecoder extends BaseDecoder {
|
|
4
4
|
decodeBlock(buffer) {
|
|
5
5
|
return inflate_1(new Uint8Array(buffer)).buffer;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React$7 from "react";
|
|
2
2
|
import React__default, { isValidElement, PureComponent, Component, createElement, createContext, createRef } from "react";
|
|
3
3
|
import ReactDOM__default, { findDOMNode as findDOMNode$1 } from "react-dom";
|
|
4
|
-
import { a_ as commonjsGlobal$1, a$ as requireObjectAssign, aG as getDefaultExportFromCjs$1, b0 as earcut } from "./index-
|
|
4
|
+
import { a_ as commonjsGlobal$1, a$ as requireObjectAssign, aG as getDefaultExportFromCjs$1, b0 as earcut } from "./index-dq5Rjqj6.js";
|
|
5
5
|
var promise = {};
|
|
6
6
|
var hasRequiredPromise;
|
|
7
7
|
function requirePromise() {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { G as Group, M as Matrix4, T as TrianglesDrawMode, a as TriangleFanDrawMode, b as TriangleStripDrawMode, R as REVISION, L as Loader, c as LoaderUtils, F as FileLoader, d as MeshPhysicalMaterial, V as Vector2, C as Color, S as SpotLight, P as PointLight, D as DirectionalLight, e as Vector3, I as InstancedMesh, Q as Quaternion, O as Object3D, f as TextureLoader, g as ImageBitmapLoader, B as BufferAttribute, h as InterleavedBuffer, i as LinearMipmapLinearFilter, N as NearestMipmapLinearFilter, j as LinearMipmapNearestFilter, k as NearestMipmapNearestFilter, l as LinearFilter, m as NearestFilter, n as RepeatWrapping, o as MirroredRepeatWrapping, p as ClampToEdgeWrapping, q as PointsMaterial, r as Material, s as LineBasicMaterial, t as MeshStandardMaterial, u as DoubleSide, v as MeshBasicMaterial, w as PropertyBinding, x as BufferGeometry, y as SkinnedMesh, z as Mesh, A as LineSegments, E as Line$1, H as LineLoop, J as Points, K as PerspectiveCamera, U as MathUtils, W as OrthographicCamera, X as Skeleton, Y as InterpolateDiscrete, Z as InterpolateLinear, _ as AnimationClip, $ as Bone, a0 as InterleavedBufferAttribute, a1 as Texture, a2 as VectorKeyframeTrack, a3 as QuaternionKeyframeTrack, a4 as NumberKeyframeTrack, a5 as FrontSide, a6 as Interpolant, a7 as Box3, a8 as Sphere, a9 as InstancedBufferGeometry, aa as Float32BufferAttribute, ab as InstancedInterleavedBuffer, ac as WireframeGeometry, ad as ShaderMaterial, ae as UniformsUtils, af as UniformsLib, ag as Vector4, ah as Line3, ai as SphereGeometry, aj as _extends, ak as Plane, al as Triangle, am as BackSide, an as Ray$1, ao as jsxRuntimeExports, ap as Matrix3, aq as CoordinationType, ar as Data3DTexture, as as RedFormat, at as FloatType, au as getImageSize, av as Scene } from "./index-
|
|
1
|
+
import { G as Group, M as Matrix4, T as TrianglesDrawMode, a as TriangleFanDrawMode, b as TriangleStripDrawMode, R as REVISION, L as Loader, c as LoaderUtils, F as FileLoader, d as MeshPhysicalMaterial, V as Vector2, C as Color, S as SpotLight, P as PointLight, D as DirectionalLight, e as Vector3, I as InstancedMesh, Q as Quaternion, O as Object3D, f as TextureLoader, g as ImageBitmapLoader, B as BufferAttribute, h as InterleavedBuffer, i as LinearMipmapLinearFilter, N as NearestMipmapLinearFilter, j as LinearMipmapNearestFilter, k as NearestMipmapNearestFilter, l as LinearFilter, m as NearestFilter, n as RepeatWrapping, o as MirroredRepeatWrapping, p as ClampToEdgeWrapping, q as PointsMaterial, r as Material, s as LineBasicMaterial, t as MeshStandardMaterial, u as DoubleSide, v as MeshBasicMaterial, w as PropertyBinding, x as BufferGeometry, y as SkinnedMesh, z as Mesh, A as LineSegments, E as Line$1, H as LineLoop, J as Points, K as PerspectiveCamera, U as MathUtils, W as OrthographicCamera, X as Skeleton, Y as InterpolateDiscrete, Z as InterpolateLinear, _ as AnimationClip, $ as Bone, a0 as InterleavedBufferAttribute, a1 as Texture, a2 as VectorKeyframeTrack, a3 as QuaternionKeyframeTrack, a4 as NumberKeyframeTrack, a5 as FrontSide, a6 as Interpolant, a7 as Box3, a8 as Sphere, a9 as InstancedBufferGeometry, aa as Float32BufferAttribute, ab as InstancedInterleavedBuffer, ac as WireframeGeometry, ad as ShaderMaterial, ae as UniformsUtils, af as UniformsLib, ag as Vector4, ah as Line3, ai as SphereGeometry, aj as _extends, ak as Plane, al as Triangle, am as BackSide, an as Ray$1, ao as jsxRuntimeExports, ap as Matrix3, aq as CoordinationType, ar as Data3DTexture, as as RedFormat, at as FloatType, au as getImageSize, av as Scene } from "./index-dq5Rjqj6.js";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { useRef, useEffect, useState, forwardRef } from "react";
|
|
4
|
-
import { u as useThree, a as useFrame, c as create, e as extend, b as createPortal, O as OrbitControls, C as Canvas } from "./OrbitControls-
|
|
4
|
+
import { u as useThree, a as useFrame, c as create, e as extend, b as createPortal, O as OrbitControls, C as Canvas } from "./OrbitControls-EUhjZYox.js";
|
|
5
5
|
const isPromise = (promise) => typeof promise === "object" && typeof promise.then === "function";
|
|
6
6
|
const globalCache = [];
|
|
7
7
|
function shallowEqualArrays(arrA, arrB, equal = (a, b) => a === b) {
|
|
@@ -5027,7 +5027,7 @@ const Text = /* @__PURE__ */ React.forwardRef(({
|
|
|
5027
5027
|
const {
|
|
5028
5028
|
Text: TextMeshImpl,
|
|
5029
5029
|
preloadFont
|
|
5030
|
-
} = suspend(async () => import("./troika-three-text.esm-
|
|
5030
|
+
} = suspend(async () => import("./troika-three-text.esm-C5MetR4O.js"), []);
|
|
5031
5031
|
const invalidate = useThree(({
|
|
5032
5032
|
invalidate: invalidate2
|
|
5033
5033
|
}) => invalidate2);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { aw as log, ax as isEqual, ar as Data3DTexture, as as RedFormat, ay as UnsignedByteType, l as LinearFilter, az as RedIntegerFormat, aA as UnsignedIntType, m as NearestFilter, e as Vector3, V as Vector2, ag as Vector4, ae as UniformsUtils, aq as CoordinationType, aB as WebGLMultipleRenderTargets, aC as RGBAFormat, av as Scene, W as OrthographicCamera, ad as ShaderMaterial, z as Mesh, aD as PlaneGeometry, aE as useEventCallback, ao as jsxRuntimeExports, aF as GLSL3, am as BackSide } from "./index-
|
|
1
|
+
import { aw as log, ax as isEqual, ar as Data3DTexture, as as RedFormat, ay as UnsignedByteType, l as LinearFilter, az as RedIntegerFormat, aA as UnsignedIntType, m as NearestFilter, e as Vector3, V as Vector2, ag as Vector4, ae as UniformsUtils, aq as CoordinationType, aB as WebGLMultipleRenderTargets, aC as RGBAFormat, av as Scene, W as OrthographicCamera, ad as ShaderMaterial, z as Mesh, aD as PlaneGeometry, aE as useEventCallback, ao as jsxRuntimeExports, aF as GLSL3, am as BackSide } from "./index-dq5Rjqj6.js";
|
|
2
2
|
import { useRef, useState, useMemo, useEffect, Suspense } from "react";
|
|
3
|
-
import { u as useThree, a as useFrame, O as OrbitControls, C as Canvas } from "./OrbitControls-
|
|
3
|
+
import { u as useThree, a as useFrame, O as OrbitControls, C as Canvas } from "./OrbitControls-EUhjZYox.js";
|
|
4
4
|
const LogLevel = {
|
|
5
5
|
INFO: "info",
|
|
6
6
|
WARN: "warn",
|
|
@@ -11106,6 +11106,7 @@ const FileType$1 = {
|
|
|
11106
11106
|
OBS_LABELS_MUDATA_ZARR: "obsLabels.mudata.zarr",
|
|
11107
11107
|
FEATURE_LABELS_MUDATA_ZARR: "featureLabels.mudata.zarr",
|
|
11108
11108
|
GENOMIC_PROFILES_ZARR: "genomic-profiles.zarr",
|
|
11109
|
+
GENOMIC_PROFILES_ZARR_ZIP: "genomic-profiles.zarr.zip",
|
|
11109
11110
|
NEIGHBORHOODS_JSON: "neighborhoods.json",
|
|
11110
11111
|
// OME-TIFF
|
|
11111
11112
|
IMAGE_OME_TIFF: "image.ome-tiff",
|
|
@@ -11400,6 +11401,7 @@ const ViewHelpMapping = {
|
|
|
11400
11401
|
[FileType$1.OBS_LABELS_MOLECULES_JSON]: DataType$3.OBS_LABELS,
|
|
11401
11402
|
// For old file types
|
|
11402
11403
|
[FileType$1.GENOMIC_PROFILES_ZARR]: DataType$3.GENOMIC_PROFILES,
|
|
11404
|
+
[FileType$1.GENOMIC_PROFILES_ZARR_ZIP]: DataType$3.GENOMIC_PROFILES,
|
|
11403
11405
|
[FileType$1.NEIGHBORHOODS_JSON]: DataType$3.NEIGHBORHOODS
|
|
11404
11406
|
});
|
|
11405
11407
|
({
|
|
@@ -11564,6 +11566,10 @@ const ALT_ZARR_STORE_TYPES = {
|
|
|
11564
11566
|
},
|
|
11565
11567
|
[FileType$1.OBS_EMBEDDING_SPATIALDATA_ZARR]: {
|
|
11566
11568
|
zip: FileType$1.OBS_EMBEDDING_SPATIALDATA_ZARR_ZIP
|
|
11569
|
+
},
|
|
11570
|
+
// For genomic profiles:
|
|
11571
|
+
[FileType$1.GENOMIC_PROFILES_ZARR]: {
|
|
11572
|
+
zip: FileType$1.GENOMIC_PROFILES_ZARR_ZIP
|
|
11567
11573
|
}
|
|
11568
11574
|
};
|
|
11569
11575
|
[
|
|
@@ -211827,22 +211833,22 @@ async function getDecoder(fileDirectory) {
|
|
|
211827
211833
|
const Decoder = await importFn();
|
|
211828
211834
|
return new Decoder(fileDirectory);
|
|
211829
211835
|
}
|
|
211830
|
-
addDecoder([void 0, 1], () => import("./raw-
|
|
211831
|
-
addDecoder(5, () => import("./lzw-
|
|
211836
|
+
addDecoder([void 0, 1], () => import("./raw-CgEyy76y.js").then((m2) => m2.default));
|
|
211837
|
+
addDecoder(5, () => import("./lzw-Clq2S7lv.js").then((m2) => m2.default));
|
|
211832
211838
|
addDecoder(6, () => {
|
|
211833
211839
|
throw new Error("old style JPEG compression is not supported.");
|
|
211834
211840
|
});
|
|
211835
|
-
addDecoder(7, () => import("./jpeg-
|
|
211836
|
-
addDecoder([8, 32946], () => import("./deflate-
|
|
211837
|
-
addDecoder(32773, () => import("./packbits-
|
|
211841
|
+
addDecoder(7, () => import("./jpeg-ZLpwudQ0.js").then((m2) => m2.default));
|
|
211842
|
+
addDecoder([8, 32946], () => import("./deflate-DdUMPfPX.js").then((m2) => m2.default));
|
|
211843
|
+
addDecoder(32773, () => import("./packbits-CoBPy7Ka.js").then((m2) => m2.default));
|
|
211838
211844
|
addDecoder(
|
|
211839
211845
|
34887,
|
|
211840
|
-
() => import("./lerc-
|
|
211846
|
+
() => import("./lerc-ClZhA-Ay.js").then(async (m2) => {
|
|
211841
211847
|
await m2.zstd.init();
|
|
211842
211848
|
return m2;
|
|
211843
211849
|
}).then((m2) => m2.default)
|
|
211844
211850
|
);
|
|
211845
|
-
addDecoder(50001, () => import("./webimage-
|
|
211851
|
+
addDecoder(50001, () => import("./webimage-Cqw15JzH.js").then((m2) => m2.default));
|
|
211846
211852
|
function copyNewSize(array2, width2, height2, samplesPerPixel = 1) {
|
|
211847
211853
|
return new (Object.getPrototypeOf(array2)).constructor(width2 * height2 * samplesPerPixel);
|
|
211848
211854
|
}
|
|
@@ -256404,12 +256410,12 @@ class ErrorBoundary extends React__default.Component {
|
|
|
256404
256410
|
}
|
|
256405
256411
|
}
|
|
256406
256412
|
const LazySpatialThree = React__default.lazy(async () => {
|
|
256407
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
|
256413
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-HfN7ntLr.js");
|
|
256408
256414
|
return { default: SpatialWrapper2 };
|
|
256409
256415
|
});
|
|
256410
256416
|
const SpatialThreeAdapter = React__default.forwardRef((props, ref2) => jsxRuntimeExports.jsx("div", { ref: ref2, style: { width: "100%", height: "100%" }, children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(Suspense, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(LazySpatialThree, { ...props }) }) }) }));
|
|
256411
256417
|
const LazySpatialAccelerated = React__default.lazy(async () => {
|
|
256412
|
-
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-
|
|
256418
|
+
const { SpatialWrapper: SpatialWrapper2 } = await import("./index-RsK7cASr.js");
|
|
256413
256419
|
return { default: SpatialWrapper2 };
|
|
256414
256420
|
});
|
|
256415
256421
|
const SpatialAcceleratedAdapter = React__default.forwardRef((props, ref2) => jsxRuntimeExports.jsx("div", { ref: ref2, style: { width: "100%", height: "100%" }, children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(Suspense, { fallback: jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: jsxRuntimeExports.jsx(LazySpatialAccelerated, { ...props }) }) }) }));
|
|
@@ -266282,7 +266288,7 @@ function PointLayerController(props) {
|
|
|
266282
266288
|
const [coloringTabIndex, setColoringTabIndex] = useState(0);
|
|
266283
266289
|
const { featureIndex } = pointMatrixIndicesData || {};
|
|
266284
266290
|
const hasSelectedFeatures = Array.isArray(featureSelection) && featureSelection.length > 0;
|
|
266285
|
-
return jsxRuntimeExports.jsxs(Grid$1, { className: lcClasses.layerControllerGrid, children: [jsxRuntimeExports.jsxs(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: [jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { onClick: handleVisibleChange, className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle layer visibility", children: jsxRuntimeExports.jsx(Visibility, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { theme, color: color2, setColor: setColor2, palette, isStaticColor, isColormap, featureValueColormap, visible }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: label2 }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(PointLayerEllipsisMenu, { featureSelection, obsColorEncoding, setObsColorEncoding, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible, featureFilterMode, setFeatureFilterMode }) }), jsxRuntimeExports.jsxs(Grid$1, { size: 1, container: true, direction: "row", children: [jsxRuntimeExports.jsx(SvgPoints, { className: classes2.layerTypePointIcon }), null] })] }), loadingDoneFraction < 1 ? jsxRuntimeExports.jsx(Grid$1, { size: 12, container: true, direction: "column", justifyContent: "space-between", className: classes2.pointFeatureControllerGrid, children: jsxRuntimeExports.jsx(LinearProgress, { variant: loadingDoneFraction === 0 ? "indeterminate" : "determinate", value: loadingDoneFraction * 100 }) }) : null, null] }), hasSelectedFeatures ? jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [featureSelection.map((featureName) => jsxRuntimeExports.jsx(LayerPerFeatureController, { theme, featureName, featureColor, setFeatureColor, spatialLayerColor, featureIndex, featureValueColormap, featureSelection, setFeatureSelection, obsColorEncoding, loadingDoneFraction, opacity: opacity2, handleOpacityChange }, featureName)), jsxRuntimeExports.jsx(Grid$1, { className: lcClasses.layerControllerGrid, children: jsxRuntimeExports.jsx(Paper, { elevation: 2, className: lcClasses.layerControllerSubRow, children: jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { onClick: () => setFeatureFilterMode(featureFilterMode === "featureSelection" ? null : "featureSelection"), className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle visibility of unselected points", children: featureFilterMode === "featureSelection" ? jsxRuntimeExports.jsx(VisibilityOffIcon, {}) : jsxRuntimeExports.jsx(VisibilityIcon, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { theme, color: getDefaultColor("dark"), setColor: null, isStaticColor: true, isColormap: false, visible: true }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: "Unselected" }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, sx: { paddingRight: "12px", overflow: "visible" }, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": "Adjust opacity for unselected layer" }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(SvgPoints, { className: classes2.layerTypePointIcon }) })] }) }) })] }) : null] });
|
|
266291
|
+
return jsxRuntimeExports.jsxs(Grid$1, { className: lcClasses.layerControllerGrid, children: [jsxRuntimeExports.jsxs(Paper, { elevation: 4, className: lcClasses.layerControllerRoot, children: [jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { onClick: handleVisibleChange, className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle layer visibility", children: jsxRuntimeExports.jsx(Visibility, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { theme, color: color2, setColor: setColor2, palette, isStaticColor, isColormap, featureValueColormap, visible }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: label2 }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": `Adjust opacity for layer ${label2}` }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(PointLayerEllipsisMenu, { featureSelection, obsColorEncoding, setObsColorEncoding, featureValueColormapRange, setFeatureValueColormapRange, tooltipsVisible, setTooltipsVisible, tooltipCrosshairsVisible, setTooltipCrosshairsVisible, legendVisible, setLegendVisible, featureFilterMode, setFeatureFilterMode }) }), jsxRuntimeExports.jsxs(Grid$1, { size: 1, container: true, direction: "row", children: [jsxRuntimeExports.jsx(SvgPoints, { className: classes2.layerTypePointIcon }), null] })] }), loadingDoneFraction < 1 ? jsxRuntimeExports.jsx(Grid$1, { size: 12, container: true, direction: "column", justifyContent: "space-between", className: classes2.pointFeatureControllerGrid, children: jsxRuntimeExports.jsx(LinearProgress, { variant: loadingDoneFraction === 0 ? "indeterminate" : "determinate", value: loadingDoneFraction * 100 }) }) : null, null] }), layerPerFeatureForPoints && hasSelectedFeatures ? jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [featureSelection.map((featureName) => jsxRuntimeExports.jsx(LayerPerFeatureController, { theme, featureName, featureColor, setFeatureColor, spatialLayerColor, featureIndex, featureValueColormap, featureSelection, setFeatureSelection, obsColorEncoding, loadingDoneFraction, opacity: opacity2, handleOpacityChange }, featureName)), jsxRuntimeExports.jsx(Grid$1, { className: lcClasses.layerControllerGrid, children: jsxRuntimeExports.jsx(Paper, { elevation: 2, className: lcClasses.layerControllerSubRow, children: jsxRuntimeExports.jsxs(Grid$1, { container: true, direction: "row", justifyContent: "space-between", children: [jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(Button, { onClick: () => setFeatureFilterMode(featureFilterMode === "featureSelection" ? null : "featureSelection"), className: menuClasses.imageLayerVisibleButton, "aria-label": "Toggle visibility of unselected points", children: featureFilterMode === "featureSelection" ? jsxRuntimeExports.jsx(VisibilityOffIcon, {}) : jsxRuntimeExports.jsx(VisibilityIcon, {}) }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(ChannelColorPickerMenu, { theme, color: getDefaultColor("dark"), setColor: null, isStaticColor: true, isColormap: false, visible: true }) }), jsxRuntimeExports.jsx(Grid$1, { size: 6, children: jsxRuntimeExports.jsx(Typography, { className: menuClasses.imageLayerName, children: "Unselected" }) }), jsxRuntimeExports.jsx(Grid$1, { size: 2, sx: { paddingRight: "12px", overflow: "visible" }, children: jsxRuntimeExports.jsx(Slider, { value: opacity2, min: 0, max: 1, step: 1e-3, onChange: handleOpacityChange, className: menuClasses.imageLayerOpacitySlider, orientation: "horizontal", "aria-label": "Adjust opacity for unselected layer" }) }), jsxRuntimeExports.jsx(Grid$1, { size: 1, children: jsxRuntimeExports.jsx(SvgPoints, { className: classes2.layerTypePointIcon }) })] }) }) })] }) : null] });
|
|
266286
266292
|
}
|
|
266287
266293
|
const useStyles$e = makeStyles()(() => ({
|
|
266288
266294
|
layerTypeSegmentationIcon: {
|
|
@@ -271593,7 +271599,7 @@ function HiglassGlobalStyles(props) {
|
|
|
271593
271599
|
}
|
|
271594
271600
|
register({ dataFetcher: ZarrMultivecDataFetcher_default, config: ZarrMultivecDataFetcher_default.config }, { pluginType: "dataFetcher" });
|
|
271595
271601
|
const LazyHiGlassComponent = React__default.lazy(async () => {
|
|
271596
|
-
const { HiGlassComponent } = await import("./higlass-
|
|
271602
|
+
const { HiGlassComponent } = await import("./higlass-BQr7sqN0.js");
|
|
271597
271603
|
return { default: HiGlassComponent };
|
|
271598
271604
|
});
|
|
271599
271605
|
const HG_SIZE = 800;
|
|
@@ -274541,7 +274547,7 @@ function NeuroglancerGlobalStyles(props) {
|
|
|
274541
274547
|
const { classes: classes2 } = props;
|
|
274542
274548
|
return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(GlobalStyles$3, { styles: globalNeuroglancerCss }), jsxRuntimeExports.jsx(ScopedGlobalStyles, { styles: globalNeuroglancerStyles, parentClassName: classes2.neuroglancerWrapper })] });
|
|
274543
274549
|
}
|
|
274544
|
-
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-
|
|
274550
|
+
const LazyReactNeuroglancer = React__default.lazy(() => import("./ReactNeuroglancer-Du5EgkkS.js"));
|
|
274545
274551
|
function createWorker() {
|
|
274546
274552
|
const worker = new WorkerFactory$1();
|
|
274547
274553
|
worker.AsyncComputationWorker = WorkerFactory;
|
|
@@ -360952,7 +360958,9 @@ const fileTypeToExtensions = {
|
|
|
360952
360958
|
// TODO: how to handle h5ad-based AnnData (since needs reference JSON file).
|
|
360953
360959
|
// Perhaps just assume one H5AD+one JSON (or .ref.json) file correspond to each other?
|
|
360954
360960
|
[FileType$1.SPATIALDATA_ZARR]: [".sd.zarr", ".sdata.zarr", ".spatialdata.zarr"],
|
|
360955
|
-
[FileType$1.SPATIALDATA_ZARR_ZIP]: [".sd.zarr.zip", ".sdata.zarr.zip", ".spatialdata.zarr.zip"]
|
|
360961
|
+
[FileType$1.SPATIALDATA_ZARR_ZIP]: [".sd.zarr.zip", ".sdata.zarr.zip", ".spatialdata.zarr.zip"],
|
|
360962
|
+
[FileType$1.GENOMIC_PROFILES_ZARR]: [".multivec.zarr"],
|
|
360963
|
+
[FileType$1.GENOMIC_PROFILES_ZARR_ZIP]: [".multivec.zarr.zip"]
|
|
360956
360964
|
};
|
|
360957
360965
|
const fileTypeToClass = {
|
|
360958
360966
|
// OME-TIFF
|
|
@@ -360978,7 +360986,9 @@ const ZARR_FILETYPES = [
|
|
|
360978
360986
|
FileType$1.IMAGE_OME_ZARR,
|
|
360979
360987
|
FileType$1.IMAGE_OME_ZARR_ZIP,
|
|
360980
360988
|
FileType$1.OBS_SEGMENTATIONS_OME_ZARR,
|
|
360981
|
-
FileType$1.OBS_SEGMENTATIONS_OME_ZARR_ZIP
|
|
360989
|
+
FileType$1.OBS_SEGMENTATIONS_OME_ZARR_ZIP,
|
|
360990
|
+
FileType$1.GENOMIC_PROFILES_ZARR,
|
|
360991
|
+
FileType$1.GENOMIC_PROFILES_ZARR_ZIP
|
|
360982
360992
|
];
|
|
360983
360993
|
function urlToFileType(url) {
|
|
360984
360994
|
const match2 = Object.entries(fileTypeToExtensions).find(
|
|
@@ -362048,11 +362058,21 @@ class AnnDataSource extends ZarrDataSource {
|
|
|
362048
362058
|
categoriesValues = await this.getFlatArrDecompressed(`${prefix2}/${categories}`);
|
|
362049
362059
|
}
|
|
362050
362060
|
} else if (encodingType === "categorical") {
|
|
362051
|
-
const
|
|
362052
|
-
|
|
362061
|
+
const categoriesZattrs = await this.getJson(`${path2}/categories/.zattrs`);
|
|
362062
|
+
const categoriesEncodingType = categoriesZattrs?.["encoding-type"];
|
|
362063
|
+
if (categoriesEncodingType === "nullable-string-array") {
|
|
362064
|
+
categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories/values`);
|
|
362065
|
+
} else if (categoriesEncodingType === "string-array") {
|
|
362053
362066
|
categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories`);
|
|
362067
|
+
} else {
|
|
362068
|
+
const { dtype } = await open$1(storeRoot.resolve(`${path2}/categories`), { kind: "array" });
|
|
362069
|
+
if (dtype === "v2:object" || dtype === "|O") {
|
|
362070
|
+
categoriesValues = await this.getFlatArrDecompressed(`${path2}/categories`);
|
|
362071
|
+
}
|
|
362054
362072
|
}
|
|
362055
362073
|
codesPath = `${path2}/codes`;
|
|
362074
|
+
} else if (encodingType === "nullable-string-array") {
|
|
362075
|
+
return this.getFlatArrDecompressed(`${path2}/values`);
|
|
362056
362076
|
} else if (encodingType === "string-array") {
|
|
362057
362077
|
return this.getFlatArrDecompressed(path2);
|
|
362058
362078
|
} else {
|
|
@@ -363216,16 +363236,25 @@ let FeatureStatsAnndataLoader$1 = class FeatureStatsAnndataLoader extends Abstra
|
|
|
363216
363236
|
return this.dataSource.loadDataFrameIndex(dfPath);
|
|
363217
363237
|
}
|
|
363218
363238
|
async loadDataFrame(dfPath) {
|
|
363219
|
-
|
|
363220
|
-
|
|
363221
|
-
|
|
363222
|
-
|
|
363223
|
-
|
|
363224
|
-
|
|
363225
|
-
|
|
363226
|
-
|
|
363227
|
-
|
|
363228
|
-
|
|
363239
|
+
try {
|
|
363240
|
+
const [featureId2, featureFoldChange, featureSignificance] = await Promise.all([
|
|
363241
|
+
this.loadFeatureNames(dfPath),
|
|
363242
|
+
this.loadFoldChanges(dfPath),
|
|
363243
|
+
this.loadSignificances(dfPath)
|
|
363244
|
+
]);
|
|
363245
|
+
return {
|
|
363246
|
+
featureId: featureId2,
|
|
363247
|
+
featureFoldChange,
|
|
363248
|
+
featureSignificance
|
|
363249
|
+
};
|
|
363250
|
+
} catch (e3) {
|
|
363251
|
+
log$b.warn("Dataframe not found at", dfPath);
|
|
363252
|
+
return {
|
|
363253
|
+
featureId: [],
|
|
363254
|
+
featureFoldChange: [],
|
|
363255
|
+
featureSignificance: []
|
|
363256
|
+
};
|
|
363257
|
+
}
|
|
363229
363258
|
}
|
|
363230
363259
|
/**
|
|
363231
363260
|
*
|
|
@@ -363252,7 +363281,7 @@ let FeatureStatsAnndataLoader$1 = class FeatureStatsAnndataLoader extends Abstra
|
|
|
363252
363281
|
* @returns {Promise<LoaderResult<FeatureStatsData>>}
|
|
363253
363282
|
*/
|
|
363254
363283
|
async loadMulti(volcanoOptions) {
|
|
363255
|
-
const { analysisType: targetAnalysisType = "
|
|
363284
|
+
const { analysisType: targetAnalysisType = "pydeseq2" } = this.options;
|
|
363256
363285
|
const { sampleSetSelection, obsSetSelection } = volcanoOptions || {};
|
|
363257
363286
|
const rawObsSetSelection = obsSetSelection;
|
|
363258
363287
|
const rawSampleSetSelection = sampleSetSelection;
|
|
@@ -364429,7 +364458,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
|
|
|
364429
364458
|
}
|
|
364430
364459
|
let locations;
|
|
364431
364460
|
const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
|
|
364432
|
-
if (formatVersion === "0.1") {
|
|
364461
|
+
if (formatVersion === "0.1" || formatVersion === "0.2") {
|
|
364433
364462
|
locations = await this.dataSource.loadPoints(path2);
|
|
364434
364463
|
} else {
|
|
364435
364464
|
throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
|
|
@@ -364448,7 +364477,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
|
|
|
364448
364477
|
}
|
|
364449
364478
|
let locationsFeatureIndex;
|
|
364450
364479
|
const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
|
|
364451
|
-
if (formatVersion === "0.1") {
|
|
364480
|
+
if (formatVersion === "0.1" || formatVersion === "0.2") {
|
|
364452
364481
|
locationsFeatureIndex = await this.dataSource.loadPointsFeatureIds(path2);
|
|
364453
364482
|
} else {
|
|
364454
364483
|
throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
|
|
@@ -364460,7 +364489,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
|
|
|
364460
364489
|
const { path: path2, featureIndexColumn, mortonCodeColumn } = this.options;
|
|
364461
364490
|
let locations;
|
|
364462
364491
|
const formatVersion = await this.dataSource.getPointsFormatVersion(path2);
|
|
364463
|
-
if (formatVersion === "0.1") {
|
|
364492
|
+
if (formatVersion === "0.1" || formatVersion === "0.2") {
|
|
364464
364493
|
locations = await this.dataSource.loadPointsInRect(path2, bounds2, signal, featureIndexColumn, mortonCodeColumn);
|
|
364465
364494
|
} else {
|
|
364466
364495
|
throw new UnknownSpatialDataFormatError("Only points format version 0.1 is supported.");
|
|
@@ -364492,10 +364521,8 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
|
|
|
364492
364521
|
// and for the presence of morton_code_2d and feature_index columns.
|
|
364493
364522
|
this.dataSource.supportsLoadPointsInRect(path2, featureIndexColumnName, mortonCodeColumn)
|
|
364494
364523
|
]);
|
|
364495
|
-
const isSupportedVersion = formatVersion === "0.1";
|
|
364496
|
-
|
|
364497
|
-
const hasBoundingBox2D = typeof boundingBox?.x_max === "number" && typeof boundingBox?.x_min === "number" && typeof boundingBox?.y_max === "number" && typeof boundingBox?.y_min === "number";
|
|
364498
|
-
return isSupportedVersion && hasBoundingBox2D && hasRequiredColumnsAndRowGroupSize;
|
|
364524
|
+
const isSupportedVersion = formatVersion === "0.1" || formatVersion === "0.2";
|
|
364525
|
+
return isSupportedVersion && hasRequiredColumnsAndRowGroupSize;
|
|
364499
364526
|
}
|
|
364500
364527
|
async load() {
|
|
364501
364528
|
const [modelMatrix2, supportsTiling] = await Promise.all([
|
|
@@ -364533,7 +364560,7 @@ class SpatialDataObsPointsLoader extends AbstractTwoStepLoader {
|
|
|
364533
364560
|
featureIds,
|
|
364534
364561
|
obsPointsModelMatrix: modelMatrix2,
|
|
364535
364562
|
// Return 'tiled' if the morton_code_2d column
|
|
364536
|
-
//
|
|
364563
|
+
// is present,
|
|
364537
364564
|
// and the row group size is small enough.
|
|
364538
364565
|
// Otherwise, return 'full'.
|
|
364539
364566
|
obsPointsTilingType: supportsTiling ? "tiled" : "full",
|
|
@@ -374042,6 +374069,7 @@ function sdataMortonQueryRectAux(boundingBox, origRect) {
|
|
|
374042
374069
|
const mortonIntervals = zcoverRectangle(normRect[0][0], normRect[0][1], normRect[1][0], normRect[1][1], 16, null, true);
|
|
374043
374070
|
return mortonIntervals;
|
|
374044
374071
|
}
|
|
374072
|
+
const MORTON_CODE_EXTREME_VALUE_INDICATOR = 0;
|
|
374045
374073
|
async function getParquetModule() {
|
|
374046
374074
|
const module2 = await import(
|
|
374047
374075
|
/* webpackIgnore: true */
|
|
@@ -374120,7 +374148,7 @@ async function _loadParquetSchemaBytes({ queryClient, store }, parquetPath, part
|
|
|
374120
374148
|
if (!tailBytes || tailBytes.length < TAIL_LENGTH) {
|
|
374121
374149
|
throw new Error(`Failed to load parquet footerLength for ${partZeroPath}`);
|
|
374122
374150
|
}
|
|
374123
|
-
const footerLength = new DataView(tailBytes.buffer).getInt32(0, true);
|
|
374151
|
+
const footerLength = new DataView(tailBytes.buffer, tailBytes.byteOffset, tailBytes.byteLength).getInt32(0, true);
|
|
374124
374152
|
const magic = new TextDecoder().decode(tailBytes.slice(4, 8));
|
|
374125
374153
|
if (magic !== "PAR1") {
|
|
374126
374154
|
throw new Error("Invalid Parquet file: missing PAR1 magic number");
|
|
@@ -374167,22 +374195,22 @@ async function _loadParquetMetadataByPart({ queryClient, store }, parquetPath) {
|
|
|
374167
374195
|
} catch (error2) {
|
|
374168
374196
|
if (error2.message.includes("Failed to load parquet footerLength")) {
|
|
374169
374197
|
numParts = partIndex;
|
|
374198
|
+
log$b.info(`Found ${numParts} parts for parquet path ${parquetPath}; An above "Failed to load parquet footerLength" error is expected for the subsequent part.`);
|
|
374170
374199
|
}
|
|
374171
374200
|
}
|
|
374172
374201
|
} while (numParts === void 0);
|
|
374202
|
+
const numRows = allMetadata.map((part) => part.metadata.fileMetadata().numRows());
|
|
374203
|
+
const numRowGroups = allMetadata.map((part) => part.metadata.numRowGroups());
|
|
374204
|
+
const numRowsPerGroup = allMetadata.map((part) => part.metadata.rowGroup(0).numRows());
|
|
374173
374205
|
const metadata2 = {
|
|
374174
|
-
|
|
374175
|
-
|
|
374176
|
-
|
|
374177
|
-
|
|
374178
|
-
|
|
374179
|
-
|
|
374180
|
-
|
|
374181
|
-
|
|
374182
|
-
metadata2.numRowGroups = allMetadata.reduce((sum2, part) => sum2 + part.metadata.numRowGroups(), 0);
|
|
374183
|
-
metadata2.numRowsPerGroup = firstPart.metadata.rowGroup(0).numRows();
|
|
374184
|
-
metadata2.schema = firstPart.schema.schema;
|
|
374185
|
-
}
|
|
374206
|
+
totalNumRows: numRows.reduce((a2, b2) => a2 + b2, 0),
|
|
374207
|
+
totalNumRowGroups: numRowGroups.reduce((a2, b2) => a2 + b2, 0),
|
|
374208
|
+
// Array of count per part (length equal to numParts).
|
|
374209
|
+
numRowsByPart: numRows,
|
|
374210
|
+
numRowGroupsByPart: numRowGroups,
|
|
374211
|
+
numRowsPerGroupByPart: numRowsPerGroup,
|
|
374212
|
+
schema: allMetadata?.[0]?.schema?.schema
|
|
374213
|
+
};
|
|
374186
374214
|
const result = {
|
|
374187
374215
|
...metadata2,
|
|
374188
374216
|
// TODO: extract metadata per part and rowGroup into plain objects that match the hyparquet parquetMetadata() return value?
|
|
@@ -374206,8 +374234,8 @@ async function _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetP
|
|
|
374206
374234
|
const store2 = ctx.meta?.store;
|
|
374207
374235
|
const { readParquetRowGroup } = await _getParquetModule({ queryClient: queryClient2 });
|
|
374208
374236
|
const allMetadata = await _loadParquetMetadataByPart({ queryClient: queryClient2, store: store2 }, parquetPath);
|
|
374209
|
-
if (rowGroupIndex < 0 || rowGroupIndex >= allMetadata.
|
|
374210
|
-
throw new Error(`Row group index ${rowGroupIndex} is out of bounds for parquet table with ${allMetadata.
|
|
374237
|
+
if (rowGroupIndex < 0 || rowGroupIndex >= allMetadata.totalNumRowGroups) {
|
|
374238
|
+
throw new Error(`Row group index ${rowGroupIndex} is out of bounds for parquet table with ${allMetadata.totalNumRowGroups} row groups.`);
|
|
374211
374239
|
}
|
|
374212
374240
|
let partIndex;
|
|
374213
374241
|
let cumulativeRowGroups = 0;
|
|
@@ -374317,9 +374345,9 @@ async function _bisectRowGroupsRight({ queryClient, store }, parquetPath, column
|
|
|
374317
374345
|
);
|
|
374318
374346
|
const store2 = ctx.meta?.store;
|
|
374319
374347
|
const allMetadata = await _loadParquetMetadataByPart({ queryClient: queryClient2, store: store2 }, parquetPath);
|
|
374320
|
-
const {
|
|
374348
|
+
const { totalNumRowGroups } = allMetadata;
|
|
374321
374349
|
let lo = 0;
|
|
374322
|
-
let hi =
|
|
374350
|
+
let hi = totalNumRowGroups;
|
|
374323
374351
|
while (lo < hi) {
|
|
374324
374352
|
const cachedInRange = await getCachedInRange(queryClient2, parquetPath, columnName, lo, hi);
|
|
374325
374353
|
const betterLo = cachedInRange.slice().reverse().find((c2) => c2.index > lo && targetValue >= c2.max);
|
|
@@ -374722,11 +374750,12 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374722
374750
|
const { queryClient } = this;
|
|
374723
374751
|
const { store } = this.storeRoot;
|
|
374724
374752
|
const allMetadata = await _loadParquetMetadataByPart({ queryClient, store }, parquetPath);
|
|
374725
|
-
const {
|
|
374726
|
-
const numRowsTotal = allMetadata.
|
|
374727
|
-
|
|
374753
|
+
const { numRowsPerGroupByPart } = allMetadata;
|
|
374754
|
+
const numRowsTotal = allMetadata.totalNumRows;
|
|
374755
|
+
const maxNumRowsPerGroup = Math.max(...numRowsPerGroupByPart);
|
|
374756
|
+
if (maxNumRowsPerGroup >= 1e5) {
|
|
374728
374757
|
if (numRowsTotal > 5e6) {
|
|
374729
|
-
throw new Error(`The Parquet table at ${parquetPath} has ${numRowsTotal} total rows, which necessitates tiled loading, but it was not possible because the row group size is too large (${
|
|
374758
|
+
throw new Error(`The Parquet table at ${parquetPath} has ${numRowsTotal} total rows, which necessitates tiled loading, but it was not possible because the row group size is too large (${maxNumRowsPerGroup}). See the Vitessce documentation at Data Troubleshooting -> Points for more details.`);
|
|
374730
374759
|
}
|
|
374731
374760
|
return false;
|
|
374732
374761
|
}
|
|
@@ -374750,7 +374779,7 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374750
374779
|
* @param {string[]|undefined} columns An optional list of column names to load.
|
|
374751
374780
|
* @returns
|
|
374752
374781
|
*/
|
|
374753
|
-
async loadParquetTableInRect(parquetPath, tileBbox,
|
|
374782
|
+
async loadParquetTableInRect(parquetPath, tileBbox, signal, featureIndexColumnName, mortonCodeColumn) {
|
|
374754
374783
|
const { queryClient } = this;
|
|
374755
374784
|
const { store } = this.storeRoot;
|
|
374756
374785
|
const mortonCodeColumnName = mortonCodeColumn ?? "morton_code_2d";
|
|
@@ -374775,15 +374804,46 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374775
374804
|
} else {
|
|
374776
374805
|
tileBboxes = [tileBbox];
|
|
374777
374806
|
}
|
|
374807
|
+
const firstRowGroupTable = await _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetPath, 0);
|
|
374808
|
+
const xColumnForBoundingBox = firstRowGroupTable.getChild("x");
|
|
374809
|
+
const yColumnForBoundingBox = firstRowGroupTable.getChild("y");
|
|
374810
|
+
const mortonCodeColumnForBoundingBox = firstRowGroupTable.getChild(mortonCodeColumnName);
|
|
374811
|
+
const boundingBoxMaxNumRows = Math.min(4, firstRowGroupTable.numRows);
|
|
374812
|
+
const firstMortonCodes = range$e(boundingBoxMaxNumRows).map((i2) => mortonCodeColumnForBoundingBox.get(i2));
|
|
374813
|
+
const boundingBoxNumRows = firstMortonCodes.filter((code2) => code2 === MORTON_CODE_EXTREME_VALUE_INDICATOR).length;
|
|
374814
|
+
const boundingBoxXValues = range$e(boundingBoxNumRows).map((i2) => xColumnForBoundingBox.get(i2));
|
|
374815
|
+
const boundingBoxYValues = range$e(boundingBoxNumRows).map((i2) => yColumnForBoundingBox.get(i2));
|
|
374816
|
+
const xMin = Math.min(...boundingBoxXValues);
|
|
374817
|
+
const xMax = Math.max(...boundingBoxXValues);
|
|
374818
|
+
const yMin = Math.min(...boundingBoxYValues);
|
|
374819
|
+
const yMax = Math.max(...boundingBoxYValues);
|
|
374820
|
+
const allPointsBbox = {
|
|
374821
|
+
x_min: xMin,
|
|
374822
|
+
x_max: xMax,
|
|
374823
|
+
y_min: yMin,
|
|
374824
|
+
y_max: yMax
|
|
374825
|
+
};
|
|
374778
374826
|
const rowGroupIndicesPerTile = await Promise.all(tileBboxes.map(async (subTileBbox) => _rectToRowGroupIndices({ queryClient, store }, parquetPath, subTileBbox, allPointsBbox, mortonCodeColumnName)));
|
|
374779
374827
|
const uniqueCoveredRowGroupIndices = Array.from(new Set(rowGroupIndicesPerTile.flat())).toSorted((a2, b2) => a2 - b2);
|
|
374780
374828
|
const allMetadata = await _loadParquetMetadataByPart({ queryClient, store }, parquetPath);
|
|
374781
|
-
const {
|
|
374782
|
-
const
|
|
374783
|
-
|
|
374784
|
-
|
|
374785
|
-
|
|
374786
|
-
|
|
374829
|
+
const { numRowsPerGroupByPart, numRowGroupsByPart } = allMetadata;
|
|
374830
|
+
const rowGroupIToNumRows = (rowGroupI) => {
|
|
374831
|
+
let currPartIndex = 0;
|
|
374832
|
+
let prevTotalRowGroupCount = 0;
|
|
374833
|
+
for (let partIndex = 0; partIndex < numRowGroupsByPart.length; partIndex++) {
|
|
374834
|
+
const numRowGroupsInPart = numRowGroupsByPart[partIndex];
|
|
374835
|
+
if (prevTotalRowGroupCount <= rowGroupI && rowGroupI < prevTotalRowGroupCount + numRowGroupsInPart) {
|
|
374836
|
+
currPartIndex = partIndex;
|
|
374837
|
+
break;
|
|
374838
|
+
}
|
|
374839
|
+
prevTotalRowGroupCount += numRowGroupsInPart;
|
|
374840
|
+
}
|
|
374841
|
+
return numRowsPerGroupByPart[currPartIndex];
|
|
374842
|
+
};
|
|
374843
|
+
const totalNumRowsToLoad = uniqueCoveredRowGroupIndices.reduce((acc, rowGroupI) => acc + rowGroupIToNumRows(rowGroupI), 0);
|
|
374844
|
+
const xArr = new Float32Array(totalNumRowsToLoad);
|
|
374845
|
+
const yArr = new Float32Array(totalNumRowsToLoad);
|
|
374846
|
+
const featureIndexArr = new Uint32Array(totalNumRowsToLoad);
|
|
374787
374847
|
const rowGroupTables = await Promise.all(uniqueCoveredRowGroupIndices.map(async (rowGroupIndex) => _loadParquetRowGroupByGroupIndex({ queryClient, store }, parquetPath, rowGroupIndex)));
|
|
374788
374848
|
let rowOffset = 0;
|
|
374789
374849
|
rowGroupTables.forEach((table2) => {
|
|
@@ -374796,7 +374856,7 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374796
374856
|
xArr.set(xColumn.toArray(), rowOffset);
|
|
374797
374857
|
yArr.set(yColumn.toArray(), rowOffset);
|
|
374798
374858
|
featureIndexArr.set(featureIndexColumn.toArray(), rowOffset);
|
|
374799
|
-
rowOffset +=
|
|
374859
|
+
rowOffset += table2.numRows;
|
|
374800
374860
|
});
|
|
374801
374861
|
return {
|
|
374802
374862
|
data: {
|
|
@@ -374804,7 +374864,7 @@ class SpatialDataTableSource extends AnnDataSource {
|
|
|
374804
374864
|
y: yArr,
|
|
374805
374865
|
featureIndices: featureIndexArr
|
|
374806
374866
|
},
|
|
374807
|
-
shape: [3,
|
|
374867
|
+
shape: [3, totalNumRowsToLoad]
|
|
374808
374868
|
};
|
|
374809
374869
|
}
|
|
374810
374870
|
}
|
|
@@ -380896,7 +380956,7 @@ class SpatialDataPointsSource extends SpatialDataTableSource {
|
|
|
380896
380956
|
const zattrs = await this.loadSpatialDataElementAttrs(path2);
|
|
380897
380957
|
const formatVersion = zattrs.spatialdata_attrs.version;
|
|
380898
380958
|
const encodingType = zattrs["encoding-type"];
|
|
380899
|
-
if (encodingType === "ngff:points" && !(formatVersion === "0.1")) {
|
|
380959
|
+
if (encodingType === "ngff:points" && !(formatVersion === "0.1" || formatVersion === "0.2")) {
|
|
380900
380960
|
throw new Error(`Unexpected version for points spatialdata_attrs: ${formatVersion}`);
|
|
380901
380961
|
}
|
|
380902
380962
|
return formatVersion;
|
|
@@ -380999,16 +381059,11 @@ class SpatialDataPointsSource extends SpatialDataTableSource {
|
|
|
380999
381059
|
const zattrs = await this.loadSpatialDataElementAttrs(elementPath);
|
|
381000
381060
|
const {
|
|
381001
381061
|
// axes,
|
|
381002
|
-
spatialdata_attrs: spatialDataAttrs
|
|
381003
|
-
// The bounding box (extent) of all points.
|
|
381004
|
-
// Required for un-normalization from uints back to floats.
|
|
381005
|
-
// TODO: decide whether these will be stored here or somewhere else.
|
|
381006
|
-
// Reference: https://github.com/vitessce/vitessce-python/pull/476#issuecomment-3362656956
|
|
381007
|
-
bounding_box: allPointsBbox
|
|
381062
|
+
spatialdata_attrs: spatialDataAttrs
|
|
381008
381063
|
} = zattrs;
|
|
381009
381064
|
const { feature_key: featureKey } = spatialDataAttrs;
|
|
381010
381065
|
const featureIndexColumnName = featureIndexColumnNameFromOptions ?? `${featureKey}_codes`;
|
|
381011
|
-
return this.loadParquetTableInRect(parquetPath, tileBbox,
|
|
381066
|
+
return this.loadParquetTableInRect(parquetPath, tileBbox, signal, featureIndexColumnName, mortonCodeColumn);
|
|
381012
381067
|
}
|
|
381013
381068
|
async supportsLoadPointsInRect(elementPath, featureIndexColumnName, mortonCodeColumn) {
|
|
381014
381069
|
const parquetPath = getParquetPath(elementPath);
|
|
@@ -386566,7 +386621,8 @@ const baseFileTypes = [
|
|
|
386566
386621
|
makeFileType(FileType$1.OBS_LOCATIONS_MOLECULES_JSON, DataType$3.OBS_LOCATIONS, MoleculesJsonAsObsLocationsLoader, JsonSource, z.null()),
|
|
386567
386622
|
makeFileType(FileType$1.OBS_LABELS_MOLECULES_JSON, DataType$3.OBS_LABELS, MoleculesJsonAsObsLabelsLoader, JsonSource, z.null()),
|
|
386568
386623
|
makeFileType(FileType$1.NEIGHBORHOODS_JSON, DataType$3.NEIGHBORHOODS, JsonLoader, JsonSource, z.null()),
|
|
386569
|
-
makeFileType(FileType$1.GENOMIC_PROFILES_ZARR, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null())
|
|
386624
|
+
makeFileType(FileType$1.GENOMIC_PROFILES_ZARR, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null()),
|
|
386625
|
+
makeFileType(FileType$1.GENOMIC_PROFILES_ZARR_ZIP, DataType$3.GENOMIC_PROFILES, GenomicProfilesZarrLoader, ZarrDataSource, z.null())
|
|
386570
386626
|
];
|
|
386571
386627
|
const baseJointFileTypes = [
|
|
386572
386628
|
new PluginJointFileType(FileType$1.ANNDATA_ZARR, expandAnndataZarr, anndataZarrSchema),
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as inflate_1 } from "./pako.esm-SxljTded.js";
|
|
2
|
-
import { aG as getDefaultExportFromCjs, aX as BaseDecoder, aY as LercParameters, aZ as LercAddCompression } from "./index-
|
|
2
|
+
import { aG as getDefaultExportFromCjs, aX as BaseDecoder, aY as LercParameters, aZ as LercAddCompression } from "./index-dq5Rjqj6.js";
|
|
3
3
|
var LercDecode = { exports: {} };
|
|
4
4
|
var hasRequiredLercDecode;
|
|
5
5
|
function requireLercDecode() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { bH as MeshDistanceMaterial, bI as MeshDepthMaterial, bJ as RGBADepthPacking, ae as UniformsUtils, bK as ShaderChunk, a9 as InstancedBufferGeometry, a8 as Sphere, a7 as Box3, am as BackSide, u as DoubleSide, z as Mesh, a5 as FrontSide, v as MeshBasicMaterial, C as Color, e as Vector3, M as Matrix4, V as Vector2, ap as Matrix3, ag as Vector4, a1 as Texture, l as LinearFilter, aD as PlaneGeometry, x as BufferGeometry, aa as Float32BufferAttribute, bL as InstancedBufferAttribute } from "./index-
|
|
1
|
+
import { bH as MeshDistanceMaterial, bI as MeshDepthMaterial, bJ as RGBADepthPacking, ae as UniformsUtils, bK as ShaderChunk, a9 as InstancedBufferGeometry, a8 as Sphere, a7 as Box3, am as BackSide, u as DoubleSide, z as Mesh, a5 as FrontSide, v as MeshBasicMaterial, C as Color, e as Vector3, M as Matrix4, V as Vector2, ap as Matrix3, ag as Vector4, a1 as Texture, l as LinearFilter, aD as PlaneGeometry, x as BufferGeometry, aa as Float32BufferAttribute, bL as InstancedBufferAttribute } from "./index-dq5Rjqj6.js";
|
|
2
2
|
function workerBootstrap() {
|
|
3
3
|
var modules = /* @__PURE__ */ Object.create(null);
|
|
4
4
|
function registerModule(ref, callback) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vitessce/launcher",
|
|
3
|
-
"version": "3.9.
|
|
3
|
+
"version": "3.9.10",
|
|
4
4
|
"author": "HIDIVE Lab at HMS",
|
|
5
5
|
"homepage": "http://vitessce.io",
|
|
6
6
|
"repository": {
|
|
@@ -20,14 +20,14 @@
|
|
|
20
20
|
"use-query-params": "^1.1.9",
|
|
21
21
|
"react-dropzone": "^14.3.8",
|
|
22
22
|
"@tanstack/react-query": "^5.80.2",
|
|
23
|
-
"@vitessce/all": "3.9.
|
|
24
|
-
"@vitessce/
|
|
25
|
-
"@vitessce/
|
|
26
|
-
"@vitessce/globals": "3.9.
|
|
27
|
-
"@vitessce/example-
|
|
28
|
-
"@vitessce/
|
|
29
|
-
"@vitessce/
|
|
30
|
-
"@vitessce/config": "3.9.
|
|
23
|
+
"@vitessce/all": "3.9.10",
|
|
24
|
+
"@vitessce/constants-internal": "3.9.10",
|
|
25
|
+
"@vitessce/example-plugins": "3.9.10",
|
|
26
|
+
"@vitessce/globals": "3.9.10",
|
|
27
|
+
"@vitessce/example-configs": "3.9.10",
|
|
28
|
+
"@vitessce/vit-s": "3.9.10",
|
|
29
|
+
"@vitessce/styles": "3.9.10",
|
|
30
|
+
"@vitessce/config": "3.9.10"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"react": "18.3.1",
|