Skip to content

ENH: Ingest ITKParabolicMorphology into Modules/Filtering#6260

Merged
hjmjohnson merged 199 commits into
InsightSoftwareConsortium:mainfrom
hjmjohnson:ingest-ParabolicMorphology
May 13, 2026
Merged

ENH: Ingest ITKParabolicMorphology into Modules/Filtering#6260
hjmjohnson merged 199 commits into
InsightSoftwareConsortium:mainfrom
hjmjohnson:ingest-ParabolicMorphology

Conversation

@hjmjohnson
Copy link
Copy Markdown
Member

Ingests ITKParabolicMorphology into Modules/Filtering/ParabolicMorphology/ via the v4 two-phase pipeline (#6204). Stacked on ingest-strategy-v4; rebases cleanly onto main once #6204 lands. Tracking: #6160.

What landed

Modules/Filtering/ParabolicMorphology/ with include/, test/, wrapping/, CMakeLists.txt, itk-module.cmake, README.md. Mode-A --no-ff --allow-unrelated-histories merge preserves 33 merges + 164 non-merge commits from upstream (git blame walks back to Richard Beare and other historical contributors).

Follow-up commits (per INGESTION_STRATEGY_v4.md):

Commit Purpose
DOC: Add ParabolicMorphology README pointing at upstream Module landing page + migration note
COMP: Remove ParabolicMorphology .remote.cmake (in-tree) Drop remote-module configure-time fetch
ENH: Enable Module_ParabolicMorphology in configure-ci Add to pyproject.toml CI matrix

Pre-submission review applied (4 additional commits):

Commit Issue addressed
DOC: Add Beare 2008 IJ reference to README Citation needed stable URL → IJ handle 1926/1370
COMP: Restore DESCRIPTION and add maintainer in itk-module.cmake Module description carried over from .remote.cmake; replace stale upstream comment block
ENH: Add Python wrapping for binary filters 4 missing .wrap files (BinaryClose/Dilate/Erode/OpenPara) + Sharpening added to WRAPPER_SUBMODULE_ORDER
STYLE: Remove unused IJMacros.txt scaffolding Insight Journal artifact, never referenced in test/CMakeLists.txt
STYLE: Rename Binary*Para to Binary*Parabolic Public API naming consistency with sibling Parabolic*ImageFilter classes
Local verification
  • pre-commit run --all-files — ✅ clean
  • pixi run -e cxx configure-ci — ✅ Module_ParabolicMorphology:BOOL=ON
  • cmake --build build -j10 — ✅ 350/350 targets after rename, 1084/1084 from full build
  • ctest -R "Para|Parabolic" -j4 — ✅ 20/20 ParabolicMorphology tests pass (2 meta + 18 computational across erode / dilate / open / close / sharpen / DT / spacing / binary morphology)

Topology check: git rev-list --merges upstream/main..HEAD = 33 merges preserved (no linearization per feedback_ingest_merge_topology).

Phase B follow-up (deferred until this PR merges)

After merge, the standalone upstream archival is published via:

Utilities/Maintenance/RemoteModuleIngest/archive-remote-module.sh ParabolicMorphology

This runs the deletion commit on the upstream ITKParabolicMorphology repo, promotes MIGRATION_README.mdREADME.md (per feedback_ingest_archive_readme.md), and flips archived=true. Gated on this PR landing per the v4 strategy.

glehmann and others added 30 commits November 9, 2005 23:27
darcs-hash:20051109122716-2fc9d-acb27dbff3dc34f3fbd2fc8cb97a131115267015.gz
darcs-hash:20051109131808-2fc9d-bda793d1f6d093383391578ab1c9190a3dc5c433.gz
darcs-hash:20051109132011-2fc9d-7679cc77ecd65e27e5cf37066d1d752b81a40161.gz
darcs-hash:20051109132233-2fc9d-315108934bf2954cd94e927ca46159eff911f492.gz
darcs-hash:20051109202401-2fc9d-20efe8d390feba8f9cb800a162639e5138f81042.gz
darcs-hash:20051109203041-2fc9d-f48fd76e0608a3b1cb403c37f4bf5ae2cc602046.gz
darcs-hash:20051109203242-2fc9d-483e94e9f2c525b9158fbc5536df82c13e5f68ac.gz
darcs-hash:20051109203654-2fc9d-c1a55843ff51b11e66c479d4448f5adf4c9c0174.gz
darcs-hash:20051121102604-2fc9d-e7d217544f07bdc56d59a97b12447138bbe63367.gz
darcs-hash:20051229172925-2fc9d-e44c67bb82cf94aed7d4aa50f252771ba352994c.gz
darcs-hash:20051229173159-2fc9d-ad652881b1c2926f6b88b19d37043e6bcb8b15e2.gz
darcs-hash:20060118155157-2fc9d-7c0bf62f4b97729564aaaa6315de7e025b0dff6d.gz
darcs-hash:20060130114001-2fc9d-4284e491de9dc2e195efdf3c34857f2b1c3ea7f5.gz
darcs-hash:20060130114252-2fc9d-616afd60eac3ecb7f4bca7e62b977cef636c8d64.gz
darcs-hash:20060313211001-2fc9d-c274c1221639324944b9181033327abc4a26d46e.gz
darcs-hash:20060313211841-2fc9d-f3f644c13719c470df5ced82474f783a6338a257.gz
darcs-hash:20070719124051-2fc9d-2ed957c0a30670f0a25f35130893bfcee76a93e0.gz
darcs-hash:20071016023313-fafb9-6b618b217687b06e15d28c95a57841e1b6fe313d.gz
darcs-hash:20071018022319-fafb9-6ba31a630281c4f507ab1641154b5cc34b6615c7.gz
darcs-hash:20070227143716-2fc9d-0e4eaae030f1fb2523fdd328975b536b53a0f9d0.gz
darcs-hash:20071019202737-2fc9d-cf809ce7b480aec8389644b5dedc1e276b43918f.gz
darcs-hash:20071115005618-fafb9-849f9d3c4e6fa1f4d3e373578428b24fdff3b284.gz
darcs-hash:20071210032255-fafb9-bf67e0e1f84bf6970b2c24cf0d08e61d963b9f83.gz
darcs-hash:20080101104633-fafb9-07162096bea8fb67cb98a94c45d36d197db59177.gz
darcs-hash:20080103112216-fafb9-30dda179bfd5313bd05a6fff8d662c3ceaac11c6.gz
darcs-hash:20080105102549-fafb9-d53a3a204e68c8f3c99c05d8e33b2c5c122baf01.gz
darcs-hash:20080217230221-fafb9-e2bc1ff1bd782df5479bbee817d0b36e8f8c2a3f.gz
darcs-hash:20080218023315-fafb9-5905d42ee6dfe0d77e3253408d57187c32bff033.gz
darcs-hash:20080218052634-fafb9-831283dc79fe86a5384589dce479c608d155d76c.gz
darcs-hash:20080906230217-fafb9-e43a83bcd898a382866783bb189664a36b1f035d.gz
N-Dekker and others added 5 commits August 16, 2024 13:47
Addressed compile time warnings, as observed by Richard Beare,
InsightSoftwareConsortium/ITKParabolicMorphology#48 (comment)

For the record, the first unused `count` variable appears introduced in
itkParabolicMorphUtils.h with commit 5f61892,
"almost working version of intersection algorithm...", 29 February 2012.
…move-unused-count-variables

STYLE: Remove unused local `count` variables from `doOneDimension`
…mberOfRows-only-for-CurrentDimensi

on

STYLE: Compute numberOfRows only for the current dimension
ProcessObject::MultiThreaderType is deprecated. Use
itk::MultiThreaderBase directly to silence -Wdeprecated-declarations
warnings that cause the CTest dashboard to report build failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…wareConsortium/update-ci-v5.4.6

COMP: Update ITKRemoteModuleBuildTestPackageAction to v5.4.6
@github-actions github-actions Bot added type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots type:Enhancement Improvement of existing methods or implementation area:Python wrapping Python bindings for a class type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct area:Filtering Issues affecting the Filtering module area:Remotes Issues affecting the Remote module labels May 12, 2026
@hjmjohnson hjmjohnson marked this pull request as ready for review May 12, 2026 18:40
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 12, 2026

Greptile Summary

This PR ingests the ITKParabolicMorphology remote module into Modules/Filtering/ParabolicMorphology/ via the v4 two-phase pipeline, preserving the full upstream git history (33 merges + 164 commits). The ingest tooling (ingest-module-v4.sh, sanitize-history.py) also receives several improvements to handle new sanitization cases.

  • Module landing: 30 C++ headers/implementation files, 11 Python wrapping descriptors, a test/ tree with 20 passing tests, and itk-module.cmake with correct dependencies; the ParabolicMorphology.remote.cmake remote fetch descriptor is removed and CI is updated via pyproject.toml.
  • Tooling improvements: sanitize-history.py gains patch_drop_module_scaffolding to strip itk_module_examples(), cmake_policy(…), and doc-build option/if blocks; hash sidecar files are now allowed through universal text fixers to gain a trailing newline; ingest-module-v4.sh adds deny-passes for editor backup files and LICENSE/COPYING files.

Confidence Score: 4/5

The module code itself is well-tested (20/20 tests pass) and the CMake wiring is correct; the small issues are cosmetic carry-overs from upstream and a regex edge case in the ingestion tooling.

The ingested module code is functionally sound and all 20 tests pass. The two noteworthy items are: a lazy regex in _DOC_IF_BLOCK_RE that could leave malformed CMake if a doc-build block contains nested conditionals (affects future ingestions, not this one), and the unconditional stripping of LICENSE/COPYING files without any operator warning (relevant for future non-Apache-2.0 ingestions). The duplicate includes and wrong Doxygen brief are pure style carry-overs with no runtime impact.

Utilities/Maintenance/RemoteModuleIngest/sanitize-history.py (lazy-match regex) and ingest-module-v4.sh (silent LICENSE stripping) warrant a second look before the next wave of ingestions.

Important Files Changed

Filename Overview
Modules/Filtering/ParabolicMorphology/itk-module.cmake New in-tree module declaration with correct DEPENDS, TEST_DEPENDS, EXCLUDE_FROM_DEFAULT, and a static DESCRIPTION with DOI link; replaces the stale remote-module scaffolding.
Modules/Filtering/ParabolicMorphology/include/itkParabolicErodeDilateImageFilter.hxx Core threaded erode/dilate implementation; uses legacy DynamicMultiThreadingOff + custom SplitRequestedRegion. Functionality is correct; contains commented-out debug code and an #if 1 guard around standard overrides (cosmetic carry-over from upstream).
Modules/Filtering/ParabolicMorphology/include/itkBinaryDilateParabolicImageFilter.h Header for the binary dilation filter; Doxygen brief incorrectly says "erosion operation" instead of "dilation operation" — copy-paste error from the erode header carried in from upstream.
Modules/Filtering/ParabolicMorphology/include/itkBinaryDilateParabolicImageFilter.hxx Implementation for binary dilation; has a duplicate #include "itkProgressAccumulator.h" (same in Erode/Close/Open hxx files) carried from upstream, harmless due to guards but should be cleaned up.
Utilities/Maintenance/RemoteModuleIngest/sanitize-history.py Adds patch_drop_module_scaffolding (itk_module_examples, cmake_policy, doc-build blocks) and fixes is_skip_content to allow hash sidecars to receive trailing-newline fixup. The _DOC_IF_BLOCK_RE lazy match may incorrectly stop at a nested endif inside doc-build blocks, leaving malformed CMake.
Utilities/Maintenance/RemoteModuleIngest/ingest-module-v4.sh Adds deny-passes for editor backup files (*~), and unconditionally strips LICENSE/COPYING files from ingested history without any warning — safe for Apache-2.0 modules but could silently drop attribution for future modules with different licenses.
Modules/Filtering/ParabolicMorphology/wrapping/CMakeLists.txt Wrapping entry point listing all 11 filters in correct dependency order with itk_wrap_module/itk_end_wrap_module bookends; newly added binary filters are properly appended.
Modules/Remote/ParabolicMorphology.remote.cmake Remote-module fetch descriptor correctly deleted now that the module is ingested in-tree.
pyproject.toml Adds -DModule_ParabolicMorphology:BOOL=ON to the configure-ci CMake invocation so the module is built and tested in CI.

Reviews (1): Last reviewed commit: "STYLE: Rename Binary*Para to Binary*Para..." | Re-trigger Greptile

Comment thread Utilities/Maintenance/RemoteModuleIngest/sanitize-history.py Outdated
Comment thread Utilities/Maintenance/RemoteModuleIngest/ingest-module-v4.sh
Copy link
Copy Markdown
Member

@dzenanz dzenanz left a comment

Choose a reason for hiding this comment

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

Mostly looks good.

Comment thread Modules/Filtering/ParabolicMorphology/wrapping/CMakeLists.txt Outdated
Copy link
Copy Markdown
Member

@dzenanz dzenanz left a comment

Choose a reason for hiding this comment

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

LGTM

hjmjohnson and others added 10 commits May 12, 2026 14:51
Brings ParabolicMorphology from a configure-time remote fetch into the ITK
source tree at Modules/Filtering/ParabolicMorphology/ using the v4 ingestion
pipeline (whitelist filter-repo + per-commit clang-format + black +
commit-prefix sanitization).

Upstream repo:  https://github.com/InsightSoftwareConsortium/ITKParabolicMorphology.git
Upstream tip:   a983b191ca9b81a3100a4b8943e89a004a08eb14
Ingest date:    2026-05-12
Whitelist:      ParabolicMorphology.list

Per-commit transforms applied across all 188 commits:
  - filter-repo --paths-from-file (whitelist)
  - filter-repo --to-subdirectory-filter Modules/Filtering/ParabolicMorphology
  - clang-format -style=file (ITK main's .clang-format) for *.cxx/.h/.hxx/...
  - black for *.py
  - heuristic ITK prefix added to commit subjects without one

Merge topology preserved: 47 -> 32 merge(s).

Primary author: Richard Beare <richard.beare@monash.edu>

Co-authored-by: Bradley Lowekamp <blowekamp@mail.nih.gov>
Co-authored-by: Dženan Zukić <dzenan.zukic@kitware.com>
Co-authored-by: Francois Budin <francois.budin@kitware.com>
Co-authored-by: gaetan.lehmann <gaetan.lehmann@jouy.inra.fr>
Co-authored-by: Hans Johnson <hans-johnson@uiowa.edu>
Co-authored-by: Hans Johnson <hans.j.johnson@gmail.com>
Co-authored-by: Jon Haitz Legarreta <jhlegarreta@vicomtech.org>
Co-authored-by: Jon Haitz Legarreta Gorroño <jon.haitz.legarreta@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@fideus.io>
Co-authored-by: Matt McCormick <matt@mmmccormick.com>
Co-authored-by: Niels Dekker <N.Dekker@lumc.nl>
Co-authored-by: Richard Beare <Richard.Beare@gmail.com>
Co-authored-by: richardb <none>
Co-authored-by: Tom Birdsong <tom.birdsong@kitware.com>
Co-authored-by: Zach Williamson <zachary-williamson@uiowa.edu>
- Drop WRAPPER_SUBMODULE_ORDER list (filters are independent;
  itk_auto_load_submodules handles them without explicit ordering).
- Fix Doxygen brief on BinaryDilateParabolicImageFilter (said erosion).
- Remove duplicate #include of itkProgressAccumulator.h in four Binary*
  parabolic .hxx files.
@hjmjohnson hjmjohnson force-pushed the ingest-ParabolicMorphology branch from 23523cc to c897d2d Compare May 12, 2026 19:52
@hjmjohnson
Copy link
Copy Markdown
Member Author

@copilot resolve the merge conflicts in this pull request and squash to original

@hjmjohnson hjmjohnson merged commit b22f64c into InsightSoftwareConsortium:main May 13, 2026
11 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:Filtering Issues affecting the Filtering module area:Python wrapping Python bindings for a class area:Remotes Issues affecting the Remote module type:Enhancement Improvement of existing methods or implementation type:Infrastructure Infrastructure/ecosystem related changes, such as CMake or buildbots type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct

Projects

None yet

Development

Successfully merging this pull request may close these issues.