Skip to content

BUG: Major Issues in BadDataNeighborOrientationCheck #439

@nyoungbq

Description

@nyoungbq

This filter has 2 major known bugs that won't be back patched, but are fixed in DREAM3DNX version 7.5+.

Issue 1: Only values more than the supplied min number of neighbors is checked

Example

Consider this case:

You have three target voxels (A,B,C). A has 6 good neighbors, B has 5 good neighbors, C has 4 good neighbors. If you set 4 as the min number of neighbors, you would expect all of the voxels to be flipped. However, only A and B get flipped. Similarly if you set 6 as the min number of neighbors, none will be flipped even though A should be valid.

Fix

To fix this supply less than what you actually want to be valid by 1. From the example above, instead of supplying 4 as the min number of neighbors you would supply 3 to flip all the voxels.

Ramifications

There are more good voxels that are not being considered potentially skewing downstream results.

Issue 2: Invalid neighbor voxels potentially flagged good

The algorithm did not clear variables between iterations allowing a case where a neighbor voxel with a different phase was counted if the last valid neighbor was less than the supplied tolerance. This led to mask values being flipped that did not meet the correct number of neighbors, which potentially caused a chain of invalid values to be marked valid.

Example

Consider this case:

You have three target voxels (A,B,C). A has 6 good neighbors, B has 5 good neighbors, C has 4 good neighbors. Say B and C are close by in parsing order, B gets parsed first correctly and the last neighbor it checks was valid and updated misorientation value. When it gets to C the first two neighbors are supposed to be ignored because they have different phases than C, however, because of the bug the misorientation value from Bs last valid neighbor is used and the invalid neighbor gets counted. Then when it comes time to check min number of neighbors C gets 5 instead of 4 and gets flipped potentially causing voxels checked after to be flipped as well since C is now valid.

Fix

None

Ramifications

This filter is sequentially dependent in nature, in that if a value gets flipped the neighboring values have their good neighbor counts updated and reevaluated. Thus, when this bug is hit it can cause a chain that flips many invalid cells to valid.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions