Evriscript

From Eigenvector Research Documentation Wiki
Revision as of 15:28, 16 November 2010 by imported>Donal
Jump to navigation Jump to search

Purpose

EVRISCRIPT objects allow calling various PLS_Toolbox operations in an object-oriented way. A script can contain one or more steps, each of which is a separate object with its own inputs and outputs. Each step is defined by a keyword which represents the type of step (known as a module) to perform.

Description

Creating a script

Call evriscript with parameters indicating the sequence of steps to perform, each step indicated by its keyword. The list of available step keywords is given by the command: evriscript_module('showall')

  myscript = evriscript(keyword,keyword,...);  % create a script with two or more steps

Example, myscript = evriscript( 'pls', 'crossval', 'choosecomp', 'pls'); creates an evriscript named 'myscript'. The script steps are evriscript_step objects which can be accessed by indexing, 'myscript(1)', for example.

The individual steps' properties are then configured. Most steps have more than one 'step_mode', for example 'calibrate', 'apply' or 'test'. You can see which step_modes are avaialable for a step by entering myscript(1).step_module. This also shows the required and optional properties associated with the step for each step_mode. The 'calibrate' step_mode lists required properties as: 'x', 'y', and 'ncomp'.

Assigning step properties

script(step).property = value

where "step" is the step number to modify and "property" is the property to assign with the given value. Example:

myscript(1).step_mode              = 'calibrate';
myscript(1).options.display        = 'on';
myscript(1).options.plots          = 'none';
myscript(1).options.preprocessing  = {'autoscale'};
myscript(1).x                      = xblock1;
myscript(1).y                      = yblock1;
myscript(1).ncomp                  = ncomp;

Note, that variables used for assignment must exist in the workspace, xblock1, yblock1, ncomp, for example, at the time the step is executed.

Defining step mode: Some step modules can operate in different "modes" and the desired mode must be selected prior to script execution. Typically, modes define different required inputs and provided outputs. The specifics of the inputs and outputs are defined on the help page for the given module (this is the same as the function help page). Example values for step mode are the "calibrate", "test", and "apply" modes of the PCA, PLS, and other modeling functions. To define the mode for a given step, assign the "step_mode" property of the given script step. Example:

script(1).step_mode = 'calibrate'

assigns step one's mode to be "calibrate". Note that if a given module has only one mode it can operate in, then that mode is automatically selected. Otherwise, the user must choose among the modes available.

Executing a script

Once a script is created, all the steps can be executed using the "execute" method:

script.execute

The results of each step are stored in the properties of the step and can be retrieved using standard property indexing:

script(2).property

Step Output/Input Referencing (chaining)

The input to one step in a script can be defined "by reference" where the contents will be taken from the output of a previous script step at execution time. Generically the call is:

script.reference(fromStep,'fromProperty',toStep,'toProperty')

Example:

script.reference(1,'outputvar',2,'inputvar')

References can also be used in the form:

script(toStep).inputvar = evriscript_reference('outputvar',fromStep)

For example:

myscript(2).rm = evriscript_reference('model', myscript(1));

Other Methods

The following methods are also defined for EVRISCRIPT objects:

add(obj,step)                % Add new step to end of script
add(obj,step,insertIndex)    % Add new step at insertIndex position
swap(obj, index1, index2)    % Swap the two steps at these indices
delete(stepIndex)            % Delete the indicated script step number

Indexing

Script objects can also be indexed and modified using standard Matlab array notation. For example:

[script evriscript('keyword')]  % add a new step to the end of script
script(stepIndex) = []          % delete the indicated script step
script(stepIndex)               % extracts indicated step(s) from script