2.14.2.15 op_change

Brief Information

Get/set/execute operation using a tree

Additional Information

This X-Function is not designed for Auto GetN Dialog.

Minimum Origin Version Required: 8.1 SR2

Command Line Usage

1. op_change ir:=FitNL1! tr:=mytr; // output the tree of an operation.

2. op_change ir:=col(2) tr:=mytr op:=run; // Set the operation by a tree and run.

Variables

Display
Name
Variable
Name
I/O
and
Type
Default
Value
Description
ir

Input

Range

<optional>
Specifies the range that contains operation. This X-Function gets treenodes from or triggers the recalculation using settings specified in treenodes in this range.
tr

Input/Output

TreeNode

<none>
Specifies the tree name to get or set operation settings.
op

Input

int

0
Specified the operation performed on the tree node

Option list:

  • get:Get Tree
    Gets settings from input operation object and store them in tree node
  • run:Set and Execute
    Sets and executes the operation settings stored in tree node
  • set:Set Tree Only
    Sets operation settings to tree node only
result

Output

int

<unassigned>
Shows whether the execution succeeds or not. If result = 1, execution succeeds. If result = 0 or -1, execution fails.

Description

After getting results of an operation, which allows recalculation, it is usually wanted to get access to the operation settings, change some of them and trigger a new recalculation. This X-Function allows you to obtain the operation settings from the input object and store them into a user-defined tree. You can reset the settings and execute the operation again. It is especially useful when you load an Analysis Template and want to change some settings for a new run of analysis.

Examples

This example shows how do a smoothing and then modify input and some parameters and update the result with op_change X-Function.

newbook;
col(1)={1:32}; //Fill first column with numbers from 1 to 32
col(2)=col(1)+rnd(); //Fill second column with column 1's value plus random numbers.
col(3)=col(1)+3*rnd(); //Create and fill third column with column 1's values plus 3 times random numbers
worksheet -s 2 0; //select 2nd column
smooth -r 2; //do smoothing on selected column and set recalculation mode to manual
op_change ir:=col(4) tr:=mytree; //get smooth settings to mytree 
mytree.xfGetN.iy.Range1.Y$="[%H]Sheet1!C"; //change input Y value to be column C. Note: User can run mytree.= to see the contents in tree
mytree.xfGetN.npts=10; //change npt variable (points of window) to be 10
op_change ir:=col(4) tr:=mytree op:=run; //recalculate smoothing by using changed settings in mytree: col C as input and npts=10

This example modifies the polynomial fitting's settings with op_change X-function.

newbook name:="Curves" result:=bkn$;
// import file from Origin EXE path.
string fn$= system.path.program$ + "\Samples\Curve Fitting\Polynomial Fit.dat" ;
impASC fname:= fn$
options.sparklines:=0 
options.FileStruct.NumericSeparator:=0 
options.Names.FNameToSht:=0 
options.Names.FNameToBk:=0 
options.Names.FNameToBkComm:=0;
// use fitpoly X-function to carry out polynomial fit for the XY dataset in the first two columns.
// use the "-r" switch option to set the recalculation mode to "Auto". 
fitpoly iy:=[%(bkn$)]!(1,2) polyorder:=2 
        coef:=<new> oy:=[<Input>]<new>!<new> 
        AdjRSq:=arsq RSqCOD:=rsq -r 1;
// get a range variable that contains this operation, which will be used later. 
range r1 = [%(bkn$)]%(page.active$)!col(1);
// get the setting in the operation as the tree variable mytree. 
op_change ir:=r1 tr:=mytree;
// change the settings of the operation.
// change the input data
mytree.xfGetN.iy.Range1.Y$ = "[%(bkn$)]1!C";
// change the polynomial order
mytree.xfGetN.polyorder = 3;
// execute the operation again with the modified settings. 
op_change ir:=r1 tr:=mytree op:=run;