@jax-data-science/sci-image-visualizer 0.8.3 → 0.9.0
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/README.md +201 -460
- package/esm2022/index.mjs +28 -15
- package/esm2022/lib/channel-histogram/channel-histogram.component.mjs +163 -91
- package/esm2022/lib/contracts/capabilities.contract.mjs +4 -3
- package/esm2022/lib/contracts/cell-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/channel-histogram-api.contract.mjs +5 -1
- package/esm2022/lib/contracts/color.mjs +60 -0
- package/esm2022/lib/contracts/colormap-lut.mjs +213 -57
- package/esm2022/lib/contracts/coordinate-transform.contract.mjs +1 -1
- package/esm2022/lib/contracts/display-types.mjs +11 -1
- package/esm2022/lib/contracts/instance-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/intensity.mjs +48 -5
- package/esm2022/lib/contracts/plot-type-contribution.contract.mjs +1 -1
- package/esm2022/lib/contracts/plot-type.mjs +134 -17
- package/esm2022/lib/contracts/ports/image-state.port.mjs +4 -1
- package/esm2022/lib/contracts/ports/preferences.port.mjs +5 -1
- package/esm2022/lib/contracts/ports/region-io.port.mjs +2 -1
- package/esm2022/lib/contracts/ports/spatial-data.port.mjs +5 -1
- package/esm2022/lib/contracts/ports/tile-access.port.mjs +2 -1
- package/esm2022/lib/contracts/region-editor-api.contract.mjs +1 -1
- package/esm2022/lib/contracts/region-overlay.contract.mjs +1 -1
- package/esm2022/lib/contracts/sam.contract.mjs +1 -1
- package/esm2022/lib/contracts/semantic-segmenter.contract.mjs +1 -1
- package/esm2022/lib/contracts/spatial-dataset.contract.mjs +3 -1
- package/esm2022/lib/contracts/toolbar-tool.contract.mjs +6 -4
- package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
- package/esm2022/lib/contracts/viz-config.mjs +2 -1
- package/esm2022/lib/geometry/contour.mjs +63 -0
- package/esm2022/lib/geometry/raster.mjs +98 -0
- package/esm2022/lib/geometry/ring.mjs +201 -0
- package/esm2022/lib/hex-color-picker/hex-color-picker.component.mjs +202 -102
- package/esm2022/lib/implementations/base-store-visualizer.mjs +201 -48
- package/esm2022/lib/implementations/napari-js/napari-axes-gizmo.mjs +65 -0
- package/esm2022/lib/implementations/napari-js/napari-display-state.mjs +136 -0
- package/esm2022/lib/implementations/napari-js/napari-helpers.mjs +199 -0
- package/esm2022/lib/implementations/napari-js/napari-image-2d-scene.mjs +602 -0
- package/esm2022/lib/implementations/napari-js/napari-loading-badge.mjs +3 -4
- package/esm2022/lib/implementations/napari-js/napari-loading-state.mjs +66 -0
- package/esm2022/lib/implementations/napari-js/napari-region-overlay.mjs +157 -591
- package/esm2022/lib/implementations/napari-js/napari-scene.mjs +2 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-2d-scene.mjs +614 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-3d-scene.mjs +769 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-encoding.mjs +199 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-hover.mjs +263 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-scene.mjs +159 -0
- package/esm2022/lib/implementations/napari-js/napari-spatial-tiles.mjs +106 -1408
- package/esm2022/lib/implementations/napari-js/napari-spatial-tooltip.mjs +2 -2
- package/esm2022/lib/implementations/napari-js/napari-surface-scene.mjs +271 -0
- package/esm2022/lib/implementations/napari-js/napari-tile-client.mjs +562 -0
- package/esm2022/lib/implementations/napari-js/napari-tool-bridge.mjs +344 -0
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +358 -4218
- package/esm2022/lib/implementations/napari-js/napari-volume-scene.mjs +439 -0
- package/esm2022/lib/implementations/napari-js/napari-volume-z-handle.mjs +6 -6
- package/esm2022/lib/implementations/napari-js/region-overlay/overlay-projection.mjs +96 -0
- package/esm2022/lib/implementations/napari-js/region-overlay/region-edit.mjs +35 -0
- package/esm2022/lib/implementations/napari-js/region-overlay/region-svg-renderer.mjs +182 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/categorical-lookup.mjs +30 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/cell-layers.mjs +274 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/density-layer.mjs +144 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/layer-groups.mjs +165 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/plan-context.mjs +78 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-hover.mjs +182 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-jobs.mjs +369 -0
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-layers.mjs +306 -0
- package/esm2022/lib/implementations/osd/display-pipeline.mjs +102 -40
- package/esm2022/lib/implementations/osd/histogram-sampler.mjs +56 -31
- package/esm2022/lib/implementations/osd/openseadragon-viewer-options.mjs +128 -0
- package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +333 -1685
- package/esm2022/lib/implementations/osd/osd-coordinate-transform.mjs +1 -1
- package/esm2022/lib/implementations/osd/osd-coords.mjs +5 -6
- package/esm2022/lib/implementations/osd/osd-export.mjs +122 -0
- package/esm2022/lib/implementations/osd/osd-lib.mjs +15 -1
- package/esm2022/lib/implementations/osd/osd-navigator-chrome.mjs +205 -0
- package/esm2022/lib/implementations/osd/osd-pixel-readback.mjs +68 -0
- package/esm2022/lib/implementations/osd/osd-region-overlay-draw.mjs +153 -0
- package/esm2022/lib/implementations/osd/osd-region-overlay.mjs +185 -718
- package/esm2022/lib/implementations/osd/osd-scale-bar.mjs +52 -60
- package/esm2022/lib/implementations/osd/osd-tile-source.mjs +105 -0
- package/esm2022/lib/implementations/osd/osd-viewer-like.mjs +2 -0
- package/esm2022/lib/implementations/osd/osd-viewer-mount.mjs +44 -0
- package/esm2022/lib/implementations/osd/osd-viewport.mjs +184 -0
- package/esm2022/lib/implementations/osd/osd-zoom.mjs +7 -1
- package/esm2022/lib/implementations/osd/simple-source.mjs +395 -0
- package/esm2022/lib/implementations/osd/slice-cache.mjs +53 -48
- package/esm2022/lib/implementations/osd/tile-client.mjs +32 -11
- package/esm2022/lib/implementations/osd/tile-recolor.mjs +330 -0
- package/esm2022/lib/implementations/plotly/omics-trace-builders.mjs +161 -73
- package/esm2022/lib/implementations/plotly/plotly-coordinate-transform.mjs +1 -1
- package/esm2022/lib/implementations/plotly/plotly-image-loader.mjs +112 -0
- package/esm2022/lib/implementations/plotly/plotly-image-recolor.mjs +178 -0
- package/esm2022/lib/implementations/plotly/plotly-intensity-inset.mjs +33 -0
- package/esm2022/lib/implementations/plotly/plotly-isosurface-controls.mjs +83 -0
- package/esm2022/lib/implementations/plotly/plotly-layouts.mjs +121 -0
- package/esm2022/lib/implementations/plotly/plotly-readback.mjs +117 -0
- package/esm2022/lib/implementations/plotly/plotly-region-overlay.mjs +19 -10
- package/esm2022/lib/implementations/plotly/plotly-shape-projection.mjs +223 -0
- package/esm2022/lib/implementations/plotly/plotly-trace-builders.mjs +79 -19
- package/esm2022/lib/implementations/plotly/plotly-zoom-controller.mjs +223 -0
- package/esm2022/lib/implementations/plotly/plotly.service.mjs +439 -1655
- package/esm2022/lib/implementations/region-centroids.mjs +47 -0
- package/esm2022/lib/implementations/simple-slice-access.service.mjs +22 -12
- package/esm2022/lib/implementations/spatial-data-http/spatial-data-http.service.mjs +172 -92
- package/esm2022/lib/implementations/spatial-data-http/spatial-wire.mjs +103 -22
- package/esm2022/lib/implementations/tile-server/index.mjs +6 -0
- package/esm2022/lib/implementations/tile-server/native-histogram.mjs +30 -0
- package/esm2022/lib/implementations/tile-server/poll-descriptor.mjs +65 -0
- package/esm2022/lib/implementations/tile-server/tile-protocol.mjs +42 -0
- package/esm2022/lib/implementations/tile-server/transport.mjs +135 -0
- package/esm2022/lib/intensity/intensity-profile.mjs +107 -0
- package/esm2022/lib/intensity/intensity-profile.service.mjs +223 -0
- package/esm2022/lib/intensity-inset/intensity-inset.component.mjs +133 -0
- package/esm2022/lib/models/bezier.mjs +1 -11
- package/esm2022/lib/models/class-preset.mjs +41 -3
- package/esm2022/lib/models/geometry.mjs +27 -164
- package/esm2022/lib/models/polygon-edit.mjs +254 -0
- package/esm2022/lib/models/polygon-factory.mjs +118 -0
- package/esm2022/lib/models/region-clone.mjs +68 -0
- package/esm2022/lib/models/region-geojson.mjs +373 -0
- package/esm2022/lib/models/region.mjs +34 -33
- package/esm2022/lib/models/shape.mjs +18 -16
- package/esm2022/lib/plot-mode/contribution-host.mjs +297 -0
- package/esm2022/lib/plot-mode/plot-mode-controller.mjs +9 -6
- package/esm2022/lib/plot-mode/plot-type-menu.mjs +85 -0
- package/esm2022/lib/plot-mode/tool-params-model.mjs +87 -0
- package/esm2022/lib/plot.utilities.mjs +296 -473
- package/esm2022/lib/processing/image-crop.mjs +1 -1
- package/esm2022/lib/processing/processing-image.mjs +28 -15
- package/esm2022/lib/provide-visualization.mjs +40 -14
- package/esm2022/lib/region-editor/classes-panel/classes-panel.component.mjs +99 -0
- package/esm2022/lib/region-editor/file-stem.mjs +13 -0
- package/esm2022/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.mjs +118 -0
- package/esm2022/lib/region-editor/mask-export.service.mjs +98 -0
- package/esm2022/lib/region-editor/mask-raster.mjs +11 -5
- package/esm2022/lib/region-editor/region-color-dialog/region-color-dialog.component.mjs +56 -0
- package/esm2022/lib/region-editor/region-editor-help/region-editor-help.component.mjs +28 -0
- package/esm2022/lib/region-editor/region-editor.component.mjs +402 -651
- package/esm2022/lib/region-editor/region-metrics.mjs +68 -0
- package/esm2022/lib/region-editor/region-persistence.service.mjs +134 -0
- package/esm2022/lib/region-editor/region-table/region-table.component.mjs +153 -0
- package/esm2022/lib/region-editor/save-mask-dialog/save-mask-dialog.component.mjs +91 -0
- package/esm2022/lib/region-editor/save-regions-dialog/save-regions-dialog.component.mjs +92 -0
- package/esm2022/lib/region-ops.service.mjs +28 -70
- package/esm2022/lib/region-overlay/region-geometry.mjs +360 -0
- package/esm2022/lib/region-overlay/region-hit-test.mjs +103 -0
- package/esm2022/lib/region-overlay/svg-region-renderer.mjs +228 -0
- package/esm2022/lib/render-orchestrator.mjs +14 -11
- package/esm2022/lib/render-session.mjs +207 -0
- package/esm2022/lib/routing-visualizer.service.mjs +459 -411
- package/esm2022/lib/spatial/density-raster.mjs +14 -0
- package/esm2022/lib/spatial/embedding-compute-coordinator.mjs +239 -0
- package/esm2022/lib/spatial/embedding-compute.mjs +43 -10
- package/esm2022/lib/spatial/gene-search.mjs +1 -1
- package/esm2022/lib/spatial/glyphs.mjs +97 -0
- package/esm2022/lib/spatial/lod.mjs +187 -0
- package/esm2022/lib/spatial/spatial-controls.facade.mjs +200 -0
- package/esm2022/lib/spatial/spatial-density.mjs +25 -16
- package/esm2022/lib/spatial/spatial-encoding.mjs +26 -82
- package/esm2022/lib/spatial/spatial-expression.mjs +43 -42
- package/esm2022/lib/spatial/spatial-framing.mjs +1 -1
- package/esm2022/lib/spatial/spatial-heatmap.mjs +6 -3
- package/esm2022/lib/spatial/spatial-hover.mjs +5 -33
- package/esm2022/lib/spatial/spatial-panel-model.mjs +282 -0
- package/esm2022/lib/spatial/spatial-sections.mjs +1 -1
- package/esm2022/lib/spatial/spatial-selection.mjs +33 -46
- package/esm2022/lib/spatial/spatial-tile-merge.mjs +219 -0
- package/esm2022/lib/spatial/spatial-tiles.mjs +12 -648
- package/esm2022/lib/spatial/spatial-volume-image.mjs +2 -4
- package/esm2022/lib/spatial/stats.mjs +71 -0
- package/esm2022/lib/spatial/transcript-grouping.mjs +307 -0
- package/esm2022/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.mjs +150 -0
- package/esm2022/lib/spatial-controls/spatial-charts/chart-data-model.mjs +309 -0
- package/esm2022/lib/spatial-controls/spatial-charts/chart-help.mjs +145 -0
- package/esm2022/lib/spatial-controls/spatial-charts/plotly-chart-host.mjs +158 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.mjs +47 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-charts.component.mjs +297 -802
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.mjs +89 -0
- package/esm2022/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.mjs +52 -0
- package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +143 -1238
- package/esm2022/lib/spatial-controls/spatial-gene-picker.mjs +153 -0
- package/esm2022/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.mjs +241 -0
- package/esm2022/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.mjs +193 -0
- package/esm2022/lib/spatial-controls/spatial-key/spatial-key.component.mjs +132 -0
- package/esm2022/lib/spatial-controls/spatial-key/spatial-key.model.mjs +67 -0
- package/esm2022/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.mjs +147 -0
- package/esm2022/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.mjs +300 -0
- package/esm2022/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.mjs +370 -0
- package/esm2022/lib/store/class-color.util.mjs +46 -3
- package/esm2022/lib/store/region-history.mjs +146 -0
- package/esm2022/lib/store/region-scope-cache.mjs +140 -0
- package/esm2022/lib/store/region-selection.mjs +82 -0
- package/esm2022/lib/store/region-store.service.mjs +279 -675
- package/esm2022/lib/store/spatial-selection.service.mjs +2 -2
- package/esm2022/lib/store/visualizer-store.service.mjs +49 -71
- package/esm2022/lib/toast-outlets.mjs +5 -4
- package/esm2022/lib/toolbar/brush/brush-tool.service.mjs +92 -434
- package/esm2022/lib/toolbar/canvas-tools.mjs +20 -0
- package/esm2022/lib/toolbar/crop/slide-crop.mjs +26 -42
- package/esm2022/lib/toolbar/plot-type-selector/plot-type-selector.component.mjs +85 -0
- package/esm2022/lib/toolbar/region-tools/region-tool-buttons.mjs +74 -0
- package/esm2022/lib/toolbar/region-tools/region-tools.component.mjs +114 -0
- package/esm2022/lib/toolbar/segmentation/cell-segment-tool.service.mjs +74 -78
- package/esm2022/lib/toolbar/segmentation/cellpose-segmenter.service.mjs +50 -8
- package/esm2022/lib/toolbar/segmentation/onnx-sam-session.mjs +61 -42
- package/esm2022/lib/toolbar/segmentation/pending-calls.mjs +47 -0
- package/esm2022/lib/toolbar/segmentation/sam-model-registry.mjs +12 -4
- package/esm2022/lib/toolbar/segmentation/sam-onnx-core.mjs +70 -14
- package/esm2022/lib/toolbar/segmentation/sam-point-tool.service.mjs +135 -172
- package/esm2022/lib/toolbar/segmentation/sam-prompt.mjs +9 -90
- package/esm2022/lib/toolbar/segmentation/sam-session.service.mjs +183 -0
- package/esm2022/lib/toolbar/segmentation/sam-tool.service.mjs +95 -150
- package/esm2022/lib/toolbar/segmentation/segmentation-commit.mjs +12 -0
- package/esm2022/lib/toolbar/segmentation/segmentation-runner.mjs +108 -0
- package/esm2022/lib/toolbar/segmentation-tools/segmentation-tools.component.mjs +155 -0
- package/esm2022/lib/toolbar/stack-controls/stack-controls.component.mjs +81 -0
- package/esm2022/lib/toolbar/tool-kit/async-tool-status.mjs +37 -0
- package/esm2022/lib/toolbar/tool-kit/canvas-tool-manager.mjs +63 -0
- package/esm2022/lib/toolbar/tool-kit/canvas-tool.mjs +2 -0
- package/esm2022/lib/toolbar/tool-kit/frame-pixels.mjs +108 -0
- package/esm2022/lib/toolbar/tool-kit/mask-stroke-editor.mjs +306 -0
- package/esm2022/lib/toolbar/tool-kit/matrix-frame.mjs +61 -0
- package/esm2022/lib/toolbar/tool-kit/tool-overlay.mjs +140 -0
- package/esm2022/lib/toolbar/tool-kit/undo-gesture.mjs +24 -0
- package/esm2022/lib/toolbar/tool-slider/tool-slider.component.mjs +63 -0
- package/esm2022/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.mjs +50 -0
- package/esm2022/lib/toolbar/toolbar.component.mjs +68 -117
- package/esm2022/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.mjs +93 -115
- package/esm2022/lib/toolbar/view-controls/view-controls.component.mjs +107 -0
- package/esm2022/lib/toolbar/wand/wand-region-grow.mjs +321 -0
- package/esm2022/lib/toolbar/wand/wand-tool.service.mjs +121 -416
- package/esm2022/lib/toolbar/wand/wand.service.mjs +30 -894
- package/esm2022/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.mjs +48 -90
- package/esm2022/lib/util/mark-for-check.mjs +17 -0
- package/esm2022/lib/util/supersede.mjs +56 -0
- package/esm2022/lib/visualization.module.mjs +39 -141
- package/esm2022/lib/visualizer/floating-drag.directive.mjs +58 -0
- package/esm2022/lib/visualizer/region-actions.mjs +149 -0
- package/esm2022/lib/visualizer/region-load.mjs +60 -0
- package/esm2022/lib/visualizer/spatial-dataset-binder.mjs +163 -0
- package/esm2022/lib/visualizer/tool-modes.mjs +113 -0
- package/esm2022/lib/visualizer/viewer-shortcuts.mjs +167 -0
- package/esm2022/lib/visualizer/visualizer-context-menu.mjs +119 -0
- package/esm2022/lib/visualizer.component.mjs +480 -1902
- package/esm2022/lib/workers/spatial-math-ops.mjs +43 -0
- package/esm2022/lib/workers/spatial-math-worker.mjs +10 -0
- package/esm2022/lib/workers/spatial-math.mjs +190 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-Csxlnq7I.mjs +41083 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-Csxlnq7I.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-Bkujqg7m.mjs +238 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-Bkujqg7m.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs +12 -0
- package/fesm2022/jax-data-science-sci-image-visualizer-spatial-math-worker-BzVFFqGS.mjs.map +1 -0
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +41 -34467
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/fesm2022/mask.worker.js +36 -917
- package/fesm2022/onnx-sam.worker.js +52 -16
- package/fesm2022/spatial-math.worker.js +471 -0
- package/fesm2022/tsne.worker.js +32 -15
- package/index.d.ts +13 -10
- package/lib/channel-histogram/channel-histogram.component.d.ts +53 -43
- package/lib/contracts/capabilities.contract.d.ts +4 -2
- package/lib/contracts/cell-segmenter.contract.d.ts +1 -0
- package/lib/contracts/channel-histogram-api.contract.d.ts +4 -0
- package/lib/contracts/color.d.ts +27 -0
- package/lib/contracts/colormap-lut.d.ts +19 -4
- package/lib/contracts/coordinate-transform.contract.d.ts +3 -3
- package/lib/contracts/display-types.d.ts +21 -0
- package/lib/contracts/instance-segmenter.contract.d.ts +5 -0
- package/lib/contracts/intensity.d.ts +13 -2
- package/lib/contracts/plot-type.d.ts +3 -1
- package/lib/contracts/ports/image-state.port.d.ts +6 -2
- package/lib/contracts/ports/preferences.port.d.ts +4 -0
- package/lib/contracts/ports/region-io.port.d.ts +1 -0
- package/lib/contracts/ports/spatial-data.port.d.ts +4 -10
- package/lib/contracts/ports/tile-access.port.d.ts +1 -0
- package/lib/contracts/region-editor-api.contract.d.ts +1 -1
- package/lib/contracts/region-overlay.contract.d.ts +5 -0
- package/lib/contracts/sam.contract.d.ts +7 -0
- package/lib/contracts/semantic-segmenter.contract.d.ts +6 -0
- package/lib/contracts/spatial-dataset.contract.d.ts +19 -6
- package/lib/contracts/toolbar-tool.contract.d.ts +1 -0
- package/lib/contracts/visualizer.contract.d.ts +221 -54
- package/lib/contracts/viz-config.d.ts +1 -0
- package/lib/geometry/contour.d.ts +24 -0
- package/lib/geometry/raster.d.ts +42 -0
- package/lib/geometry/ring.d.ts +67 -0
- package/lib/hex-color-picker/hex-color-picker.component.d.ts +61 -27
- package/lib/implementations/base-store-visualizer.d.ts +61 -15
- package/lib/implementations/napari-js/napari-axes-gizmo.d.ts +36 -0
- package/lib/implementations/napari-js/napari-display-state.d.ts +76 -0
- package/lib/implementations/napari-js/napari-helpers.d.ts +129 -0
- package/lib/implementations/napari-js/napari-image-2d-scene.d.ts +162 -0
- package/lib/implementations/napari-js/napari-loading-badge.d.ts +0 -1
- package/lib/implementations/napari-js/napari-loading-state.d.ts +30 -0
- package/lib/implementations/napari-js/napari-region-overlay.d.ts +62 -70
- package/lib/implementations/napari-js/napari-scene.d.ts +93 -0
- package/lib/implementations/napari-js/napari-spatial-2d-scene.d.ts +163 -0
- package/lib/implementations/napari-js/napari-spatial-3d-scene.d.ts +212 -0
- package/lib/implementations/napari-js/napari-spatial-encoding.d.ts +114 -0
- package/lib/implementations/napari-js/napari-spatial-hover.d.ts +89 -0
- package/lib/implementations/napari-js/napari-spatial-scene.d.ts +118 -0
- package/lib/implementations/napari-js/napari-spatial-tiles.d.ts +56 -263
- package/lib/implementations/napari-js/napari-spatial-tooltip.d.ts +1 -1
- package/lib/implementations/napari-js/napari-surface-scene.d.ts +76 -0
- package/lib/implementations/napari-js/napari-tile-client.d.ts +214 -0
- package/lib/implementations/napari-js/napari-tool-bridge.d.ts +179 -0
- package/lib/implementations/napari-js/napari-visualizer.service.d.ts +121 -883
- package/lib/implementations/napari-js/napari-volume-scene.d.ts +104 -0
- package/lib/implementations/napari-js/napari-volume-z-handle.d.ts +8 -12
- package/lib/implementations/napari-js/region-overlay/overlay-projection.d.ts +59 -0
- package/lib/implementations/napari-js/region-overlay/region-edit.d.ts +15 -0
- package/lib/implementations/napari-js/region-overlay/region-svg-renderer.d.ts +54 -0
- package/lib/implementations/napari-js/spatial-tiles/categorical-lookup.d.ts +26 -0
- package/lib/implementations/napari-js/spatial-tiles/cell-layers.d.ts +70 -0
- package/lib/implementations/napari-js/spatial-tiles/density-layer.d.ts +61 -0
- package/lib/implementations/napari-js/spatial-tiles/layer-groups.d.ts +67 -0
- package/lib/implementations/napari-js/spatial-tiles/plan-context.d.ts +38 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-hover.d.ts +71 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-jobs.d.ts +105 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-layers.d.ts +56 -0
- package/lib/implementations/osd/display-pipeline.d.ts +38 -9
- package/lib/implementations/osd/histogram-sampler.d.ts +22 -12
- package/lib/implementations/osd/openseadragon-viewer-options.d.ts +35 -0
- package/lib/implementations/osd/openseadragon-visualizer.service.d.ts +78 -354
- package/lib/implementations/osd/osd-coordinate-transform.d.ts +2 -1
- package/lib/implementations/osd/osd-coords.d.ts +6 -4
- package/lib/implementations/osd/osd-export.d.ts +36 -0
- package/lib/implementations/osd/osd-lib.d.ts +7 -0
- package/lib/implementations/osd/osd-navigator-chrome.d.ts +69 -0
- package/lib/implementations/osd/osd-pixel-readback.d.ts +22 -0
- package/lib/implementations/osd/osd-region-overlay-draw.d.ts +37 -0
- package/lib/implementations/osd/osd-region-overlay.d.ts +36 -48
- package/lib/implementations/osd/osd-scale-bar.d.ts +8 -6
- package/lib/implementations/osd/osd-tile-source.d.ts +49 -0
- package/lib/implementations/osd/osd-viewer-like.d.ts +100 -0
- package/lib/implementations/osd/osd-viewer-mount.d.ts +14 -0
- package/lib/implementations/osd/osd-viewport.d.ts +77 -0
- package/lib/implementations/osd/osd-zoom.d.ts +6 -0
- package/lib/implementations/osd/simple-source.d.ts +161 -0
- package/lib/implementations/osd/slice-cache.d.ts +12 -3
- package/lib/implementations/osd/tile-client.d.ts +11 -14
- package/lib/implementations/osd/tile-recolor.d.ts +141 -0
- package/lib/implementations/plotly/omics-trace-builders.d.ts +32 -20
- package/lib/implementations/plotly/plotly-image-loader.d.ts +49 -0
- package/lib/implementations/plotly/plotly-image-recolor.d.ts +75 -0
- package/lib/implementations/plotly/plotly-intensity-inset.d.ts +8 -0
- package/lib/implementations/plotly/plotly-isosurface-controls.d.ts +38 -0
- package/lib/implementations/plotly/plotly-layouts.d.ts +188 -0
- package/lib/implementations/plotly/plotly-readback.d.ts +41 -0
- package/lib/implementations/plotly/plotly-region-overlay.d.ts +2 -2
- package/lib/implementations/plotly/plotly-shape-projection.d.ts +92 -0
- package/lib/implementations/plotly/plotly-trace-builders.d.ts +23 -12
- package/lib/implementations/plotly/plotly-zoom-controller.d.ts +86 -0
- package/lib/implementations/plotly/plotly.service.d.ts +136 -401
- package/lib/implementations/region-centroids.d.ts +14 -0
- package/lib/implementations/simple-slice-access.service.d.ts +7 -4
- package/lib/implementations/spatial-data-http/spatial-data-http.service.d.ts +42 -18
- package/lib/implementations/spatial-data-http/spatial-wire.d.ts +34 -9
- package/lib/implementations/tile-server/index.d.ts +5 -0
- package/lib/implementations/tile-server/native-histogram.d.ts +25 -0
- package/lib/implementations/tile-server/poll-descriptor.d.ts +39 -0
- package/lib/implementations/tile-server/tile-protocol.d.ts +80 -0
- package/lib/implementations/tile-server/transport.d.ts +62 -0
- package/lib/intensity/intensity-profile.d.ts +66 -0
- package/lib/intensity/intensity-profile.service.d.ts +108 -0
- package/lib/intensity-inset/intensity-inset.component.d.ts +58 -0
- package/lib/models/bezier.d.ts +0 -5
- package/lib/models/class-preset.d.ts +18 -0
- package/lib/models/geometry.d.ts +14 -48
- package/lib/models/polygon-edit.d.ts +72 -0
- package/lib/models/polygon-factory.d.ts +40 -0
- package/lib/models/region-clone.d.ts +20 -0
- package/lib/models/region-geojson.d.ts +17 -0
- package/lib/models/region.d.ts +40 -4
- package/lib/models/shape.d.ts +8 -0
- package/lib/plot-mode/contribution-host.d.ts +125 -0
- package/lib/plot-mode/plot-type-menu.d.ts +60 -0
- package/lib/plot-mode/tool-params-model.d.ts +49 -0
- package/lib/plot.utilities.d.ts +19 -30
- package/lib/processing/processing-image.d.ts +5 -2
- package/lib/provide-visualization.d.ts +19 -2
- package/lib/region-editor/classes-panel/classes-panel.component.d.ts +56 -0
- package/lib/region-editor/file-stem.d.ts +7 -0
- package/lib/region-editor/manage-classes-dialog/manage-classes-dialog.component.d.ts +45 -0
- package/lib/region-editor/mask-export.service.d.ts +54 -0
- package/lib/region-editor/mask-raster.d.ts +2 -8
- package/lib/region-editor/region-color-dialog/region-color-dialog.component.d.ts +29 -0
- package/lib/region-editor/region-editor-help/region-editor-help.component.d.ts +11 -0
- package/lib/region-editor/region-editor.component.d.ts +166 -199
- package/lib/region-editor/region-metrics.d.ts +26 -0
- package/lib/region-editor/region-persistence.service.d.ts +69 -0
- package/lib/region-editor/region-table/region-table.component.d.ts +83 -0
- package/lib/region-editor/save-mask-dialog/save-mask-dialog.component.d.ts +36 -0
- package/lib/region-editor/save-regions-dialog/save-regions-dialog.component.d.ts +37 -0
- package/lib/region-ops.service.d.ts +1 -7
- package/lib/region-overlay/region-geometry.d.ts +157 -0
- package/lib/region-overlay/region-hit-test.d.ts +38 -0
- package/lib/region-overlay/svg-region-renderer.d.ts +110 -0
- package/lib/render-orchestrator.d.ts +6 -2
- package/lib/render-session.d.ts +75 -0
- package/lib/routing-visualizer.service.d.ts +110 -58
- package/lib/spatial/density-raster.d.ts +6 -0
- package/lib/spatial/embedding-compute-coordinator.d.ts +123 -0
- package/lib/spatial/embedding-compute.d.ts +21 -2
- package/lib/spatial/glyphs.d.ts +16 -0
- package/lib/spatial/lod.d.ts +94 -0
- package/lib/spatial/spatial-controls.facade.d.ts +64 -0
- package/lib/spatial/spatial-density.d.ts +15 -5
- package/lib/spatial/spatial-encoding.d.ts +11 -44
- package/lib/spatial/spatial-expression.d.ts +40 -22
- package/lib/spatial/spatial-framing.d.ts +1 -0
- package/lib/spatial/spatial-heatmap.d.ts +2 -0
- package/lib/spatial/spatial-hover.d.ts +4 -16
- package/lib/spatial/spatial-panel-model.d.ts +135 -0
- package/lib/spatial/spatial-selection.d.ts +21 -26
- package/lib/spatial/spatial-tile-merge.d.ts +41 -0
- package/lib/spatial/spatial-tiles.d.ts +9 -256
- package/lib/spatial/stats.d.ts +38 -0
- package/lib/spatial/transcript-grouping.d.ts +119 -0
- package/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.d.ts +64 -0
- package/lib/spatial-controls/spatial-charts/chart-data-model.d.ts +153 -0
- package/lib/spatial-controls/spatial-charts/chart-help.d.ts +69 -0
- package/lib/spatial-controls/spatial-charts/plotly-chart-host.d.ts +98 -0
- package/lib/spatial-controls/spatial-charts/spatial-chart-window/spatial-chart-window.component.d.ts +26 -0
- package/lib/spatial-controls/spatial-charts/spatial-charts.component.d.ts +101 -260
- package/lib/spatial-controls/spatial-charts/spatial-embedding-controls/spatial-embedding-controls.component.d.ts +43 -0
- package/lib/spatial-controls/spatial-charts/spatial-heatmap-controls/spatial-heatmap-controls.component.d.ts +27 -0
- package/lib/spatial-controls/spatial-controls.component.d.ts +68 -448
- package/lib/spatial-controls/spatial-gene-picker.d.ts +86 -0
- package/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.d.ts +102 -0
- package/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.d.ts +72 -0
- package/lib/spatial-controls/spatial-key/spatial-key.component.d.ts +66 -0
- package/lib/spatial-controls/spatial-key/spatial-key.model.d.ts +33 -0
- package/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.d.ts +64 -0
- package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts +117 -0
- package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts +142 -0
- package/lib/store/class-color.util.d.ts +35 -1
- package/lib/store/region-history.d.ts +66 -0
- package/lib/store/region-scope-cache.d.ts +63 -0
- package/lib/store/region-selection.d.ts +36 -0
- package/lib/store/region-store.service.d.ts +104 -112
- package/lib/store/visualizer-store.service.d.ts +22 -33
- package/lib/toast-outlets.d.ts +4 -3
- package/lib/toolbar/brush/brush-tool.service.d.ts +31 -98
- package/lib/toolbar/canvas-tools.d.ts +20 -0
- package/lib/toolbar/crop/slide-crop.d.ts +10 -4
- package/lib/toolbar/plot-type-selector/plot-type-selector.component.d.ts +38 -0
- package/lib/toolbar/region-tools/region-tool-buttons.d.ts +21 -0
- package/lib/toolbar/region-tools/region-tools.component.d.ts +60 -0
- package/lib/toolbar/segmentation/cell-segment-tool.service.d.ts +10 -14
- package/lib/toolbar/segmentation/cellpose-segmenter.service.d.ts +12 -2
- package/lib/toolbar/segmentation/onnx-sam-session.d.ts +22 -3
- package/lib/toolbar/segmentation/pending-calls.d.ts +31 -0
- package/lib/toolbar/segmentation/sam-model-registry.d.ts +9 -3
- package/lib/toolbar/segmentation/sam-onnx-core.d.ts +18 -5
- package/lib/toolbar/segmentation/sam-point-tool.service.d.ts +46 -32
- package/lib/toolbar/segmentation/sam-prompt.d.ts +7 -31
- package/lib/toolbar/segmentation/sam-session.service.d.ts +74 -0
- package/lib/toolbar/segmentation/sam-tool.service.d.ts +23 -30
- package/lib/toolbar/segmentation/segmentation-commit.d.ts +8 -0
- package/lib/toolbar/segmentation/segmentation-runner.d.ts +52 -0
- package/lib/toolbar/segmentation-tools/segmentation-tools.component.d.ts +87 -0
- package/lib/toolbar/stack-controls/stack-controls.component.d.ts +40 -0
- package/lib/toolbar/tool-kit/async-tool-status.d.ts +21 -0
- package/lib/toolbar/tool-kit/canvas-tool-manager.d.ts +36 -0
- package/lib/toolbar/tool-kit/canvas-tool.d.ts +86 -0
- package/lib/toolbar/tool-kit/frame-pixels.d.ts +45 -0
- package/lib/toolbar/tool-kit/mask-stroke-editor.d.ts +125 -0
- package/lib/toolbar/tool-kit/matrix-frame.d.ts +40 -0
- package/lib/toolbar/tool-kit/tool-overlay.d.ts +60 -0
- package/lib/toolbar/tool-kit/undo-gesture.d.ts +17 -0
- package/lib/toolbar/tool-slider/tool-slider.component.d.ts +33 -0
- package/lib/toolbar/toolbar-help-dialog/toolbar-help-dialog.component.d.ts +24 -0
- package/lib/toolbar/toolbar.component.d.ts +47 -83
- package/lib/toolbar/vertex-eraser/vertex-eraser-tool.service.d.ts +33 -40
- package/lib/toolbar/view-controls/view-controls.component.d.ts +54 -0
- package/lib/toolbar/wand/wand-region-grow.d.ts +49 -0
- package/lib/toolbar/wand/wand-tool.service.d.ts +39 -124
- package/lib/toolbar/wand/wand.service.d.ts +22 -116
- package/lib/toolbar/zoom-to-box/zoom-to-box-tool.service.d.ts +17 -37
- package/lib/util/mark-for-check.d.ts +11 -0
- package/lib/util/supersede.d.ts +53 -0
- package/lib/visualization.module.d.ts +18 -39
- package/lib/visualizer/floating-drag.directive.d.ts +30 -0
- package/lib/visualizer/region-actions.d.ts +54 -0
- package/lib/visualizer/region-load.d.ts +27 -0
- package/lib/visualizer/spatial-dataset-binder.d.ts +74 -0
- package/lib/visualizer/tool-modes.d.ts +49 -0
- package/lib/visualizer/viewer-shortcuts.d.ts +71 -0
- package/lib/visualizer/visualizer-context-menu.d.ts +55 -0
- package/lib/visualizer.component.d.ts +201 -447
- package/lib/workers/spatial-math-ops.d.ts +65 -0
- package/lib/workers/spatial-math-worker.d.ts +7 -0
- package/lib/workers/spatial-math.d.ts +74 -0
- package/package.json +12 -3
- package/src/lib/styles/_viz-icons-rules.scss +73 -0
- package/src/lib/styles/viz-icons.scss +14 -0
- package/esm2022/lib/implementations/napari-js/napari-axes-labels.mjs +0 -97
- package/esm2022/lib/implementations/napari-js/napari-navigator.mjs +0 -195
- package/esm2022/lib/implementations/napari-js/napari-scale-bar.mjs +0 -92
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs +0 -329
- package/fesm2022/jax-data-science-sci-image-visualizer-onnx-sam-session-BwP-A11m.mjs.map +0 -1
- package/lib/implementations/napari-js/napari-axes-labels.d.ts +0 -49
- package/lib/implementations/napari-js/napari-navigator.d.ts +0 -72
- package/lib/implementations/napari-js/napari-scale-bar.d.ts +0 -35
- package/src/lib/assets/cell-detection.svg +0 -37
- package/src/lib/assets/click.svg +0 -1
- package/src/lib/assets/colormap-luts.json +0 -1
- package/src/lib/assets/edit-selection-white.svg +0 -47
- package/src/lib/assets/icons/colormap-earth.png +0 -0
- package/src/lib/assets/icons/colormap-placeholder.png +0 -0
- package/src/lib/assets/icons/colormap-pubu.png +0 -0
- package/src/lib/assets/interactive-segmentation-cursor.svg +0 -1
- package/src/lib/assets/picture-segmentation.svg +0 -43
- package/src/lib/assets/test/download-379.svg +0 -1
- package/src/lib/assets/test/download-98.svg +0 -1
- package/src/lib/assets/test/json-1.svg +0 -1
- package/src/lib/assets/test/load-53.svg +0 -1
- package/src/lib/assets/test/mask-44.svg +0 -1
- package/src/lib/assets/test/mask-download-44.svg +0 -15
- package/src/lib/assets/test/mask-save-44.svg +0 -11
- package/src/lib/assets/test/overlay-1.svg +0 -1
- package/src/lib/assets/test/overlay-4.svg +0 -1
- package/src/lib/assets/test/region-26.svg +0 -1
- package/src/lib/assets/test/save-56.svg +0 -1
- package/src/lib/assets/test/upload-43.svg +0 -1
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { type SpatialDataPort } from '../../../contracts/ports/spatial-data.port';
|
|
2
|
+
import type { SpatialViewState } from '../../../contracts/display-types';
|
|
3
|
+
import { SpatialDataset, SpatialTranscriptTile } from '../../../contracts/spatial-dataset.contract';
|
|
4
|
+
import { DataRect } from '../../../spatial/lod';
|
|
5
|
+
import type { PlanContext } from './plan-context';
|
|
6
|
+
import type { TranscriptBin, TranscriptKind } from './transcript-hover';
|
|
7
|
+
/** A transcript fetch the planner can key before running. */
|
|
8
|
+
export interface TranscriptJob {
|
|
9
|
+
/** What one entry is — decides what hovering it says. */
|
|
10
|
+
kind: TranscriptKind;
|
|
11
|
+
/** For bins: their size and grid origin, so a hovered bin's square can be recovered. */
|
|
12
|
+
bin?: TranscriptBin;
|
|
13
|
+
/** Identifies what will be drawn, so an unchanged plan is a no-op. */
|
|
14
|
+
key: string;
|
|
15
|
+
/** Fetch and merge; `px` is each entry's marker diameter in screen pixels. A job may
|
|
16
|
+
* switch to another kind once it sees the data (individual → bins); it then says so. */
|
|
17
|
+
load(ctx: PlanContext): Promise<TranscriptLoad>;
|
|
18
|
+
}
|
|
19
|
+
export interface TranscriptLoad {
|
|
20
|
+
merged: SpatialTranscriptTile;
|
|
21
|
+
px: Float32Array;
|
|
22
|
+
/** For a gene selection: group it on this bin ladder once hidden genes are dropped. */
|
|
23
|
+
ladder?: {
|
|
24
|
+
baseBin: number;
|
|
25
|
+
levels: number;
|
|
26
|
+
start: number | null;
|
|
27
|
+
};
|
|
28
|
+
/** Already one marker per cluster per bin (zoomed out, from the density grids): no cells. */
|
|
29
|
+
clustered?: {
|
|
30
|
+
group: Int32Array;
|
|
31
|
+
names: string[];
|
|
32
|
+
genes: string[][];
|
|
33
|
+
bin: number;
|
|
34
|
+
origin: [number, number];
|
|
35
|
+
};
|
|
36
|
+
kind?: TranscriptJob['kind'];
|
|
37
|
+
bin?: TranscriptJob['bin'];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Decides which transcripts the 2D spatial view fetches, at which level, for the current
|
|
41
|
+
* camera and selection: a {@link TranscriptJob} that can be keyed before it runs (so an
|
|
42
|
+
* unchanged plan is a no-op) and that fetches and merges when run.
|
|
43
|
+
*
|
|
44
|
+
* Pure apart from the port, so the level policy is testable without a viewer. Owns the
|
|
45
|
+
* cache of summed per-cluster density grids a zoomed-out gene selection is drawn from.
|
|
46
|
+
*/
|
|
47
|
+
export declare class TranscriptJobPlanner {
|
|
48
|
+
private readonly port;
|
|
49
|
+
/** Summed per-cluster density grids (see densityFor). */
|
|
50
|
+
private readonly densityCache;
|
|
51
|
+
constructor(port: SpatialDataPort);
|
|
52
|
+
/**
|
|
53
|
+
* The job that draws the view's transcripts as markers (circles or icons), or null when the
|
|
54
|
+
* view draws none or the port cannot serve them.
|
|
55
|
+
*/
|
|
56
|
+
jobFor(dataset: SpatialDataset, view: SpatialViewState, rect: DataRect, pxPerUnit: number): TranscriptJob | null;
|
|
57
|
+
/**
|
|
58
|
+
* The chosen genes, at the level the zoom calls for — or coarser, while the markers in
|
|
59
|
+
* view would exceed the budget.
|
|
60
|
+
*/
|
|
61
|
+
private geneJob;
|
|
62
|
+
/**
|
|
63
|
+
* A gene selection from the pyramid's per-gene levels: starting at the level whose bins are
|
|
64
|
+
* `startBin`, fetch the view's tiles for the selected genes and step to a coarser level while
|
|
65
|
+
* one marker per cluster per bin would exceed the max. Hidden genes are fetched too (their
|
|
66
|
+
* counts in view still show) and dropped before drawing; grouping by cluster happens there.
|
|
67
|
+
*/
|
|
68
|
+
private geneBinsJob;
|
|
69
|
+
/** The selection's clusters: each gene-tree group's visible genes, then each ungrouped gene. */
|
|
70
|
+
private selectionClusters;
|
|
71
|
+
/**
|
|
72
|
+
* Per-gene density grids summed for `genes`, cached (a cluster is asked for once per bin).
|
|
73
|
+
* Keyed by dataset too: this manager outlives a dataset, and another may share gene names.
|
|
74
|
+
* Least-recently-USED eviction, so the clusters in view stay cached; a failed request is
|
|
75
|
+
* dropped so the next plan asks again.
|
|
76
|
+
*/
|
|
77
|
+
private densityFor;
|
|
78
|
+
/**
|
|
79
|
+
* A gene selection zoomed out: one marker per cluster per bin, from the per-gene density
|
|
80
|
+
* grids. The bin starts where markers are 14 px apart and doubles until the markers fit the
|
|
81
|
+
* max; each marker sits at the count-weighted centre of the finer grid inside it, so markers
|
|
82
|
+
* follow the tissue rather than a lattice.
|
|
83
|
+
*/
|
|
84
|
+
private clusterDensityJob;
|
|
85
|
+
/**
|
|
86
|
+
* Every gene: the transcripts themselves once they fit the budget, else bins of the
|
|
87
|
+
* all-gene pyramid sized by how many transcripts each holds.
|
|
88
|
+
*/
|
|
89
|
+
private allGenesJob;
|
|
90
|
+
/** Bins of the all-gene pyramid at `level`, sized by how many transcripts each holds. */
|
|
91
|
+
private binsJob;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Group a gene selection for the zoom: one marker per gene-tree cluster (a gene in no
|
|
95
|
+
* cluster is its own) per bin of the pyramid ladder, starting at the finest bin whose
|
|
96
|
+
* markers are 14 px apart and stepping up while the markers would exceed the budget.
|
|
97
|
+
* Null to draw every transcript: zoomed in, with the selection within the budget.
|
|
98
|
+
*/
|
|
99
|
+
export declare function groupSelection(t: SpatialTranscriptTile, view: SpatialViewState, ladder: NonNullable<TranscriptLoad['ladder']>, pxPerUnit: number): {
|
|
100
|
+
merged: SpatialTranscriptTile;
|
|
101
|
+
px: Float32Array;
|
|
102
|
+
bin: number;
|
|
103
|
+
group: Int32Array;
|
|
104
|
+
names: string[];
|
|
105
|
+
} | null;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { PointSymbol } from 'napari-js';
|
|
2
|
+
import type { SpatialViewState } from '../../../contracts/display-types';
|
|
3
|
+
import { SpatialDataset } from '../../../contracts/spatial-dataset.contract';
|
|
4
|
+
import { DataRect } from '../../../spatial/lod';
|
|
5
|
+
import { TranscriptGlyph } from '../../../spatial/glyphs';
|
|
6
|
+
import type { CategoricalLookup } from './categorical-lookup';
|
|
7
|
+
import type { OrderedLayerGroups, TileGroup } from './layer-groups';
|
|
8
|
+
import type { PlanContext } from './plan-context';
|
|
9
|
+
import type { TranscriptHover } from './transcript-hover';
|
|
10
|
+
import { type TranscriptJobPlanner } from './transcript-jobs';
|
|
11
|
+
/**
|
|
12
|
+
* The napari-js point symbol each transcript icon is drawn as. Every icon has a counterpart of
|
|
13
|
+
* the same outline (`circle` is napari's `disc`); see {@link GLYPH_SIZE} for the one whose size
|
|
14
|
+
* differs.
|
|
15
|
+
*/
|
|
16
|
+
export declare const GLYPH_SYMBOLS: Readonly<Record<TranscriptGlyph, PointSymbol>>;
|
|
17
|
+
/**
|
|
18
|
+
* The transcript markers of the 2D spatial view: runs the planner's job, drops hidden groups
|
|
19
|
+
* and genes, groups a selection under the marker budget, colours the entries and draws them as
|
|
20
|
+
* one points layer: sized circles, or gene icons as per-point symbols (with a dark rim while
|
|
21
|
+
* there are few enough).
|
|
22
|
+
*
|
|
23
|
+
* Hands what it drew to the hover one way ({@link TranscriptHover.setDrawn}), and keeps the
|
|
24
|
+
* loaded per-gene transcripts the in-view gene counts are taken from.
|
|
25
|
+
*/
|
|
26
|
+
export declare class TranscriptLayers {
|
|
27
|
+
private readonly groups;
|
|
28
|
+
private readonly jobs;
|
|
29
|
+
private readonly lookup;
|
|
30
|
+
private readonly hover;
|
|
31
|
+
/** The loaded per-gene transcripts the in-view counts are taken from. */
|
|
32
|
+
private countSource;
|
|
33
|
+
constructor(groups: OrderedLayerGroups<TileGroup>, jobs: TranscriptJobPlanner, lookup: CategoricalLookup, hover: TranscriptHover);
|
|
34
|
+
/**
|
|
35
|
+
* Transcripts of each selected gene inside `rect`: each entry counts for the transcripts it
|
|
36
|
+
* stands for (an aggregate at a coarse level holds several). Null without per-gene data.
|
|
37
|
+
*/
|
|
38
|
+
geneCountsIn(rect: DataRect): Record<string, number> | null;
|
|
39
|
+
/** The viewer went away: no counts until the next plan. */
|
|
40
|
+
detached(): void;
|
|
41
|
+
/** Draw the view's transcript markers (or drop them); an unchanged plan key is a no-op. */
|
|
42
|
+
plan(dataset: SpatialDataset, view: SpatialViewState, rect: DataRect, pxPerUnit: number, ctx: PlanContext): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Gene icons: each entry drawn as its gene's napari-js point symbol, in the same one points
|
|
45
|
+
* layer as the circles. With every gene drawn there is one icon for all of them — 18,000
|
|
46
|
+
* shapes would say nothing.
|
|
47
|
+
*/
|
|
48
|
+
private drawTranscriptGlyphs;
|
|
49
|
+
/**
|
|
50
|
+
* The one transcripts layer: a marker per entry, `size` saying how many transcripts it stands
|
|
51
|
+
* for, drawn as the layer's disc or as each entry's `symbols` code.
|
|
52
|
+
*/
|
|
53
|
+
private drawTranscripts;
|
|
54
|
+
/** Per-entry colours, as packed RGBA. */
|
|
55
|
+
private transcriptColors;
|
|
56
|
+
}
|
|
@@ -4,8 +4,8 @@ import { Rgb } from '../../contracts/colormap-lut';
|
|
|
4
4
|
* The OSD pixel display pipeline (refactoring plan, Step 4 — a pure move of
|
|
5
5
|
* the recolor math out of the visualizer service). Stateless: every call reads
|
|
6
6
|
* the current display state through the host closures, exactly like the moved
|
|
7
|
-
* code read the service's fields. Shared by tile recoloring
|
|
8
|
-
* export so they stay identical.
|
|
7
|
+
* code read the service's fields. Shared by tile recoloring, the serverless
|
|
8
|
+
* multichannel compositor and the composite export so they stay identical.
|
|
9
9
|
*/
|
|
10
10
|
export interface DisplayPipelineHost {
|
|
11
11
|
/** Grayscale image (colormap LUT path) vs RGB/multichannel (additive tint). */
|
|
@@ -23,25 +23,54 @@ export declare class DisplayPipeline {
|
|
|
23
23
|
/**
|
|
24
24
|
* Apply the current display pipeline to an RGBA buffer in place; returns
|
|
25
25
|
* whether any opaque pixel was written.
|
|
26
|
-
* - Grayscale: intensity → window
|
|
26
|
+
* - Grayscale: intensity → window → invert → gamma → colormap LUT.
|
|
27
27
|
* - RGB/multichannel: additive pseudo-colour merge — each visible channel's
|
|
28
|
-
*
|
|
29
|
-
* "Merge Channels")
|
|
28
|
+
* intensity (window → invert → gamma, see {@link channelIntensity}) is
|
|
29
|
+
* tinted by its assigned colour and summed (Fiji "Merge Channels"), then
|
|
30
|
+
* clamped. Invert is per channel, before the merge, as napari-js inverts
|
|
31
|
+
* each additive layer (NAPARI-BOUNDARY-2) — not the composite. Defaults
|
|
32
|
+
* (R=red, G=green, B=blue) are the identity.
|
|
30
33
|
*/
|
|
31
34
|
applyToRgba(d: Uint8ClampedArray): boolean;
|
|
32
|
-
/** Precomputed lum(0..255) → tinted-RGB lookup for a channel's window/
|
|
33
|
-
* colour. Building it costs 256 channelIntensity() calls; using it makes a
|
|
35
|
+
/** Precomputed lum(0..255) → tinted-RGB lookup for a channel's window/invert/
|
|
36
|
+
* gamma/colour. Building it costs 256 channelIntensity() calls; using it makes a
|
|
34
37
|
* full-tile recolor ~262k array lookups instead of ~262k Math.pow() calls. */
|
|
35
38
|
channelRgbLut(st?: IChannelState): {
|
|
36
39
|
r: Uint8ClampedArray;
|
|
37
40
|
g: Uint8ClampedArray;
|
|
38
41
|
b: Uint8ClampedArray;
|
|
39
42
|
};
|
|
40
|
-
/**
|
|
41
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Additive ('lighter') merge of single-band channel planes into one opaque
|
|
45
|
+
* RGBA image — what OSD's drawer shows for a per-channel image, where each
|
|
46
|
+
* channel tile is tinted by {@link channelRgbLut}. Hidden channels, missing
|
|
47
|
+
* planes and planes of another size contribute nothing. A plane is RGBA
|
|
48
|
+
* (`bands` 4, R=G=B, transparent pixels skipped) or one byte per pixel
|
|
49
|
+
* (`bands` 1). Used by the serverless multichannel compositor, the
|
|
50
|
+
* multichannel composite export and the Plotly image's channel display.
|
|
51
|
+
*/
|
|
52
|
+
compositeChannels(planes: ReadonlyArray<Uint8ClampedArray | Uint8Array | null | undefined>, states: ReadonlyArray<IChannelState | undefined>, bands?: 1 | 4): Uint8ClampedArray;
|
|
53
|
+
/** Add one single-band plane (RGBA or one byte per pixel, see
|
|
54
|
+
* {@link compositeChannels}), tinted by its channel state, onto `out`
|
|
55
|
+
* (Uint8ClampedArray clamps → additive 'lighter'). */
|
|
56
|
+
addChannel(out: Uint8ClampedArray, plane: Uint8ClampedArray | Uint8Array, st?: IChannelState, bands?: 1 | 4): void;
|
|
57
|
+
/**
|
|
58
|
+
* A channel's display intensity (0..255, before its tint): window → invert →
|
|
59
|
+
* gamma, the order of napari-js's `windowGamma`, which every additive napari
|
|
60
|
+
* layer applies on its own before the layers are summed (NAPARI-BOUNDARY-2).
|
|
61
|
+
* The gamma exponent is the ImageJ one (t^(1/γ)). An empty window span maps to
|
|
62
|
+
* 0 before the invert; with no channel state the value passes through.
|
|
63
|
+
*/
|
|
64
|
+
channelIntensity(val: number, c?: IChannelState, invert?: boolean): number;
|
|
42
65
|
/** A channel's pseudo-colour tint as [r,g,b] in 0..1 (default white). */
|
|
43
66
|
tint01(c?: IChannelState): [number, number, number];
|
|
44
67
|
/** True when any RGB channel is windowed/hidden/gamma'd/re-tinted or the
|
|
45
68
|
* background is inverted — otherwise the tile passes through unchanged. */
|
|
46
69
|
rgbNeedsRecolor(): boolean;
|
|
47
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Whether an RGB image's channel states (R, G, B) change how it looks: any band windowed, hidden,
|
|
73
|
+
* gamma'd or re-tinted, or the image inverted. False means the RGB pixels pass through as they
|
|
74
|
+
* are — every backend's cue to keep drawing the image directly.
|
|
75
|
+
*/
|
|
76
|
+
export declare function rgbNeedsRecolor(channelStates: ReadonlyArray<IChannelState | undefined>, invert: boolean): boolean;
|
|
@@ -30,9 +30,10 @@ export interface HistogramSamplerHost {
|
|
|
30
30
|
/** Histograms landed — nudge the pane to re-read (its retry window may have
|
|
31
31
|
* lapsed). */
|
|
32
32
|
onChannelHistogramsSampled(): void;
|
|
33
|
-
/** A grayscale auto-window was measured from full-res tiles —
|
|
34
|
-
* Intensity channel (or re-invalidate if the user already
|
|
35
|
-
|
|
33
|
+
/** A grayscale auto-window was measured from slice `z`'s full-res tiles —
|
|
34
|
+
* seed the Intensity channel (or re-invalidate if the user already
|
|
35
|
+
* windowed). Background-preloaded slices report too; the host decides. */
|
|
36
|
+
onGrayWindowSampled(min: number, max: number, z: number): void;
|
|
36
37
|
}
|
|
37
38
|
export declare class HistogramSampler {
|
|
38
39
|
private http;
|
|
@@ -40,18 +41,25 @@ export declare class HistogramSampler {
|
|
|
40
41
|
private host;
|
|
41
42
|
/** 256-bin intensity histogram per z-slice, from sampled tiles. */
|
|
42
43
|
private sliceHistograms;
|
|
43
|
-
/** Native-bit-depth histograms from `/histogram`, keyed
|
|
44
|
+
/** Native-bit-depth histograms from `/histogram`, keyed
|
|
45
|
+
* `${infoB64}|${z}|${channel}|${bins}`. */
|
|
44
46
|
private nativeHistograms;
|
|
45
|
-
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
private
|
|
47
|
+
/** Bumped by {@link clear}. Every async sampler captures it before its first
|
|
48
|
+
* `await` and drops its result if it changed: tile sampling and the native
|
|
49
|
+
* fetch can take tens of seconds, and a run for the previous image must not
|
|
50
|
+
* write that image's histogram, auto-window or native histogram into the
|
|
51
|
+
* next one. */
|
|
52
|
+
private generation;
|
|
53
|
+
/** Slices whose tile sampling is in flight, so a scrub back to one (or a
|
|
54
|
+
* background preload of it) doesn't fetch its tiles again. */
|
|
55
|
+
private readonly inFlight;
|
|
51
56
|
constructor(http: HttpClient, api: string, host: HistogramSamplerHost);
|
|
52
57
|
/** The sampled histogram for one channel of slice z, or null until the
|
|
53
58
|
* async sampling resolves (or if it was skipped). */
|
|
54
59
|
get(z: number, channelIndex: number): IHistogram | null;
|
|
60
|
+
/** Whether slice z is already sampled or being sampled (tile samplers only
|
|
61
|
+
* run once per slice until {@link clear}). */
|
|
62
|
+
private sampledOrPending;
|
|
55
63
|
/** Drop everything (teardown / image switch). */
|
|
56
64
|
clear(): void;
|
|
57
65
|
/**
|
|
@@ -94,9 +102,11 @@ export declare class HistogramSampler {
|
|
|
94
102
|
/**
|
|
95
103
|
* Native-bit-depth histogram for >8-bit images, from the server `/histogram`
|
|
96
104
|
* endpoint (the 8-bit canvas tiles can't carry 16-bit values). Cached per
|
|
97
|
-
* slice+channel
|
|
105
|
+
* image+slice+channel+bin count until {@link clear}.
|
|
98
106
|
*/
|
|
99
107
|
native$(infoB64: string, z: number, channel: number, bins: number): Observable<IHistogram | null>;
|
|
100
|
-
/** Fetch + cache one channel's native histogram from `GET /histogram
|
|
108
|
+
/** Fetch + cache one channel's native histogram from `GET /histogram`
|
|
109
|
+
* (the shared jit-service client, which adds the per-app-load cache-buster
|
|
110
|
+
* that defeats the server's 24 h cache). */
|
|
101
111
|
private fetchNative;
|
|
102
112
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quiet OpenSeadragon's "[Viewport.*] is not accurate with multi-image" advisories.
|
|
3
|
+
* A multichannel image is composited from one TiledImage per channel — a legitimate
|
|
4
|
+
* multi-image world — and OSD logs that advisory (at error level) from its own
|
|
5
|
+
* navigator/overview rendering on every animation frame, flooding the console. Our
|
|
6
|
+
* own image<->viewport conversions already route through world item 0 (see
|
|
7
|
+
* osd-coords), so the remaining advisories are OSD-internal and only affect the
|
|
8
|
+
* minimap's box accuracy (cosmetic). This wraps OSD's logger in a Proxy that drops
|
|
9
|
+
* only that one message string and forwards every other log untouched. Idempotent.
|
|
10
|
+
*/
|
|
11
|
+
export declare function silenceOsdMultiImageAdvisory(): void;
|
|
12
|
+
/** What {@link buildViewerOptions} needs to know about the viewer being mounted. */
|
|
13
|
+
export interface ViewerOptionsInput {
|
|
14
|
+
/** The DOM id OSD mounts into. */
|
|
15
|
+
id: string;
|
|
16
|
+
/** Show the overview navigator (minimap). */
|
|
17
|
+
navigatorVisible: boolean;
|
|
18
|
+
/** Bilinear smoothing; false gives crisp nearest-neighbour pixels. */
|
|
19
|
+
smoothing: boolean;
|
|
20
|
+
/** Bearer token for OSD's own tile fetches (its loader bypasses HttpClient). */
|
|
21
|
+
authHeaders: Record<string, string>;
|
|
22
|
+
/** Slices in the image (1 for a single image). */
|
|
23
|
+
sliceCount: number;
|
|
24
|
+
/** How many slices the slice cache keeps resident (see SliceCache.maxSlices). */
|
|
25
|
+
maxSlices: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The options object handed to the OpenSeadragon factory. Pure: every value
|
|
29
|
+
* that depends on the service comes in through `input`.
|
|
30
|
+
*
|
|
31
|
+
* These are OSD config keys, not library code: OSD silently falls back to its
|
|
32
|
+
* own default when one is misspelled or renamed upstream, so the values we rely
|
|
33
|
+
* on are pinned by `openseadragon-viewer-options.spec.ts`.
|
|
34
|
+
*/
|
|
35
|
+
export declare function buildViewerOptions(input: ViewerOptionsInput): Record<string, unknown>;
|