Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
samjliu committed Oct 25, 2023
2 parents 9dd6d6e + 5eec696 commit 52418b9
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 0 deletions.
3 changes: 3 additions & 0 deletions +ebsd/@map/importCRCfile.m
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,14 @@
data.xStepSize = str2double(datatable(datatable.Parameters=="GridDistX",2).Values);
data.yStepSize = str2double(datatable(datatable.Parameters=="GridDistY",2).Values);
data.stepsize = str2double(datatable(datatable.Parameters=="GridDist",2).Values);
<<<<<<< HEAD
if isempty(data.stepsize) & ~isempty(data.xStepSize)
data.stepsize = data.xStepSize;
else
warning('Step size was not found.')
end
=======
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
euler1 = str2double(datatable(datatable.Parameters=="Euler1",2).Values);
euler2 = str2double(datatable(datatable.Parameters=="Euler2",2).Values);
euler3 = str2double(datatable(datatable.Parameters=="Euler3",2).Values);
Expand Down
55 changes: 55 additions & 0 deletions +ebsd/@map/importebsdmap.m
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
<<<<<<< HEAD
function [emap,grains] = importebsdmap
=======
function [emap,grains] = importebsdmap(dotsfile, grainfile, crcfile)
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
% IMPORTEBSDMAP import EBSD data from two input files.
% dotsfile --- HKL EBSD data for each pixels and their corresponding grain ID
% grainfile --- HKL data for each grains
Expand All @@ -12,6 +16,7 @@
%
% This function compile a standard workflow to generate a
% ebsd.map.
<<<<<<< HEAD
typesSupported = {"AztecCrystal", "HKL Channel 5", "Customized"};

[whichtype,tf] = listdlg("PromptString","Select EBSD data type", 'ListString', typesSupported, 'SelectionMode', 'single', 'ListSize', [150,100]);
Expand Down Expand Up @@ -80,17 +85,67 @@
disp('PIXCELL data have been assigned to each grains. I am polygonizing grains, which may take a while...');
grains.polygonize(dots,ebsdpara);
disp('Grains have been polygonized and I am creating ebsd.map...')
=======

if nargin == 0
[crcfilename,crcfilepath] = uigetfile('*.cpr', 'Select HKL project file');
crcfile = [crcfilepath, crcfilename];
[dotfilename,dotfilepath] = uigetfile('*.txt','Select the exported pixel data file');
dotsfile = [dotfilepath, dotfilename];
[grfilename,grfilepath] = uigetfile('*.txt','Select the exported grain data file');
grainfile = [grfilepath, grfilename];
whattype = input('Is it an AZtec or HKL file? Type 0 or 1: \n [0] -- AZtec, \n [1] -- HKL \n ');
if isempty(whattype)
isAztec = true;
elseif whattype == 0
isAztec = ~whattype;
else
isAztec = false;
end
end
disp('Please waiting when the EBSDMAP is being created, if you have already EBSDGRAIN data, use ebsdmap(grainobj) to create the map');
% h = waitbar(0, msgstart);
% disp(['Start creating ebsd.map. ', msgstart]);
% if nargin == 3
% dots = ebsd.pixcell.importHKL(dotsfile, stepsize);
% else
% dots = ebsd.pixcell.importHKL(dotsfile);
% end
ebsdpara = ebsd.map.importCRCfile(crcfile);
stepsize = ebsdpara.xStepSize;
if isAztec
dots = ebsd.pixcell.importAZTec(dotsfile, stepsize);
else
dots = ebsd.pixcell.importHKL(dotsfile, stepsize);
end
disp('EBSDDOT data created');
if isAztec
grains = ebsd.grain.importAztexGrains(grainfile);
else
grains = ebsd.grain.importHKLgrains(grainfile);
end
disp('grain data has been imported, assigning EBSDDOT data to each grains...');
grains.claimownership(dots);
disp('EBSDDOT data have been assigned to each grains. I am polygonizing grains, which may take a while...');
grains.polygonize(dots,ebsdpara);
disp('Grains have been polygonized and I am creating EBSDMAP...')
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
emap = ebsd.map(grains);
emap.pixels = dots;
emap.stepsize = stepsize;
emap.numXCells = ebsdpara.numXCells;
emap.numYCells = ebsdpara.numYCells;
<<<<<<< HEAD
if isfield(ebsdpara, 'allEBSDinfo')
emap.ebsdInfoTable = ebsdpara.allEBSDinfo;
end
if isfield(ebsdpara,'CS1toCS0')
emap.CS1toCS0 = ebsdpara.CS1toCS0;
end
=======
emap.ebsdInfoTable = ebsdpara.allEBSDinfo;
emap.CS1toCS0 = ebsdpara.CS1toCS0;
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
disp('EBSD map created. I am checking the neighbours of each grains...');
% d = input('What is the buffersize for checking neighbours [default=0.1*stepsize]: ');
% if isempty(d)
Expand Down
74 changes: 74 additions & 0 deletions +ebsd/pixcell.m
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,14 @@
isatedge % Boolean, is it on the edge of a scan?
isIndexed % Boolean, is it indexed?
stepsize % stepsize should be given separately in micron
<<<<<<< HEAD
% numXCells
% numYCells
% xStepSize
% yStepSize
% CS1toCS0
=======
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
% btx % x coordinate of the bottom right corner of the polygon
% bry % y coordinate of the bottom right corner of the polygon
% blx % x coordinate of the bottom left corner of the polygon
Expand All @@ -34,7 +37,11 @@
end

methods
<<<<<<< HEAD
function pxc = pixcell(varargin)
=======
function ed = pixcell(varargin)
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
end

function ed = crop(ed,inds)
Expand Down Expand Up @@ -119,6 +126,7 @@
X = num2cell(xdata,2);
Y = num2cell(ydata,2);
end
<<<<<<< HEAD

function para = extractParameters(pxc)
% Extract required parameters including step size, number of x
Expand Down Expand Up @@ -151,6 +159,12 @@

methods(Static)
function pxc = importHKL(datafile)
=======
end

methods(Static)
function pxc = importHKL(datafile,stepsize)
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
% Import the EBSD data file exported from Tango of HKL Channel
% software package. See ebsd.map for how to export the text
% data file
Expand Down Expand Up @@ -182,10 +196,13 @@
pxc.bandcontr = dataArray{:,10};
pxc.bs = dataArray{:,11};
pxc.grainID = dataArray{:,12};
<<<<<<< HEAD
% if nargin < 2
% para = pxc.extraParameters;
% stepsize = para.stepsize;
% end
=======
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
% if nargin < 2 % if step size is not given, determine it from the imported data
% ux = unique(ed.x);
% uy = unique(ed.y);
Expand All @@ -212,12 +229,21 @@
% end
% end
% end
<<<<<<< HEAD
% pxc.stepsize = stepsize;
% pxc.y = max(pxc.y)+stepsize-pxc.y;
fclose(fileID);
end

function pxc = importAZTec(datafile)
=======
pxc.stepsize = stepsize;
pxc.y = max(pxc.y)+stepsize-pxc.y;
fclose(fileID);
end

function pxc = importAZTec(datafile,stepsize)
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
% Import the EBSD data file exported from Tango of HKL Channel
% software package. See ebsd.map for how to export the text
% data file
Expand All @@ -229,7 +255,11 @@
if nargin < 1
[filename,filepath] = uigetfile('*.txt','Select the pixel data file:');
datafile = [filepath, filename];
<<<<<<< HEAD
% stepsize = input('Step size is [micron]: ');
=======
stepsize = input('Step size is [micron]: ');
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
end
% fileID = fopen(datafile,'r');
startRow = 3;
Expand All @@ -256,6 +286,7 @@
pxc.x = dataArray.X;
pxc.y = dataArray.Y;
pxc.grainID = dataArray.GrainID;
<<<<<<< HEAD
% if nargin < 2
% para = pxc.extraParameters;
% stepsize = para.stepsize;
Expand All @@ -266,6 +297,40 @@
end

function pxc = importCustomized(pixeldatafile)
=======
% if nargin < 2 % if step size is not given, determine it from the imported data
% ux = unique(ed.x);
% uy = unique(ed.y);
% uxdif = diff(ux);
% uydif = diff(uy);
% [xsteps, inxsteps, induxdif] = unique(uxdif);
% [ysteps, inysteps, induydif] = unique(uydif);
%
% xstep = min(unique(uxdif));
% ystep = min(unique(uydif));
% if xstep == ystep && xstep ~= 0
% stepsize = xstep;
% else
% % If the step size cannot be determined from the data,
% % The user is asked to input it (in micron)
% % If no input is returned, step size is set to 10.
% xsteps
% ysteps
% step = input('I cannot determine what the step size is, please tell me... [micron]: ');
% if ~isempty(step)
% stepsize = step;
% else
% error('Step size is not given!');
% end
% end
% end
pxc.stepsize = stepsize;
pxc.y = max(pxc.y)+stepsize-pxc.y;
% fclose(fileID);
end

function pxc = importCustomized(pixeldatafile,stepsize)
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
% Import customised EBSD data
% The required data include
% All pixels at least containing
Expand All @@ -290,8 +355,13 @@
[filename,filepath] = uigetfile('*.txt','Select the customised pixel data file:');
pixeldatafile = [filepath, filename];
options.Interpreter = 'tex';
<<<<<<< HEAD
% stepsizeanswer = inputdlg('Enter step size \mum:','Step size',[1,30], {''}, options);
% stepsize = str2double(stepsizeanswer);
=======
stepsizeanswer = inputdlg('Enter step size \mum:','Step size',[1,30], {''}, options);
stepsize = str2double(stepsizeanswer);
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
end
%% Set up the Import Options and import the data
opts = delimitedTextImportOptions("NumVariables", 4);
Expand All @@ -315,7 +385,11 @@
pxc.x = pixeltable.X;
pxc.y = pixeltable.Y;
pxc.grainID = pixeltable.GrainID;
<<<<<<< HEAD
% pxc.stepsize = stepsize;
=======
pxc.stepsize = stepsize;
>>>>>>> 5eec6960b06bb6b3768e8d9e84668357651cc221
end
end
end

0 comments on commit 52418b9

Please sign in to comment.