Skip to content

CI TESTING#24

Draft
psavery wants to merge 226 commits into
masterfrom
3.0
Draft

CI TESTING#24
psavery wants to merge 226 commits into
masterfrom
3.0

Conversation

@psavery

@psavery psavery commented Jun 1, 2026

Copy link
Copy Markdown
Owner

No description provided.

psavery and others added 27 commits June 23, 2026 11:24
Previously, the dialog pop-ups, including the operator dialogs, could
show up behind the main window, or if you click the main window they
would move behind the main window. This is kind of annoying - the pop-up
dialogs should remain in front.

This adds a utility function that is utilized, as well as setting parents
correctly in all of the dialogs, that fixes the issue.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
massive rip out of the legacy tomviz pipeline components
fix reentrant histogram LUT rebuild crashing color-map rescale
Instead of mentioning the environment variable, mention the UI element.
The environment variable can be confusing since it automatically overrides
whatever is in the UI.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Export NvOptimusEnablement and AmdPowerXpressRequestHighPerformance
from the executable so NVIDIA and AMD drivers pick the discrete GPU
instead of the power-saving integrated one on hybrid laptops.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Push() ignored the image origin when converting the plane center to a
slice index, and pick points were mapped with the forward display
transform instead of its inverse. Dragging the slice arrow on a volume
with a nonzero origin, or one moved or rotated in the scene, made the
plane jump to a volume face or leave the volume entirely.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Crop keeps the vtkExtractVOI output extent, which starts at the crop
minimum rather than zero. SetSliceIndex() and GetSliceIndex() assumed
a zero extent minimum while SetPlaneOrientation() and the sinks are
extent-aware, so slicing a cropped volume placed the plane outside it.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Loading a state file left ports on the app-default medium because
the saved InMemory mode is omitted. Persistence changes and transient
data drops also emitted no signals, leaving stale port badges.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
We actually don't need the transpose because the output is already
how tomviz expects it.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The modeless dialog held a raw Node pointer, so deleting the node
while the dialog was open left OK/Apply dereferencing freed memory
and crashing in markStale(). Close the dialog on nodeRemoved and
hold the node in a QPointer so the pointer can never dangle.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
RescaleTransferFunction operates on the proxy property, which still
contained the placeholder nodes spanning the full data range, making
Reset a no-op and Auto compress the window. Sync the stripped client
state first, and match ImageJ's auto-threshold progression.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
better link selection and other quality of life improvements
Target the scroll area and container by name so the strip's context
menus keep native rendering, and use stable_sort so keyboard
navigation order is deterministic on ties.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This is important to fix an issue where a different version of h5py was
being imported from the user site-packages directory, which was causing
tomviz to crash.

Also delay trying to import ptycho and pyxrf until the user triggers the
action.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This explains how to maintain pyxrf-utils

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Operators whose dependencies (e.g. PyTorch) can never be imported in
the application environment can declare "externalOnly": true in their
JSON description. Fresh nodes then default to the External executor,
the editor disables the Internal choice, and a missing environment is
reported with an actionable message instead of a console warning.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Add a built-in, external-only operator that segments a 3D volume with
Meta's SAM 2 by propagating a seed-slice prompt along the Z axis. The
conda environment files it needs ship under share/tomviz/environments,
and a guarded import reports full setup instructions when sam2 is
missing. Model checkpoints are user-downloaded, not bundled.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Add a built-in, external-only operator that segments a 3D volume with
Meta's SAM 3 from a text prompt: per-axis slice inference, majority
voting, and connected-component stitching into an instance label map.
Inference is CUDA-only; the gated ~3.5 GB checkpoint is user-downloaded
from HuggingFace, and the conda environment file ships with Tomviz.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants