From b8f222d3c4560cd4ef16b484a9923e5a4486e12a Mon Sep 17 00:00:00 2001 From: Yoann Guilhem <yoann.guilhem@esrf.fr> Date: Fri, 7 Dec 2012 15:25:34 +0000 Subject: [PATCH] Cleaned and optimized gtHSTParamReader git-svn-id: https://svn.code.sf.net/p/dct/code/trunk@951 4c865b51-4357-4376-afb4-474e03ccb993 --- zUtil_TomoUtils/gtHSTParamReader.m | 51 ++++++++++++------------------ 1 file changed, 20 insertions(+), 31 deletions(-) diff --git a/zUtil_TomoUtils/gtHSTParamReader.m b/zUtil_TomoUtils/gtHSTParamReader.m index 01b43ae1..cef4eb3f 100644 --- a/zUtil_TomoUtils/gtHSTParamReader.m +++ b/zUtil_TomoUtils/gtHSTParamReader.m @@ -21,16 +21,16 @@ function par = gtHSTParamReader(filename) par = []; pattern = '(?<parameter>.*)=(?<value>.*)'; if ~exist(filename,'file') - error(['Could not find ' filename]); + gtError('gtHSTParamReader', ['Could not find ' filename]); end fid = fopen(filename,'rt'); if fid==-1 - error(['Could not open ' filename]); + gtError('gtHSTParamReader', ['Could not open ' filename]); end % Initialize correct_rings_nb -par = setfield(par, 'correct_rings_nb', -1); +par.correct_rings_nb = -1; while ~feof(fid) txt = fgetl(fid); @@ -50,24 +50,15 @@ while ~feof(fid) if regexp(field,'^ar2(\d+)') value = regexprep(field,'ar2(\d+)','$1'); - nb = str2num(value)/2 -1; - par = setfield(par, 'correct_rings_nb', nb); + par.correct_rings_nb = str2double(value)/2 -1; continue; end - test = []; - if ~isempty(regexp(tmp.value,'[0-9]')) - test = str2num(tmp.value); - end - try - if isempty(test) - par = setfield(par, field, tmp.value); - else - par = setfield(par, field, test); - end - catch - warning('Didn''t understand this header'); - disp(field); + nb = str2num(tmp.value); + if ~isempty(regexp(tmp.value, '[0-9]', 'once')) && ~isempty(nb) + par.(field) = nb; + else + par.(field) = tmp.value; end else disp(txt); @@ -78,11 +69,11 @@ end ndx = find(par.options==':') + 2; tmp.padding = par.options(ndx(1)); tmp.axis = par.options(ndx(2)); -par = setfield(par, 'options_padding', tmp.padding); -par = setfield(par, 'options_axis', tmp.axis); +par.options_padding = tmp.padding; +par.options_axis = tmp.axis; if length(ndx) > 2 tmp.avoid = par.options(ndx(3)); - par = setfield(par, 'options_avoidhalftomo', tmp.avoid); + par.options_avoidhalftomo = tmp.avoid; end par.ccd_filter_para = sscanf(par.ccd_filter_para, '{"threshold":%f}'); @@ -95,17 +86,15 @@ end % end of function % SUB-FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -function field=sfCleanField(str) +function field = sfCleanField(str) % SFCLEANFIELD Removes weird characters (spaces, parentheses) from field. - str = lower(strtrim(str)); - str(find(str==' ')) = '_'; - str(find(str=='(')) = []; - str(find(str==')')) = []; - str(find(str=='-')) = '_'; - str(find(str=='[')) = []; - str(find(str==']')) = []; - str(find(str==':')) = []; + str(str==' ') = '_'; + str(str=='(') = []; + str(str==')') = []; + str(str=='-') = '_'; + str(str=='[') = []; + str(str==']') = []; + str(str==':') = []; field = str; - end % end of sfCleanField -- GitLab