diff --git a/4_grains/gtLoadGrainRec.m b/4_grains/gtLoadGrainRec.m index 317fa2dc627d954d90245f158c3405c5d6df8334..9a3eb1cd190a247954238548a4f149a09382fcc8 100644 --- a/4_grains/gtLoadGrainRec.m +++ b/4_grains/gtLoadGrainRec.m @@ -1,5 +1,5 @@ function grain_det = gtLoadGrainRec(phase_id, grain_id, varargin) - conf = struct('fields', {{}}, 'parameters', {[]}, 'is_extended', {false}); + conf = struct('fields', {{}}, 'parameters', {[]}, 'is_extended', {false}, 'full_details', {false}); conf = parse_pv_pairs(conf, varargin); if (isempty(conf.parameters)) @@ -11,6 +11,8 @@ function grain_det = gtLoadGrainRec(phase_id, grain_id, varargin) for ii = numel(grain_id):-1:1 if (conf.is_extended) grain_file = fullfile(phase_dir, sprintf('grain_extended_details_%04d.mat', grain_id(ii))); + elseif (conf.full_details) + grain_file = fullfile(phase_dir, sprintf('grain_full_details_%04d.mat', grain_id(ii))); else grain_file = fullfile(phase_dir, sprintf('grain_details_%04d.mat', grain_id(ii))); end diff --git a/5_reconstruction/GtAssembleVol3D.m b/5_reconstruction/GtAssembleVol3D.m index 04d76a48d39ae8335caf9121125dd1c508be8caa..a66f844b8001207a0a4d76aa6e474675a2727b4a 100644 --- a/5_reconstruction/GtAssembleVol3D.m +++ b/5_reconstruction/GtAssembleVol3D.m @@ -1306,7 +1306,7 @@ classdef GtAssembleVol3D < handle if (~exist('sortOrder', 'var')) sortOrder = 'descend'; end - + sample=GtSample.loadFromFile; grainsize = zeros(grainsNum, 1); gauge = GtGauge(grainsNum, sprintf('Loading grains from phase %02d: ', phase_id)); for ii = 1:grainsNum @@ -1317,7 +1317,7 @@ classdef GtAssembleVol3D < handle else vol = obj.localPar.cache.get('grain_rec', {phase_id, grain_ids(ii)}, 'SEG'); end - grainsize(ii) = length(find(vol(:))); + grainsize(ii) = length(find(vol.seg(:))); catch % We ignore the error because it will come up again % later diff --git a/5_reconstruction/gtAstraCreateProjections.m b/5_reconstruction/gtAstraCreateProjections.m index c157962eb24533edc2ca83b21df74cd5c847d549..2ba543965f7ef8dfc8e12a0db67bb19b597d27dc 100644 --- a/5_reconstruction/gtAstraCreateProjections.m +++ b/5_reconstruction/gtAstraCreateProjections.m @@ -55,7 +55,7 @@ proj = astra_mex_data3d('get', proj_id); if (exist('psf','var') && ~isempty(psf)) psf_obj = GtPSF(); - psf_obj.set_psf_direct(proj.psf, [hsize, vsize]); + psf_obj.set_psf_direct(psf, [hsize, vsize]); proj = psf_obj.apply_psf_direct(proj); end diff --git a/5_reconstruction/gtReconstructGrainOrientation.m b/5_reconstruction/gtReconstructGrainOrientation.m index 7ba839e43afc62b7a5d196aadb4167630fe66f6b..1f2ee9040ddd3aa8290401ac125608906b654890 100644 --- a/5_reconstruction/gtReconstructGrainOrientation.m +++ b/5_reconstruction/gtReconstructGrainOrientation.m @@ -8,7 +8,8 @@ function varargout = gtReconstructGrainOrientation(grain_id, phase_id, parameter conf = struct( ... 'ospace_resolution', [], ... - 'ospace_lims', [] ); + 'ospace_lims', [], ... + 'extra_output', false ); [conf, ~] = parse_pv_pairs(conf, varargin); rec_opts = gtReconstruct6DGetParamenters(parameters); @@ -117,7 +118,7 @@ function varargout = gtReconstructGrainOrientation(grain_id, phase_id, parameter varargout{1} = ODF6D; end - if (algo.verbose) + if (conf.extra_output) [proj_blobs, proj_spots] = algo.getProjectionOfCurrentSolution(); % Restoring initial volume size (depending on the rounding) diff --git a/5_reconstruction/gtSetupReconstruction.m b/5_reconstruction/gtSetupReconstruction.m index 3e24fc21533afe0eb66d5ccde53b90ee773d5525..624b766c05235265d95588724dde0a7cbf97b240 100644 --- a/5_reconstruction/gtSetupReconstruction.m +++ b/5_reconstruction/gtSetupReconstruction.m @@ -175,9 +175,16 @@ if (~isempty(conf.grain_ids)) check = inputwdefault('Launch grain segmentation via OAR? [y/n]', 'y'); if (strcmpi(check, 'y')) launch_on_OAR('gtChangeThreshold3D', first, last, ... - phaseID_str, parameters, 'core', 4, 'distribute', false); + phaseID_str, parameters, 'core', 4, 'distribute', true, 'list', conf.grain_ids); else - gtChangeThreshold3D(first, last, [], phase_id); + if isempty(conf.grain_ids) + gtChangeThreshold3D(first, last, [], phase_id); + else + t=GtThreshold(); + for i = 1 : numel(conf.grain_ids) + t.singleGrainAutoThreshold(phase_id, conf.grain_ids(i)); + end + end end end end diff --git a/zUtil_Cryst/gtDisorientation.m b/zUtil_Cryst/gtDisorientation.m index 79dd7ff5b814ac454ecf8c4458a97da51231177b..1315cc5cc53f0b6735cc5648246343efaa140b4e 100644 --- a/zUtil_Cryst/gtDisorientation.m +++ b/zUtil_Cryst/gtDisorientation.m @@ -41,9 +41,13 @@ par.sort = ''; par.latticepar = []; par.convention = 'X'; par.constrain_to_sst = false; - +par.grain = []; [par, rej_pars] = parse_pv_pairs(par, varargin); +if isempty(symm) + p=gtLoadParameters; + symm = p.cryst.symm; +end Symm = {symm.g3}; switch par.input @@ -59,6 +63,13 @@ switch par.input Ngrain1 = size(ori1, 2); Ngrain2 = size(ori2, 2); oriConversion = @(x) gtMathsEuler2OriMat(x); + case 'gr_id' + Ngrain1 = size(ori1, 1); + Ngrain2 = size(ori2, 1); + if isempty(par.grain) + load 4_grains/phase_01/index + end + oriConversion = @(x) gtMathsRod2OriMat(par.grain{x}.R_vector'); otherwise gtError('gtDisorientation:wrong_input_type', ... 'Allowed orientation types are ''rod'', ''orimat'', or ''euler''!');