Topic/ebsdlib v3 updates#1615
Open
imikejackson wants to merge 8 commits into
Open
Conversation
Adds a "Color Key" ChoicesParameter to ComputeIPFColorsFilter and
ComputeFaceIPFColoringFilter so pipelines can select between the
three EbsdLib IPF coloring schemes per filter invocation:
0 = TSL (EDAX/OIM Analysis default -- preserved as default)
1 = PUCM (Patala perceptually-uniform color map)
2 = Nolze-Hielscher (MTEX HSV-style coloring)
The choice index is mapped to ebsdlib::ColorKeyKind in executeImpl and
threaded through the algorithm's InputValues struct + Impl-class
constructor to the generateIPFColor(... kind) call site. Each LaueOps
subclass already owns its own per-class TSL/PUCM/NH singletons
sized to its rotation point group / fundamental sector, so no
per-pixel allocation is added.
parametersVersion is bumped to 2 on both filters.
Also fixes WritePoleFigure.cpp's templated `createIntensityPoleFigures`
which previously called the 4-arg generateSphereCoordsFromEulers; the
new EbsdLib API requires an explicit HexConvention. Passing
config.hexConvention threads the existing PoleFigureConfiguration_t
field down to the LaueOps call.
Tests:
- Existing TSL-regression tests stay green (default kind = TSL
preserves byte-for-byte exemplar match).
- New "ColorKey choice reaches algorithm" plumbing test per filter:
runs the filter three times with k_ColorKey_Key = 0/1/2 into
uniquely-named output arrays and asserts non-TSL kinds produce a
different output than TSL. Catches any future off-by-one in the
executeImpl switch without duplicating EbsdLib's per-Laue-class
color correctness coverage.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pole-figure positions and corner labels for hex/trig phases differ by
a 30° rotation about the c-axis between the two Cartesian basis
conventions in EbsdLib (X||a vs X||a*). Pre-this-commit, the filter
silently used PoleFigureConfiguration_t's default (X||a*) -- pipelines
operating on EDAX/TSL/OIM Analysis data had no way to pick the convention
that matches their input stack.
Adds a "Hex/Trig Cartesian Basis Convention" ChoicesParameter:
0 = X parallel to a (EDAX/TSL/OIM Analysis -- new default)
1 = X parallel to a* (MTEX / Oxford / AZtec)
Default is X||a because every released DREAM.3D / DREAM3DNX / SIMPL /
SIMPLNX file stores hex/trig EulerAngles in this form by codebase
guarantee (see ebsdlib::HexConvention doc comment in EbsdLibConstants.h).
Cubic, tetragonal, orthorhombic, monoclinic, and triclinic phases ignore
the parameter -- existing all-cubic test fixtures are unaffected by the
default flip.
The choice index is mapped to ebsdlib::HexConvention in executeImpl
and threaded through WritePoleFigureInputValues to
PoleFigureConfiguration_t::hexConvention, which the EbsdLib generateSphereCoordsFromEulers
call already honors.
parametersVersion bumps to 2.
Tests:
- New "HexConvention choice reaches algorithm" plumbing test: runs the
filter twice on the cubic exemplar with k_HexConvention_Key = 0 and
= 1, captures the intensity arrays, and asserts they're identical
(cubic is convention-invariant). Catches parameter wiring failures
without depending on hex/trig exemplar data.
Note: The 4 existing WritePoleFigureFilter-{Discrete,Color}[-Masked]
exemplar-pixel-compare tests fail with mismatches at byte index 972772
of the rendered image. Those failures predate this commit (verified by
stashing the filter changes; same 4 tests fail at the same byte). The
PoleFigure_Exemplars_v5.tar.gz baseline appears to have drifted from
the current EbsdLib pole figure rendering output -- regenerating the
exemplar as _v6 is the right fix and is out of scope here.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
A collection of misc updates that goes along with EbsdLib 3.0 changes.
This will require a matching EbsdLib 3.0 release to correctly compile.