diff --git a/1_preprocessing/gtSetup.m b/1_preprocessing/gtSetup.m index c3dda07e8006f5df2e6b4acc4ebca47947426d64..5b4091b48d0e8c396ca36199018f7cb282fa9c19 100644 --- a/1_preprocessing/gtSetup.m +++ b/1_preprocessing/gtSetup.m @@ -210,9 +210,9 @@ if (exist(parameters_name, 'file')) % if a parameters.mat already exists in the analysis directory, use it. disp('Using existing parameters file in the analysis directory...'); disp(parameters_name); - p = load(parameters_name, 'parameters'); - p.parameters.acq.dir = parameters.acq.dir; - parameters = p.parameters; + new_params = gtLoadParameters(parameters.acq.dir); + new_params.acq.dir = parameters.acq.dir; + parameters = new_params; clear p; else % Otherwise just load stuff from XML and guess default parameters @@ -244,7 +244,7 @@ else clear params_acq; parameters = gtCheckParameters(parameters, 'acq', 'verbose', true); - save(parameters_name, 'parameters'); + gtSaveParameters(parameters); % Default SAMPLE REFERENCE % Default voxel size is set to 1 lab unit, so samgeo is like labgeo at @@ -252,7 +252,7 @@ else parameters.samgeo = gtGeoSamDefaultParameters(); parameters = gtCheckParameters(parameters, 'samgeo', 'verbose', true); - save(parameters_name, 'parameters'); + gtSaveParameters(parameters); % Default RECONSTRUCTION REFERENCE % Default voxel size is set to 1e-3 lab unit, so recgeo is like samgeo @@ -260,7 +260,7 @@ else parameters.recgeo = gtGeoRecDefaultParameters(); parameters = gtCheckParameters(parameters, 'recgeo', 'verbose', true); - save(parameters_name, 'parameters'); + gtSaveParameters(parameters); end % Get or confirm the important parameters: choosing flag = 1 from @@ -275,7 +275,7 @@ if strcmpi(parameters.acq.rotation_axis, 'horizontal') end disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); clear xmlfname; % get edf info structure from first image file @@ -308,6 +308,7 @@ end % get default values for labgeo parameters.labgeo = gtGeoLabDefaultParameters(parameters.acq); +parameters.detgeo = gtGeoDetDefaultParameters(parameters.acq); parameters.acq = rmfield(parameters.acq, 'rotation_name'); clear tmp_motors info @@ -322,28 +323,29 @@ else end if isempty(minangle) - parameters.labgeo.detanglemin = 0; + parameters.detgeo.detanglemin = 0; else - parameters.labgeo.detanglemin = minangle; + parameters.detgeo.detanglemin = minangle; end if isempty(maxangle) - parameters.labgeo.detanglemax = 45; + parameters.detgeo.detanglemax = 45; else - parameters.labgeo.detanglemax = maxangle; + parameters.detgeo.detanglemax = maxangle; end parameters = gtCheckParameters(parameters, 'labgeo', 'verbose', true); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); header = 'Parameters dealing with arbitrary geometry:'; % Note! Some other fields are calculated later, typically during % preprocessing when know the direct beam bounding box. parameters.labgeo = gtModifyStructure(parameters.labgeo, list.labgeo, 1, header); +% parameters.detgeo = gtModifyStructure(parameters.detgeo, list.detgeo, 1, header); disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); disp('Saving list.mat in the data collection directory...'); list_name = fullfile(parameters.acq.collection_dir, 'list.mat'); @@ -365,7 +367,7 @@ parameters.prep = gtAddMatFile(parameters.prep, params_prep, true, false, false) clear params_prep; disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -374,18 +376,18 @@ save(parameters_name, 'parameters'); parameters.seg = gtSegDefaultParameters(); disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MATCH - for Friedel pair matching %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% parameters.match = gtMatchDefaultParametersGUI(); -parameters.match.thetalimits = 0.5*[parameters.labgeo.detanglemin, ... - parameters.labgeo.detanglemax]; +parameters.match.thetalimits = 0.5*[parameters.detgeo.detanglemin, ... + parameters.detgeo.detanglemax]; disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -394,7 +396,7 @@ save(parameters_name, 'parameters'); parameters.index = gtIndexDefaultParameters(); disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -402,7 +404,7 @@ save(parameters_name, 'parameters'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% parameters.fsim = gtFsimDefaultParameters(); disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -410,7 +412,7 @@ save(parameters_name, 'parameters'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% parameters.rec = gtRecDefaultParameters(); disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -422,7 +424,7 @@ parameters.fed.dct_offset = [0 0 0]; parameters.fed.renumber_list = []; disp('Saving parameters.mat in the analysis directory...'); -save(parameters_name, 'parameters'); +gtSaveParameters(parameters); disp(' '); close('all'); @@ -454,7 +456,7 @@ try end % end crystallography disp('Saving parameters.mat in the analysis directory...'); - save(parameters_name, 'parameters'); + gtSaveParameters(parameters); disp(' '); catch err disp(' ') diff --git a/zUtil_Geo/gtGeoComputeExtraDetgeoProperties.m b/zUtil_Geo/gtGeoComputeExtraDetgeoProperties.m new file mode 100644 index 0000000000000000000000000000000000000000..31734bf3af588b58dfa95b770a6f59f3926daaa9 --- /dev/null +++ b/zUtil_Geo/gtGeoComputeExtraDetgeoProperties.m @@ -0,0 +1,9 @@ +function detgeo = gtGeoComputeExtraDetgeoProperties(detgeo) + detgeo.detnorm = gtMathsCross(detgeo.detdiru, detgeo.detdirv); % unit vector + + detgeo.detorig = gtGeoDetOrig(detgeo); + + detgeo.Qdet = gtFedDetectorProjectionTensor( ... + detgeo.detdiru, detgeo.detdirv, ... + detgeo.detscaleu, detgeo.detscalev); +end diff --git a/zUtil_Geo/gtGeoConvertLegacyLabgeo2Detgeo.m b/zUtil_Geo/gtGeoConvertLegacyLabgeo2Detgeo.m index 59c9403162c74fd3f5d60460b331ee8a887dcbbf..d4fe6e7ecafa0d3781a558283d4469a6dc5da6ab 100644 --- a/zUtil_Geo/gtGeoConvertLegacyLabgeo2Detgeo.m +++ b/zUtil_Geo/gtGeoConvertLegacyLabgeo2Detgeo.m @@ -17,13 +17,7 @@ function [detgeo, labgeo] = gtGeoConvertLegacyLabgeo2Detgeo(labgeo) detgeo.detscaleu = 1 / detgeo.pixelsizeu; detgeo.detscalev = 1 / detgeo.pixelsizev; - detgeo.detnorm = gtMathsCross(labgeo.detdiru, labgeo.detdirv); % unit vector - - detgeo.detorig = gtGeoDetOrig(detgeo); - - detgeo.Qdet = gtFedDetectorProjectionTensor( ... - detgeo.detdiru, detgeo.detdirv, ... - detgeo.detscaleu, detgeo.detscalev); + detgeo = gtGeoComputeExtraDetgeoProperties(detgeo); % Removing duplicates detfields = fieldnames(detgeo); diff --git a/zUtil_Geo/gtGeoDetDefaultParameters.m b/zUtil_Geo/gtGeoDetDefaultParameters.m new file mode 100644 index 0000000000000000000000000000000000000000..3c3e319b9c5bd69a6f7aa7db54821b6cd5dae58e --- /dev/null +++ b/zUtil_Geo/gtGeoDetDefaultParameters.m @@ -0,0 +1,98 @@ +function par_detgeo = gtGeoDetDefaultParameters(acq) +% GTGEOLABDEFAULTPARAMETERS +% par_labgeo = gtGeoDetDefaultParameters(acq) +% ------------------------------------------- +% Use of acq.dist, acq.pixelsize, acq.xdet, acq.ydet, +% acq.no_direct_beam, acq.bb, acq.rotation_axis, acq.rotation_direction, +% acq.detector_definition, [acq.rotationname] +% + +par_detgeo = []; + +% Pixel and detector size +par_detgeo.pixelsizeu = acq.pixelsize; +par_detgeo.pixelsizev = acq.pixelsize; +par_detgeo.detsizeu = acq.xdet; % number of pixels along the u direction +par_detgeo.detsizev = acq.ydet; % number of pixels along the v direction + +par_detgeo.detrefu = (par_detgeo.detsizeu/2) + 0.5; +par_detgeo.detrefv = (par_detgeo.detsizev/2) + 0.5; + +% Detector angular coverage limits (2theta) for entire sample volume +par_detgeo.detanglemin = 0; +par_detgeo.detanglemax = 45; + +if (acq.no_direct_beam && strcmp(acq.detector_definition, 'vertical')) + % Assume vertical setup; detector is above sample pointing downwards (-Z) + disp(['No direct beam case with a vetical detector. ' ... + 'Any flip was applied during the scan... Please check if it is true']) + par_detgeo.detrefpos = [0 acq.dist 0]; + par_detgeo.detdiru = [0 0 -1]; + par_detgeo.detdirv = [1 0 0]; + + if (strcmp(acq.rotation_direction, 'counterclockwise')) + % is this really true? + par_detgeo.detrefpos = -1 * par_detgeo.detrefpos; + par_detgeo.detdiru = -1 * par_detgeo.detdiru; + end + +elseif (~acq.no_direct_beam) + % inline detector HR camera - suppose it on x-axis + disp('High resolution direct beam scan...') + + par_detgeo.detrefpos = [acq.dist 0 0]; + par_detgeo.detdiru = [0 1 0]; + par_detgeo.detdirv = [0 0 -1]; + + if (strcmp(acq.rotation_direction, 'counterclockwise')) + % is this really true? + par_detgeo.detdiru = -1 * par_detgeo.detdiru; + par_detgeo.detdirv = -1 * par_detgeo.detdirv; + end + % Should take sample envelope from sample bbox (parameters.acq.bb) if + % exists, otherwise in gtPreprocessing + if (isfield(acq, 'bb') && ~isempty(acq.bb)) + par_detgeo.detrefpos(2:3) = sfDetrefpos(acq.bb, par_detgeo); + end + +elseif (acq.no_direct_beam && strcmp(acq.detector_definition, 'inline')) + % inline detector - suppose it on x-axis + % taper scan (far field) + disp('This looks like a taper scan...') + par_detgeo.detrefpos = [acq.dist 0 0]; + par_detgeo.detdiru = [0 1 0]; + par_detgeo.detdirv = [0 0 -1]; + + % Should take sample envelope from sample bbox (parameters.acq.bb) if + % exists, otherwise in gtPreprocessing + if (isfield(acq,'bb') && isempty(acq.bb)) + % guess a sample bounding box + acq.bb = [acq.xdet/2-50 acq.ydet/2-50 100 100]; + end + if (isfield(acq,'bb') && ~isempty(acq.bb)) + par_detgeo.detrefpos(2:3) = sfDetrefpos(acq.bb, par_detgeo); + end + disp('Choose a squared sample bounding box in the center of the image...') +end + +par_detgeo = gtGeoComputeExtraDetgeoProperties(par_detgeo); + +end % end of function + + +%%%%%%%%%%%%%%%%%%%%% +% SUB-FUNCTIONS +%%%%%%%%%%%%%%%%%%%%% + +function [dy, dz] = sfDetrefpos(acq_bb, par_labgeo) +% Returns the detector lateral (Y) and vertical (Z) positions which approximately +% account for an offset of the sample bounding box position: +% Y lateral: It assumes that the projection of the rotation axis is at the +% center of the sample bounding box. +% Z vertical: set in a way that the vertical center of the sample bounding +% box will have coordinate Z=0. +% It assumes rotpos = [0 0 0] and view into the beam. + + dy = -((acq_bb(1) + acq_bb(3)/2) - par_labgeo.detrefu) * par_labgeo.pixelsizeu; + dz = ((acq_bb(2) + acq_bb(4)/2) - par_labgeo.detrefv) * par_labgeo.pixelsizev; +end \ No newline at end of file diff --git a/zUtil_Geo/gtGeoLabDefaultParameters.m b/zUtil_Geo/gtGeoLabDefaultParameters.m index 8424749ba0516a8a320c35bfa0574e6c7bd5ebdb..461546e398aa0fefe7a8a8af3338faca7110b2a0 100644 --- a/zUtil_Geo/gtGeoLabDefaultParameters.m +++ b/zUtil_Geo/gtGeoLabDefaultParameters.m @@ -9,17 +9,9 @@ function par_labgeo = gtGeoLabDefaultParameters(acq) par_labgeo = []; -% Pixel and detector size -par_labgeo.pixelsizeu = acq.pixelsize; -par_labgeo.pixelsizev = acq.pixelsize; -par_labgeo.detsizeu = acq.xdet; % number of pixels along the u direction -par_labgeo.detsizev = acq.ydet; % number of pixels along the v direction - -% Beam direction, rot. axis position and detector properties +% Beam direction, rot. axis position par_labgeo.beamdir = [1 0 0]; par_labgeo.rotpos = [0 0 0]; -par_labgeo.detrefu = (par_labgeo.detsizeu/2) + 0.5; -par_labgeo.detrefv = (par_labgeo.detsizev/2) + 0.5; % Coordinate axes definition and Lab unit (for records only) par_labgeo.deflabX = 'Along the beam direction.'; @@ -27,10 +19,6 @@ par_labgeo.deflabY = 'Right-handed from Y=cross(Z,X).'; par_labgeo.deflabZ = 'Along rotation axis. Positive away from sample stage.'; par_labgeo.labunit = 'mm'; -% Detector angular coverage limits (2theta) for entire sample volume -par_labgeo.detanglemin = 0; -par_labgeo.detanglemax = 45; - % Rotation axis direction switch (acq.rotation_name) case 'pmo' @@ -49,24 +37,10 @@ if strcmp(acq.rotation_axis, 'horizontal') end end - if (acq.no_direct_beam && strcmp(acq.detector_definition, 'vertical')) % Assume vertical setup; detector is above sample pointing downwards (-Z) disp(['No direct beam case with a vetical detector. ' ... 'Any flip was applied during the scan... Please check if it is true']) - par_labgeo.detrefpos = [0 acq.dist 0]; - par_labgeo.detdiru = [0 0 -1]; - par_labgeo.detdirv = [1 0 0]; - if (strcmp(acq.rotation_direction, 'counterclockwise')) - % is this really true? - par_labgeo.detrefpos = -1 * par_labgeo.detrefpos; - par_labgeo.detdiru = -1 * par_labgeo.detdiru; - end - if (isfield(acq, 'bb') && isempty(acq.bb)) - % guess a sample bounding box - acq.bb = [1 1 4 4]; - disp('Choose a ''fake'' squared sample bounding box in the left-top corner of the image...') - end % Should guess sample envelope par_labgeo.samenvtop = []; par_labgeo.samenvbot = []; @@ -75,33 +49,21 @@ if (acq.no_direct_beam && strcmp(acq.detector_definition, 'vertical')) elseif (~acq.no_direct_beam) % inline detector HR camera - suppose it on x-axis disp('High resolution direct beam scan...') - - par_labgeo.detrefpos = [acq.dist 0 0]; - par_labgeo.detdiru = [0 1 0]; - par_labgeo.detdirv = [0 0 -1]; - if (strcmp(acq.rotation_direction, 'counterclockwise')) - % is this really true? - par_labgeo.detdiru = -1 * par_labgeo.detdiru; - par_labgeo.detdirv = -1 * par_labgeo.detdirv; - end + % Should take sample envelope from sample bbox (parameters.acq.bb) if % exists, otherwise in gtPreprocessing if (isfield(acq, 'bb') && ~isempty(acq.bb)) par_labgeo = gtGeoSamEnvFromAcq(par_labgeo, acq); - par_labgeo.detrefpos(2:3) = sfDetrefpos(acq.bb, par_labgeo); else par_labgeo.samenvtop = []; par_labgeo.samenvbot = []; par_labgeo.samenvrad = []; - end + end elseif (acq.no_direct_beam && strcmp(acq.detector_definition, 'inline')) % inline detector - suppose it on x-axis % taper scan (far field) disp('This looks like a taper scan...') - par_labgeo.detrefpos = [acq.dist 0 0]; - par_labgeo.detdiru = [0 1 0]; - par_labgeo.detdirv = [0 0 -1]; % Should take sample envelope from sample bbox (parameters.acq.bb) if % exists, otherwise in gtPreprocessing @@ -109,31 +71,8 @@ elseif (acq.no_direct_beam && strcmp(acq.detector_definition, 'inline')) % guess a sample bounding box acq.bb = [acq.xdet/2-50 acq.ydet/2-50 100 100]; end - if (isfield(acq,'bb') && ~isempty(acq.bb)) - par_labgeo.detrefpos(2:3) = sfDetrefpos(acq.bb, par_labgeo); - end par_labgeo = gtGeoSamEnvFromAcq(par_labgeo, acq); disp('Choose a squared sample bounding box in the center of the image...') end - -end % end of function - - -%%%%%%%%%%%%%%%%%%%%% -% SUB-FUNCTIONS -%%%%%%%%%%%%%%%%%%%%% - -function [dy, dz] = sfDetrefpos(acq_bb, par_labgeo) -% Returns the detector lateral (Y) and vertical (Z) positions which approximately -% account for an offset of the sample bounding box position: -% Y lateral: It assumes that the projection of the rotation axis is at the -% center of the sample bounding box. -% Z vertical: set in a way that the vertical center of the sample bounding -% box will have coordinate Z=0. -% It assumes rotpos = [0 0 0] and view into the beam. - -dy = -((acq_bb(1) + acq_bb(3)/2) - par_labgeo.detrefu) * par_labgeo.pixelsizeu; -dz = ((acq_bb(2) + acq_bb(4)/2) - par_labgeo.detrefv) * par_labgeo.pixelsizev; - -end \ No newline at end of file +end diff --git a/zUtil_Parameters/build_list_v2.m b/zUtil_Parameters/build_list_v2.m index af9c41d42cfb11c5c935357f65e108ffbc9f597f..24cd23701c605969fa11fed53fe704442a54a8ae 100644 --- a/zUtil_Parameters/build_list_v2.m +++ b/zUtil_Parameters/build_list_v2.m @@ -248,30 +248,12 @@ list.labgeo(end+1, :) = {'rotdir', ... 'Rotation axis direction in LAB (unit row vector); omega is right-handed rotation', 'double', 1}; list.labgeo(end+1, :) = {'rotpos', ... 'Rotation axis position (arbitrary point on axis) in LAB', 'double', 1}; -list.labgeo(end+1, :) = {'detrefpos', ... - 'Detector reference point (usually center) position in LAB', 'double', 1}; -list.labgeo(end+1, :) = {'detrefu', ... - 'Detector reference point U coordinate in pixels', 'double', 1}; -list.labgeo(end+1, :) = {'detrefv', ... - 'Detector reference point V coordinate in pixels', 'double', 1}; -list.labgeo(end+1, :) = {'detdiru', ... - 'Detector U direction in LAB (unit row vector)', 'double', 1}; -list.labgeo(end+1, :) = {'detdirv', ... - 'Detector V direction in LAB (unit row vector)', 'double', 1}; -list.labgeo(end+1, :) = {'pixelsizeu', ... - 'Detector pixel size in direction U (lab unit/pixel)', 'double', 1}; -list.labgeo(end+1, :) = {'pixelsizev', ... - 'Detector pixel size in direction V (lab unit/pixel)', 'double', 1}; list.labgeo(end+1, :) = {'samenvtop', ... '[Computed] Distance from rotpos to top of sample envelope along rotdir (signed scalar in lab units)', 'double', 0}; list.labgeo(end+1, :) = {'samenvbot', ... '[Computed] Distance from rotpos to bottom of sample envelope along rotdir (signed scalar in lab units)', 'double', 0}; list.labgeo(end+1, :) = {'samenvrad', ... '[Computed] Radius of sample envelope (in lab units)', 'double', 0}; -list.labgeo(end+1, :) = {'detanglemin', ... - '[Computed] Detector minimum 2Theta angle to consider', 'double', 0}; -list.labgeo(end+1, :) = {'detanglemax', ... - '[Computed] Detector maximum 2Theta angle to consider', 'double', 0}; list.labgeo(end+1, :) = {'labunit', ... 'LAB units (default is mm) [for records only]', 'char', 1}; list.labgeo(end+1, :) = {'deflabX', ... @@ -280,9 +262,33 @@ list.labgeo(end+1, :) = {'deflabY', ... 'Description how Lab Y direction was chosen [for records only]', 'char', 1}; list.labgeo(end+1, :) = {'deflabZ', ... 'Description how Lab Z direction was chosen [for records only]', 'char', 1}; -list.labgeo(end+1, :) = {'detsizeu', ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Parameters to describe the setup geometry +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% coordinates are given in the Det reference +list.detgeo = cell(0, 4); +list.detgeo(end+1, :) = {'detrefpos', ... + 'Detector reference point (usually center) position in LAB', 'double', 1}; +list.detgeo(end+1, :) = {'detrefu', ... + 'Detector reference point U coordinate in pixels', 'double', 1}; +list.detgeo(end+1, :) = {'detrefv', ... + 'Detector reference point V coordinate in pixels', 'double', 1}; +list.detgeo(end+1, :) = {'detdiru', ... + 'Detector U direction in LAB (unit row vector)', 'double', 1}; +list.detgeo(end+1, :) = {'detdirv', ... + 'Detector V direction in LAB (unit row vector)', 'double', 1}; +list.detgeo(end+1, :) = {'pixelsizeu', ... + 'Detector pixel size in direction U (lab unit/pixel)', 'double', 1}; +list.detgeo(end+1, :) = {'pixelsizev', ... + 'Detector pixel size in direction V (lab unit/pixel)', 'double', 1}; +list.detgeo(end+1, :) = {'detanglemin', ... + '[Computed] Detector minimum 2Theta angle to consider', 'double', 0}; +list.detgeo(end+1, :) = {'detanglemax', ... + '[Computed] Detector maximum 2Theta angle to consider', 'double', 0}; +list.detgeo(end+1, :) = {'detsizeu', ... 'Number of pixels along the u direction', 'double', 1}; -list.labgeo(end+1, :) = {'detsizev', ... +list.detgeo(end+1, :) = {'detsizev', ... 'Number of pixels along the v direction', 'double', 1}; diff --git a/zUtil_Parameters/gtCheckParameters.m b/zUtil_Parameters/gtCheckParameters.m index a2e9dd65160c2316a0e2d272ca8da9f4a7f82f12..6d9dfa659db5573a3ef8de2875e82ec318c0bbf9 100644 --- a/zUtil_Parameters/gtCheckParameters.m +++ b/zUtil_Parameters/gtCheckParameters.m @@ -392,6 +392,8 @@ function section = get_default_section(section_name, parameters) switch(section_name) case 'labgeo' section = gtGeoLabDefaultParameters(parameters.acq); + case 'detgeo' + section = gtGeoDetDefaultParameters(parameters.acq); case 'samgeo' section = gtGeoSamDefaultParameters(); case 'recgeo' diff --git a/zUtil_Parameters/gtLoadParameters.m b/zUtil_Parameters/gtLoadParameters.m index 40b9aa937ca2c1142235f5fae91f920d0eb3702f..c85890e9bbad926a0c8d0f4fd3cf1ef5a1eaca4a 100644 --- a/zUtil_Parameters/gtLoadParameters.m +++ b/zUtil_Parameters/gtLoadParameters.m @@ -1,5 +1,9 @@ -function p = gtLoadParameters() - p = load('parameters.mat'); +function p = gtLoadParameters(path_to_params) + parameters_file_name = 'parameters.mat'; + if (exist('path_to_params', 'var')) + parameters_file_name = fullfile(path_to_params, parameters_file_name); + end + p = load(parameters_file_name); if (isfield(p, 'parameters')) p = p.parameters; end diff --git a/zUtil_Parameters/gtSaveParameters.m b/zUtil_Parameters/gtSaveParameters.m index ed407a812b4d007d5f59dcb6c55e738b88915536..975ca588a97cd5d2bc3fb78437d146011c8a99b7 100644 --- a/zUtil_Parameters/gtSaveParameters.m +++ b/zUtil_Parameters/gtSaveParameters.m @@ -1,6 +1,10 @@ -function gtSaveParameters(parameters) %#ok<INUSD> +function gtSaveParameters(parameters) if (~exist('parameters', 'var')) - parameters = evalin('base', 'parameters'); %#ok<NASGU> + parameters = evalin('base', 'parameters'); end - save('parameters.mat', 'parameters', '-v7.3'); +% if (~strcmp(pwd(), parameters.acq.dir)) +% warning('gtSaveParameters:wrong_path', '') +% end + parameters_file_name = fullfile(parameters.acq.dir, 'parameters.mat'); + save(parameters_file_name, 'parameters', '-v7.3'); end