Mercurial > hg > ltpda
diff m-toolbox/classes/+utils/@models/processModelInputs.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/classes/+utils/@models/processModelInputs.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,85 @@ +% PROCESSMODELINPUTS processes the various input options for built-in +% models. +% +% The function requires various pieces of information about the model: +% +% [info, pl, constructorInfo, fcn] = ... +% processModelInputs(options, ... +% modelname, ... +% getModelDescription, ... +% getModelDocumentation, ... +% getVersion, ... +% versionTable) +% +% options - the options passed by the constructor to the model +% +% + +function [info, pl, constructorInfo, fcn] = processModelInputs(options, modelname, getModelDescription, getModelDocumentation, getVersion, versionTable) + + info = []; + pl = []; + constructorInfo = []; + fcn = []; + + if ischar(options{1}) + if strcmpi(options{1}, 'describe') || strcmpi(options{1}, 'description') + if numel(options) == 2 && ischar(options{2}) + version = options{2}; + else + vt = versionTable(); + version = vt{1}; + end + info = utils.models.getDescription(getModelDescription, versionTable, version, getVersion); + elseif strcmpi(options{1}, 'doc') + info = getModelDocumentation(); + if isempty(info) + info = 'no documentation'; + end + elseif strcmpi(options{1}, 'versionTable') + info = versionTable(); + elseif strcmpi(options{1}, 'version') + info = getVersion(); + elseif strcmpi(options{1}, 'plist') % for backwards compatibility + if numel(options) == 2 && ischar(options{2}) + info = utils.models.getDefaultPlist(getModelDescription, versionTable, options{2}); + else + info = utils.models.getDefaultPlist(getModelDescription, versionTable); + end + elseif strcmpi(options{1}, 'info') + if numel(options) == 2 && ischar(options{2}) + ver = options{2}; + else + pl = utils.models.getDefaultPlist(getModelDescription, versionTable); + ver = pl.find('version'); + end + info = utils.models.getInfo(modelname, getModelDescription, versionTable, ver, getVersion); + else + error('incorrect inputs'); + end + return + end + + % Inputs and default values + userPlist = options{1}; + version = userPlist.find('version'); + if isempty(version) + vers = versionTable(); + version = vers{1}; + end + if numel(options) > 1 + constructorInfo = options{2}; + pl = combine(userPlist, constructorInfo.plists, utils.models.getDefaultPlist(getModelDescription, versionTable, version)); + else + constructorInfo = ''; + pl = combine(userPlist, utils.models.getDefaultPlist(getModelDescription, versionTable, version)); + end + + % Build the object + fcn = utils.models.functionForVersion(getModelDescription, versionTable, version); + + if ~isempty(constructorInfo) + constructorInfo.addChildren(utils.models.getInfo(modelname, getModelDescription, versionTable, version, getVersion)); + end + +end \ No newline at end of file