@jax-data-science/sci-image-visualizer 0.8.2 → 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 +361 -4184
- 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 -34430
- 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 -878
- 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,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plotly layout builders for every plot type the Plotly backend renders. Pure:
|
|
3
|
+
* the live service state they need (screen height, aspect lock, drag mode, the
|
|
4
|
+
* current region shapes and colours) comes in through {@link ImageLayoutContext}.
|
|
5
|
+
*/
|
|
6
|
+
/** Plotly shape dicts, as `layout.shapes` takes them. */
|
|
7
|
+
export type PlotlyShapeDict = Record<string, unknown>;
|
|
8
|
+
/** The service state an image-aligned layout depends on. */
|
|
9
|
+
export interface ImageLayoutContext {
|
|
10
|
+
screenHeight: number;
|
|
11
|
+
/** Lock the y axis to x (square image pixels). */
|
|
12
|
+
scaleratio: boolean;
|
|
13
|
+
/** The active Plotly drag mode, or '' for none. */
|
|
14
|
+
dragMode: string;
|
|
15
|
+
/** The region shapes to draw over the image. */
|
|
16
|
+
shapes: PlotlyShapeDict[];
|
|
17
|
+
/** The active (selected) shape's fill colour. */
|
|
18
|
+
fillColor: string;
|
|
19
|
+
/** The outline colour of a newly drawn shape. */
|
|
20
|
+
shapeColor: string;
|
|
21
|
+
}
|
|
22
|
+
/** One slider step per z-plane, each showing only its own trace. */
|
|
23
|
+
export declare function sliderSteps(sliceCount: number): Array<{
|
|
24
|
+
label: number;
|
|
25
|
+
method: string;
|
|
26
|
+
args: unknown[];
|
|
27
|
+
}>;
|
|
28
|
+
/** The heatmap / RGB image layout: image axes, the z-plane slider, the region shapes. */
|
|
29
|
+
export declare function heatmapLayout(ctx: ImageLayoutContext, xRange: number[], yRange: number[], sliceCount: number): {
|
|
30
|
+
margin: {
|
|
31
|
+
t: number;
|
|
32
|
+
b: number;
|
|
33
|
+
l: number;
|
|
34
|
+
r: number;
|
|
35
|
+
};
|
|
36
|
+
height: number;
|
|
37
|
+
sliders: {
|
|
38
|
+
pad: {
|
|
39
|
+
t: number;
|
|
40
|
+
};
|
|
41
|
+
currentvalue: {
|
|
42
|
+
visible: boolean;
|
|
43
|
+
prefix: string;
|
|
44
|
+
xanchor: string;
|
|
45
|
+
};
|
|
46
|
+
steps: {
|
|
47
|
+
label: number;
|
|
48
|
+
method: string;
|
|
49
|
+
args: unknown[];
|
|
50
|
+
}[];
|
|
51
|
+
}[];
|
|
52
|
+
autosize: boolean;
|
|
53
|
+
shapes: PlotlyShapeDict[];
|
|
54
|
+
activeshape: {
|
|
55
|
+
fillcolor: string;
|
|
56
|
+
};
|
|
57
|
+
dragmode: string | boolean;
|
|
58
|
+
newshape: {
|
|
59
|
+
line: {
|
|
60
|
+
color: string;
|
|
61
|
+
width: number;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
xaxis: {
|
|
65
|
+
constrain: string;
|
|
66
|
+
constraintoward: string;
|
|
67
|
+
side: string;
|
|
68
|
+
ticks: string;
|
|
69
|
+
range: number[];
|
|
70
|
+
};
|
|
71
|
+
yaxis: {
|
|
72
|
+
constrain: string;
|
|
73
|
+
constraintoward: string;
|
|
74
|
+
range: number[];
|
|
75
|
+
ticks: string;
|
|
76
|
+
ticksuffix: string;
|
|
77
|
+
autorange: boolean;
|
|
78
|
+
scaleanchor: string | boolean;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
/** Image-aligned 2D axes without the z-plane slider (region scatter). */
|
|
82
|
+
export declare function overlayLayout(ctx: ImageLayoutContext, xRange: number[], yRange: number[]): {
|
|
83
|
+
margin: {
|
|
84
|
+
t: number;
|
|
85
|
+
b: number;
|
|
86
|
+
l: number;
|
|
87
|
+
r: number;
|
|
88
|
+
};
|
|
89
|
+
height: number;
|
|
90
|
+
autosize: boolean;
|
|
91
|
+
shapes: PlotlyShapeDict[];
|
|
92
|
+
dragmode: string | boolean;
|
|
93
|
+
xaxis: {
|
|
94
|
+
constrain: string;
|
|
95
|
+
constraintoward: string;
|
|
96
|
+
side: string;
|
|
97
|
+
ticks: string;
|
|
98
|
+
range: number[];
|
|
99
|
+
};
|
|
100
|
+
yaxis: {
|
|
101
|
+
constrain: string;
|
|
102
|
+
constraintoward: string;
|
|
103
|
+
range: number[];
|
|
104
|
+
ticks: string;
|
|
105
|
+
ticksuffix: string;
|
|
106
|
+
autorange: boolean;
|
|
107
|
+
scaleanchor: string | boolean;
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
/** Plain 2D chart axes (intensity profile / line plots). */
|
|
111
|
+
export declare function chartLayout(screenHeight: number): {
|
|
112
|
+
margin: {
|
|
113
|
+
t: number;
|
|
114
|
+
b: number;
|
|
115
|
+
l: number;
|
|
116
|
+
r: number;
|
|
117
|
+
};
|
|
118
|
+
height: number;
|
|
119
|
+
autosize: boolean;
|
|
120
|
+
xaxis: {
|
|
121
|
+
title: string;
|
|
122
|
+
};
|
|
123
|
+
yaxis: {
|
|
124
|
+
title: string;
|
|
125
|
+
};
|
|
126
|
+
dragmode: boolean;
|
|
127
|
+
};
|
|
128
|
+
/** 3D scene for volumetric plot types (scatter3d, isosurface). */
|
|
129
|
+
export declare function volumeLayout(screenHeight: number): {
|
|
130
|
+
margin: {
|
|
131
|
+
t: number;
|
|
132
|
+
b: number;
|
|
133
|
+
l: number;
|
|
134
|
+
r: number;
|
|
135
|
+
};
|
|
136
|
+
height: number;
|
|
137
|
+
autosize: boolean;
|
|
138
|
+
scene: {
|
|
139
|
+
xaxis: {
|
|
140
|
+
title: string;
|
|
141
|
+
};
|
|
142
|
+
yaxis: {
|
|
143
|
+
title: string;
|
|
144
|
+
};
|
|
145
|
+
zaxis: {
|
|
146
|
+
title: string;
|
|
147
|
+
};
|
|
148
|
+
aspectmode: string;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Scene layout for the surface plot: light-grey axis planes and a manual
|
|
153
|
+
* aspect ratio whose z extent is `zRatio` of the x/y extent.
|
|
154
|
+
*/
|
|
155
|
+
export declare function surfaceLayout(zRatio: number): {
|
|
156
|
+
margin: {
|
|
157
|
+
t: number;
|
|
158
|
+
b: number;
|
|
159
|
+
l: number;
|
|
160
|
+
r: number;
|
|
161
|
+
};
|
|
162
|
+
scene: {
|
|
163
|
+
xaxis: {
|
|
164
|
+
gridcolor: string;
|
|
165
|
+
zerolinecolor: string;
|
|
166
|
+
showbackground: boolean;
|
|
167
|
+
backgroundcolor: string;
|
|
168
|
+
};
|
|
169
|
+
yaxis: {
|
|
170
|
+
backgroundcolor: string;
|
|
171
|
+
gridcolor: string;
|
|
172
|
+
zerolinecolor: string;
|
|
173
|
+
showbackground: boolean;
|
|
174
|
+
};
|
|
175
|
+
zaxis: {
|
|
176
|
+
gridcolor: string;
|
|
177
|
+
zerolinecolor: string;
|
|
178
|
+
showbackground: boolean;
|
|
179
|
+
backgroundcolor: string;
|
|
180
|
+
};
|
|
181
|
+
aspectratio: {
|
|
182
|
+
x: number;
|
|
183
|
+
y: number;
|
|
184
|
+
z: number;
|
|
185
|
+
};
|
|
186
|
+
aspectmode: string;
|
|
187
|
+
};
|
|
188
|
+
};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { IHistogram } from '../../contracts/channel-histogram-api.contract';
|
|
2
|
+
import { PixelData } from '../../contracts/visualizer.contract';
|
|
3
|
+
import { PlotType } from '../../contracts/plot-type';
|
|
4
|
+
import { IChannelState } from '../../contracts/channel-histogram-api.contract';
|
|
5
|
+
/**
|
|
6
|
+
* Pure reads of what the Plotly backend has on screen or in memory: a trace's
|
|
7
|
+
* pixels, a frame's histogram, the image rect the axes show, and the restyle
|
|
8
|
+
* that applies the channel display state.
|
|
9
|
+
*/
|
|
10
|
+
/** A plotted trace's `z` grid as flat pixels: an RGB `image` trace keeps its
|
|
11
|
+
* channels (3 or 4), a heatmap is one rounded channel. Null when empty. */
|
|
12
|
+
export declare function tracePixels(trace: {
|
|
13
|
+
type?: string;
|
|
14
|
+
z?: any[][];
|
|
15
|
+
} | undefined): PixelData | null;
|
|
16
|
+
/** 256-bin histogram of one channel of a frame (raw, pre-LUT). Grayscale cells
|
|
17
|
+
* are numbers; RGB cells `[r,g,b]` give channel `channelIndex`, or the BT.601
|
|
18
|
+
* luminance for an index past their channels. */
|
|
19
|
+
export declare function frameHistogram(frame: any[], channelIndex: number): IHistogram;
|
|
20
|
+
/** 256-bin histogram of a one-byte-per-pixel plane (a channel's raw pixels). */
|
|
21
|
+
export declare function planeHistogram(plane: ArrayLike<number>): IHistogram;
|
|
22
|
+
type Rect = {
|
|
23
|
+
x: number;
|
|
24
|
+
y: number;
|
|
25
|
+
width: number;
|
|
26
|
+
height: number;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* The image rect the plot shows, from the live axis ranges — after a high-def
|
|
30
|
+
* zoom the axes are relaid out to the crop's bounds, so the ranges ARE the
|
|
31
|
+
* crop — else the whole image `[x0, x1, y0, y1]`, else null.
|
|
32
|
+
*/
|
|
33
|
+
export declare function axesSourceRect(xr: number[] | undefined, yr: number[] | undefined, trueImgSize: number[] | undefined): Rect | null;
|
|
34
|
+
/**
|
|
35
|
+
* The restyle that live-applies the channel display: the colour scale, reverse
|
|
36
|
+
* (reverse-scale and invert each flip the ramp; both together cancel) and the
|
|
37
|
+
* Intensity channel's window — cmin/cmax for the 3D plot types, zmin/zmax for
|
|
38
|
+
* heatmap/contour. A trace without a colour scale ignores these attributes.
|
|
39
|
+
*/
|
|
40
|
+
export declare function channelDisplayRestyle(channels: IChannelState[], reverse: boolean, invert: boolean, colorscale: unknown, plotType: PlotType): Record<string, unknown>;
|
|
41
|
+
export {};
|
|
@@ -16,8 +16,8 @@ export declare class PlotlyRegionOverlay implements IRegionOverlay {
|
|
|
16
16
|
constructor(plotly: PlotlyService);
|
|
17
17
|
setMode(mode: RegionToolMode): void;
|
|
18
18
|
redraw(): void;
|
|
19
|
-
/** Bezier regions are
|
|
20
|
-
* curved-shape rendering
|
|
19
|
+
/** Bezier regions are drawn by the SVG overlays (OpenSeadragon, napari-js);
|
|
20
|
+
* Plotly has no native curved-shape rendering, so this is a no-op here. */
|
|
21
21
|
setSelectedBezier(_bezier: boolean): void;
|
|
22
22
|
destroy(): void;
|
|
23
23
|
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Subscription } from 'rxjs';
|
|
2
|
+
import { RegionStore } from '../../store/region-store.service';
|
|
3
|
+
/** The service state the projection reads. */
|
|
4
|
+
export interface ShapeProjectionHost {
|
|
5
|
+
/** The plot div's id ('' before the first plot); it may be another backend's now. */
|
|
6
|
+
plotDiv(): string;
|
|
7
|
+
/** The image on screen (shapes are tagged with it). */
|
|
8
|
+
fileName(): string | undefined;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Plotly's render projection of the shared RegionStore: `shapes` is the dict
|
|
12
|
+
* array `Plotly.relayout` consumes, kept beside the store. Shapes edited or
|
|
13
|
+
* drawn on the Plotly canvas are mirrored INTO the store ({@link commitToStore});
|
|
14
|
+
* every other change — wherever it was made — arrives as a store update event
|
|
15
|
+
* and is projected back OUT and redrawn ({@link connect}). Also maps the store's
|
|
16
|
+
* selection onto Plotly's `_activeShapeIndex` (the shape with the edit handles)
|
|
17
|
+
* and back.
|
|
18
|
+
*/
|
|
19
|
+
export declare class PlotlyShapeProjection {
|
|
20
|
+
private readonly host;
|
|
21
|
+
private readonly regionStore;
|
|
22
|
+
/** The render projection: one Plotly shape dict per store region. */
|
|
23
|
+
shapes: any[];
|
|
24
|
+
/** Nesting depth of {@link quietly}: region updates are not redrawn while > 0. */
|
|
25
|
+
private muted;
|
|
26
|
+
private readonly utils;
|
|
27
|
+
constructor(host: ShapeProjectionHost, regionStore: RegionStore);
|
|
28
|
+
/** The plot div, live Plotly graph or not (null when none is set). */
|
|
29
|
+
private gd;
|
|
30
|
+
/** The plot div while it hosts a live Plotly graph, else null: the div stays
|
|
31
|
+
* set after it was handed to another backend, and Plotly throws on it then. */
|
|
32
|
+
private liveGd;
|
|
33
|
+
/** Rebuild the dict working-set from the store (after an image switch, or when
|
|
34
|
+
* regions changed while another backend was rendering). */
|
|
35
|
+
syncFromStore(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Make the shared store authoritative for the current dict working-set: convert
|
|
38
|
+
* the dicts to neutral regions and replace the store's list (the store mints
|
|
39
|
+
* ids, applies class colours, syncs its per-image cache and emits the
|
|
40
|
+
* region-update event). Store-minted ids are written back onto the dicts so the
|
|
41
|
+
* two representations stay aligned. Profile-line ROIs are ordinary regions
|
|
42
|
+
* (tagged `kind: 'profile'`) and round-trip through here too.
|
|
43
|
+
*/
|
|
44
|
+
commitToStore(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Apply a `plotly_relayout` event's shape part: in-place edits
|
|
47
|
+
* (`shapes[i].x0`, `shapes[i].path`, …, rounded to whole pixels) and a shape
|
|
48
|
+
* drawn natively on the canvas (a lone `shapes` key — snapped, tagged with
|
|
49
|
+
* the file and, when labels are on, a label object), mirrored into the store.
|
|
50
|
+
*/
|
|
51
|
+
applyRelayout(event: Record<string, any>): void;
|
|
52
|
+
/** Push the dict working-set to Plotly (a no-op when another backend owns the div). */
|
|
53
|
+
render(): void;
|
|
54
|
+
/** The shapes of the image on screen, labelled (or not) for display, as fresh dicts. */
|
|
55
|
+
shapesToRedraw(showLabel?: boolean): any[];
|
|
56
|
+
/**
|
|
57
|
+
* Follow the shared store: redraw the shapes on every region update and move
|
|
58
|
+
* the edit handles on every selection change, whoever made the change (the
|
|
59
|
+
* router, an undo, the Region Editor, another backend's overlay, a canvas
|
|
60
|
+
* tool). Plotly is not on the store's write path any more — it listens, like
|
|
61
|
+
* the OpenSeadragon and napari-js overlays do. Service-lifetime: both
|
|
62
|
+
* callbacks no-op while no live Plotly graph holds the div.
|
|
63
|
+
*/
|
|
64
|
+
connect(): Subscription;
|
|
65
|
+
/**
|
|
66
|
+
* Run `write` — a store write this projection already reflects (a shape edited
|
|
67
|
+
* on the canvas, an image switch the next plot draws) — without redrawing from
|
|
68
|
+
* the update event it causes.
|
|
69
|
+
*/
|
|
70
|
+
quietly(write: () => void): void;
|
|
71
|
+
/**
|
|
72
|
+
* A region update. The stored set re-projects and redraws; a transient set
|
|
73
|
+
* (`setRegions(…, isRegionSaveOn = false)`, which the store emits without
|
|
74
|
+
* storing) is drawn as-is and leaves the working-set alone.
|
|
75
|
+
*/
|
|
76
|
+
private onRegionUpdate;
|
|
77
|
+
/**
|
|
78
|
+
* A selection change: Plotly's `_activeShapeIndex` points at the last selected
|
|
79
|
+
* shape so it gets the edit handles (Plotly's own active-shape rendering is the
|
|
80
|
+
* only highlight). Skipped when the plot already shows it — the change came
|
|
81
|
+
* from a click on the plot ({@link syncSelectionFromPlot}).
|
|
82
|
+
*/
|
|
83
|
+
private onSelection;
|
|
84
|
+
/**
|
|
85
|
+
* Read Plotly's `_activeShapeIndex` and push it as the selection. Plotly fires
|
|
86
|
+
* no dedicated active-shape event for clicks, so this is sampled after a
|
|
87
|
+
* relayout and a click. The store no-ops when the selection is unchanged.
|
|
88
|
+
*/
|
|
89
|
+
syncSelectionFromPlot(): void;
|
|
90
|
+
/** The shapes-relayout payload: the shapes plus the active-shape fill colour. */
|
|
91
|
+
private relayoutPayload;
|
|
92
|
+
}
|
|
@@ -6,19 +6,19 @@ import { PlotType } from '../../contracts/plot-type';
|
|
|
6
6
|
* DESIGN / EXTRACTION ALIGNMENT
|
|
7
7
|
* -----------------------------
|
|
8
8
|
* Every function here is **pure** — it takes a `TraceBuildInput` and returns
|
|
9
|
-
* Plotly trace dicts. There is no Angular, no RxJS
|
|
10
|
-
*
|
|
11
|
-
* future `@jax-data-science/image-visualization` library core (see the
|
|
12
|
-
* `sketch/jit-plotting-extraction` SOW) without port surgery.
|
|
9
|
+
* Plotly trace dicts. There is no Angular, no RxJS and no service state, so
|
|
10
|
+
* the builders are unit-testable on plain fixtures.
|
|
13
11
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
12
|
+
* Layouts are built in `plotly-layouts.ts` (from a context of live service
|
|
13
|
+
* state); only TRACE building is pluggable here. To add a new plot type: write
|
|
14
|
+
* a builder, register it in `PLOTLY_PLOT_TYPE_IMPLS`, and add a descriptor in
|
|
15
|
+
* `contracts/plot-type.ts`.
|
|
18
16
|
*
|
|
19
|
-
* The original HEATMAP/SURFACE/RGB types
|
|
20
|
-
*
|
|
21
|
-
*
|
|
17
|
+
* The original HEATMAP/SURFACE/RGB types have their own builders at the end of
|
|
18
|
+
* this file ({@link buildHeatmapTraces}, {@link buildSurfaceTraces},
|
|
19
|
+
* {@link buildRgbImageTraces}) — used by the initial render and the high-def
|
|
20
|
+
* zoom re-render alike — but are NOT registered: they take the raw frames and
|
|
21
|
+
* the active colormap, not a {@link TraceBuildInput}.
|
|
22
22
|
*/
|
|
23
23
|
/** Normalised input for a trace builder. Frames are per-z-plane matrices:
|
|
24
24
|
* grayscale cells are scalars, RGB cells are `[r, g, b]`. */
|
|
@@ -57,4 +57,15 @@ export interface PlotlyPlotTypeImpl {
|
|
|
57
57
|
}
|
|
58
58
|
/** Registry of the pluggable (non-original) plot types. */
|
|
59
59
|
export declare const PLOTLY_PLOT_TYPE_IMPLS: Partial<Record<PlotType, PlotlyPlotTypeImpl>>;
|
|
60
|
-
|
|
60
|
+
/**
|
|
61
|
+
* One grayscale heatmap trace per z-plane, only the first visible (the layout's
|
|
62
|
+
* slider switches them). `trueImgSize` is [x0, x1, y0, y1]; `ratios` the data
|
|
63
|
+
* units per pixel. No per-cell hover text: building it for every pixel is too slow.
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildHeatmapTraces(frames: any[], trueImgSize: number[], ratios: number[], colorscale: unknown, reversescale: boolean): any[];
|
|
66
|
+
/** One grayscale surface trace per frame, coloured by the active colormap. */
|
|
67
|
+
export declare function buildSurfaceTraces(frames: any[], colorscale: unknown, reversescale: boolean): any[];
|
|
68
|
+
/** One RGB `image` trace per z-plane (width × height pixels), only the first visible. With
|
|
69
|
+
* `sources`, each plane draws its PNG data URI instead of its `z` cells (the browser draws it;
|
|
70
|
+
* Plotly paints `z` one rectangle per pixel). */
|
|
71
|
+
export declare function buildRgbImageTraces(frames: any[], trueImgSize: number[], ratios: number[], width: number, height: number, sources?: string[]): any[];
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import * as Plotly from 'plotly.js-dist-min';
|
|
2
|
+
import { MessageService } from 'primeng/api';
|
|
3
|
+
import { IImageInfo } from '../../contracts/image.contract';
|
|
4
|
+
import { TileAccessPort } from '../../contracts/ports/tile-access.port';
|
|
5
|
+
import { ImageStatePort } from '../../contracts/ports/image-state.port';
|
|
6
|
+
/** The service state and render hooks the zoom drives. */
|
|
7
|
+
export interface PlotlyZoomHost {
|
|
8
|
+
plotDiv(): string;
|
|
9
|
+
/** [x0, x1, y0, y1] of the plotted image, or undefined before one. */
|
|
10
|
+
trueImgSize(): number[] | undefined;
|
|
11
|
+
imageInfo(): IImageInfo | undefined;
|
|
12
|
+
fileName(): string | undefined;
|
|
13
|
+
imageCached(): boolean;
|
|
14
|
+
zIndex(): number;
|
|
15
|
+
/** Start a render generation; a newer one supersedes a crop in flight. */
|
|
16
|
+
nextRenderGen(): number;
|
|
17
|
+
isCurrentRender(gen: number): boolean;
|
|
18
|
+
heatmapLayout(xRange: number[], yRange: number[]): Plotly.Layout;
|
|
19
|
+
setScreenHeight(height: number): void;
|
|
20
|
+
/** Called at request time: returns the hook that samples the crop's pixels
|
|
21
|
+
* (tools + intensity profiles), or drops them when sampling moved on. */
|
|
22
|
+
cropSampler(): (frame: any[], ratios: number[], origin: [number, number]) => void;
|
|
23
|
+
/** Re-render the crop in the plot type on screen; `reapplyRange` when the
|
|
24
|
+
* layout is image-aligned (the heatmap range must be re-applied). */
|
|
25
|
+
renderCrop(frame: any[], ratios: number[], size: [number, number], imageSize: number[], fileName?: string): {
|
|
26
|
+
rendered: Promise<unknown>;
|
|
27
|
+
reapplyRange: boolean;
|
|
28
|
+
};
|
|
29
|
+
/** Clear the plot after a failed relayout. */
|
|
30
|
+
reset(): void;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Plotly zoom: the step and box zooms, autoscale, and the HIGH-DEF zoom — a
|
|
34
|
+
* zoomed-in range is re-fetched from the server at screen resolution and
|
|
35
|
+
* re-rendered in place, so the user sees the data at the zoom level rather
|
|
36
|
+
* than the upscaled preview. Owns the current zoom box.
|
|
37
|
+
*/
|
|
38
|
+
export declare class PlotlyZoomController {
|
|
39
|
+
private readonly host;
|
|
40
|
+
private readonly state;
|
|
41
|
+
private readonly tiles;
|
|
42
|
+
private readonly messages;
|
|
43
|
+
/** The zoomed range [x0, x1, y0, y1], or [] when not zoomed. */
|
|
44
|
+
zoomCoordinates: number[];
|
|
45
|
+
/** Whether a 2D drag-zoom re-fetches at high definition. */
|
|
46
|
+
isRealZoom: boolean;
|
|
47
|
+
private readonly utils;
|
|
48
|
+
constructor(host: PlotlyZoomHost, state: ImageStatePort, tiles: TileAccessPort, messages: MessageService);
|
|
49
|
+
private gd;
|
|
50
|
+
/** The axis-range part of a `plotly_relayout` event: remember the drag-zoom
|
|
51
|
+
* box and, outside stack mode, re-fetch it at high definition. */
|
|
52
|
+
onRelayout(event: Record<string, any>): void;
|
|
53
|
+
/** Autoscale the plot (and forget the zoom box). */
|
|
54
|
+
autoscale(): void;
|
|
55
|
+
/** Back to the whole image. */
|
|
56
|
+
resetAxes(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Re-apply the image layout at the current DOM height: over the zoom box when
|
|
59
|
+
* zoomed, else over `trueImageSize` (default: the plotted image). A failed
|
|
60
|
+
* relayout clears the plot and tells the user to reopen the image.
|
|
61
|
+
*/
|
|
62
|
+
relayout(trueImageSize?: number[]): void;
|
|
63
|
+
zoomIn(): void;
|
|
64
|
+
zoomOut(): void;
|
|
65
|
+
/** Scale the visible range about its centre by `factor` (< 1 zooms in). */
|
|
66
|
+
private stepZoom;
|
|
67
|
+
/** Overlay pixel → data coords via the axis objects (minus the plot margin);
|
|
68
|
+
* the zoom-to-box tool calls this through its host. */
|
|
69
|
+
pixelToData(px: number, py: number): {
|
|
70
|
+
x: number;
|
|
71
|
+
y: number;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Apply a zoom-to-box selection: stack mode does a pure axis-range relayout;
|
|
75
|
+
* otherwise the high-def pipeline re-fetches the box at the new resolution.
|
|
76
|
+
*/
|
|
77
|
+
applyZoomToBox(coordinates: number[]): void;
|
|
78
|
+
/**
|
|
79
|
+
* The high-def zoom: fetch `coordinates` from the server at screen resolution
|
|
80
|
+
* and re-render it in place (in the plot type on screen), unless the user
|
|
81
|
+
* moved on meanwhile — another file, another render of the div (a new zoom or
|
|
82
|
+
* plot, or the div handed to another backend). A box covering the whole image
|
|
83
|
+
* autoscales instead.
|
|
84
|
+
*/
|
|
85
|
+
triggerZoom(coordinates: number[]): void;
|
|
86
|
+
}
|