Init spatial#1064
Conversation
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Three spatial outlier filters (metric + outlier slide views and z-score histogram), shown only for spatial datasets; signed change column. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Canvas-handoff segmentation overlay + cached full-res tiles fed to Vega (no PNG round-trip), pure-Vega zoom/pan persisted to plot config, and spatial styling controls (segmentation opacity/outline, image toggle). Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
visium_hd runs fewer gem2s steps; use a matching step list (and clamp to 100%) so the bar isn't stuck below complete. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Hide doublet-score option for visium_hd, don't save embedding plots before they're computed, clone elbow data to avoid frozen-state writes, and keep preview tiles fixed-size; independent metric/outlier configs. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
|
New Issues (17)Checkmarx found the following issues in this Pull Request
Use @Checkmarx to interact with Checkmarx PR Assistant. |
📦 Next.js Bundle Analysis for uiThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
| Page | Size (compressed) |
|---|---|
global |
685.58 KB (🟡 +218 B) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
Fifteen Pages Changed Size
The following pages changed size from the code in this PR compared to its base branch:
| Page | Size (compressed) | First Load |
|---|---|---|
/data-management |
202.58 KB (🟡 +499 B) |
888.16 KB |
/experiments/[experimentId]/data-exploration |
1.48 MB (🟡 +17.65 KB) |
2.15 MB |
/experiments/[experimentId]/data-processing |
513.71 KB (🟡 +23.29 KB) |
1.17 MB |
/experiments/[experimentId]/plots-and-tables/dot-plot |
448.06 KB (🟡 +449 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/embedding-categorical |
446.63 KB (🟡 +458 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/embedding-continuous |
469.49 KB (🟡 +525 B) |
1.13 MB |
/experiments/[experimentId]/plots-and-tables/frequency |
448.04 KB (🟡 +450 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/marker-heatmap |
537.33 KB (🟡 +448 B) |
1.19 MB |
/experiments/[experimentId]/plots-and-tables/normalized-matrix |
140.65 KB (🟡 +455 B) |
826.23 KB |
/experiments/[experimentId]/plots-and-tables/spatial-categorical |
483.23 KB (🟢 -412.25 KB) |
1.14 MB |
/experiments/[experimentId]/plots-and-tables/spatial-feature |
490.09 KB (🟢 -407.98 KB) |
1.15 MB |
/experiments/[experimentId]/plots-and-tables/trajectory-analysis |
449.92 KB (🟡 +441 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/violin |
470.72 KB (🟡 +475 B) |
1.13 MB |
/experiments/[experimentId]/plots-and-tables/volcano |
452.51 KB (🟡 +433 B) |
1.11 MB |
/repository |
106.85 KB (🟡 +473 B) |
792.44 KB |
Details
Only the gzipped size is provided here based on an expert tip.
First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Drop the aspect-fit that shrank the plot within the box; full plots use the styling-panel dimensions and mini previews fill their fixed tile. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
SpatialViewerVitessce.jsx had no importers; drop it and the helpers only it used (offsetPolygons, filterPolygonsData, updateStatus, clearPleaseWait). Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Pull out parseColor, the bitmask rendering subsystem (LUTs + makeBitmaskLayer factory replacing 3 near-identical layers), and a shared useFocusCellColors hook for the duplicated focus/expression colouring. No behaviour change. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Remove the coordinateTransformations scale/translation branch and its helpers; the pipeline only writes v0.3 pyramids (no transforms). Keeps axesMetadata, still used for the channel axis. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Register the xenium_transcripts and molecules_pyramid file types, accept and validate transcripts.parquet as an optional input, and match the longest file suffix first so cells/cell_boundaries aren't shadowed. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Read points from the quadfeather molecule pyramid (bbox/gene filtered) over a range-reading ZipFileStore, plus its meta dictionary and colour lookup. Pulls in apache-arrow to parse the tile feathers. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Add the SpatialMolecules plot type, its initial config, the showMolecules viewer toggle, and gate the plot card behind a molecule-capable tech (Xenium). Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Configurable point-size range/step, optional axis offset and image toggle, and a keepValuesOnReset hook so a plot can preserve fields (sample/genes/colours) across a styling reset. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Per-gene molecule scatter plot read from the pyramid: gene selection with palette colours, segmentation-outline backdrop, and shared deck.gl axis/zoom chrome. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Add a Molecules layer toggle that, when a gene is plotted, draws its transcripts as points over neutral cell outlines in place of the per-cell expression fill. Adds a uniform-colour bitmask LUT and switches the feature scheme to purplered. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
loadMoleculeNodes(store, { genes }) resolves codes to per-gene Feather entries via
meta.json and range-reads only those, replacing the manifest/depth/budget walk that
read whole tile levels then filtered by feature_code. SpatialViewer + SpatialMolecule
plot drop the now-unused bbox. Renames molecules_pyramid -> molecules_by_gene.
The per-gene tiles are float32 + ZSTD-compressed Arrow bodies, so bump apache-arrow to
^21.1.0 (decodes LZ4/ZSTD IPC) and register fzstd as the ZSTD decoder (arrow ships the
framework but no codecs). Also fixes a stale spatialMolecules registration test.
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Each selected gene gets the first available Polychrome colour (resolveGeneColors): existing/picker colours are reserved so auto-assignment never duplicates them, and a removed gene's colour is freed so the next gene added reclaims it. Seeded colours are persisted so appending a gene never recolours the others. Replaces the pipeline-baked meta.color. Caps the plot at 15 genes. removeGene nulls the gene's colour rather than deleting the key: the componentConfig reducer deep-merges objects (only arrays are replaced), so a deleted key silently survives and the stale colour would resurface as an override on re-add. null is overwritten by the merge and treated as 'no colour' by the resolver. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
The segmentation outline is a viv MultiscaleImageLayer (view-dependent tile rendering). Added to the already-mounted uncontrolled deck once its loader resolved, it didn't draw until the first viewport change. Key the deck remount on the loader being ready so the layer is present in the initial render (and preserve the live camera via initialViewState so the remount doesn't reset an in-progress zoom). Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
The deck view stays y-down so the segmentation image + molecules keep their native orientation; only the axis LABELS change. Anchor the data extent's bottom-left corner at (0,0): x measured rightward from the left edge, y UPWARD from the bottom edge. Ticks are generated in this 0-based label space (then mapped back to world coords for positioning), so 0 is always a tick and the bottom-left reads (0,0) at any zoom. Positions are unchanged — nothing moves, the image is not expanded; PNG/SVG exports inherit it via the chrome model. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
📦 Next.js Bundle Analysis for uiThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
| Page | Size (compressed) |
|---|---|
global |
686.49 KB (🟡 +1.12 KB) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
New Page Added
The following page was added to the bundle from the code in this PR:
| Page | Size (compressed) | First Load |
|---|---|---|
/experiments/[experimentId]/plots-and-tables/spatial-molecules |
643.87 KB |
1.3 MB |
Seventeen Pages Changed Size
The following pages changed size from the code in this PR compared to its base branch:
| Page | Size (compressed) | First Load |
|---|---|---|
/data-management |
202.47 KB (🟡 +384 B) |
888.96 KB |
/experiments/[experimentId]/data-exploration |
1.51 MB (🟡 +42.5 KB) |
2.18 MB |
/experiments/[experimentId]/data-processing |
515.09 KB (🟡 +24.67 KB) |
1.17 MB |
/experiments/[experimentId]/plots-and-tables |
11.95 KB (🟡 +73 B) |
698.44 KB |
/experiments/[experimentId]/plots-and-tables/batch-differential-expression |
64.47 KB (-1 B) |
750.95 KB |
/experiments/[experimentId]/plots-and-tables/dot-plot |
448.19 KB (🟡 +583 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/embedding-categorical |
446.77 KB (🟡 +610 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/embedding-continuous |
469.65 KB (🟡 +684 B) |
1.13 MB |
/experiments/[experimentId]/plots-and-tables/frequency |
448.17 KB (🟡 +583 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/marker-heatmap |
537.45 KB (🟡 +570 B) |
1.2 MB |
/experiments/[experimentId]/plots-and-tables/normalized-matrix |
140.77 KB (🟡 +578 B) |
827.26 KB |
/experiments/[experimentId]/plots-and-tables/spatial-categorical |
485.58 KB (🟢 -409.89 KB) |
1.14 MB |
/experiments/[experimentId]/plots-and-tables/spatial-feature |
491.44 KB (🟢 -406.63 KB) |
1.15 MB |
/experiments/[experimentId]/plots-and-tables/trajectory-analysis |
450.05 KB (🟡 +577 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/violin |
470.84 KB (🟡 +602 B) |
1.13 MB |
/experiments/[experimentId]/plots-and-tables/volcano |
452.63 KB (🟡 +555 B) |
1.11 MB |
/repository |
106.73 KB (🟡 +345 B) |
793.22 KB |
Details
Only the gzipped size is provided here based on an expert tip.
First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.
Drop the unused per-gene colour-lookup chain (buildMoleculeColorLookup, colorForCode) the overlay never applied, and their tests. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
📦 Next.js Bundle Analysis for uiThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
| Page | Size (compressed) |
|---|---|
global |
686.49 KB (🟡 +1.12 KB) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
New Page Added
The following page was added to the bundle from the code in this PR:
| Page | Size (compressed) | First Load |
|---|---|---|
/experiments/[experimentId]/plots-and-tables/spatial-molecules |
643.65 KB |
1.3 MB |
Seventeen Pages Changed Size
The following pages changed size from the code in this PR compared to its base branch:
| Page | Size (compressed) | First Load |
|---|---|---|
/data-management |
202.47 KB (🟡 +384 B) |
888.96 KB |
/experiments/[experimentId]/data-exploration |
1.51 MB (🟡 +42.08 KB) |
2.18 MB |
/experiments/[experimentId]/data-processing |
515.09 KB (🟡 +24.67 KB) |
1.17 MB |
/experiments/[experimentId]/plots-and-tables |
11.95 KB (🟡 +73 B) |
698.44 KB |
/experiments/[experimentId]/plots-and-tables/batch-differential-expression |
64.47 KB (-1 B) |
750.95 KB |
/experiments/[experimentId]/plots-and-tables/dot-plot |
448.19 KB (🟡 +583 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/embedding-categorical |
446.77 KB (🟡 +610 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/embedding-continuous |
469.65 KB (🟡 +684 B) |
1.13 MB |
/experiments/[experimentId]/plots-and-tables/frequency |
448.17 KB (🟡 +583 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/marker-heatmap |
537.45 KB (🟡 +570 B) |
1.2 MB |
/experiments/[experimentId]/plots-and-tables/normalized-matrix |
140.77 KB (🟡 +578 B) |
827.26 KB |
/experiments/[experimentId]/plots-and-tables/spatial-categorical |
485.58 KB (🟢 -409.89 KB) |
1.14 MB |
/experiments/[experimentId]/plots-and-tables/spatial-feature |
491.44 KB (🟢 -406.63 KB) |
1.15 MB |
/experiments/[experimentId]/plots-and-tables/trajectory-analysis |
450.05 KB (🟡 +577 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/violin |
470.84 KB (🟡 +602 B) |
1.13 MB |
/experiments/[experimentId]/plots-and-tables/volcano |
452.63 KB (🟡 +555 B) |
1.11 MB |
/repository |
106.73 KB (🟡 +345 B) |
793.22 KB |
Details
Only the gzipped size is provided here based on an expert tip.
First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.
Reset preserves selectedGenes (keepValuesOnReset) and only flips useMarkerGenes off, so the plot data is unchanged and the main effect correctly skips refetching. Assert at most one getDotPlot call rather than exactly one. Signed-off-by: Alex Pickering <alexvpickering@gmail.com>
📦 Next.js Bundle Analysis for uiThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
| Page | Size (compressed) |
|---|---|
global |
686.49 KB (🟡 +1.12 KB) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
New Page Added
The following page was added to the bundle from the code in this PR:
| Page | Size (compressed) | First Load |
|---|---|---|
/experiments/[experimentId]/plots-and-tables/spatial-molecules |
643.65 KB |
1.3 MB |
Seventeen Pages Changed Size
The following pages changed size from the code in this PR compared to its base branch:
| Page | Size (compressed) | First Load |
|---|---|---|
/data-management |
202.47 KB (🟡 +384 B) |
888.96 KB |
/experiments/[experimentId]/data-exploration |
1.51 MB (🟡 +42.08 KB) |
2.18 MB |
/experiments/[experimentId]/data-processing |
515.09 KB (🟡 +24.67 KB) |
1.17 MB |
/experiments/[experimentId]/plots-and-tables |
11.95 KB (🟡 +73 B) |
698.44 KB |
/experiments/[experimentId]/plots-and-tables/batch-differential-expression |
64.47 KB (-1 B) |
750.95 KB |
/experiments/[experimentId]/plots-and-tables/dot-plot |
448.19 KB (🟡 +583 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/embedding-categorical |
446.77 KB (🟡 +610 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/embedding-continuous |
469.65 KB (🟡 +684 B) |
1.13 MB |
/experiments/[experimentId]/plots-and-tables/frequency |
448.17 KB (🟡 +583 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/marker-heatmap |
537.45 KB (🟡 +570 B) |
1.2 MB |
/experiments/[experimentId]/plots-and-tables/normalized-matrix |
140.77 KB (🟡 +578 B) |
827.26 KB |
/experiments/[experimentId]/plots-and-tables/spatial-categorical |
485.58 KB (🟢 -409.89 KB) |
1.14 MB |
/experiments/[experimentId]/plots-and-tables/spatial-feature |
491.44 KB (🟢 -406.63 KB) |
1.15 MB |
/experiments/[experimentId]/plots-and-tables/trajectory-analysis |
450.05 KB (🟡 +577 B) |
1.11 MB |
/experiments/[experimentId]/plots-and-tables/violin |
470.84 KB (🟡 +602 B) |
1.13 MB |
/experiments/[experimentId]/plots-and-tables/volcano |
452.63 KB (🟡 +555 B) |
1.11 MB |
/repository |
106.73 KB (🟡 +345 B) |
793.22 KB |
Details
Only the gzipped size is provided here based on an expert tip.
First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.



Description
adds support for Visium HD
Details
URL to issue
N/A
Link to staging deployment URL (or set N/A)
N/A
Links to any PRs or resources related to this PR
Integration test branch
master
Merge checklist
Your changes will be ready for merging after all of the steps below have been completed.
Code updates
Have best practices and ongoing refactors being observed in this PR
Manual/unit testing
Integration testing
You must check the box below to run integration tests on the latest commit on your PR branch.
Integration tests have to pass before the PR can be merged. Without checking the box, your PR
will not pass the required status checks for merging.
Documentation updates
Optional