After dictionary indexing of the sigma phase (4/mmm) in a super duplex steel in (120, 120) patterns binned to (40, 40) with an average angular step size of 1.4 degrees in the dictionary, I discovered that some areas were indexed with two or three orientations. The two-three orientations apparently alternated at random within these areas. Although quite noisy, inspection of the unbinned patterns convinced me that the areas have a continuous orientation. Using no binning in dictionary indexing did not solve the problem. Turns out the two-three orientations in many such areas were all related by a 30 deg <001> misorientation. Refining all areas with the initial best match in the dictionary as well as the two pseudo-symmetry orientations found by applying the 30 deg <00 +/- 1> operators showed that one of these three orientations were always the best match within an area, instead of the two-three orientations provided by dictionary indexing.
This PR adds a pseudo_symmetry_ops parameter to EBSD.refine_orientation() and EBSD.refine_orientation_projection_center() where one or more Rotation can be passed. When refining each orientation, these operators are applied to each initial guess of the orientation, and the best match from these two or more refinements for each point is returned as the refined solution.
Note that the refinement time scales with the number of pseudo-symmetry operators given. Passing two operators e.g. results in refinement taking three times as long as when no operators are given.
Description of the change
After dictionary indexing of the sigma phase (4/mmm) in a super duplex steel in (120, 120) patterns binned to (40, 40) with an average angular step size of 1.4 degrees in the dictionary, I discovered that some areas were indexed with two or three orientations. The two-three orientations apparently alternated at random within these areas. Although quite noisy, inspection of the unbinned patterns convinced me that the areas have a continuous orientation. Using no binning in dictionary indexing did not solve the problem. Turns out the two-three orientations in many such areas were all related by a 30 deg <001> misorientation. Refining all areas with the initial best match in the dictionary as well as the two pseudo-symmetry orientations found by applying the 30 deg <00 +/- 1> operators showed that one of these three orientations were always the best match within an area, instead of the two-three orientations provided by dictionary indexing.
This PR adds a
pseudo_symmetry_ops
parameter toEBSD.refine_orientation()
andEBSD.refine_orientation_projection_center()
where one or moreRotation
can be passed. When refining each orientation, these operators are applied to each initial guess of the orientation, and the best match from these two or more refinements for each point is returned as the refined solution.Note that the refinement time scales with the number of pseudo-symmetry operators given. Passing two operators e.g. results in refinement taking three times as long as when no operators are given.
Progress of the PR
Minimal example of the bug fix or new feature
No tutorial or example is added showing this feature for the time being, but I hope to add one in a couple of months.
For reviewers
__init__.py
.CHANGELOG.rst
.release.py
,.zenodo.json
and.all-contributorsrc
with the table regenerated.