Home > functions > gui > batch > batch_mgr > vb_batch_mgr_create_concrete_parm.m

vb_batch_mgr_create_concrete_parm

PURPOSE ^

Create concreate parameters from Table and Tempatle parameters

SYNOPSIS ^

function [obj, cancelled] = vb_batch_mgr_create_concrete_parm(obj)

DESCRIPTION ^

 Create concreate parameters from Table and Tempatle parameters

 [USAGE]
    [obj, cancelled] = vb_batch_mgr_create_concrete_parm(<obj>);
 [IN]
    obj : vb_batch_mgr object
 [OUT]
    obj : vb_batch_mgr object
    cancelled : <<bool>>  true : creation is cancelled.
                         false : creation is executed.

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function [obj, cancelled] = vb_batch_mgr_create_concrete_parm(obj)
0002 % Create concreate parameters from Table and Tempatle parameters
0003 %
0004 % [USAGE]
0005 %    [obj, cancelled] = vb_batch_mgr_create_concrete_parm(<obj>);
0006 % [IN]
0007 %    obj : vb_batch_mgr object
0008 % [OUT]
0009 %    obj : vb_batch_mgr object
0010 %    cancelled : <<bool>>  true : creation is cancelled.
0011 %                         false : creation is executed.
0012 %
0013 % Copyright (C) 2011, ATR All Rights Reserved.
0014 % License : New BSD License(see VBMEG_LICENSE.txt)
0015 
0016 %
0017 % --- Previous check
0018 %
0019 if ~exist('obj', 'var')
0020     error('obj is a required parameter.');
0021 end
0022 
0023 %
0024 % --- Main Procedure
0025 %
0026 cancelled = false;
0027 
0028 [column, data] = vb_batch_variable_table_get_data(obj.table);
0029 
0030 % The number of Template parameters
0031 Nparm = vb_batch_parm_set_get_num_of_parm(obj.template);
0032 
0033 
0034 % The number of parameter set to be created.
0035 [column, table]  = vb_batch_variable_table_get_data(obj.table);
0036 Nvariable = length(column);
0037 Nset = size(table, 1);
0038 
0039 %% Are there created parameters?
0040 %if length(obj.parm_set)
0041 %    res = questdlg(...
0042 %         'Parameters already exists. Overwrite?', ...
0043 %         'Confirm', 'Yes', 'No', 'No');
0044 %    if strcmpi(res, 'no')
0045 %        cancelled = true;
0046 %        return;
0047 %    end
0048 %end
0049 
0050 % Are there empty cell?
0051 flag_empty = false;
0052 for k=1:Nset
0053     for j=1:Nvariable
0054         if isempty(table{k, j}), flag_empty = true; end
0055     end
0056 end
0057 if flag_empty
0058     res = questdlg(...
0059         'There are some empty cells in the table. Continue?', ...
0060         'Confirm', 'Yes', 'No', 'No');
0061     if strcmpi(res, 'no')
0062         cancelled = true;
0063         return;
0064     end
0065 end
0066 
0067 % Create ID strings
0068 ix   = strmatch('$ID$', column, 'exact');
0069 if isempty(ix)
0070     ids = cell(Nset, 1);
0071 else
0072     ids  = table(:, ix);
0073 end
0074 
0075 for k=1:length(ids)
0076     if isempty(ids{k}), ids{k} = ['ID' num2str(k)]; end
0077 end
0078 
0079 obj.parm_set = cell(0);
0080 for k=1:Nset
0081     % Create parameter set
0082     parm_set = vb_batch_parm_set_new(ids{k});
0083 
0084     for m=1:Nparm
0085         % Read Nth template parameter
0086         [parm, parm_type] = vb_batch_mgr_get_parm(obj, 0, m);
0087 
0088         % Replace Variable name to concrete value
0089         for n=1:Nvariable
0090             key   = column{n};
0091             value = table{k, n};
0092             if isempty(value), value = ''; end
0093 
0094             key = strrep(key, '$', '\$');     % disable meta char of '$'
0095             value = strrep(value, '\', '\\'); % disable escape code in value
0096             parm = inner_replace_key2value(parm, key, value);
0097         end
0098         % remove time stamp field
0099         if isfield(parm, 'time_stamp')
0100             parm = rmfield(parm, 'time_stamp');
0101         end
0102         parm_set = vb_batch_parm_set_add_parm(parm_set, parm, parm_type);
0103     end
0104 
0105     % Save parm_set
0106     obj.parm_set{k, 1} = parm_set;
0107 end
0108 
0109 %
0110 % --- After check
0111 %
0112 if nargout < 1
0113     error('function caller should receive object.');
0114 end
0115 
0116 function parm = inner_replace_key2value(parm, key, value)
0117 % find key in the parameter and replace it to concrete value
0118 % [USAGE]
0119 % [IN]
0120 %     parm : parameter
0121 %      key : keyword such as '$SUBJ$', '$ID$' [STRING]
0122 %    value : user specified value
0123 % [OUT]
0124 %    parm : modified parameter
0125 
0126 fields = fieldnames(parm);
0127 Nfields = length(fields);
0128 
0129 for k=1:Nfields
0130     field = parm.(fields{k});
0131     if iscellstr(field) || ischar(field)
0132         parm.(fields{k}) = regexprep(field, key, value);
0133     elseif isstruct(field)
0134         parm.(fields{k}) = inner_replace_key2value(field, key, value);
0135     end
0136 end

Generated on Tue 27-Aug-2013 11:46:04 by m2html © 2005