@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
package/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Public API of
|
|
3
|
-
* ONLY from here
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Public API of `@jax-data-science/sci-image-visualizer`. External consumers import
|
|
3
|
+
* ONLY from here; everything else under `lib/` is internal. The surface is
|
|
4
|
+
* contracts + tokens + neutral models + the Angular module and components, plus
|
|
5
|
+
* `provideVisualization()` for an isolated, component-scoped viewer. The library
|
|
6
|
+
* binds the tokens itself (VisualizationModule / provideVisualization), so a host
|
|
7
|
+
* injects `VISUALIZER`, `REGION_EDITOR_API` and `CHANNEL_HISTOGRAM_API` and supplies
|
|
8
|
+
* only the ports and `VIZ_CONFIG`.
|
|
7
9
|
*/
|
|
8
10
|
export * from './lib/contracts/visualizer.contract';
|
|
9
11
|
export * from './lib/contracts/region-editor-api.contract';
|
|
@@ -26,13 +28,12 @@ export * from './lib/contracts/display-types';
|
|
|
26
28
|
export * from './lib/contracts/sam.contract';
|
|
27
29
|
export * from './lib/contracts/cell-segmenter.contract';
|
|
28
30
|
export { CellposeSegmenterService } from './lib/toolbar/segmentation/cellpose-segmenter.service';
|
|
29
|
-
export { SpatialDataHttpService, SupersededError } from './lib/implementations/spatial-data-http/spatial-data-http.service';
|
|
31
|
+
export { SpatialDataHttpService, SupersededError, } from './lib/implementations/spatial-data-http/spatial-data-http.service';
|
|
30
32
|
export { SPATIAL_WIRE_VERSION, isLittleEndian, assertManifestVersion, datasetFromManifest, decodeCoords, decodeRadius, decodeColumn, decodeFeatureVector, decodePolygons, } from './lib/implementations/spatial-data-http/spatial-wire';
|
|
31
33
|
export type { SpatialManifest, SpatialDatasetSummary, SpatialRadiusSpec, } from './lib/implementations/spatial-data-http/spatial-wire';
|
|
32
|
-
export { encodeCategorical, encodeContinuous, resolveCategoryColors, contrastWindow, markerDiameters,
|
|
33
|
-
export type { RGBA, CategoricalEncodingOptions, ContinuousEncodingOptions
|
|
34
|
+
export { encodeCategorical, encodeContinuous, resolveCategoryColors, contrastWindow, markerDiameters, lutFor, DEFAULT_CATEGORICAL_PALETTE, DEFAULT_MUTED_OPACITY, MISSING_COLOR, } from './lib/spatial/spatial-encoding';
|
|
35
|
+
export type { RGBA, CategoricalEncodingOptions, ContinuousEncodingOptions } from './lib/spatial/spatial-encoding';
|
|
34
36
|
export { selectInRegions, selectByCategory, mutedFromSelection, pointInRing, emptySelection, countMask, maskToIndices, } from './lib/spatial/spatial-selection';
|
|
35
|
-
export type { SpatialSelectionMask } from './lib/spatial/spatial-selection';
|
|
36
37
|
export { SpatialSelectionStore } from './lib/store/spatial-selection.service';
|
|
37
38
|
export * from './lib/contracts/instance-segmenter.contract';
|
|
38
39
|
export * from './lib/contracts/semantic-segmenter.contract';
|
|
@@ -41,17 +42,19 @@ export { cropImage, CropImageOptions } from './lib/processing/image-crop';
|
|
|
41
42
|
export { ImageConverterService } from './lib/processing/image-converter.service';
|
|
42
43
|
export { SAM_MODELS, DEFAULT_SAM_MODEL_ID, getSamModel, isSamModelReady, setSamModelUrls, setDefaultSamModel, getDefaultSamModelId, } from './lib/toolbar/segmentation/sam-model-registry';
|
|
43
44
|
export { setOrtWasmBase, getOrtWasmBase } from './lib/toolbar/segmentation/ort-runtime-config';
|
|
45
|
+
export { clearSamModelCache } from './lib/toolbar/segmentation/sam-onnx-core';
|
|
44
46
|
export * from './lib/models/region';
|
|
45
47
|
export * from './lib/models/class-preset';
|
|
46
48
|
export { ShapeSelection } from './lib/models/shape';
|
|
47
49
|
export { VisualizationModule } from './lib/visualization.module';
|
|
48
50
|
export { RoutingVisualizerService } from './lib/routing-visualizer.service';
|
|
49
51
|
export { provideVisualization } from './lib/provide-visualization';
|
|
52
|
+
export { VIZ_TOAST_KEY, VIZ_ALERT_TOAST_KEY } from './lib/toast-outlets';
|
|
50
53
|
export { VisualizerComponent } from './lib/visualizer.component';
|
|
51
54
|
export { RegionEditorComponent } from './lib/region-editor/region-editor.component';
|
|
52
55
|
export { HexColorPickerComponent } from './lib/hex-color-picker/hex-color-picker.component';
|
|
53
56
|
export { ChannelHistogramComponent } from './lib/channel-histogram/channel-histogram.component';
|
|
54
|
-
export { SpatialControlsComponent
|
|
57
|
+
export { SpatialControlsComponent } from './lib/spatial-controls/spatial-controls.component';
|
|
55
58
|
export type { SpatialLegendEntry } from './lib/spatial-controls/spatial-controls.component';
|
|
56
59
|
export { SpatialChartsComponent } from './lib/spatial-controls/spatial-charts/spatial-charts.component';
|
|
57
60
|
export { buildOmicsTraces, omicsLayout, benefitsFromGrouping, } from './lib/implementations/plotly/omics-trace-builders';
|
|
@@ -10,94 +10,104 @@ import * as i0 from "@angular/core";
|
|
|
10
10
|
* {@link CHANNEL_HISTOGRAM_API} into the shared store, and both rendering
|
|
11
11
|
* backends recolor the displayed image live. The pane depends only on the
|
|
12
12
|
* contract, never the concrete visualizer.
|
|
13
|
+
*
|
|
14
|
+
* OnPush: the API's channel / colormap / invert / image streams, the async
|
|
15
|
+
* histogram and the slider-activity timer mark it for check.
|
|
13
16
|
*/
|
|
14
17
|
export declare class ChannelHistogramComponent implements OnInit, OnDestroy {
|
|
15
18
|
private api;
|
|
16
19
|
/** Dialog visibility, two-way bound so the host (toolbar button) can open it. */
|
|
17
20
|
visible: boolean;
|
|
21
|
+
/** The dialog was opened or closed; two-way with {@link visible}. */
|
|
18
22
|
visibleChange: EventEmitter<boolean>;
|
|
19
|
-
|
|
20
|
-
readonly
|
|
23
|
+
/** DOM id of the Plotly histogram element — per instance, so two panes don't collide. */
|
|
24
|
+
protected readonly histogramDiv: string;
|
|
25
|
+
protected readonly lutColors: readonly {
|
|
21
26
|
name: string;
|
|
22
27
|
color: string;
|
|
23
28
|
}[];
|
|
24
|
-
channels: IChannelState[];
|
|
25
|
-
selected: IChannelState | null;
|
|
26
|
-
invert: boolean;
|
|
27
|
-
logScale: boolean;
|
|
29
|
+
protected channels: IChannelState[];
|
|
30
|
+
protected selected: IChannelState | null;
|
|
31
|
+
protected invert: boolean;
|
|
32
|
+
protected logScale: boolean;
|
|
28
33
|
/** Bounded retries while the (async) histogram sampling resolves. */
|
|
29
34
|
private histRetries;
|
|
35
|
+
private histRetryTimer?;
|
|
30
36
|
/** The selected channel's current histogram. Native bit depth (with
|
|
31
37
|
* observed/range fields) for >8-bit images, else the 8-bit client histogram.
|
|
32
38
|
* Drives the plot, the native window labels, and the export-button gate. */
|
|
33
|
-
hist: IHistogram | null;
|
|
39
|
+
protected get hist(): IHistogram | null;
|
|
40
|
+
protected set hist(h: IHistogram | null);
|
|
41
|
+
private _hist;
|
|
42
|
+
/** {@link nativeRange} of {@link hist}, kept with it so the template's window
|
|
43
|
+
* getters read it instead of re-deriving (and allocating) it per check. */
|
|
44
|
+
private range;
|
|
34
45
|
private histSub?;
|
|
35
46
|
/** Which window control is being adjusted right now — drives a small
|
|
36
47
|
* non-blocking activity spinner next to that slider, since the image recolor
|
|
37
48
|
* isn't instant on large stacks. Cleared a short moment after movement stops
|
|
38
49
|
* (the recolor isn't directly observable, so this is a trailing heuristic). */
|
|
39
|
-
activeAdjust: 'min' | 'max' | 'gamma' | null;
|
|
50
|
+
protected activeAdjust: 'min' | 'max' | 'gamma' | null;
|
|
40
51
|
private adjustTimer?;
|
|
41
|
-
colormapOptions: any;
|
|
42
|
-
selectedColormap: any;
|
|
43
|
-
private
|
|
52
|
+
protected colormapOptions: any;
|
|
53
|
+
protected selectedColormap: any;
|
|
54
|
+
private readonly destroyRef;
|
|
55
|
+
private readonly cdr;
|
|
56
|
+
private readonly zone;
|
|
57
|
+
/** Re-render this OnPush view, re-entering the zone when the change came from outside it. */
|
|
58
|
+
private changed;
|
|
44
59
|
/** Keeps the Plotly histogram sized to the (resizable) dialog body. */
|
|
45
60
|
private resizeObserver?;
|
|
46
61
|
constructor(api: IChannelHistogramApi);
|
|
47
62
|
/** Per-channel pseudo-colour only applies when there's more than one channel
|
|
48
63
|
* (RGB / fluorescence). A single grayscale channel uses the colormap instead. */
|
|
49
|
-
get multichannel(): boolean;
|
|
64
|
+
protected get multichannel(): boolean;
|
|
50
65
|
ngOnInit(): void;
|
|
66
|
+
/** Stops the pending histogram load / retry and activity timer, the resize
|
|
67
|
+
* observer and the Plotly plot; the API streams end through `takeUntilDestroyed`. */
|
|
51
68
|
ngOnDestroy(): void;
|
|
52
|
-
onVisibleChange(v: boolean): void;
|
|
69
|
+
protected onVisibleChange(v: boolean): void;
|
|
53
70
|
/** p-dialog (onShow): the plot div now exists, so draw the histogram and keep
|
|
54
71
|
* it sized to the dialog (which is resizable) via a ResizeObserver. */
|
|
55
|
-
onShow(): void;
|
|
72
|
+
protected onShow(): void;
|
|
56
73
|
private teardownResize;
|
|
57
|
-
selectChannel(ch: IChannelState): void;
|
|
58
|
-
onMinChange(value:
|
|
59
|
-
onMaxChange(value:
|
|
60
|
-
onGammaChange(value:
|
|
74
|
+
protected selectChannel(ch: IChannelState): void;
|
|
75
|
+
protected onMinChange(value: number | string | null | undefined): void;
|
|
76
|
+
protected onMaxChange(value: number | string | null | undefined): void;
|
|
77
|
+
protected onGammaChange(value: number | string | null | undefined): void;
|
|
61
78
|
/** Flag a control as actively adjusting so its spinner shows; auto-clears a
|
|
62
79
|
* short moment after the last change (kept alive while the user keeps
|
|
63
80
|
* dragging, since each change resets the timer). */
|
|
64
81
|
private markBusy;
|
|
65
|
-
onVisibleToggle(ch: IChannelState, value: boolean): void;
|
|
66
|
-
onColorChange(ch: IChannelState, color: string): void;
|
|
67
|
-
onColormap(node: TreeNode): void;
|
|
68
|
-
onInvert(value: boolean): void;
|
|
69
|
-
toggleLog(value: boolean): void;
|
|
82
|
+
protected onVisibleToggle(ch: IChannelState, value: boolean): void;
|
|
83
|
+
protected onColorChange(ch: IChannelState, color: string): void;
|
|
84
|
+
protected onColormap(node: TreeNode): void;
|
|
85
|
+
protected onInvert(value: boolean): void;
|
|
86
|
+
protected toggleLog(value: boolean): void;
|
|
70
87
|
/** Quick-assign a preset LUT colour to a channel (Fiji palette). */
|
|
71
|
-
setPreset(ch: IChannelState, color: string): void;
|
|
88
|
+
protected setPreset(ch: IChannelState, color: string): void;
|
|
72
89
|
/** Export the displayed composite as a publication-ready PNG (8-bit figure). */
|
|
73
|
-
exportComposite(): void;
|
|
90
|
+
protected exportComposite(): void;
|
|
74
91
|
/** Export the underlying data as a true-16-bit multi-band TIFF (server-side). */
|
|
75
|
-
exportData(): void;
|
|
92
|
+
protected exportData(): void;
|
|
76
93
|
/** True when the current channel histogram is native >8-bit (16-bit etc.):
|
|
77
94
|
* gates the native slider labelling and the 16-bit TIFF export button. */
|
|
78
|
-
get is16bit(): boolean;
|
|
79
|
-
/**
|
|
80
|
-
* pixel extremes for a native histogram, else plain 0..255 (so 8-bit images
|
|
81
|
-
* pass through unchanged). The 8-bit tile is server-stretched across this
|
|
82
|
-
* range, so it's the best client-side native↔display mapping. */
|
|
95
|
+
protected get is16bit(): boolean;
|
|
96
|
+
/** {@link nativeRange} of the current histogram. */
|
|
83
97
|
private obsRange;
|
|
84
98
|
/** 8-bit display value (0..255) → native units. */
|
|
85
99
|
private toNative;
|
|
86
100
|
/** Native units → clamped 8-bit display value (0..255). */
|
|
87
101
|
private toDisp;
|
|
88
102
|
/** Selected channel window endpoints in native units (for the sliders). */
|
|
89
|
-
get minNative(): number;
|
|
90
|
-
get maxNative(): number;
|
|
103
|
+
protected get minNative(): number;
|
|
104
|
+
protected get maxNative(): number;
|
|
91
105
|
/** Native slider bounds + step (256 display steps across the native range). */
|
|
92
|
-
get sliderMin(): number;
|
|
93
|
-
get sliderMax(): number;
|
|
94
|
-
get sliderStep(): number;
|
|
95
|
-
auto(): void;
|
|
96
|
-
reset(): void;
|
|
97
|
-
/** Saturation-based auto-window over a (native or 8-bit) histogram: pick
|
|
98
|
-
* [min,max] so ~`saturation` of pixels clip at each end, dropping a dominant
|
|
99
|
-
* first/last bin (background/padding). Returns native bin values. */
|
|
100
|
-
private autoWindow;
|
|
106
|
+
protected get sliderMin(): number;
|
|
107
|
+
protected get sliderMax(): number;
|
|
108
|
+
protected get sliderStep(): number;
|
|
109
|
+
protected auto(): void;
|
|
110
|
+
protected reset(): void;
|
|
101
111
|
/** Fetch the selected channel's histogram (native for 16-bit, else 8-bit) and
|
|
102
112
|
* (re)draw it. Async — the native path hits the server; the 8-bit path may be
|
|
103
113
|
* null until tile sampling resolves, so we retry a few times. */
|
|
@@ -108,5 +118,5 @@ export declare class ChannelHistogramComponent implements OnInit, OnDestroy {
|
|
|
108
118
|
private markerShapes;
|
|
109
119
|
private histogramLayout;
|
|
110
120
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChannelHistogramComponent, never>;
|
|
111
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ChannelHistogramComponent, "channel-histogram", never, { "visible": { "alias": "visible"; "required": false; }; }, { "visibleChange": "visibleChange"; }, never, never,
|
|
121
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ChannelHistogramComponent, "channel-histogram", never, { "visible": { "alias": "visible"; "required": false; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
|
|
112
122
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Optional features a viewer backend may or may not support. Consumers query
|
|
3
|
-
* `
|
|
3
|
+
* `IVisualizer.capabilities` and degrade gracefully (hide a toolbar item,
|
|
4
4
|
* skip a render path) rather than calling a method that no-ops.
|
|
5
5
|
*
|
|
6
6
|
* The Plotly backend supports the scientific/data features; the OpenSeadragon
|
|
7
7
|
* backend supports `ImageDisplay` (large zoomable image) but not the
|
|
8
|
-
* scalar-data features.
|
|
8
|
+
* scalar-data features. `RoutingVisualizerService` picks a backend per plot type
|
|
9
|
+
* and reports Plotly's capabilities, so the UI keeps offering every type.
|
|
9
10
|
*/
|
|
10
11
|
export declare enum ViewerFeature {
|
|
11
12
|
/** Display a raster/tiled image (HEATMAP/RGB image, OSD's strength). */
|
|
@@ -23,6 +24,7 @@ export declare enum ViewerFeature {
|
|
|
23
24
|
/** Live isosurface intensity bounds (isomin/isomax) — see IIsosurfaceControls. */
|
|
24
25
|
Isosurface = "isosurface"
|
|
25
26
|
}
|
|
27
|
+
/** The feature set a backend advertises (see {@link ViewerFeature}). */
|
|
26
28
|
export interface ViewerCapabilities {
|
|
27
29
|
has(feature: ViewerFeature): boolean;
|
|
28
30
|
}
|
|
@@ -24,6 +24,7 @@ export interface CellSegmentProgress {
|
|
|
24
24
|
/** Human-readable phase, e.g. 'Running inference (tile 3/8)…'. */
|
|
25
25
|
onStatus?: (status: string) => void;
|
|
26
26
|
}
|
|
27
|
+
/** A segmenter that labels every cell of an image (one exclusive label per pixel). */
|
|
27
28
|
export interface ICellSegmenter {
|
|
28
29
|
/** Segment all cells in an RGBA image into an instance label map. */
|
|
29
30
|
segmentCells(image: {
|
|
@@ -97,4 +97,8 @@ export interface IChannelHistogramApi {
|
|
|
97
97
|
* meaningful for >8-bit images; a no-op on backends that can't provide it. */
|
|
98
98
|
exportData(): void;
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* DI token for the Channels & Histogram pane's API. The library binds it to its router
|
|
102
|
+
* (VisualizationModule / provideVisualization); hosts inject it, they do not provide it.
|
|
103
|
+
*/
|
|
100
104
|
export declare const CHANNEL_HISTOGRAM_API: InjectionToken<IChannelHistogramApi>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one CSS colour parser (review NAPARI-BOUNDARY-29, CORE-25, RT-28).
|
|
3
|
+
*
|
|
4
|
+
* Seven call sites used to parse colours by hand, each accepting a different
|
|
5
|
+
* subset (`#rgb` here, `#rrggbb` only there, `rgb()` in one place) and each
|
|
6
|
+
* falling back to a different colour on bad input. They now all call
|
|
7
|
+
* {@link parseCssColor}, which returns null for anything it does not
|
|
8
|
+
* understand, and keep their own fallback at the call site
|
|
9
|
+
* (`parseCssColor(s) ?? MISSING_COLOR`).
|
|
10
|
+
*
|
|
11
|
+
* Pure: no DOM, no Angular. Channels are 0–255 integers.
|
|
12
|
+
*/
|
|
13
|
+
/** An RGB colour, each channel 0–255. */
|
|
14
|
+
export type Rgb = [number, number, number];
|
|
15
|
+
/**
|
|
16
|
+
* Parse a CSS colour to RGB, or null when it is not one this parser accepts.
|
|
17
|
+
*
|
|
18
|
+
* Accepts `#rgb`, `#rrggbb` and `#rrggbbaa` (the `#` may be omitted, and the
|
|
19
|
+
* alpha is ignored), and `rgb(r, g, b)` / `rgba(r, g, b, a)` with comma- or
|
|
20
|
+
* space-separated channels (rounded and clamped to 0–255). Named colours
|
|
21
|
+
* (`red`) are not accepted.
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseCssColor(s: string | null | undefined): Rgb | null;
|
|
24
|
+
/** `#rrggbb` (lower-case) for an RGB colour; channels are rounded and clamped to 0–255. */
|
|
25
|
+
export declare function rgbToHex(rgb: Readonly<Rgb>): string;
|
|
26
|
+
/** {@link parseCssColor} for hex input: `#rgb` / `#rrggbb` / `#rrggbbaa` (with or without `#`), or null. */
|
|
27
|
+
export declare function hexToRgb(hex: string | null | undefined): Rgb | null;
|
|
@@ -7,15 +7,30 @@
|
|
|
7
7
|
* to Plotly's `colorscale` — so the two surfaces stay in lock-step.
|
|
8
8
|
*
|
|
9
9
|
* A colormap value is either:
|
|
10
|
-
* - an array of `[stop, color]` pairs (the matplotlib
|
|
11
|
-
* - a Plotly built-in scale *name* string (e.g. 'Viridis', 'Reds')
|
|
10
|
+
* - an array of `[stop, color]` pairs (the matplotlib tables, see {@link lutScale}), or
|
|
11
|
+
* - a Plotly built-in scale *name* string (e.g. 'Viridis', 'Reds'), or
|
|
12
|
+
* - a 256-entry RGB table itself (a `napari-js/colormaps` `*_LUT`), used as is.
|
|
12
13
|
* `color` may be `'rgb(r, g, b)'` or `'#rrggbb'`/`'#rgb'`.
|
|
13
14
|
*/
|
|
14
|
-
|
|
15
|
+
import { Rgb } from './color';
|
|
16
|
+
export type { Rgb };
|
|
17
|
+
type Stop = [number, string];
|
|
18
|
+
/**
|
|
19
|
+
* A 256-entry RGB table (a `napari-js/colormaps` `*_LUT`, `Uint8Array(768)`) as an inline
|
|
20
|
+
* Plotly colorscale: one `[i / 255, 'rgb(r, g, b)']` stop per entry, the shape the colormap
|
|
21
|
+
* tree hands to Plotly's `colorscale` and to {@link buildColormapLut}. Stops are rounded to
|
|
22
|
+
* six decimals, as the colormap asset this replaces carried them.
|
|
23
|
+
*/
|
|
24
|
+
export declare function lutScale(lut: ArrayLike<number>): Stop[];
|
|
15
25
|
/**
|
|
16
26
|
* Build a 256-entry RGB lookup table from a `COLORMAP_OPTIONS` value, indexed by
|
|
17
27
|
* grayscale value 0–255. Returns null if the value can't be resolved to a scale.
|
|
18
|
-
*
|
|
28
|
+
*
|
|
29
|
+
* The Plotly side (the value's forms, the colour strings, the built-in names) is
|
|
30
|
+
* parsed here; the interpolation is napari-js's own `Colormap` sampled by `buildLut`,
|
|
31
|
+
* so both backends ramp a scale the same way.
|
|
32
|
+
* @param value array of `[stop, color]` pairs, a Plotly built-in name string, or a
|
|
33
|
+
* 256-entry RGB `Uint8Array(768)`
|
|
19
34
|
* @param reverse mirror the scale (matches Plotly's `reversescale`)
|
|
20
35
|
*/
|
|
21
36
|
export declare function buildColormapLut(value: unknown, reverse?: boolean): Rgb[] | null;
|
|
@@ -7,9 +7,9 @@ import { Region } from '../models/region';
|
|
|
7
7
|
*
|
|
8
8
|
* "Data coordinates" are the backend's shape coordinate space: Plotly data
|
|
9
9
|
* coords for Plotly, image-pixel coords for OpenSeadragon. The tools convert
|
|
10
|
-
* data -> image-matrix using the per-
|
|
11
|
-
* (`getCachedImageData().ratios
|
|
12
|
-
*
|
|
10
|
+
* data -> image-matrix using the per-axis ratios they already get from the host
|
|
11
|
+
* (`getCachedImageData().ratios`, see `MatrixFrame`), so that division stays in
|
|
12
|
+
* the tool and the transform stays purely screen<->data.
|
|
13
13
|
*/
|
|
14
14
|
export interface ICoordinateTransform {
|
|
15
15
|
/** Client (mouse event) pixel -> data coordinates. */
|
|
@@ -49,6 +49,23 @@ export interface IBrushOptions {
|
|
|
49
49
|
/** Colour for the painted regions instead of the shape colour. Kept against preset re-apply. */
|
|
50
50
|
color?: string;
|
|
51
51
|
}
|
|
52
|
+
/** Options for the vertex eraser. */
|
|
53
|
+
export interface IVertexEraserOptions {
|
|
54
|
+
/** Eraser radius in matrix (image) pixels. */
|
|
55
|
+
radius?: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The on-canvas tools `IToolController.setActiveTool` arms: magic wand, brush,
|
|
59
|
+
* vertex eraser, box zoom and SAM point prompts. Any other id (a region draw
|
|
60
|
+
* mode such as `'drawrect'`, `'pan'`) arms none of them.
|
|
61
|
+
*/
|
|
62
|
+
export type CanvasToolId = 'wand' | 'brush' | 'eraseVertex' | 'zoomToBox' | 'samPoint';
|
|
63
|
+
/** Every {@link CanvasToolId}. */
|
|
64
|
+
export declare const CANVAS_TOOL_IDS: readonly CanvasToolId[];
|
|
65
|
+
/** Whether `id` names an on-canvas tool. */
|
|
66
|
+
export declare function isCanvasToolId(id: string | null | undefined): id is CanvasToolId;
|
|
67
|
+
/** Options for {@link CanvasToolId} tools: the wand's, the brush's or the eraser's. */
|
|
68
|
+
export type CanvasToolOptions = IWandOptions | IBrushOptions | IVertexEraserOptions;
|
|
52
69
|
/** What drives point colour in the spatial-omics mode: an annotation column
|
|
53
70
|
* from the dataset, or one feature (gene) vector fetched on demand. */
|
|
54
71
|
export interface SpatialColorBy {
|
|
@@ -274,4 +291,8 @@ export interface SpatialViewState {
|
|
|
274
291
|
}
|
|
275
292
|
/** Transcript glyph names — see `TRANSCRIPT_GLYPHS` in `spatial/spatial-tiles.ts`. */
|
|
276
293
|
export type TranscriptGlyphName = 'circle' | 'star' | 'triangle' | 'square' | 'diamond' | 'cross' | 'hexagon' | 'triangle-down' | 'pentagon' | 'x';
|
|
294
|
+
/**
|
|
295
|
+
* The spatial view a dataset opens with: no colour source, points and volume shown, the
|
|
296
|
+
* optional layers off. A complete state to spread partial view-state patches over.
|
|
297
|
+
*/
|
|
277
298
|
export declare const DEFAULT_SPATIAL_VIEW: SpatialViewState;
|
|
@@ -34,6 +34,10 @@ export interface InstanceDetection {
|
|
|
34
34
|
classId: number;
|
|
35
35
|
className: string;
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* The result of one {@link IInstanceSegmenter} run: every detection, in the pixel frame of
|
|
39
|
+
* the `width × height` image that was segmented.
|
|
40
|
+
*/
|
|
37
41
|
export interface InstanceSegmentation {
|
|
38
42
|
detections: InstanceDetection[];
|
|
39
43
|
width: number;
|
|
@@ -119,6 +123,7 @@ export interface InstanceSegmentProgress {
|
|
|
119
123
|
/** Human-readable phase, e.g. 'Running inference (tile 3/8)…'. */
|
|
120
124
|
onStatus?: (status: string) => void;
|
|
121
125
|
}
|
|
126
|
+
/** A segmenter that returns discrete, classified, possibly overlapping instances. */
|
|
122
127
|
export interface IInstanceSegmenter {
|
|
123
128
|
/** Detect and outline all instances in an RGBA image. */
|
|
124
129
|
segmentInstances(image: {
|
|
@@ -8,11 +8,22 @@ import { IHistogram } from './channel-histogram-api.contract';
|
|
|
8
8
|
* tiles encode gray as r=g=b, so max is exact; it also tolerates tinted
|
|
9
9
|
* pixels).
|
|
10
10
|
*/
|
|
11
|
-
/** ITU-R BT.601 luminance for an RGB pixel (Plotly's scalar projection)
|
|
12
|
-
|
|
11
|
+
/** ITU-R BT.601 luminance for an RGB pixel (Plotly's scalar projection): napari-js's
|
|
12
|
+
* `luminance8`, under the name SIV's callers use, so there is one copy of the weights. */
|
|
13
|
+
export { luminance8 as bt601Luminance } from 'napari-js';
|
|
13
14
|
/** Max of the three channels (the OSD tile path's scalar projection).
|
|
14
15
|
* NOTE: the per-pixel recolor loop in `osd/display-pipeline.ts` keeps this
|
|
15
16
|
* inlined on purpose — it runs ~262k times per tile. */
|
|
16
17
|
export declare function maxRgb(r: number, g: number, b: number): number;
|
|
17
18
|
/** Wrap 256 raw bin counts as an IHistogram (0..255 left edges + max). */
|
|
18
19
|
export declare function histogram256(counts: number[]): IHistogram;
|
|
20
|
+
/**
|
|
21
|
+
* Saturation-based auto-window: pick `[min, max]` so about `saturation` (0..0.5) of the
|
|
22
|
+
* pixels clip at each end of the histogram. A dominant first or last bin (unscanned
|
|
23
|
+
* padding, clipped background) is dropped first so it does not skew the range.
|
|
24
|
+
*
|
|
25
|
+
* Returns values from `h.bins` (native units for a native histogram), or `fallback` when
|
|
26
|
+
* the histogram is empty or holds no counts — each caller keeps its own: the 8-bit store
|
|
27
|
+
* falls back to the full byte range, the channel histogram to its slider bounds.
|
|
28
|
+
*/
|
|
29
|
+
export declare function autoWindowFromHistogram(h: IHistogram, saturation: number, fallback: readonly [number, number]): [number, number];
|
|
@@ -79,7 +79,7 @@ export interface PlotTypeDescriptor {
|
|
|
79
79
|
* mode owns each name — so it drops the backend suffix (e.g. just "Surface").
|
|
80
80
|
* A type WITHOUT a `productionLabel` is **test-only**: hidden from the default
|
|
81
81
|
* selector and shown only when the host enables test mode. This is the single
|
|
82
|
-
* knob that curates the default plot-mode list
|
|
82
|
+
* knob that curates the default plot-mode list.
|
|
83
83
|
*/
|
|
84
84
|
productionLabel?: string;
|
|
85
85
|
/**
|
|
@@ -116,7 +116,9 @@ export interface PlotTypeDescriptor {
|
|
|
116
116
|
* for future use). Hence the `Partial` record.
|
|
117
117
|
*/
|
|
118
118
|
export declare const PLOT_TYPE_DESCRIPTORS: Partial<Record<PlotType, PlotTypeDescriptor>>;
|
|
119
|
+
/** The built-in descriptor (label, icon, dimensions, data source) of a plot type, if any. */
|
|
119
120
|
export declare function getPlotTypeDescriptor(type: PlotType): PlotTypeDescriptor | undefined;
|
|
121
|
+
/** Whether a built-in plot type renders in 3D (its descriptor says `dimensions: '3d'`). */
|
|
120
122
|
export declare function isThreeDimensional(type: PlotType): boolean;
|
|
121
123
|
/** napari-js volume. */
|
|
122
124
|
export declare function isNapariVolume(type: PlotType): boolean;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { IImageInfo } from '../image.contract';
|
|
4
|
+
import type { VisualizerHandle } from '../visualizer.contract';
|
|
4
5
|
/**
|
|
5
6
|
* Host image/loading/zoom state, inverted as a port so the visualization library
|
|
6
7
|
* doesn't import the app's `MainState`/`MainFacade`. The host supplies an adapter
|
|
@@ -23,7 +24,10 @@ export interface ImageStatePort {
|
|
|
23
24
|
setZoom(zoom: boolean): void;
|
|
24
25
|
setImageCached(cached: boolean): void;
|
|
25
26
|
setLoadingError(error: boolean): void;
|
|
26
|
-
/** Register the
|
|
27
|
-
setDiagram(diagram:
|
|
27
|
+
/** Register the mounted visualizer with the host, or `null` once it is destroyed. */
|
|
28
|
+
setDiagram(diagram: VisualizerHandle | null): void;
|
|
28
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* DI token for the host's {@link ImageStatePort}. Required: the visualizer component injects it.
|
|
32
|
+
*/
|
|
29
33
|
export declare const IMAGE_STATE_PORT: InjectionToken<ImageStatePort>;
|
|
@@ -16,4 +16,8 @@ export interface PreferencesPort {
|
|
|
16
16
|
/** Persist (upsert) the current user's preset set. */
|
|
17
17
|
savePresetSet(set: PresetSet): Observable<void>;
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* DI token for the host's {@link PreferencesPort}. Optional: without it, the annotation-class
|
|
21
|
+
* preset set is not persisted.
|
|
22
|
+
*/
|
|
19
23
|
export declare const PREFERENCES_PORT: InjectionToken<PreferencesPort>;
|
|
@@ -145,15 +145,9 @@ export interface SpatialDataPort {
|
|
|
145
145
|
* mode should never pay for it.
|
|
146
146
|
*/
|
|
147
147
|
getVolume?(): Promise<Uint8Array>;
|
|
148
|
-
/**
|
|
149
|
-
* Server-side "which observations fall inside this polygon", for datasets
|
|
150
|
-
* too large to hit-test client-side. Optional: without it the library
|
|
151
|
-
* point-in-polygons the resident coordinates itself, which is fine into the
|
|
152
|
-
* 10^5 range. Coordinates are in the same space as the observations.
|
|
153
|
-
*/
|
|
154
|
-
queryRoi?(polygon: {
|
|
155
|
-
x: number[];
|
|
156
|
-
y: number[];
|
|
157
|
-
}): Promise<Uint32Array>;
|
|
158
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* DI token for the host's {@link SpatialDataPort}. Optional: a host that serves no
|
|
151
|
+
* spatial-omics data binds nothing, and the spatial plot types stay hidden.
|
|
152
|
+
*/
|
|
159
153
|
export declare const SPATIAL_DATA_PORT: InjectionToken<SpatialDataPort>;
|
|
@@ -24,4 +24,5 @@ export interface TileAccessPort {
|
|
|
24
24
|
* host supplies them). Hides the app's Auth0 dependency from the library. */
|
|
25
25
|
getAuthHeaders(): Promise<Record<string, string>>;
|
|
26
26
|
}
|
|
27
|
+
/** DI token for the host's {@link TileAccessPort}. Required by the OpenSeadragon backend. */
|
|
27
28
|
export declare const TILE_ACCESS_PORT: InjectionToken<TileAccessPort>;
|
|
@@ -30,7 +30,7 @@ export interface IRegionEditorApi {
|
|
|
30
30
|
* preserved (the editor must not be able to drop them). */
|
|
31
31
|
setAnnotationRegions(regions: Region[], showRegionLabel?: boolean, isRegionSaveOn?: boolean, fillColor?: string): void;
|
|
32
32
|
/** Change signal — fires whenever regions change on any backend. */
|
|
33
|
-
getRegionUpdateEvent(): Observable<
|
|
33
|
+
getRegionUpdateEvent(): Observable<Region[]>;
|
|
34
34
|
/** The currently-selected annotation regions (profile lines never appear). */
|
|
35
35
|
getSelectedRegions$(): Observable<Region[]>;
|
|
36
36
|
/** Set the selection to these regions. */
|
|
@@ -31,6 +31,11 @@
|
|
|
31
31
|
* - `move` — drag the selected region body to translate it.
|
|
32
32
|
*/
|
|
33
33
|
export type RegionToolMode = 'none' | 'select' | 'drawrect' | 'drawclosedpath' | 'drawopenpath' | 'drawpolygon' | 'addpoint' | 'deletepoint' | 'move';
|
|
34
|
+
/**
|
|
35
|
+
* A backend's on-canvas region layer: draws the shared `RegionStore`'s regions
|
|
36
|
+
* over the image and runs the draw / select / vertex-edit interactions. Obtained
|
|
37
|
+
* from `IVisualizer.getRegionOverlay()`.
|
|
38
|
+
*/
|
|
34
39
|
export interface IRegionOverlay {
|
|
35
40
|
/** Set the active draw/select interaction (or 'none' to just display). */
|
|
36
41
|
setMode(mode: RegionToolMode): void;
|
|
@@ -18,6 +18,13 @@ export interface SamModelDef {
|
|
|
18
18
|
encoderUrl: string;
|
|
19
19
|
/** Decoder ONNX URL (embedding + prompts → mask). Empty until hosted. */
|
|
20
20
|
decoderUrl: string;
|
|
21
|
+
/**
|
|
22
|
+
* Revision of the hosted ONNX files. Downloaded models are cached by URL AND revision,
|
|
23
|
+
* and hosted URLs are typically mutable (`.../resolve/main/...`), so bump this when the
|
|
24
|
+
* files are re-exported under the same URLs: browsers then fetch the new files once and
|
|
25
|
+
* drop their older copies. Absent means the URL alone is the cache key.
|
|
26
|
+
*/
|
|
27
|
+
revision?: string;
|
|
21
28
|
/** Decoder I/O family — SAM v1 vs v2/v3 differ in mask output size + names. */
|
|
22
29
|
variant: 'sam1' | 'sam2' | 'sam3';
|
|
23
30
|
/** Encoder input side length (1024 for SAM v1). */
|
|
@@ -25,6 +25,10 @@ export interface SemanticRegion {
|
|
|
25
25
|
/** Area in pixels, holes already subtracted. */
|
|
26
26
|
area: number;
|
|
27
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* The result of one {@link ISemanticSegmenter} run: the class layers found, in the pixel
|
|
30
|
+
* frame of the `width × height` image that was segmented.
|
|
31
|
+
*/
|
|
28
32
|
export interface SemanticSegmentation {
|
|
29
33
|
regions: SemanticRegion[];
|
|
30
34
|
/** Total pixels assigned to each class, indexed by class id. */
|
|
@@ -43,6 +47,7 @@ export interface SemanticSegmentation {
|
|
|
43
47
|
*/
|
|
44
48
|
unassignedFraction: number;
|
|
45
49
|
}
|
|
50
|
+
/** Options for one {@link ISemanticSegmenter} run. */
|
|
46
51
|
export interface SemanticSegmentOptions {
|
|
47
52
|
/** Which registered model to run. Defaults to the registry's default. */
|
|
48
53
|
modelId?: string;
|
|
@@ -90,6 +95,7 @@ export interface SemanticSegmentProgress {
|
|
|
90
95
|
/** Human-readable phase, e.g. 'Segmenting patch 3/8…'. */
|
|
91
96
|
onStatus?: (status: string) => void;
|
|
92
97
|
}
|
|
98
|
+
/** A segmenter that assigns every pixel a class and returns the class regions. */
|
|
93
99
|
export interface ISemanticSegmenter {
|
|
94
100
|
/** Assign every pixel a class and return the resulting regions. */
|
|
95
101
|
segmentSemantic(image: {
|
|
@@ -99,6 +99,7 @@ export interface ContinuousColumnMeta extends SpatialColumnMetaBase {
|
|
|
99
99
|
min?: number;
|
|
100
100
|
max?: number;
|
|
101
101
|
}
|
|
102
|
+
/** Descriptor of one per-observation column, discriminated by `kind`. */
|
|
102
103
|
export type SpatialColumnMeta = CategoricalColumnMeta | ContinuousColumnMeta;
|
|
103
104
|
/**
|
|
104
105
|
* Code meaning "this observation has no category" (unassigned / filtered out /
|
|
@@ -120,8 +121,11 @@ export interface ContinuousColumn {
|
|
|
120
121
|
/** Length = {@link SpatialObservations.count}. */
|
|
121
122
|
values: Float32Array;
|
|
122
123
|
}
|
|
124
|
+
/** A loaded column with its values, discriminated by `meta.kind`. */
|
|
123
125
|
export type SpatialColumn = CategoricalColumn | ContinuousColumn;
|
|
126
|
+
/** Narrow a loaded column to a categorical one. */
|
|
124
127
|
export declare function isCategoricalColumn(c: SpatialColumn): c is CategoricalColumn;
|
|
128
|
+
/** Narrow a loaded column to a continuous one. */
|
|
125
129
|
export declare function isContinuousColumn(c: SpatialColumn): c is ContinuousColumn;
|
|
126
130
|
/**
|
|
127
131
|
* The feature (gene) matrix, described but never delivered whole. Vectors come
|
|
@@ -182,11 +186,6 @@ export interface SpatialImageRef {
|
|
|
182
186
|
mppX?: number;
|
|
183
187
|
mppY?: number;
|
|
184
188
|
}
|
|
185
|
-
/**
|
|
186
|
-
* A spatial-omics dataset: everything cheap enough to hold resident. Column and
|
|
187
|
-
* feature *values*, and polygon *geometry*, are fetched through
|
|
188
|
-
* {@link SpatialDataPort} as they are displayed.
|
|
189
|
-
*/
|
|
190
189
|
/**
|
|
191
190
|
* A precomputed low-dimensional embedding over the SAME observations — UMAP, t-SNE, PCA.
|
|
192
191
|
*
|
|
@@ -370,7 +369,6 @@ export interface SpatialTranscriptTile {
|
|
|
370
369
|
/** Index into the `genes` list the tile was requested with. */
|
|
371
370
|
gene: Uint16Array;
|
|
372
371
|
}
|
|
373
|
-
/** Transcript totals for an estimate of how many markers a selection would draw. */
|
|
374
372
|
/** The per-gene levels: each level's bin and tile size, on the all-gene pyramid's grid. */
|
|
375
373
|
export interface SpatialTranscriptGeneBinsMeta {
|
|
376
374
|
origin: [number, number];
|
|
@@ -399,6 +397,7 @@ export interface SpatialMarkerGenes {
|
|
|
399
397
|
}[];
|
|
400
398
|
}[];
|
|
401
399
|
}
|
|
400
|
+
/** Transcript totals for an estimate of how many markers a selection would draw. */
|
|
402
401
|
export interface SpatialTranscriptCounts {
|
|
403
402
|
/** Total transcripts per requested gene, over the whole dataset. */
|
|
404
403
|
counts: Record<string, number>;
|
|
@@ -413,6 +412,11 @@ export interface SpatialDensityRaster {
|
|
|
413
412
|
genes: string[];
|
|
414
413
|
values: Float32Array;
|
|
415
414
|
}
|
|
415
|
+
/**
|
|
416
|
+
* A spatial-omics dataset: everything cheap enough to hold resident. Column and
|
|
417
|
+
* feature *values*, and polygon *geometry*, are fetched through
|
|
418
|
+
* {@link SpatialDataPort} as they are displayed.
|
|
419
|
+
*/
|
|
416
420
|
export interface SpatialDataset {
|
|
417
421
|
/** Stable id — the key the port's lazy accessors are scoped to. */
|
|
418
422
|
id: string;
|
|
@@ -473,6 +477,15 @@ export interface SpatialVolumeMeta {
|
|
|
473
477
|
/** World size of one voxel per axis, in the observations' units. */
|
|
474
478
|
voxelSize: [number, number, number];
|
|
475
479
|
}
|
|
480
|
+
/**
|
|
481
|
+
* A selection over a dataset's N observations: `mask[i] === 1` when observation `i` is
|
|
482
|
+
* selected, and `count` the number selected. Pure data, so it lives with the dataset
|
|
483
|
+
* contract; the selection logic that builds one is in `spatial/spatial-selection.ts`.
|
|
484
|
+
*/
|
|
485
|
+
export interface SpatialSelectionMask {
|
|
486
|
+
mask: Uint8Array;
|
|
487
|
+
count: number;
|
|
488
|
+
}
|
|
476
489
|
/** Look a column's descriptor up by name. */
|
|
477
490
|
export declare function findColumnMeta(dataset: SpatialDataset, name: string): SpatialColumnMeta | undefined;
|
|
478
491
|
export {};
|