BUG/REV: Compute Feature Neighbors#1569
Merged
nyoungbq merged 16 commits intoMar 25, 2026
Merged
Conversation
JDuffeyBQ
reviewed
Mar 25, 2026
Collaborator
JDuffeyBQ
left a comment
There was a problem hiding this comment.
Looks good. Just a couple of minor suggestions.
…ons, documentation
…, storage optimization
…est NL error feedback bug patched
Assorted 2d and 1d bug fixes, Test cases for 0-2D (28 new)
Co-authored-by: Jared Duffey <jared.duffey@bluequartz.net>
e37959a to
8d35079
Compare
JDuffeyBQ
approved these changes
Mar 25, 2026
joeykleingers
added a commit
to joeykleingers/simplnx
that referenced
this pull request
Mar 30, 2026
…riants Integrate Nathan Young's ComputeFeatureNeighbors rewrite (PR BlueQuartzSoftware#1569) into the OOC dispatch architecture: Direct variant: full port of Nathan's algorithm with compile-time ImageDimensionState specialization, two-stage boundary/internal cell processing, and per-face surface area accumulation. Handles 0D through 3D geometries via constexpr template dispatch. Scanline variant: updated to use map-based per-face surface area accumulation (fixes DREAM3D 6.5 surface area calculation bug), correct surface feature detection for all geometry dimensions (0D/1D/2D/3D), and Path-based InputValues fields matching upstream. Test file: added ForceOocAlgorithmGuard dual-path coverage to all 33 test cases (32 hand-validated + legacy SmallIn100). Verified: 33/33 tests pass on both in-core (InCoreOnly) and OOC (OocOnly) configurations.
joeykleingers
added a commit
to joeykleingers/simplnx
that referenced
this pull request
Mar 30, 2026
…riants Integrate Nathan Young's ComputeFeatureNeighbors rewrite (PR BlueQuartzSoftware#1569) into the OOC dispatch architecture: Direct variant: full port of Nathan's algorithm with compile-time ImageDimensionState specialization, two-stage boundary/internal cell processing, and per-face surface area accumulation. Handles 0D through 3D geometries via constexpr template dispatch. Scanline variant: updated to use map-based per-face surface area accumulation (fixes DREAM3D 6.5 surface area calculation bug), correct surface feature detection for all geometry dimensions (0D/1D/2D/3D), and Path-based InputValues fields matching upstream. Test file: added ForceOocAlgorithmGuard dual-path coverage to all 33 test cases (32 hand-validated + legacy SmallIn100). Verified: 33/33 tests pass on both in-core (InCoreOnly) and OOC (OocOnly) configurations.
joeykleingers
added a commit
to joeykleingers/simplnx
that referenced
this pull request
Apr 1, 2026
…riants Integrate Nathan Young's ComputeFeatureNeighbors rewrite (PR BlueQuartzSoftware#1569) into the OOC dispatch architecture: Direct variant: full port of Nathan's algorithm with compile-time ImageDimensionState specialization, two-stage boundary/internal cell processing, and per-face surface area accumulation. Handles 0D through 3D geometries via constexpr template dispatch. Scanline variant: updated to use map-based per-face surface area accumulation (fixes DREAM3D 6.5 surface area calculation bug), correct surface feature detection for all geometry dimensions (0D/1D/2D/3D), and Path-based InputValues fields matching upstream. Test file: added ForceOocAlgorithmGuard dual-path coverage to all 33 test cases (32 hand-validated + legacy SmallIn100). Verified: 33/33 tests pass on both in-core (InCoreOnly) and OOC (OocOnly) configurations.
joeykleingers
added a commit
to joeykleingers/simplnx
that referenced
this pull request
Apr 2, 2026
…riants Integrate Nathan Young's ComputeFeatureNeighbors rewrite (PR BlueQuartzSoftware#1569) into the OOC dispatch architecture: Direct variant: full port of Nathan's algorithm with compile-time ImageDimensionState specialization, two-stage boundary/internal cell processing, and per-face surface area accumulation. Handles 0D through 3D geometries via constexpr template dispatch. Scanline variant: updated to use map-based per-face surface area accumulation (fixes DREAM3D 6.5 surface area calculation bug), correct surface feature detection for all geometry dimensions (0D/1D/2D/3D), and Path-based InputValues fields matching upstream. Test file: added ForceOocAlgorithmGuard dual-path coverage to all 33 test cases (32 hand-validated + legacy SmallIn100). Verified: 33/33 tests pass on both in-core (InCoreOnly) and OOC (OocOnly) configurations.
joeykleingers
added a commit
to joeykleingers/simplnx
that referenced
this pull request
Apr 2, 2026
…riants Integrate Nathan Young's ComputeFeatureNeighbors rewrite (PR BlueQuartzSoftware#1569) into the OOC dispatch architecture: Direct variant: full port of Nathan's algorithm with compile-time ImageDimensionState specialization, two-stage boundary/internal cell processing, and per-face surface area accumulation. Handles 0D through 3D geometries via constexpr template dispatch. Scanline variant: updated to use map-based per-face surface area accumulation (fixes DREAM3D 6.5 surface area calculation bug), correct surface feature detection for all geometry dimensions (0D/1D/2D/3D), and Path-based InputValues fields matching upstream. Test file: added ForceOocAlgorithmGuard dual-path coverage to all 33 test cases (32 hand-validated + legacy SmallIn100). Verified: 33/33 tests pass on both in-core (InCoreOnly) and OOC (OocOnly) configurations.
joeykleingers
added a commit
to joeykleingers/simplnx
that referenced
this pull request
Apr 2, 2026
…riants Integrate Nathan Young's ComputeFeatureNeighbors rewrite (PR BlueQuartzSoftware#1569) into the OOC dispatch architecture: Direct variant: full port of Nathan's algorithm with compile-time ImageDimensionState specialization, two-stage boundary/internal cell processing, and per-face surface area accumulation. Handles 0D through 3D geometries via constexpr template dispatch. Scanline variant: updated to use map-based per-face surface area accumulation (fixes DREAM3D 6.5 surface area calculation bug), correct surface feature detection for all geometry dimensions (0D/1D/2D/3D), and Path-based InputValues fields matching upstream. Test file: added ForceOocAlgorithmGuard dual-path coverage to all 33 test cases (32 hand-validated + legacy SmallIn100). Verified: 33/33 tests pass on both in-core (InCoreOnly) and OOC (OocOnly) configurations.
joeykleingers
added a commit
to joeykleingers/simplnx
that referenced
this pull request
Apr 3, 2026
…riants Integrate Nathan Young's ComputeFeatureNeighbors rewrite (PR BlueQuartzSoftware#1569) into the OOC dispatch architecture: Direct variant: full port of Nathan's algorithm with compile-time ImageDimensionState specialization, two-stage boundary/internal cell processing, and per-face surface area accumulation. Handles 0D through 3D geometries via constexpr template dispatch. Scanline variant: updated to use map-based per-face surface area accumulation (fixes DREAM3D 6.5 surface area calculation bug), correct surface feature detection for all geometry dimensions (0D/1D/2D/3D), and Path-based InputValues fields matching upstream. Test file: added ForceOocAlgorithmGuard dual-path coverage to all 33 test cases (32 hand-validated + legacy SmallIn100). Verified: 33/33 tests pass on both in-core (InCoreOnly) and OOC (OocOnly) configurations.
imikejackson
added a commit
that referenced
this pull request
May 4, 2026
Batch D covers c-axis misalignments and neighbor-correlation filters. All reports remain DRAFT pending developer review of the tentative Algorithm Relationship and Oracle classifications. * ComputeFeatureNeighborCAxisMisalignmentsFilter — DIVISOR BUG REPLICATED VERBATIM from sibling ComputeFeatureNeighborMisorientationsFilter: hexNeighborListSize is reassigned on line 111 of the algorithm, clobbering the hexNeighborListSize-- decrement on line 150 and producing wrong per-feature AvgCAxisMisalignments whenever any non-hex neighbor exists. Production-relevant because EBSD_Hexagonal_Data_Analysis.d3dpipeline ships with find_avg_misals: true. Existing test exemplar is hex-only so it cannot trigger the bug. PR #1467 was OEM-reviewed but preserved the bug because the review covered parameters, not divisor logic. * ComputeFeatureNeighborsFilter — PR #1569 fixed an explicit "Major bug in calculation of Shared Surface Area List (Present in 6.5)"; the shared 6_6_stats_test_v2.tar.gz SSA values are confirmed bad-from-legacy and are intentionally skipped in the Legacy:SmallIn100 test. PR #1590 fixed an in-house row-stride bug in the EmptyZ/EmptyY/EmptyX dispatchers that had been masked by all 5x5x1 fixtures having dims[0] == dims[1]. 32 hand-derived inline test cases now cover 0D/1D/2D/3D x empty-axis x optional flag combinations. * BadDataNeighborOrientationCheckFilter — PR #1499 (REV) is the model V&V case in the audit: explicit iteration-guard bug fix paired with 28 algorithmic test cases (~1700 lines) using hand-derived expectedMask arrays as a de facto Class-1 analytical oracle. PR #1590 made the 6-face neighbor logic 2D-aware via NeighborUtilities. * NeighborOrientationCorrelationFilter — currentLevel > Level strict inequality means Level=6 is a no-op (surprising semantics); only one end-to-end algorithmic test exists; PR #1472 introduced a float-to-double widening that may drift vs legacy. Cross-cutting: - The divisor-bug pattern is now confirmed as a TWO-FILTER copy- paste pattern, not isolated. Screen remaining "average across neighbors" filters for the same shape (NeighborList::size() reassigned inside the inner loop, clobbering an earlier --). - Two AUDIT-CONFIRMED legacy 6.5 defects (PR #1569 SSA, PR #1499 iteration guard) — first instances where legacy is provably wrong rather than SIMPLNX merely diverging. - The model V&V pattern is hand-derived expected* arrays inline in test source. Filters with one happy-path exemplar test are measurably weaker. Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
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.
3D Hand Validation attached
compute_feature_neighbors_3D_ test.txt