Par input.m
Jump to navigation
Jump to search
%PAR_INPUT.M
%11/4/99 code pulled from goplot4.m
%parfile,gp,dp
%called by goac9_tiho Added by Erik S 6/6/2010
function [par,parnames]=par_input(varargin)
%assign command line parameters to local variables
disp('in par_input')
narg=length(varargin);
varargin;
nrow=narg/2;
if nrow==round(nrow),
for iarg=1:2:length(varargin),
eval([varargin{iarg} '= varargin{iarg+1};']);
end
else
display('par_input: command line pairs not correctly formed');
return
end
%local parameters, if passed a parfile
%parfile
[lp,ll]=read_struc(parfile);
if isempty(lp),
disp(['par_input: local par structure is empty, check ' parfile]);
end
%does the local file give a defaults file
if isfield(lp,'defaults'),
switch lp.defaults
case ''
disp('par_input: default par structure is empty, use lp structure');
dp=lp;
dl=ll;
case 'program'
%don't look for a defaults file, the dp array is passed to this function.
if ~exist(dp),
disp('par_input: default par structure is empty, not passed to par_input');
dp=[];
dl=[];
else
dl=fieldnames(dp);
end
otherwise
%load defaults file if specified, determine format by ext.
dp=[];
if findstr(lp.defaults,'.par'),%only look for .par
%lpdefaultsis_beforereadstruc = lp.defaults
[dp,dl]=read_struc(lp.defaults);
% return
elseif findstr(lp.defaults,'.mat'), %only look for .mat
load(lp.defaults);
else %update .mat if .par is newer
m=dir([lp.defaults,'.mat']);
if isempty(m),
m(1).date=0;
end
p=dir([lp.defaults,'.par']);
if isempty(m) | datenum(p.date) > datenum(m.date),
[dp,dl]=read_struc([lp.defaults,'.par']);
save(lp.defaults,'dp');
else
load(lp.defaults);
end
end
if isempty(dp),
disp(['par_input: default par structure is empty, ' lp.defaults , ...
' not found']);
end
end
end
if ~exist('dp') | isempty(dp),
if exist('def_file'),
lp.defaults=def_file
%load defaults file if specified, determine format by ext.
dp=[];
if findstr(lp.defaults,'.par'), %only look for .par
[dp,dl]=read_struc(lp.defaults);
elseif findstr(lp.defaults,'.mat'), %only look for .mat
load(lp.defaults);
else %update .mat if .par is newer
m=dir([lp.defaults,'.mat']);
if isempty(m),
m.date=0;
end
p=dir([lp.defaults,'.par']);
if isempty(m) | datenum(p.date) > datenum(m.date),
[dp,dl]=read_struc([lp.defaults,'.par']);
save(lp.defaults,'dp');
else
load(lp.defaults);
end
end
if isempty(dp),
disp(['par_input: default par structure is empty, ' lp.defaults , ...
' not found']);
end
end
end
if ~exist('dp') | isempty(dp),
disp(['par_input: default par structure is empty, using local values']);
dp=lp;
dl=ll;
end
%allows local par file to override defalut file for use of local
%pars
%_ | '' | 'y' | 'n'
if isfield(lp,'local_pars'),
if ~isempty(lp.local_pars),
dp.local_pars=lp.local_pars;
end
end
%default to use loacl pars if not specified in default par file
%_ | '' | 'y' | 'n'
if isfield(dp,'local_pars'),
if isempty(dp.local_pars),
dp.local_pars='y';
end
else
dp.local_pars='y';
end
if dp.local_pars=='y',
% disp('here')
%update dp.defaults with local values, y|n
for iname=1:size(ll,1),
eval(['dp.' parse(ll(iname,:),1) '=lp.' ll(iname,:) ';']);
end
dl=fieldnames(dp);
end
%global parameters: overwrite,add
if exist('gp'),
gl=char(fieldnames(gp));
for iname=1:size(gl,1),
eval(['dp.' parse(gl(iname,:),1) '=gp.' gl(iname,:) ';']);
end
end
if isempty(dp),
disp('par_input: returning empty par structure');
par=[]
parnames=[];
else
[par,parnames]=sortstruct(dp);
parnames=char(parnames);
end
return