Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MTEX does not import all not indexed points from TSL .ang files #2035

Open
Tom-G-Uni-Vienna opened this issue Jan 11, 2024 · 2 comments
Open

Comments

@Tom-G-Uni-Vienna
Copy link

Tom-G-Uni-Vienna commented Jan 11, 2024

Dear All,
I though I should mention something now, instead of waiting till the MTEX Workshop to tell you about it!

When importing EBSD data from TSL .ang files, the "truly" not indexed points (not just points with poor statistics, but points where no solution was found) are thrown away by MTEX and not imported. Thus, they are not available to be processes as notIndexed points and just appear as holes in the map. This is a problem if you scan something with e.g. gas bubbles in the microstructure, where there is no chance of any kind of EBSD pattern generation. Later, during grain reconstruction, grains "expand" into these empty holes in the map, and the image quality data for the deleted points is also lost.

The code that does the deleting is on lines 74 and 75 of the file loadHelper.m , found in mtex-5.10.2/interfaces/tools:

% eliminate rows where angle is 4*pi
ind = abs(data(:,cols(1))*dg-4*pi)<1e-3;
data(ind,:) = [];

I would like these "error" points still to be imported and be available as notIndexed points , at the very least optionally.

To combat this problem I usually modify the loadHelper.m file at the quoted lines to instead convert the three Euler angles to 0 radians (as a placeholder), and remove the line that deletes the points. This gets me what I want - the points are imported, and their associated (very bad) "quality" statistics like fit, confidence index etc allow me to set them to notIndexed during cleaning of the map.
e.g.

% DON'T eliminate rows where angle is 4*pi  
ind = abs(data(:,cols(1))*dg-4*pi)<1e-3;
data(ind,cols(1))=0;
data(ind,cols(2))=0;
data(ind,cols(3))=0;

I am sure the MTEX developers can come up with a more elegant solution! I don't know the reason for the original code - perhaps it was never imagined the user might want to see these points, or perhaps having Euler angles of 4*pi leads to errors, so these have to be removed?

best regards and huge thanks for developing MTEX!
Tom Griffiths

@kilir
Copy link
Contributor

kilir commented Jan 12, 2024

Hi Tom,
I'm not entirely convicene that importing it as an orientation would be a good thing since it bears the potential for other problems.
The 4pi - if I remember correctly - is the way that edax expresses something is not indexed. Is that true for .ang files from all sorts of software versions which produce them?

I agree it might be easier if they'd appear in the list of points as nonIndexed instead of simply not there (which still can be easily recovered via gridify and setting e.g. points with nan data to the notIndexed phase).
How about altering the phase for those points? Do you have a small example file?

Cheers,

Rüdiger

@Tom-G-Uni-Vienna
Copy link
Author

Dear Rüdiger,

While trying to compose a short piece of code as an example, I discovered that this problem has actually been solved for the .ang interface for a long time! The problem was, I was using the 'generic' interface command out of habit, because I sometimes have non-standard datasets to import.

If you explicitly use EBSD.load( fname, CS, 'interface', 'ang' ) there is a well-commented piece of code in loadEBSD_ang.m (from line 163 in MTEX 5.10.2) which re-fills all of the holes in the data with dummy 'notIndexed' points. These do not include the "true" measured image quality for the points, but this is more-or-less irrelevant, seeing as this value will be close to zero for such points, so only minimal visual information is lost.

A small quality of life change would however be to assign an image quality (.iq) value of zero automatically to these points during import - that way, when you plot an image quality map, the not indexed points appear as dark (or whatever colour you chose for lowest image quality), not white "holes" (these are only apparent holes, as there are actually data points there).

I think I will just use the 'ang' interface from now on, and assign the initially imported 'notIndexed' points an iq of 0 as part of my code, before any other filtering.

best regards,
Tom G

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants