Skip to content

CI TESTING - #24

Draft
psavery wants to merge 261 commits into
masterfrom
3.0
Draft

CI TESTING#24
psavery wants to merge 261 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 30 commits July 27, 2026 16:58
On an IC ptychography tomogram, features are only recognized as
"bright lines" from side views, so a 2-of-3 vote discarded nearly half
of the real detections. Default to a vote threshold of 1 and offset
the looser voting with a larger minimum component size. The default
prompt is dataset-dependent either way and usually needs a quick
per-dataset experiment; the docs now say so.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Both operators produce categorical label maps, so declare the output
port type accordingly: downstream nodes see a LabelMap port and the
volume sink applies its label-map rendering defaults.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Typing voxel indices was a poor proxy for SAM's click-first prompting,
and the quality of the seed is the main determinant of the result.
SAM2SeedWidget shows a slice of the input volume in the operator
dialog: left-click sets Seed X/Y, a slider drives Seed Z, the Z Axis
choice controls the slicing direction, the wheel zooms about the
cursor, and a right-drag pans. The widget embeds the standard
JSON-driven form rather than duplicating it, and the seed round-trips
through the existing seed_x/y/z parameters, so serialization and
external execution are unchanged. Point mode becomes the default
prompt mode, matching the new interaction (and the Python default).

Offscreen gtests cover the form embedding, click-to-voxel mapping,
slider/seed sync, axis switching, value restore, and zoom anchoring.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Applying an external executor now stores its environment path in
QSettings keyed by the operator's JSON name, and a node with no
configured executor starts with the remembered path prefilled. The
SAM 2 / SAM 3 conda environments (and any other external operator's)
only need to be picked once; a node's own configured path always wins
over the remembered one.

Also derive the env-path row's initial enabled state from the executor
combo rather than the node's executor type: a fresh externalOnly node
shows External selected but previously left the path row disabled.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Avoid a shared QApplication helper /proc/self/exe, which only works
on Linux.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
After the seeded object ends, the video tracker can reattach to other
bright objects, leaving phantom regions. Trim the mask below an
intensity floor and keep only the seed-connected component, both on by
default.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Render the seed slice through the volume's color transfer function and
observe its ModifiedEvent, so the dialog matches the main window's
colormap and follows edits live. Falls back to a grayscale stretch when
no ParaView session exists.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Replace seed_x/y/z with a single vector seed parameter so the three
spinboxes share one row, like Shift3D. Values saved under the old
parameter names fall back to the default seed.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
vtkVolume::RenderVolumetricGeometry() updates the mapper before its own
no-input check, so a visible but empty volume logs a spurious pipeline
error on every render. State load restored visibility ahead of the
threaded pipeline execution, which is where it showed up.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The buttons only refreshed on view changes, and port selection nulls
the active node, so they could latch disabled with no way back. Enable
them whenever a valid LUT is present, refresh on every setLUTProxy
call, and clear the proxy when the selection has no colormap.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
This allows components which have a very thin connection to be
labeled separately. It's an optional parameter.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
They were not being added or applied correctly, and label maps were
not resetting the range.

This should all work fine now.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Matching the main window's colormap called colorMap(), which creates one
when absent, leaving the input volume with an unrescaled default it never
had. Use it only if it already exists; otherwise fall back to grayscale.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Setting port data drives the sinks, so an externally-executed label map
was rendered through the upstream volume's colormap before its own
segmentation colormap existed: miscolored, with a GPU lookup table VTK
had to clamp. TransformNode::execute already does this for internal nodes.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
reimplement "Save Data" to be in line with the new pipeline
This appears to work now and is needed for security.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
add an interactive/raw json editor for node definition
Links the 17 operators with hand-written documentation to their section,
and converts the existing 2.x-style "page/#anchor" URLs to the
"page.html#anchor" form the Sphinx docs serve. The two that pointed at
anchors no longer present now target the generated operator reference.
Every URL was checked against a local docs build.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Restore the parameter form's description label, hide the Definition tab
for nodes with a custom parameters widget, reject clearing a description
down to "{}", and keep properties panels transparent inside the new
scroll area.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
The hard-coded version now wins over "git describe", which keeps
reporting 2.3.1 until the 3.0.0 tag exists. git still supplies the
commit suffix, and a newer tag still takes over the number.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Writes the script to a chosen .py file and the JSON description beside it
as <name>.json. Both come from the editor widgets, so unapplied edits are
included, and the description is validated first.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Windows refuses to delete or rewrite a file that is still open, so the
save-script test failed there on QFile::remove().
urlretrieve has no timeout, so a stalled download of the 649 MB chipset
fixture hung until CTest killed the test 25 minutes later. Read in blocks
with a 60 second socket timeout and let the existing retry loop handle it.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Add remaining changes for the 3.0 release
This just includes a couple of bug fixes which might be relevant
for us.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Update pybind11 to latest - 3.0.4
State loads reset the ParaView session but never re-registered the
restored views with the animation scene or time keeper, so animations
ticked without rendering. Also flush animation property writes and
relink the dialog's frame count spin box to the new scene.

Signed-off-by: Patrick Avery <patrick.avery@kitware.com>
Contour and slice ranges were only read on selection changes, so
they went stale whenever the pipeline produced new data. Track
executionFinished and rebuild a tab only when its range actually
changed, so user-entered values survive unrelated runs.

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