@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,49 @@
|
|
|
1
|
+
import { NumberParamSpec, SelectParamSpec, ToolParamSpec, ToolbarToolContribution } from '../contracts/toolbar-tool.contract';
|
|
2
|
+
/** The open parameter dialog, as its template binds it. */
|
|
3
|
+
export interface OpenToolParams {
|
|
4
|
+
tool: ToolbarToolContribution;
|
|
5
|
+
/** The tool's live values; the dialog edits them in place. */
|
|
6
|
+
values: Record<string, unknown>;
|
|
7
|
+
/** Each field's spec, already narrowed for the template (an `*ngSwitchCase` does not
|
|
8
|
+
* narrow a union in the template type checker). */
|
|
9
|
+
fields: {
|
|
10
|
+
spec: ToolParamSpec;
|
|
11
|
+
number: NumberParamSpec | null;
|
|
12
|
+
select: SelectParamSpec | null;
|
|
13
|
+
}[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Checkpoint choice and parameter values of the contributed no-prompt tools
|
|
17
|
+
* (`TOOLBAR_TOOLS`), and the generic parameter dialog over them.
|
|
18
|
+
*
|
|
19
|
+
* Values are seeded from the tool's defaults with the active checkpoint's own
|
|
20
|
+
* `ToolModelOption.defaults` on top — they encode the scale and crowding the
|
|
21
|
+
* checkpoint was trained for — lazily, on first use, and re-seeded when the
|
|
22
|
+
* checkpoint changes or the user resets.
|
|
23
|
+
*/
|
|
24
|
+
export declare class ToolParamsModel {
|
|
25
|
+
readonly tools: ToolbarToolContribution[];
|
|
26
|
+
/** Active checkpoint per tool; replaced (not mutated) so the toolbar sees a new reference. */
|
|
27
|
+
toolModelIds: Record<string, string>;
|
|
28
|
+
/** Parameter values per tool. */
|
|
29
|
+
toolParams: Record<string, Record<string, unknown>>;
|
|
30
|
+
/** The open dialog, built once on open so change detection only reads properties. Null while closed. */
|
|
31
|
+
openParams: OpenToolParams | null;
|
|
32
|
+
constructor(tools: ToolbarToolContribution[]);
|
|
33
|
+
/** A tool's current values, seeded on first use. */
|
|
34
|
+
paramsFor(toolId: string): Record<string, unknown>;
|
|
35
|
+
/** Active checkpoint for a tool, falling back to the tool's own default. */
|
|
36
|
+
modelIdFor(tool: ToolbarToolContribution): string;
|
|
37
|
+
/** Switching checkpoint re-seeds the parameters: the defaults belong to the model. */
|
|
38
|
+
setModel(toolId: string, modelId: string): void;
|
|
39
|
+
reset(toolId: string): void;
|
|
40
|
+
open(toolId: string): void;
|
|
41
|
+
close(): void;
|
|
42
|
+
/** The values to run a tool with: its parameters plus the active checkpoint. */
|
|
43
|
+
runParams(tool: ToolbarToolContribution): Record<string, unknown>;
|
|
44
|
+
find(toolId: string): ToolbarToolContribution | undefined;
|
|
45
|
+
/** A tool's defaults for a checkpoint, with that checkpoint's own overrides on top. */
|
|
46
|
+
private seed;
|
|
47
|
+
/** A tool's values object was replaced: point an open dialog for it at the new one. */
|
|
48
|
+
private rebind;
|
|
49
|
+
}
|
package/lib/plot.utilities.d.ts
CHANGED
|
@@ -3,13 +3,19 @@ import { ShapeSelection } from './models/shape';
|
|
|
3
3
|
export declare const COLORMAP_OPTIONS: {
|
|
4
4
|
label: string;
|
|
5
5
|
data: null;
|
|
6
|
-
children: {
|
|
6
|
+
children: ({
|
|
7
|
+
label: string;
|
|
8
|
+
data: {
|
|
9
|
+
value: [number, string][];
|
|
10
|
+
src: string;
|
|
11
|
+
};
|
|
12
|
+
} | {
|
|
7
13
|
label: string;
|
|
8
14
|
data: {
|
|
9
15
|
value: string;
|
|
10
16
|
src: string;
|
|
11
17
|
};
|
|
12
|
-
}[];
|
|
18
|
+
})[];
|
|
13
19
|
}[];
|
|
14
20
|
export declare const CONFIG: {
|
|
15
21
|
displaylogo: boolean;
|
|
@@ -45,7 +51,9 @@ export declare class PlotUtilities {
|
|
|
45
51
|
*/
|
|
46
52
|
getRectangle(coordinates: number[], trueImageSize: number[]): Rectangle;
|
|
47
53
|
/**
|
|
48
|
-
*
|
|
54
|
+
* The on-screen box a plot div is laid out in: the bounding rectangle of the
|
|
55
|
+
* element with id `div`'s parent (callers pass the plot div's own id). An
|
|
56
|
+
* empty Rectangle when there is no such element or it has no parent.
|
|
49
57
|
* @param div
|
|
50
58
|
*/
|
|
51
59
|
getDomRectangle(div: string): Rectangle;
|
|
@@ -61,47 +69,28 @@ export declare class PlotUtilities {
|
|
|
61
69
|
*/
|
|
62
70
|
getPolygon(fig: any): any;
|
|
63
71
|
/**
|
|
64
|
-
* TESTED
|
|
65
72
|
* Rounds a list of numbers
|
|
66
73
|
* @param a
|
|
67
74
|
*/
|
|
68
75
|
round(a: number[]): number[];
|
|
69
76
|
/**
|
|
70
|
-
*
|
|
71
|
-
* Returns true of zoom is the same as image size
|
|
77
|
+
* Returns true if the zoom is the same as the image size
|
|
72
78
|
* @param rect Rectangle area
|
|
73
79
|
* @param trueImgSize
|
|
74
80
|
* @return true if rect is out of image size boundary
|
|
75
81
|
*/
|
|
76
82
|
isZoomSameAsImgSize(rect: Rectangle, trueImgSize: number[]): boolean;
|
|
77
83
|
/**
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*/
|
|
81
|
-
saveToFile(jsonString: any, baseName?: string): void;
|
|
82
|
-
/**
|
|
83
|
-
* Function that imports ROIs from a geojson object
|
|
84
|
-
* @param geoJsonStr
|
|
85
|
-
* @return Region[]
|
|
84
|
+
* Download a GeoJSON string as `<baseName without extension>.geojson`
|
|
85
|
+
* (`rois.geojson` without a base name).
|
|
86
86
|
*/
|
|
87
|
+
saveToFile(jsonString: string, baseName?: string): void;
|
|
88
|
+
/** Parse GeoJSON into regions; see {@link regionsFromGeoJson} in `models/region-geojson`. */
|
|
87
89
|
importROIsFromGeoJson(geoJsonStr: string): Region[];
|
|
88
|
-
/**
|
|
89
|
-
* Function that returns a geojson object from a Plotly ROI
|
|
90
|
-
* @param rois
|
|
91
|
-
* @return FeatureCollection<Geometry, GeoJsonProperties>
|
|
92
|
-
*/
|
|
90
|
+
/** Serialise regions as GeoJSON; see {@link regionsToGeoJson} in `models/region-geojson`. */
|
|
93
91
|
exportROIsToGeoJson(rois: Region[]): string;
|
|
94
|
-
/**
|
|
95
|
-
* Convert GeoJSON interior rings into the neutral hole representation
|
|
96
|
-
* (`number[][]` per ring, no repeated closing point). Degenerate rings (< 3
|
|
97
|
-
* distinct points) are dropped. jit-ui#85.
|
|
98
|
-
*/
|
|
99
|
-
/**
|
|
100
|
-
* Build a closed {@link Polygon} from a GeoJSON ring set: `rings[0]` is the
|
|
101
|
-
* exterior (closing point dropped), `rings[1..]` are interior holes. jit-ui#85.
|
|
102
|
-
*/
|
|
103
|
-
private polygonFromRings;
|
|
104
|
-
private ringsToHoles;
|
|
92
|
+
/** `#rrggbb` for an RGB triple; see {@link rgbToHex} in `contracts/color`. */
|
|
105
93
|
rgbToHex(r: number, g: number, b: number): string;
|
|
94
|
+
/** RGB for a hex colour (`#rgb` / `#rrggbb`); black when missing or unparseable. */
|
|
106
95
|
hexToRgb(hex: string | undefined): number[];
|
|
107
96
|
}
|
|
@@ -10,8 +10,11 @@ export declare class ProcessingImage {
|
|
|
10
10
|
/** Create from browser ImageData. */
|
|
11
11
|
static fromImageData(imageData: ImageData): ProcessingImage;
|
|
12
12
|
constructor(width: number, height: number, channels: number, data: Uint8ClampedArray);
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Convert to browser-native ImageData (RGBA). Gray (1), gray+alpha (2) and
|
|
15
|
+
* RGB (3) are expanded; other channel counts throw.
|
|
16
|
+
*/
|
|
14
17
|
toImageData(): ImageData;
|
|
15
|
-
/** Convert to Blob for saving/downloading. */
|
|
18
|
+
/** Convert to Blob for saving/downloading. Rejects when the browser can't encode it. */
|
|
16
19
|
toBlob(mime?: string): Promise<Blob>;
|
|
17
20
|
}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { Provider } from '@angular/core';
|
|
2
|
+
/**
|
|
3
|
+
* The three host-facing contracts, all served by the router. Shared by
|
|
4
|
+
* {@link provideVisualization} (component scope) and `VisualizationModule` (root),
|
|
5
|
+
* so both bind them the same way; at each scope they resolve to that scope's router.
|
|
6
|
+
* Package-internal (not exported from the public API).
|
|
7
|
+
*/
|
|
8
|
+
export declare const VISUALIZER_TOKEN_BINDINGS: Provider[];
|
|
2
9
|
/**
|
|
3
10
|
* A self-contained, isolated visualization backend chain for a component subtree.
|
|
4
11
|
*
|
|
@@ -26,9 +33,19 @@ import { Provider } from '@angular/core';
|
|
|
26
33
|
* embedded viewer gets its own router/Plotly/OSD/stores/tools while the rest of the
|
|
27
34
|
* app keeps the default root instance.
|
|
28
35
|
*
|
|
36
|
+
* In an application's own providers (`bootstrapApplication(App, { providers: [
|
|
37
|
+
* provideVisualization(), …] })`) it binds the one app-wide chain instead — the
|
|
38
|
+
* standalone counterpart of importing the deprecated `VisualizationModule`.
|
|
39
|
+
*
|
|
29
40
|
* Lists EVERY stateful service in the chain. Stateless collaborators (HttpClient,
|
|
30
41
|
* MessageService, WandService) deliberately resolve to root — they hold no
|
|
31
|
-
* per-viewer state, so sharing them is correct and keeps this list minimal.
|
|
32
|
-
*
|
|
42
|
+
* per-viewer state, so sharing them is correct and keeps this list minimal. The
|
|
43
|
+
* SAM model session (`SamSessionService`) is also root on purpose: every viewer's
|
|
44
|
+
* SAM tools share one model download and Worker/GPU session (see its doc; a host
|
|
45
|
+
* can provide it at a viewer component to get a per-viewer session that is
|
|
46
|
+
* disposed with the viewer). When a
|
|
47
|
+
* new stateful service joins the rendering chain, add it here too —
|
|
48
|
+
* `provide-visualization.spec.ts` fails until it is listed (or allow-listed there as
|
|
49
|
+
* deliberately shared).
|
|
33
50
|
*/
|
|
34
51
|
export declare function provideVisualization(): Provider[];
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { EventEmitter, OnChanges } from '@angular/core';
|
|
2
|
+
import { ClassPreset, MatchMode } from '../../models/class-preset';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/** One class row as the template draws it, derived once per input change. */
|
|
5
|
+
interface ClassRow {
|
|
6
|
+
name: string;
|
|
7
|
+
color: string;
|
|
8
|
+
count: number;
|
|
9
|
+
canRemove: boolean;
|
|
10
|
+
rowTooltip: string;
|
|
11
|
+
removeTooltip: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The Region Editor's docked "Classes" panel (jit-ui#70): every annotation
|
|
15
|
+
* class with its colour swatch and region count. A row click picks the active
|
|
16
|
+
* class (and re-classifies a selection), the swatch recolours the class, the
|
|
17
|
+
* trash removes it, Manage opens the full editor. Presentational: the editor
|
|
18
|
+
* applies every action.
|
|
19
|
+
*/
|
|
20
|
+
export declare class ClassesPanelComponent implements OnChanges {
|
|
21
|
+
/** The classes in display order. */
|
|
22
|
+
classes: ClassPreset[];
|
|
23
|
+
/** Region count per class, keyed by {@link presetKey} under `matchMode`. */
|
|
24
|
+
counts: Map<string, number>;
|
|
25
|
+
/** How labels are matched to classes (keys {@link counts}). */
|
|
26
|
+
matchMode: MatchMode;
|
|
27
|
+
/** The active class (highlighted), or null. */
|
|
28
|
+
activeClass: string | null;
|
|
29
|
+
/** Number of selected regions (changes what a row click does). */
|
|
30
|
+
selectedCount: number;
|
|
31
|
+
/** The class regions revert to; it can't be removed while in use. */
|
|
32
|
+
defaultClassName: string;
|
|
33
|
+
/** A row was clicked: make the class active / apply it to the selection. */
|
|
34
|
+
pick: EventEmitter<string>;
|
|
35
|
+
/** A class's swatch picked a new colour. */
|
|
36
|
+
recolor: EventEmitter<{
|
|
37
|
+
name: string;
|
|
38
|
+
color: string;
|
|
39
|
+
}>;
|
|
40
|
+
/** A class's trash button (its name). */
|
|
41
|
+
remove: EventEmitter<string>;
|
|
42
|
+
/** Manage clicked. */
|
|
43
|
+
manage: EventEmitter<void>;
|
|
44
|
+
/** trackBy for the class rows so re-sorting doesn't re-create the pickers. */
|
|
45
|
+
protected readonly trackByName: (_: number, c: ClassRow) => string;
|
|
46
|
+
/** The rows drawn, rebuilt when an input changes rather than per check. */
|
|
47
|
+
protected rows: ClassRow[];
|
|
48
|
+
ngOnChanges(): void;
|
|
49
|
+
private count;
|
|
50
|
+
private canRemove;
|
|
51
|
+
protected rowTooltip(name: string): string;
|
|
52
|
+
protected removeTooltip(name: string): string;
|
|
53
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ClassesPanelComponent, never>;
|
|
54
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ClassesPanelComponent, "region-classes-panel", never, { "classes": { "alias": "classes"; "required": false; }; "counts": { "alias": "counts"; "required": false; }; "matchMode": { "alias": "matchMode"; "required": false; }; "activeClass": { "alias": "activeClass"; "required": false; }; "selectedCount": { "alias": "selectedCount"; "required": false; }; "defaultClassName": { "alias": "defaultClassName"; "required": false; }; }, { "pick": "pick"; "recolor": "recolor"; "remove": "remove"; "manage": "manage"; }, never, never, true, never>;
|
|
55
|
+
}
|
|
56
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A file name without its extension: `slide.ome.tif` → `slide.ome`. A name with
|
|
3
|
+
* no extension — or only a leading dot, like `.hidden` — is returned whole, so
|
|
4
|
+
* a derived name is never a bare `.geojson`. `fallback` stands in for a missing
|
|
5
|
+
* name.
|
|
6
|
+
*/
|
|
7
|
+
export declare function fileStem(name: string | null | undefined, fallback: string): string;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { ClassPreset, MatchMode, PresetSet } from '../../models/class-preset';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* "Manage annotation classes" (jit-ui#70): edit the classes, the fallback
|
|
6
|
+
* palette, auto-add and label matching of a working copy of the preset set,
|
|
7
|
+
* plus reset / import / export. The editor owns the draft (`[(draft)]`); every
|
|
8
|
+
* edit here emits a new draft object (nothing is changed in place), and Apply
|
|
9
|
+
* asks the editor to persist it.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ManageClassesDialogComponent {
|
|
12
|
+
/** The dialog is open. */
|
|
13
|
+
visible: boolean;
|
|
14
|
+
/** The dialog was closed (`false`); two-way with {@link visible}. */
|
|
15
|
+
visibleChange: EventEmitter<boolean>;
|
|
16
|
+
/** The working copy being edited (null until the dialog is opened). */
|
|
17
|
+
draft: PresetSet | null;
|
|
18
|
+
/** Every edit: the new draft object; two-way with {@link draft}. */
|
|
19
|
+
draftChange: EventEmitter<PresetSet>;
|
|
20
|
+
/** Apply clicked: persist the draft and close. */
|
|
21
|
+
apply: EventEmitter<void>;
|
|
22
|
+
/** Reset clicked: restore the default classes. */
|
|
23
|
+
resetDefaults: EventEmitter<void>;
|
|
24
|
+
/** A preset JSON file was chosen (the input's change event). */
|
|
25
|
+
importFile: EventEmitter<Event>;
|
|
26
|
+
/** Export clicked. */
|
|
27
|
+
export: EventEmitter<void>;
|
|
28
|
+
protected readonly matchModeOptions: {
|
|
29
|
+
label: string;
|
|
30
|
+
value: string;
|
|
31
|
+
}[];
|
|
32
|
+
/** Rows keep their DOM (and input focus) while their class object is replaced. */
|
|
33
|
+
protected readonly trackByIndex: (i: number) => number;
|
|
34
|
+
protected addClass(): void;
|
|
35
|
+
protected removeClass(i: number): void;
|
|
36
|
+
protected patchClass(i: number, patch: Partial<ClassPreset>): void;
|
|
37
|
+
protected addFallbackColor(): void;
|
|
38
|
+
protected removeFallbackColor(i: number): void;
|
|
39
|
+
protected setFallbackColor(i: number, color: string): void;
|
|
40
|
+
protected setAutoPromote(autoPromote: boolean): void;
|
|
41
|
+
protected setMatchMode(matchMode: MatchMode): void;
|
|
42
|
+
private update;
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ManageClassesDialogComponent, never>;
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ManageClassesDialogComponent, "region-manage-classes-dialog", never, { "visible": { "alias": "visible"; "required": false; }; "draft": { "alias": "draft"; "required": false; }; }, { "visibleChange": "visibleChange"; "draftChange": "draftChange"; "apply": "apply"; "resetDefaults": "resetDefaults"; "importFile": "importFile"; "export": "export"; }, never, never, true, never>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { Region } from '../models/region';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/** Mask type: one foreground value, or a distinct id per region. */
|
|
5
|
+
export type MaskMode = 'binary' | 'multiclass';
|
|
6
|
+
/** What to rasterize, at the full image size. */
|
|
7
|
+
export interface MaskExportRequest {
|
|
8
|
+
regions: Region[];
|
|
9
|
+
imageSize: {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
};
|
|
13
|
+
mode: MaskMode;
|
|
14
|
+
/** Recorded in the PNG metadata. */
|
|
15
|
+
sourceName?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Progress of one mask export, in order: planned → progress* → encoding → done. */
|
|
18
|
+
export type MaskExportEvent =
|
|
19
|
+
/** The mask size; `scale` < 1 when the image exceeds the pixel budget. */
|
|
20
|
+
{
|
|
21
|
+
type: 'planned';
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
scale: number;
|
|
25
|
+
}
|
|
26
|
+
/** 0–100 rasterization progress. */
|
|
27
|
+
| {
|
|
28
|
+
type: 'progress';
|
|
29
|
+
percent: number;
|
|
30
|
+
}
|
|
31
|
+
/** Rasterizing finished; the PNG is being encoded. */
|
|
32
|
+
| {
|
|
33
|
+
type: 'encoding';
|
|
34
|
+
} | {
|
|
35
|
+
type: 'done';
|
|
36
|
+
blob: Blob;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Rasterizes regions to a label-mask PNG in a Web Worker (jit-ui#95), so the
|
|
40
|
+
* full-resolution rasterize and PNG encode never freeze the UI and the job can
|
|
41
|
+
* be cancelled. Component-agnostic: {@link export} returns a cold Observable —
|
|
42
|
+
* subscribing starts a worker, unsubscribing terminates it (cancel), and a
|
|
43
|
+
* worker failure is an error carrying a user-facing message. Whole-slide
|
|
44
|
+
* images are capped to a safe pixel budget (the geometry is scaled to match).
|
|
45
|
+
*/
|
|
46
|
+
export declare class MaskExportService {
|
|
47
|
+
export(request: MaskExportRequest): Observable<MaskExportEvent>;
|
|
48
|
+
/** Worker factory: a dynamic import, so the worker module (and its
|
|
49
|
+
* `import.meta.url`, which the CommonJS test compile rejects) loads lazily.
|
|
50
|
+
* Overridable in tests. */
|
|
51
|
+
protected createWorker(): Promise<Worker>;
|
|
52
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MaskExportService, never>;
|
|
53
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MaskExportService>;
|
|
54
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Region } from '../models/region';
|
|
2
|
+
import type { BBoxMask } from '../geometry/raster';
|
|
3
|
+
export type { BBoxMask };
|
|
2
4
|
/** A single closed ring (+ optional holes) in image-pixel coordinates. A region
|
|
3
5
|
* rasterizes as the union of its parts. Plain data so it survives a
|
|
4
6
|
* `postMessage` structured clone into the mask worker. */
|
|
@@ -7,14 +9,6 @@ export interface MaskPart {
|
|
|
7
9
|
ypoints: number[];
|
|
8
10
|
holes?: number[][][];
|
|
9
11
|
}
|
|
10
|
-
/** A bbox-relative binary mask, as returned by `WandService.rasterizePolygon`. */
|
|
11
|
-
export interface BBoxMask {
|
|
12
|
-
bx: number;
|
|
13
|
-
by: number;
|
|
14
|
-
bw: number;
|
|
15
|
-
bh: number;
|
|
16
|
-
mask: Uint8Array;
|
|
17
|
-
}
|
|
18
12
|
/** Polygon-fill function (the wand's scanline rasterizer), injected so this
|
|
19
13
|
* module stays free of Angular/DOM and can run inside a worker. */
|
|
20
14
|
export type RasterizeFn = (xpoints: number[], ypoints: number[], imageWidth: number, imageHeight: number, holes?: number[][][]) => BBoxMask | null;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** One class's colour in the dialog; `label` '' groups unclassified regions. */
|
|
4
|
+
export interface ClassColorEdit {
|
|
5
|
+
label: string;
|
|
6
|
+
color: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* "Edit colour of selected regions": one picker per class among the selection.
|
|
10
|
+
* Edits a private copy of `edits` and reports the result on Apply; the editor
|
|
11
|
+
* applies it to the regions (copy-on-write) and commits.
|
|
12
|
+
*/
|
|
13
|
+
export declare class RegionColorDialogComponent {
|
|
14
|
+
/** The dialog is open. */
|
|
15
|
+
visible: boolean;
|
|
16
|
+
/** The dialog was closed (`false`); two-way with {@link visible}. */
|
|
17
|
+
visibleChange: EventEmitter<boolean>;
|
|
18
|
+
/** Number of selected regions, for the caption. */
|
|
19
|
+
selectedCount: number;
|
|
20
|
+
/** The seeded colours; the dialog edits a copy. */
|
|
21
|
+
set edits(value: ClassColorEdit[] | null | undefined);
|
|
22
|
+
/** Apply clicked: the edited colours per class. */
|
|
23
|
+
apply: EventEmitter<ClassColorEdit[]>;
|
|
24
|
+
protected draft: ClassColorEdit[];
|
|
25
|
+
protected setColor(i: number, color: string): void;
|
|
26
|
+
protected close(): void;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RegionColorDialogComponent, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RegionColorDialogComponent, "region-color-dialog", never, { "visible": { "alias": "visible"; "required": false; }; "selectedCount": { "alias": "selectedCount"; "required": false; }; "edits": { "alias": "edits"; "required": false; }; }, { "visibleChange": "visibleChange"; "apply": "apply"; }, never, never, true, never>;
|
|
29
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** The Region Editor's help dialog (static content). */
|
|
4
|
+
export declare class RegionEditorHelpComponent {
|
|
5
|
+
/** The dialog is open. */
|
|
6
|
+
visible: boolean;
|
|
7
|
+
/** The dialog was closed (`false`); two-way with {@link visible}. */
|
|
8
|
+
visibleChange: EventEmitter<boolean>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RegionEditorHelpComponent, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RegionEditorHelpComponent, "region-editor-help", never, { "visible": { "alias": "visible"; "required": false; }; }, { "visibleChange": "visibleChange"; }, never, never, true, never>;
|
|
11
|
+
}
|