Skip to content

CC surface alignment + subsegment ordering#812

Merged
m-reuter merged 3 commits into
Deep-MI:fix-ltafrom
ClePol:fix-lta
May 12, 2026
Merged

CC surface alignment + subsegment ordering#812
m-reuter merged 3 commits into
Deep-MI:fix-ltafrom
ClePol:fix-lta

Conversation

@ClePol
Copy link
Copy Markdown
Member

@ClePol ClePol commented May 11, 2026

This PR contains two commits.

  1. Fixed corpus callosum surface alignment. The generated CC surfaces are now correctly mapped with the volume. This was previously not the case for the isolated visualization script. Both visualzation and main script also had a bug where an offset would be in the surface if the image size would differ after resampling to fsaverage resolution (i.e. the original image would have not the same world-size as fsaverage)

  2. In some cases CC subsegments labels were flipped in the segmentation output. This was due to an unreliable heuristic determining anterior and posterior segments in the contour.

Both changes were tested with a testsuite of 8 cases, with multiple resolutions, orientations and challenging anatomy using visual inspection and automated testing.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses two corpus callosum (CC) pipeline correctness issues: (1) surface export/visualization alignment (especially for Freeview inspection against orig.mgz when resampling changes volume geometry), and (2) occasional flipping of CC subsegment ordering due to an unstable left/right heuristic.

Changes:

  • Fix CC surface export alignment by converting mesh vertices into the voxel space of the volume whose header is stamped into the FreeSurfer surface (and using the appropriate orig geometry metadata).
  • Make CC mesh slab spacing deterministic for visualization/surface output via a fixed physical analysis width constant (CC_ANALYSIS_WIDTH_MM) and a helper to re-span contour positions.
  • Replace the raw “left-of-line” heuristic for subsegment masks with an anatomically anchored anterior/posterior side test.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
CorpusCallosum/shape/postprocessing.py Uses orig header for surface stamping; applies fixed-width contour spacing for mesh outputs; adds posterior-of-line logic for subsegment masks.
CorpusCallosum/shape/contour.py Introduces CC_ANALYSIS_WIDTH_MM default usage and adds contours_for_analysis_width() to standardize mesh slab spacing.
CorpusCallosum/fastsurfer_cc.py Replaces hard-coded 5mm slab assumptions with CC_ANALYSIS_WIDTH_MM; passes orig.header into mesh/surface writing path.
CorpusCallosum/data/constants.py Adds CC_ANALYSIS_WIDTH_MM constant to centralize the analysis slab width definition.
CorpusCallosum/cc_visualization.py Fixes visualization script mesh-to-surface alignment by deriving a reference header + RAS→voxel transform (via orig.mgz+cc_up.lta or upright.mgz) and converting vertices accordingly.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread CorpusCallosum/shape/postprocessing.py
Comment thread CorpusCallosum/cc_visualization.py
@ClePol
Copy link
Copy Markdown
Member Author

ClePol commented May 12, 2026

Ready for merge

@m-reuter m-reuter merged commit 52de5e8 into Deep-MI:fix-lta May 12, 2026
3 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