Skip to content

Synchronize dev with main - #29

Merged
kdiers merged 7 commits into
devfrom
main
Aug 12, 2026
Merged

kdiers merged 7 commits into
devfrom
main

Conversation

@kdiers

@kdiers kdiers commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

dependabot Bot and others added 7 commits July 21, 2026 17:52
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Wrap the mesh/profile/hull rendering calls in qcPlots() in try/except
so a rendering backend failure (e.g. kaleido 1.x requiring Chrome)
logs a warning and skips that image instead of aborting a successful
surface reconstruction run.

Fixes #24
…radation

Gracefully degrade QC plot rendering failures
kaleido>=1.0 dropped its bundled Chromium and now requires an external
Chrome/Chromium binary to render QC plots, which the Docker image did
not provide (Kaleido requires Google Chrome to be installed). Install
Chrome via plotly_get_chrome into a fixed, world-readable location and
point to it via BROWSER_PATH, since the image is meant to be run with
an arbitrary --user; also default HOME to a writable directory, since
Chrome needs a writable profile/user-data directory.

Verified by building the image from this Dockerfile and running the
full pipeline (mesh/profile/hull QC stages) both as root and as an
arbitrary non-root --user, producing valid PNGs in all three cases
with no warnings.

Refs #24
Segmentations at ~1 mm rather than the ~0.33 mm this method is designed
for fail checkSurface with "Surface contains holes", which sends users
toward manual editing even though the segmentation is usually fine. The
mask filters are parameterised in voxels, not mm, so their physical
strength scales with the input voxel size.

- Warn at startup when the input voxel edge length exceeds a threshold,
  and for --lut freesurfer additionally point out the .FSvoxelSpace.
  variant, which is the common way to hit this.
- Add the voxel size to the "Surface contains holes" message when the
  input is coarse, so the error itself suggests checking the resolution
  before editing the segmentation.
- Log when --upsample is a no-op, which it silently is for isotropic
  input, since reaching for it is the natural response to the error.
- Document the two FreeSurfer output files and the resolution
  dependency in the tutorial and documentation.

Refs #25
Per review feedback, split the single voxel-size warning into two
independent checks: coarseness (min voxel edge > threshold, expect
failures regardless of --upsample) and anisotropy (voxels unequal,
--upsample recommended). checkSurface's gate is updated to match the
coarseness definition (min-based instead of max-based).
Warn about coarse input voxel size and clarify resolution requirements
@kdiers
kdiers merged commit eebbd0c into dev Aug 12, 2026
36 checks passed
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