ENH: Ingest ITKMontage remote module into Modules/Registration/Montage#6103
Open
hjmjohnson wants to merge 540 commits intoInsightSoftwareConsortium:mainfrom
Open
ENH: Ingest ITKMontage remote module into Modules/Registration/Montage#6103hjmjohnson wants to merge 540 commits intoInsightSoftwareConsortium:mainfrom
hjmjohnson wants to merge 540 commits intoInsightSoftwareConsortium:mainfrom
Conversation
Fix unused variable warning. Fixes: ``` Modules/Remote/Montage/include/itkMaxPhaseCorrelationOptimizer.hxx:305:10: warning: unused variable 'confidenceFactor' [-Wunused-variable] ``` raised at: http://testing.cdash.org/viewBuildError.php?type=1&buildid=5914663
…UnusedVariableWarning COMP: Fix unused variable warning
If on-disk images have non-unit spacing, this is correctly passed to the montaging classes. This uncovers some bugs regarding proper spacing support.
ITK does not have proper support for spacing specification in PNG. sCAL chunk is supported, pHYs chunk is not, see discussion https://itk.org/pipermail/insight-users/2012-December/046756.html and proposed patch https://review.source.kitware.com/%23/c/8884/ So we keep unit spacing for some of the tests using PNG input images.
If there was an empty line in a file with CRLF line endings it would cause a crash. This was due to CR character being removed after emptiness was checked.
This can cause ratio to be greater than 1.0, causing sine to be NaN, resulting in NaN being peak index and thus translation, potentially ruining the whole montage.
…dates Minor updates
"Ground truth" taken from MIST.
Move synthetic, numerous and other outputs which are not usually examined by hand into a sub-directory. Removing the word Test from test names. That makes the tests shorter and easier to distinguish.
…rovements Test improvements
* use Eigen (built into ITK) * computing the positions works * calculated residuals * outlier removal * use alternative registration candidates * reduce weight instead of eliminate equations * calculate outlier scores based on standard deviation * use zero-mean standard deviation for outlier score * use outlierScore in cost calculation * nudge towards zero * use outlier detection on translations instead of positions * score is an outlier only if it deviates by more than 3 * reducing amount of debug output using #ifndef NDEBUG * tweaking parameters * cleaning up debugging output * exposing outlier detection thresholds
Co-authored-by: Matt McCormick <matt@mmmccormick.com>
…acro Added two new macro's, intended to replace the old 'itkTypeMacro' and 'itkTypeMacroNoParent'. The main aim is to be clearer about what those macro's do: add a virtual 'GetNameOfClass()' member function and override it. Unlike 'itkTypeMacro', 'itkOverrideGetNameOfClassMacro' does not have a 'superclass' parameter, as it was not used anyway. Note that originally 'itkTypeMacro' did not use its 'superclass' parameter either, looking at commit 699b66c, Will Schroeder, June 27, 2001: https://github.com/InsightSoftwareConsortium/ITK/blob/699b66cb04d410e555656828e8892107add38ccb/Code/Common/itkMacro.h#L331-L337
For the sake of code readability, a new 'CoordinateType' alias is added for each nested 'CoordRepType' alias. The old 'CoordRepType' aliases will still be available with ITK 6.0, but it is recommended to use 'CoordinateType' instead. The 'CoordRepType' aliases will be removed when 'ITK_FUTURE_LEGACY_REMOVE' is enabled. Similarly, 'InputCoordinateType', 'OutputCoordinateType', and 'ImagePointCoordinateType' replace 'InputCoordRepType', 'OutputCoordRepType', and 'ImagePointCoordRepType', respectively.
…Consortium/use-CoordinateType General code style and CI update for ITK 5.4.2
Montage/include/itkPhaseCorrelationOptimizer.h: In static member
function ‘static const
std::initializer_list<itk::PhaseCorrelationOptimizerEnums::PeakInterpolationMethod>
itk::PhaseCorrelationOptimizerEnums::AllPeakInterpolationMethods()’:
Montage/include/itkPhaseCorrelationOptimizer.h:64:12: warning: returning
local ‘initializer_list’ variable ‘methods’ does not extend the lifetime
of the underlying array [-Winit-list-lifetime]
64 | return methods;
| ^~~~~~~
Montage/include/itkPhaseCorrelationOptimizer.h:57:58: note: declared
here 57 | const std::initializer_list<PeakInterpolationMethod>
methods{
| ^~~~~~~
dzenanz
approved these changes
Apr 22, 2026
Member
dzenanz
left a comment
There was a problem hiding this comment.
Mostly looks good. Thank you for working on this Hans.
Member
|
Some ghostflow messages reminded me that we might want to convert references to BibTeX format introduced somewhat recently. |
dc06091 to
0a7a33a
Compare
Contributor
|
Too many files changed for review. ( |
aa4104b to
be308ba
Compare
dzenanz
reviewed
Apr 23, 2026
| restore-keys: | | ||
| ccache-v4-${{ runner.os }}-${{ matrix.name }}- | ||
|
|
||
| - name: Restore ExternalData object store |
Member
There was a problem hiding this comment.
This commit seems unrelated to Montage ingestion.
Member
There was a problem hiding this comment.
Of course, remove from here after testing.
| MODULE_COMPLIANCE_LEVEL 2 | ||
| GIT_REPOSITORY https://github.com/InsightSoftwareConsortium/ITKPerformanceBenchmarking.git | ||
| GIT_TAG 7950c1d76095033edbf7601a925cdacc2fe717f9 | ||
| GIT_TAG 63fec3013cccfe7e8b1b88a1d2d889f7e64e4469 |
Member
There was a problem hiding this comment.
Also unrelated to Montage. This should be a separate PR.
Brings Montage from a configure-time remote fetch into the ITK source tree at Modules/Registration/Montage/ using the v3 whitelist filter-repo pipeline. Upstream repo: https://github.com/InsightSoftwareConsortium/ITKMontage.git Upstream tip: f2ba56b24c81a0ac61639d349688d26673a65f73 Ingest date: 2026-04-24 Whitelist passes (git filter-repo): - --path include --path src --path test --path wrapping - --path CMakeLists.txt --path itk-module.cmake - --to-subdirectory-filter Modules/Registration/Montage - --prune-empty always - (if present) second pass: invert CTestConfig.cmake Outcome: 697 upstream commits -> 532 surviving; 20 distinct authors preserved; git blame walks across the merge boundary to original authors. Content-link inventory: .md5=0 .shaNNN=0 .cid=558 Primary author: Dženan Zukić <dzenan.zukic@kitware.com> Co-authored-by: Darren Thompson <darrent1974@users.noreply.github.com> Co-authored-by: Dzenan Zukic <dzenan.zukic@kitware.com> Co-authored-by: Francois Budin <francois.budin@kitware.com> Co-authored-by: haaput <haaput@instem> Co-authored-by: Hans J. Johnson <hans-johnson@uiowa.edu> Co-authored-by: Hans Johnson <hans.j.johnson@gmail.com> Co-authored-by: Hans Johnson <hans-johnson@uiowa.edu> Co-authored-by: Joey Kleingers <joey.kleingers@bluequartz.net> Co-authored-by: Jon Haitz Legarreta Gorroño <jon.haitz.legarreta@gmail.com> Co-authored-by: Luis Ibanez <luis.ibanez@kitware.com> Co-authored-by: Mathew J. Seng <mathewseng@gmail.com> Co-authored-by: Mathew Seng <mathewseng@gmail.com> Co-authored-by: Matt McCormick <matt.mccormick@kitware.com> Co-authored-by: Matt McCormick <matt@mmmccormick.com> Co-authored-by: Matt McCormick (thewtex) <matt@mmmccormick.com> Co-authored-by: Michael Jackson <mike.jackson@bluequartz.net> Co-authored-by: tabish <tabish@instem> Co-authored-by: Tom Birdsong <40648863+tbirdso@users.noreply.github.com> Co-authored-by: Tom Birdsong <tom.birdsong@kitware.com>
The upstream itk-module.cmake does `file(READ "${MY_CURRENT_DIR}/README.md"
DOCUMENTATION)` to populate the module description. The whitelist-based
ingest excludes README.md from the ingested tree, so the READ fails at
configure time. Replace with an inline `set(DOCUMENTATION ...)` that
gives Doxygen enough context without depending on any non-whitelisted
file.
Also dropped the commented-out `ITKIOHDF5` line and inline comments that
only made sense in the standalone upstream repo.
Upstream ITKMontage's CMakeLists.txt files predate the ITK gersemi pre-commit hook. Reformat the four ingested files to satisfy .gersemi.config (0.19.3): expand itk_add_test() arg lists, normalize command case, flatten short set() calls. No functional change.
Two pre-commit issues in the ingested Montage test/Input tree: 1. Seven `_meta.xml` files (57 KB to 3 MB) are upstream-archive metadata dumps from the EM-imaging capture tool. No test references them (grep across test/*.cxx is clean). They rode in via the whitelist but serve no in-tree purpose, and four exceed ITK's 100 KB large- file threshold enforced by kw-pre-commit. Deleted. 2. Two tiny `_readme.txt` files (`NoisyTiles/`, `Tiles/`) carried human-readable dataset provenance but lacked a trailing newline. Appended `\n` so `end-of-file-fixer` passes. Archival provenance for the deleted `_meta.xml` files remains in the upstream repository; nothing in-tree depends on them.
Advance the remote-module GIT_TAG from 7950c1d76095 (2024-era) to
63fec3013cccfe7e8b1b88a1d2d889f7e64e4469, the current tip of
InsightSoftwareConsortium/ITKPerformanceBenchmarking master
(2026-04-23), which includes:
- 63fec301 COMP: Drop unused InputPixelType typedefs in
CopyIterationBenchmark
- b24324f9 COMP: Use ITK default branch origin/main in ASV config
and docs
- ddeb770b ENH: Convert from md5 to .cid tags
- 41bf1b9c BUG: Harden CopyIterationBenchmark to not crash on ITK
1d87efa+ regression
- cf89d96e ENH: Add ASV-over-native-ITK performance benchmark harness
Carries the new asv-native harness, the ITK-main-branch asv config,
the md5-to-.cid data-link migration, and the -Wunused-local-typedefs
cleanup.
be308ba to
cb456a6
Compare
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.
Second representative case study for the whitelist-based remote-module ingest tooling (after AnisotropicDiffusionLBR in #6093, tooling from #6098 — both merged). Brings the ITKMontage phase-correlation / mosaic-stitching module in-tree under
Modules/Registration/Montage, migrates its content-links to CID, and bumps the PerformanceBenchmarking remote-module pin to current upstream.Re-ingested 2026-04-23 on top of current
upstream/main(no longer stacks on #6109).Merge-blocker: Montage CID blob upload is still outstanding (CIDs are in-tree but blobs aren't reachable on any ExternalData mirror; Pixi-Cxx will 404 until that's done).
Commit stack (top → bottom)
The previous .sha512→.cid migration commit became empty after re-ingest because upstream
ITKMontagenow provides.cidfiles directly (its commit794db52b77 ENH: Convert from md5 to .cid tags.is included in the ingested merge).CID migration status (MERGE BLOCKER)
Modules/Registration/Montage/test/Input/are.cidfiles (now provided directly by upstream).ITKTestingDatamirror return HTTP 404. Blobs have not yet been pushed. Pixi-Cxx will keep failing with the "9 mirrors all 404" pattern until this is done.Required before merge:
PerformanceBenchmarking pin bump
Modules/Remote/PerformanceBenchmarking.remote.cmakeGIT_TAGadvanced from7950c1d76095(~2024) to63fec3013cccfe7e8b1b88a1d2d889f7e64e4469(upstream master tip, 2026-04-23). Brings in:cf89d96eENH: ASV-over-native-ITK performance benchmark harness41bf1b9cBUG: Harden CopyIterationBenchmark against ITK 1d87efa+ regressionddeb770bENH: Convert from md5 to .cid tagsb24324f9COMP: Use ITK default branch origin/main in ASV config and docs63fec301COMP: Drop unusedInputPixelTypetypedefs in CopyIterationBenchmarkThe asv CI (PR #612, which consumes this remote module) is separately blocked on
ddeb770b's blob upload. The Montage side of this PR is independent.What is intentionally NOT ingested (Montage)
Excluded by the whitelist:
examples/— applied demonstration code + sample datasets. Stays in the archived upstream; selected examples may relocate to top-levelExamples/in a follow-up PR.LICENSE— ITK's own Apache 2.0 license covers the in-tree module.pyproject.toml,requirements.txt— standalone-repo packaging.CTestConfig.cmake— pointed at a standalone CDash project that no longer applies in-tree..github/workflows/— upstream CI config; ITK's in-tree CI covers the module.See
Modules/Registration/Montage/README.mdfor the full rationale.Post-merge follow-ups
InsightSoftwareConsortium/ITKMontagethat (a) deletes the whitelisted files, (b) addsMIGRATION_README.mdpointing at ITK in-tree, (c) states intent to archive.examples/content worth keeping into top-levelExamples/.