@jax-data-science/sci-image-visualizer 0.13.0 → 0.15.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/esm2022/lib/channel-histogram/channel-histogram.component.mjs +39 -3
- package/esm2022/lib/channel-histogram/channel-tree.mjs +65 -0
- package/esm2022/lib/contracts/channel-histogram-api.contract.mjs +19 -1
- package/esm2022/lib/contracts/display-types.mjs +7 -1
- package/esm2022/lib/contracts/image.contract.mjs +1 -1
- package/esm2022/lib/contracts/spatial-dataset.contract.mjs +1 -1
- package/esm2022/lib/contracts/visualizer.contract.mjs +1 -1
- package/esm2022/lib/implementations/napari-js/napari-image-2d-scene.mjs +17 -2
- package/esm2022/lib/implementations/napari-js/napari-spatial-2d-scene.mjs +88 -10
- package/esm2022/lib/implementations/napari-js/napari-spatial-3d-scene.mjs +62 -13
- package/esm2022/lib/implementations/napari-js/napari-spatial-encoding.mjs +21 -1
- package/esm2022/lib/implementations/napari-js/napari-spatial-scene.mjs +5 -1
- package/esm2022/lib/implementations/napari-js/napari-visualizer.service.mjs +4 -1
- package/esm2022/lib/implementations/napari-js/spatial-tiles/categorical-lookup.mjs +26 -3
- package/esm2022/lib/implementations/napari-js/spatial-tiles/cell-layers.mjs +7 -9
- package/esm2022/lib/implementations/napari-js/spatial-tiles/density-layer.mjs +20 -4
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-hover.mjs +4 -2
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-jobs.mjs +4 -2
- package/esm2022/lib/implementations/napari-js/spatial-tiles/transcript-layers.mjs +42 -15
- package/esm2022/lib/implementations/osd/openseadragon-visualizer.service.mjs +3 -1
- package/esm2022/lib/spatial/lod.mjs +24 -3
- package/esm2022/lib/spatial/spatial-controls.facade.mjs +8 -3
- package/esm2022/lib/spatial/spatial-gene-filter.mjs +138 -0
- package/esm2022/lib/spatial/spatial-tile-merge.mjs +42 -1
- package/esm2022/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.mjs +47 -10
- package/esm2022/lib/spatial-controls/spatial-controls.component.mjs +4 -3
- package/esm2022/lib/spatial-controls/spatial-gene-style/spatial-gene-style.component.mjs +66 -0
- package/esm2022/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.mjs +106 -26
- package/esm2022/lib/spatial-controls/spatial-groups-panel/spatial-groups-panel.component.mjs +3 -3
- package/esm2022/lib/spatial-controls/spatial-key/spatial-key.component.mjs +3 -3
- package/esm2022/lib/spatial-controls/spatial-marker-genes-form/spatial-marker-genes-form.component.mjs +3 -3
- package/esm2022/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.mjs +110 -8
- package/esm2022/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.mjs +41 -9
- package/esm2022/lib/store/visualizer-store.service.mjs +67 -1
- package/fesm2022/{jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-DURPqs5a.mjs → jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-qUeMuBb0.mjs} +1250 -335
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-qUeMuBb0.mjs.map +1 -0
- package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-D0IQ6PjZ.mjs → jax-data-science-sci-image-visualizer-onnx-sam-session-U1ODcfYD.mjs} +3 -2
- package/fesm2022/{jax-data-science-sci-image-visualizer-onnx-sam-session-D0IQ6PjZ.mjs.map → jax-data-science-sci-image-visualizer-onnx-sam-session-U1ODcfYD.mjs.map} +1 -1
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs +2 -1
- package/fesm2022/jax-data-science-sci-image-visualizer.mjs.map +1 -1
- package/lib/channel-histogram/channel-histogram.component.d.ts +14 -0
- package/lib/channel-histogram/channel-tree.d.ts +30 -0
- package/lib/contracts/channel-histogram-api.contract.d.ts +16 -0
- package/lib/contracts/display-types.d.ts +27 -0
- package/lib/contracts/image.contract.d.ts +8 -0
- package/lib/contracts/spatial-dataset.contract.d.ts +7 -0
- package/lib/contracts/visualizer.contract.d.ts +3 -0
- package/lib/implementations/napari-js/napari-image-2d-scene.d.ts +7 -0
- package/lib/implementations/napari-js/napari-spatial-2d-scene.d.ts +13 -2
- package/lib/implementations/napari-js/napari-spatial-encoding.d.ts +5 -0
- package/lib/implementations/napari-js/napari-spatial-scene.d.ts +4 -0
- package/lib/implementations/napari-js/napari-visualizer.service.d.ts +2 -0
- package/lib/implementations/napari-js/spatial-tiles/categorical-lookup.d.ts +6 -1
- package/lib/implementations/napari-js/spatial-tiles/transcript-hover.d.ts +4 -0
- package/lib/implementations/napari-js/spatial-tiles/transcript-layers.d.ts +3 -1
- package/lib/spatial/lod.d.ts +14 -2
- package/lib/spatial/spatial-controls.facade.d.ts +3 -0
- package/lib/spatial/spatial-gene-filter.d.ts +44 -0
- package/lib/spatial/spatial-tile-merge.d.ts +17 -0
- package/lib/spatial-controls/spatial-cells-panel/spatial-cells-panel.component.d.ts +18 -1
- package/lib/spatial-controls/spatial-gene-style/spatial-gene-style.component.d.ts +30 -0
- package/lib/spatial-controls/spatial-gene-tree/spatial-gene-tree.component.d.ts +39 -7
- package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts +33 -1
- package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts +13 -1
- package/lib/store/visualizer-store.service.d.ts +19 -0
- package/package.json +1 -1
- package/fesm2022/jax-data-science-sci-image-visualizer-jax-data-science-sci-image-visualizer-DURPqs5a.mjs.map +0 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
|
+
import { TranscriptGlyphName } from '../../contracts/display-types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* One gene's icon and colour: the icon grid, a colour picker with its hex value, presets, and
|
|
6
|
+
* a reset — the content of a popover its host opens on the gene's swatch. Writes nothing itself:
|
|
7
|
+
* it reports the choice, and the host stores it where it belongs.
|
|
8
|
+
*/
|
|
9
|
+
export declare class SpatialGeneStyleComponent {
|
|
10
|
+
/** The gene, for the controls' labels. */
|
|
11
|
+
gene: string;
|
|
12
|
+
/** What the icons and colour are of ("Observation", "Transcript"), for the titles. */
|
|
13
|
+
what: string;
|
|
14
|
+
/** The gene's colour, `#rrggbb`. */
|
|
15
|
+
color: string;
|
|
16
|
+
/** The gene's icon. */
|
|
17
|
+
glyph: TranscriptGlyphName;
|
|
18
|
+
/** A note under the icons, e.g. where they show; none when null. */
|
|
19
|
+
iconHint: string | null;
|
|
20
|
+
readonly colorChange: EventEmitter<string>;
|
|
21
|
+
readonly glyphChange: EventEmitter<TranscriptGlyphName>;
|
|
22
|
+
/** Back to the gene's default icon and colour. */
|
|
23
|
+
readonly resetStyle: EventEmitter<void>;
|
|
24
|
+
protected readonly glyphOptions: import("../../spatial/spatial-panel-model").GlyphOption[];
|
|
25
|
+
protected readonly colorPresets: string[];
|
|
26
|
+
/** A typed hex colour, accepted as `#rrggbb` or `rrggbb`; anything else is ignored. */
|
|
27
|
+
protected onHex(text: string): void;
|
|
28
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SpatialGeneStyleComponent, never>;
|
|
29
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SpatialGeneStyleComponent, "spatial-gene-style", never, { "gene": { "alias": "gene"; "required": false; }; "what": { "alias": "what"; "required": false; }; "color": { "alias": "color"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "iconHint": { "alias": "iconHint"; "required": false; }; }, { "colorChange": "colorChange"; "glyphChange": "glyphChange"; "resetStyle": "resetStyle"; }, never, never, true, never>;
|
|
30
|
+
}
|
|
@@ -13,11 +13,21 @@ interface GeneRowView {
|
|
|
13
13
|
/** Transcripts in view, or null before the renderer reports any. */
|
|
14
14
|
count: number | null;
|
|
15
15
|
}
|
|
16
|
+
/** One row of the all-genes list. */
|
|
17
|
+
interface AllGeneRowView {
|
|
18
|
+
gene: string;
|
|
19
|
+
shown: boolean;
|
|
20
|
+
/** Its colour when coloured by gene, or null when the dataset's code order is unknown. */
|
|
21
|
+
swatch: string | null;
|
|
22
|
+
count: number | null;
|
|
23
|
+
}
|
|
16
24
|
/**
|
|
17
25
|
* The selected transcript genes as Xenium Explorer's tree: the gene groups, then the
|
|
18
26
|
* ungrouped genes, each row with an eye that hides it without deselecting it, its marker
|
|
19
27
|
* in its colour (opening one icon-and-colour picker per gene), and its transcript count in
|
|
20
|
-
* view.
|
|
28
|
+
* view. With "All genes" on, the root eye hides or shows every transcript and the root
|
|
29
|
+
* expands to every gene of the dataset, each with its eye when the dataset lists its genes
|
|
30
|
+
* in code order (`transcriptTiles.genes`), filtered by name past a few hundred.
|
|
21
31
|
*
|
|
22
32
|
* Writes only through `controls.setViewState`.
|
|
23
33
|
*/
|
|
@@ -34,9 +44,7 @@ export declare class SpatialGeneTreeComponent implements OnChanges {
|
|
|
34
44
|
geneCounts: Record<string, number> | null;
|
|
35
45
|
/** Real genes in the panel — the tree's denominator. */
|
|
36
46
|
geneTotal: number;
|
|
37
|
-
protected readonly glyphOptions: import("../../spatial/spatial-panel-model").GlyphOption[];
|
|
38
47
|
/** Swatches in the picker: the categorical palette genes are coloured from by default. */
|
|
39
|
-
protected readonly colorPresets: string[];
|
|
40
48
|
/** The tree, rebuilt when the view changes — never per change-detection pass. */
|
|
41
49
|
protected geneTree: GeneTreeNode[];
|
|
42
50
|
/** Per gene: its eye, swatch, glyph and count — rebuilt with the inputs (and when the
|
|
@@ -47,6 +55,18 @@ export declare class SpatialGeneTreeComponent implements OnChanges {
|
|
|
47
55
|
protected rootShown: boolean;
|
|
48
56
|
protected collapsedGeneGroups: Set<string>;
|
|
49
57
|
protected geneTreeOpen: boolean;
|
|
58
|
+
/** The all-genes list starts closed: it can run to thousands of genes. */
|
|
59
|
+
protected allGenesOpen: boolean;
|
|
60
|
+
/** The genes "All genes" lists, or null when the dataset names none. */
|
|
61
|
+
protected allGeneList: readonly string[] | null;
|
|
62
|
+
/** Whether a gene of "All genes" can be hidden: the dataset lists its genes in code order. */
|
|
63
|
+
protected canHideAllGenes: boolean;
|
|
64
|
+
protected allGenesFilter: string;
|
|
65
|
+
/** The list's rows matching the filter, at most {@link ALL_GENES_ROWS}. */
|
|
66
|
+
protected allRows: AllGeneRowView[];
|
|
67
|
+
/** How many genes match the filter, for the "showing n of m" line. */
|
|
68
|
+
protected allGenesMatched: number;
|
|
69
|
+
protected readonly allGenesRowCap = 200;
|
|
50
70
|
/** The gene the open picker edits. */
|
|
51
71
|
protected styleGene: string | null;
|
|
52
72
|
/** Colours of the cells' groups, by name — what a cluster of the same name is drawn in. */
|
|
@@ -58,13 +78,26 @@ export declare class SpatialGeneTreeComponent implements OnChanges {
|
|
|
58
78
|
constructor(zone: NgZone, cdr: ChangeDetectorRef);
|
|
59
79
|
ngOnChanges(changes: SimpleChanges): void;
|
|
60
80
|
private rebuildRows;
|
|
81
|
+
/**
|
|
82
|
+
* The all-genes list's rows: the genes matching the filter, up to the cap. Built only while
|
|
83
|
+
* the list is open: the counts in view change with every pan, and the list can be thousands.
|
|
84
|
+
*/
|
|
85
|
+
private rebuildAllRows;
|
|
86
|
+
/** Whether "All genes" draws anything: not switched off whole, nor every listed gene hidden. */
|
|
87
|
+
private anyOfAllGenesShown;
|
|
88
|
+
/** A gene of "All genes" in its colour by gene: its chosen one, else the palette's by code. */
|
|
89
|
+
private allGeneColorOf;
|
|
90
|
+
protected toggleAllGenesOpen(): void;
|
|
91
|
+
protected onAllGenesFilter(text: string): void;
|
|
61
92
|
protected toggleGeneGroup(name: string): void;
|
|
62
93
|
protected isGeneShown(gene: string): boolean;
|
|
63
94
|
protected areGenesShown(genes: string[]): boolean;
|
|
64
95
|
/** The eye toggle: hide or show genes without removing them from the selection. */
|
|
65
96
|
protected onGenesShown(genes: string[], on: boolean): void;
|
|
66
|
-
/** The root eye while every gene is
|
|
67
|
-
protected
|
|
97
|
+
/** The root eye while every gene is drawn: hide or show them all (the '±' leaves "All genes"). */
|
|
98
|
+
protected onAllGenesShown(on: boolean): void;
|
|
99
|
+
/** One gene's eye in the all-genes list. Showing one while all are off shows it alone. */
|
|
100
|
+
protected onAllGeneShown(gene: string, on: boolean): void;
|
|
68
101
|
protected onGeneColor(gene: string, hex: string): void;
|
|
69
102
|
protected openGeneStyle(event: Event, gene: string, panel: {
|
|
70
103
|
toggle(e: Event): void;
|
|
@@ -75,8 +108,6 @@ export declare class SpatialGeneTreeComponent implements OnChanges {
|
|
|
75
108
|
protected glyphPoints(glyph: TranscriptGlyphName): string;
|
|
76
109
|
protected glyphOf(gene: string, slot: number): TranscriptGlyphName;
|
|
77
110
|
protected onGlyph(gene: string, glyph: TranscriptGlyphName): void;
|
|
78
|
-
/** A typed hex colour, accepted as `#rrggbb` or `rrggbb`; anything else is ignored. */
|
|
79
|
-
protected onGeneHex(gene: string, text: string): void;
|
|
80
111
|
/** Back to the gene's default icon and colour (by its position in the list). */
|
|
81
112
|
protected resetGeneStyle(gene: string): void;
|
|
82
113
|
/** The colour gene `slot` is drawn in when transcripts are coloured by gene. */
|
|
@@ -89,6 +120,7 @@ export declare class SpatialGeneTreeComponent implements OnChanges {
|
|
|
89
120
|
name: string | null;
|
|
90
121
|
}) => string;
|
|
91
122
|
protected trackByLabelString: (_i: number, s: string) => string;
|
|
123
|
+
protected trackByAllRow: (_i: number, row: AllGeneRowView) => string;
|
|
92
124
|
/**
|
|
93
125
|
* The cluster colours, rebuilt only when what they come from changes. The template asks
|
|
94
126
|
* once per gene row per change-detection pass, and rebuilding per call made that O(G²).
|
package/lib/spatial-controls/spatial-observations-panel/spatial-observations-panel.component.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
2
3
|
import type { ISpatialControls } from '../../contracts/visualizer.contract';
|
|
3
4
|
import type { SpatialDataset } from '../../contracts/spatial-dataset.contract';
|
|
4
|
-
import { ColormapNode, SpatialViewState } from '../../contracts/display-types';
|
|
5
|
+
import { ColormapNode, SpatialViewState, TranscriptGlyphName } from '../../contracts/display-types';
|
|
5
6
|
import { SpatialSelectionMask } from '../../spatial/spatial-selection';
|
|
6
7
|
import { PanelOption } from '../../spatial/spatial-panel-model';
|
|
7
8
|
import type { GenePickerModel } from '../spatial-gene-picker';
|
|
@@ -45,6 +46,8 @@ export declare class SpatialObservationsPanelComponent implements OnChanges {
|
|
|
45
46
|
/** A legend row was clicked (see the key). */
|
|
46
47
|
readonly categoryClicked: EventEmitter<number>;
|
|
47
48
|
protected readonly clipOptions: PanelOption<[number, number]>[];
|
|
49
|
+
/** How several genes of the observation filter combine. */
|
|
50
|
+
protected readonly matchOptions: PanelOption<SpatialViewState['observationGenesMatch']>[];
|
|
48
51
|
/** Virtual-scrolled only past this many options (see the cells panel's gene dropdown). */
|
|
49
52
|
protected readonly geneVirtualScrollFrom = 200;
|
|
50
53
|
/** Colour-by column choices — "None" plus every column the dataset declares. */
|
|
@@ -62,6 +65,35 @@ export declare class SpatialObservationsPanelComponent implements OnChanges {
|
|
|
62
65
|
protected onColumn(name: string | null): void;
|
|
63
66
|
/** A gene was picked; it supersedes any column selection. */
|
|
64
67
|
protected onGene(name: string | null): void;
|
|
68
|
+
/** Genes picked for the observation filter; none draws every observation. */
|
|
69
|
+
protected onObservationGenes(genes: string[] | null): void;
|
|
70
|
+
protected onObservationGenesMatch(match: SpatialViewState['observationGenesMatch'] | null): void;
|
|
71
|
+
/** Whether the gene filter could not be applied (an expression read failed); one stream per
|
|
72
|
+
* `controls`, so the template's async pipe keeps its subscription. */
|
|
73
|
+
protected geneFilterFailed$: Observable<boolean>;
|
|
74
|
+
/** Ask for the picked genes' expression again (a failed read is not cached). */
|
|
75
|
+
protected retryGeneFilter(): void;
|
|
76
|
+
protected onObservationGenesColorBy(on: boolean): void;
|
|
77
|
+
protected removeObservationGene(gene: string): void;
|
|
78
|
+
protected isObservationGene(gene: string): boolean;
|
|
79
|
+
protected trackByGene(_i: number, gene: string): string;
|
|
80
|
+
/** The gene the icon and colour picker is open for. */
|
|
81
|
+
protected styleGene: string | null;
|
|
82
|
+
protected geneColorOf(gene: string): string;
|
|
83
|
+
protected geneGlyphOf(gene: string): TranscriptGlyphName;
|
|
84
|
+
protected glyphPointsOf(gene: string): string;
|
|
85
|
+
/** Open the picker on the gene's swatch. Inside the genes dropdown the click must not also
|
|
86
|
+
* reach the option, which would unpick the gene. */
|
|
87
|
+
protected openGeneStyle(event: Event, gene: string, panel: {
|
|
88
|
+
toggle(e: Event): void;
|
|
89
|
+
hide(): void;
|
|
90
|
+
}): void;
|
|
91
|
+
protected onGeneColor(gene: string, hex: string): void;
|
|
92
|
+
protected onGeneGlyph(gene: string, glyph: TranscriptGlyphName): void;
|
|
93
|
+
/** Back to the gene's default colour (its place in the list) and icon (a circle). */
|
|
94
|
+
protected resetGeneStyle(gene: string): void;
|
|
95
|
+
/** What the filter hides, in words. */
|
|
96
|
+
protected get geneFilterHint(): string;
|
|
65
97
|
/** Cell outlines on offer, which changes what the circles mean. */
|
|
66
98
|
protected get hasCells(): boolean;
|
|
67
99
|
/** True while a selection is active — everything else renders muted. */
|
package/lib/spatial-controls/spatial-transcripts-panel/spatial-transcripts-panel.component.d.ts
CHANGED
|
@@ -54,7 +54,13 @@ export declare class SpatialTranscriptsPanelComponent implements OnChanges {
|
|
|
54
54
|
readonly openChange: EventEmitter<boolean>;
|
|
55
55
|
/** Virtual-scrolled only past this many options (see the cells panel's gene dropdown). */
|
|
56
56
|
protected readonly geneVirtualScrollFrom = 200;
|
|
57
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Colourings on offer: "Cell type" only for a dataset with cell types. Rebuilt only when that
|
|
59
|
+
* changes, for the same reason as {@link transcriptModeOptions}.
|
|
60
|
+
*/
|
|
61
|
+
protected transcriptColorOptions: PanelOption<SpatialViewState['transcriptColorBy']>[];
|
|
62
|
+
/** Whether the dataset has a column naming each cell's type (see `cellTypeColumnFor`). */
|
|
63
|
+
protected hasCellTypes: boolean;
|
|
58
64
|
protected readonly glyphOptions: import("../../spatial/spatial-panel-model").GlyphOption[];
|
|
59
65
|
protected readonly budgetOptions: {
|
|
60
66
|
label: string;
|
|
@@ -117,8 +123,14 @@ export declare class SpatialTranscriptsPanelComponent implements OnChanges {
|
|
|
117
123
|
*/
|
|
118
124
|
protected onImportGeneGroups(input: HTMLInputElement): Promise<void>;
|
|
119
125
|
protected get estimatePercent(): number;
|
|
126
|
+
/** Whether the Observations gene filter is on, which limits the transcripts drawn. */
|
|
127
|
+
protected get observationsFiltered(): boolean;
|
|
120
128
|
protected get estimateOverMax(): boolean;
|
|
121
129
|
protected onTranscriptBudget(n: number): void;
|
|
130
|
+
/** The colouring in use: "Cell type" without cell types colours by gene (as the markers do). */
|
|
131
|
+
protected get transcriptColorShown(): SpatialViewState['transcriptColorBy'];
|
|
132
|
+
/** Genes of "All genes" hidden one by one (not the whole set switched off). */
|
|
133
|
+
protected get allGenesSomeHidden(): boolean;
|
|
122
134
|
protected onTranscriptColorBy(by: SpatialViewState['transcriptColorBy']): void;
|
|
123
135
|
protected onTranscriptScale(value: number | undefined): void;
|
|
124
136
|
protected onTranscriptOpacity(value: number | undefined): void;
|
|
@@ -33,6 +33,10 @@ export declare class VisualizerStore {
|
|
|
33
33
|
private defaultChannelStates;
|
|
34
34
|
/** The image the current channel states were derived for (see setImageMeta). */
|
|
35
35
|
private channelImageKey;
|
|
36
|
+
/** The channel info the host gave with the image (see setImageMeta), apart from what a tile
|
|
37
|
+
* descriptor added since: each adoption merges against this, so a later descriptor can change
|
|
38
|
+
* or clear what an earlier one put in. */
|
|
39
|
+
private hostChannelInfo;
|
|
36
40
|
private readonly grayscale$;
|
|
37
41
|
private readonly invert$;
|
|
38
42
|
private presetSet;
|
|
@@ -76,6 +80,20 @@ export declare class VisualizerStore {
|
|
|
76
80
|
* Editor) show µm²/mm² instead of px². No-op when neither axis is positive.
|
|
77
81
|
*/
|
|
78
82
|
setPhysicalPixelSize(mppX?: number, mppY?: number): void;
|
|
83
|
+
/**
|
|
84
|
+
* Fill in the channel names and tints the host's image meta left out, from the image's tile
|
|
85
|
+
* descriptor: the server reads them from the file (an OME-TIFF's channel names, such as Cytos's
|
|
86
|
+
* "Actin" or "Cell-Membrane"), where a host's metadata (jit-ui's `/metadata`) carries none, so
|
|
87
|
+
* the Channels pane showed "Channel 1", "Channel 2"… The host's own names and tints win; only a
|
|
88
|
+
* channel still showing its derived default takes the descriptor's, so an edit made in the pane
|
|
89
|
+
* stays. A no-op when the channel counts differ, or for RGB. Each adoption replaces the last
|
|
90
|
+
* one's names, tints and groups: only the host's own count as overrides.
|
|
91
|
+
*/
|
|
92
|
+
adoptChannelInfo(info: ReadonlyArray<{
|
|
93
|
+
name?: string;
|
|
94
|
+
color?: string;
|
|
95
|
+
group?: string[] | null;
|
|
96
|
+
}> | null | undefined): void;
|
|
79
97
|
/**
|
|
80
98
|
* Publish the current image's metadata and derive its channels.
|
|
81
99
|
*
|
|
@@ -90,6 +108,7 @@ export declare class VisualizerStore {
|
|
|
90
108
|
* - RGB (rgbChannels ≥ 3) → Red/Green/Blue;
|
|
91
109
|
* - multichannel fluorescence (channelCount > 1) → one channel per band,
|
|
92
110
|
* named/tinted from the server `channelInfo` when present, else a palette;
|
|
111
|
+
* only the first `DEFAULT_VISIBLE_CHANNELS` start visible (see `defaultChannelVisible`);
|
|
93
112
|
* - otherwise a single grayscale "Intensity" channel. */
|
|
94
113
|
private deriveChannels;
|
|
95
114
|
getChannelStates(): Observable<IChannelState[]>;
|