Skip to content
Snippets Groups Projects
Commit 43312ebf authored by Nicola Vigano's avatar Nicola Vigano
Browse files

6D-Reconstructions: added time accounting for IO and post-processing steps

parent dcb96d10
No related branches found
No related tags found
No related merge requests found
...@@ -16,6 +16,8 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin) ...@@ -16,6 +16,8 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin)
rec_opts.use_predicted_scatter_ints = true; rec_opts.use_predicted_scatter_ints = true;
end end
fprintf('Loading the grain file..')
c = tic();
phase_dir = fullfile(parameters.acq.dir, '4_grains', ... phase_dir = fullfile(parameters.acq.dir, '4_grains', ...
sprintf('phase_%02d', phase_id)); sprintf('phase_%02d', phase_id));
grain_extended_file = fullfile(phase_dir, ... grain_extended_file = fullfile(phase_dir, ...
...@@ -34,6 +36,7 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin) ...@@ -34,6 +36,7 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin)
bb_ors = gr.bb_ors; bb_ors = gr.bb_ors;
end end
bb_gvdm = cat(1, bb_ors(:).R_vector)'; bb_gvdm = cat(1, bb_ors(:).R_vector)';
fprintf('\b\b: Done in %g seconds.\n', toc(c))
sampler = GtOrientationSampling(parameters, gr); sampler = GtOrientationSampling(parameters, gr);
sampler.make_simple_grid('cubic', rec_opts.grid_edge, bb_gvdm, 1); sampler.make_simple_grid('cubic', rec_opts.grid_edge, bb_gvdm, 1);
...@@ -45,6 +48,8 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin) ...@@ -45,6 +48,8 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin)
vols = algo.getCurrentSolution(); vols = algo.getCurrentSolution();
fprintf('Producing output data-structure..')
c = tic();
[avg_R_vecs, avg_R_vecs_int, stddev_R_vecs] = sampler.getAverageOrientations(vols); [avg_R_vecs, avg_R_vecs_int, stddev_R_vecs] = sampler.getAverageOrientations(vols);
avg_R_vec = sampler.getAverageOrientation(vols); avg_R_vec = sampler.getAverageOrientation(vols);
s_g_odf = reshape(sampler.getODF(vols), rec_opts.grid_edge([1 1 1])); s_g_odf = reshape(sampler.getODF(vols), rec_opts.grid_edge([1 1 1]));
...@@ -74,10 +79,13 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin) ...@@ -74,10 +79,13 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin)
'single_grain_avg_R_vector', {avg_R_vec}, ... 'single_grain_avg_R_vector', {avg_R_vec}, ...
'kernel_average_misorientation', {kam}, ... 'kernel_average_misorientation', {kam}, ...
'intra_granular_misorientation', {igm} ); 'intra_granular_misorientation', {igm} );
fprintf('\b\b: Done in %g seconds.\n', toc(c))
grain_details_file = fullfile(phase_dir, ... grain_details_file = fullfile(phase_dir, ...
sprintf('grain_extended_details_%04d.mat', grain_id)); sprintf('grain_extended_details_%04d.mat', grain_id));
fprintf('Saving the reconstruction file..')
c = tic();
% Saving and cleaning at the same time % Saving and cleaning at the same time
if (exist(grain_details_file, 'file')) if (exist(grain_details_file, 'file'))
gr_det = load(grain_details_file); gr_det = load(grain_details_file);
...@@ -86,6 +94,7 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin) ...@@ -86,6 +94,7 @@ function gtReconstructGrainExtended(grain_id, phase_id, parameters, varargin)
gr_det = struct('ODF6D', ODF6D); %#ok<NASGU> gr_det = struct('ODF6D', ODF6D); %#ok<NASGU>
end end
save(grain_details_file, '-struct', 'gr_det', '-v7.3'); save(grain_details_file, '-struct', 'gr_det', '-v7.3');
fprintf('\b\b: Done in %g seconds.\n', toc(c))
if (algo.verbose) if (algo.verbose)
[proj_blobs, proj_spots] = algo.getProjectionOfCurrentSolution(); [proj_blobs, proj_spots] = algo.getProjectionOfCurrentSolution();
......
...@@ -6,6 +6,8 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_ ...@@ -6,6 +6,8 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_
parameters = gtLoadParameters(); parameters = gtLoadParameters();
end end
fprintf('Loading the grain file..')
c = tic();
fields_to_load = {'R_vector', 'id', 'phaseid', 'allblobs', 'proj', 'center' }; fields_to_load = {'R_vector', 'id', 'phaseid', 'allblobs', 'proj', 'center' };
gr = gtLoadGrain(phaseID, grainID, 'fields', fields_to_load); gr = gtLoadGrain(phaseID, grainID, 'fields', fields_to_load);
...@@ -20,6 +22,7 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_ ...@@ -20,6 +22,7 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_
gr.proj.included = gr_extra.included; gr.proj.included = gr_extra.included;
gr.proj.selected = gr_extra.selected; gr.proj.selected = gr_extra.selected;
end end
fprintf('\b\b: Done in %g seconds.\n', toc(c))
rec_opts = gtReconstruct6DGetParamenters(parameters); rec_opts = gtReconstruct6DGetParamenters(parameters);
...@@ -41,6 +44,8 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_ ...@@ -41,6 +44,8 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_
or_sizes = sampler.get_orientation_sampling_size(); or_sizes = sampler.get_orientation_sampling_size();
fprintf('Producing output data-structure..')
c = tic();
[avg_R_vecs, avg_R_vecs_int, stddev_R_vecs] = sampler.getAverageOrientations(vols); [avg_R_vecs, avg_R_vecs_int, stddev_R_vecs] = sampler.getAverageOrientations(vols);
avg_R_vec = sampler.getAverageOrientation(vols); avg_R_vec = sampler.getAverageOrientation(vols);
s_g_odf = reshape(sampler.getODF(vols), or_sizes{1}); s_g_odf = reshape(sampler.getODF(vols), or_sizes{1});
...@@ -70,10 +75,13 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_ ...@@ -70,10 +75,13 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_
'single_grain_avg_R_vector', {avg_R_vec}, ... 'single_grain_avg_R_vector', {avg_R_vec}, ...
'kernel_average_misorientation', {kam}, ... 'kernel_average_misorientation', {kam}, ...
'intra_granular_misorientation', {igm} ); 'intra_granular_misorientation', {igm} );
fprintf('\b\b: Done in %g seconds.\n', toc(c))
grain_dir = fullfile(parameters.acq.dir, '4_grains', sprintf('phase_%02d', phaseID)); grain_dir = fullfile(parameters.acq.dir, '4_grains', sprintf('phase_%02d', phaseID));
grain_details_file = fullfile(grain_dir, sprintf('grain_details_%04d.mat', grainID)); grain_details_file = fullfile(grain_dir, sprintf('grain_details_%04d.mat', grainID));
fprintf('Saving the reconstruction file..')
c = tic();
% Saving and cleaning at the same time % Saving and cleaning at the same time
if (exist(grain_details_file, 'file')) if (exist(grain_details_file, 'file'))
gr_det = load(grain_details_file); gr_det = load(grain_details_file);
...@@ -82,6 +90,7 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_ ...@@ -82,6 +90,7 @@ function gtReconstructGrainOrientation(grainID, phaseID, parameters, rel_ospace_
gr_det = struct('ODF6D', ODF6D); %#ok<NASGU> gr_det = struct('ODF6D', ODF6D); %#ok<NASGU>
end end
save(grain_details_file, '-struct', 'gr_det', '-v7.3'); save(grain_details_file, '-struct', 'gr_det', '-v7.3');
fprintf('\b\b: Done in %g seconds.\n', toc(c))
if (algo.verbose) if (algo.verbose)
[proj_blobs, proj_spots] = algo.getProjectionOfCurrentSolution(); [proj_blobs, proj_spots] = algo.getProjectionOfCurrentSolution();
......
...@@ -33,9 +33,10 @@ function gtReconstructGrainTwinCluster(grain_ids, phase_id, parameters, varargin ...@@ -33,9 +33,10 @@ function gtReconstructGrainTwinCluster(grain_ids, phase_id, parameters, varargin
sprintf('grain_cluster%s.mat', grains_str_ids)); sprintf('grain_cluster%s.mat', grains_str_ids));
fprintf('Loading the cluster file..') fprintf('Loading the cluster file..')
c = tic();
grs = load(grain_cluster_file); grs = load(grain_cluster_file);
grs = grs.samp_ors; grs = grs.samp_ors;
fprintf('\b\b: Done.\n') fprintf('\b\b: Done in %g seconds.\n', toc(c))
end end
num_grains = numel(grs); num_grains = numel(grs);
...@@ -76,7 +77,11 @@ function gtReconstructGrainTwinCluster(grain_ids, phase_id, parameters, varargin ...@@ -76,7 +77,11 @@ function gtReconstructGrainTwinCluster(grain_ids, phase_id, parameters, varargin
ranges(1:end-1, 2) = ranges(2:end, 1) - 1; ranges(1:end-1, 2) = ranges(2:end, 1) - 1;
ranges(end, 2) = numel(vols); ranges(end, 2) = numel(vols);
fprintf('Producing output data-structures: ')
c = tic();
for ii_g = num_grains:-1:1 for ii_g = num_grains:-1:1
num_chars = fprintf('%03d/%03d', num_grains-ii_g+1, num_grains);
or_sizes = sampler(ii_g).get_orientation_sampling_size(); or_sizes = sampler(ii_g).get_orientation_sampling_size();
gr_vols = vols(ranges(ii_g, 1):ranges(ii_g, 2)); gr_vols = vols(ranges(ii_g, 1):ranges(ii_g, 2));
...@@ -109,8 +114,13 @@ function gtReconstructGrainTwinCluster(grain_ids, phase_id, parameters, varargin ...@@ -109,8 +114,13 @@ function gtReconstructGrainTwinCluster(grain_ids, phase_id, parameters, varargin
'single_grain_avg_R_vector', {avg_R_vec}, ... 'single_grain_avg_R_vector', {avg_R_vec}, ...
'kernel_average_misorientation', {kam}, ... 'kernel_average_misorientation', {kam}, ...
'intra_granular_misorientation', {igm} ); 'intra_granular_misorientation', {igm} );
fprintf(repmat('\b', [1, num_chars]));
end end
fprintf('Done in %g seconds.\n', toc(c))
fprintf('Saving the cluster reconstruction file..')
c = tic();
cluster_rec_file = fullfile(phase_dir, ... cluster_rec_file = fullfile(phase_dir, ...
sprintf('grain_cluster_details%s.mat', grains_str_ids)); sprintf('grain_cluster_details%s.mat', grains_str_ids));
% Saving and cleaning at the same time % Saving and cleaning at the same time
...@@ -121,6 +131,7 @@ function gtReconstructGrainTwinCluster(grain_ids, phase_id, parameters, varargin ...@@ -121,6 +131,7 @@ function gtReconstructGrainTwinCluster(grain_ids, phase_id, parameters, varargin
cl_rec = struct('ODF6D', ODF6D); %#ok<NASGU> cl_rec = struct('ODF6D', ODF6D); %#ok<NASGU>
end end
save(cluster_rec_file, '-struct', 'cl_rec', '-v7.3'); save(cluster_rec_file, '-struct', 'cl_rec', '-v7.3');
fprintf('\b\b: Done in %g seconds.\n', toc(c))
if (algo.verbose) if (algo.verbose)
clear('ODF6D') clear('ODF6D')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment