CC surface alignment + subsegment ordering#812
Merged
Conversation
Contributor
There was a problem hiding this comment.
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
origgeometry 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.
Member
Author
|
Ready for merge |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains two commits.
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)
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.