pwAddU


 m = pwAddU(m, ID, uType, uTimes, uValues, compartment, name, ...
           description, u2Values, alternativeIDs, designerProps, ...
           classname, referenceXID, unit, formula)

 Adds a driving input to a model.

 

Arguments for pwAddU

 m              struct          Model struct
 ID             ID
 uType          string          'steps', 'linear', 'spline', 'logistic', 'injection'
                or int          1        2         5         6           7
 uTimes         float vector    time values
 uValues        float vector    step values
 compartment    ID
 name           string          descriptive name
 description    string
 u2Values       float vector    second derivative if available (see below)
 alternativeIDs cell array
 designerProps  matrix          Visualization properties:
                                [x y z w h color isFlippedX isFlippedY isUpright;
                                ...]
 classname      string          Custom class name of the variable to define its shape
                                in the model designer and to group related variables.
                                For Systems Biology models (compare CellDesigner):
                                'protein.generic', 'protein.receptor',
                                'protein.ion_channel', 'protein.truncated',
                                'gene','rna' 'antisense_rna', 'phenotype',
                                'simple_molecule', 'drug', 'unknown', 'complex',
                                'ion', 'degraded'
 referenceXID   ID              Only used for injection inputs:
                                x1(t) = x2(t) + uValues(t), where x1 is the variable with the
                                same ID as the driving input and x2 is given by the
                                referenceXID. Usually x1 and x2 denote the same variable (default),
                                corresponding to an increase of x1 by uValues(t) at time t.
                                However, in order to 'copy' the value of another variable,
                                it can be useful to have the flexibitiy to specify x2 separately.
                                Please use the formula 'u' (see below), if x1 should be
                                set to uValues(t), i.e. x1(t) = uValues(t).
 unit           string
 formula        string          Only used for injection inputs. Examples:
                                'x + u' (default):
                                x1(t) is set to x2(t) + uValues(t)
                                'u':
                                x1(1) is set to uValues(t)
                                'x + u/2'
                                x1(t) is set to x2(t) + uValues(t)/2
                                'x/2'
                                x1(t) is set to x2(t)/2
                                '0'
                                x1(t) is set to 0.


 

Description

 Some players like the ligand concentration may be controlled
 externally and are represented in the model definition file as
 driving inputs. Linear, step, and exponential interpolations are supported.
 Alternatively, injections can be used if the player should take
 part as a normal substance in the dynamic system, but is increased
 at certain time points by a given amount - like an IV-bolus.

 A step input corresponds to a 'piecewise' function, which can also
 be used within PottersWheel. However, PottersWheel is optimized for
 driving inputs, so the 'piecewise' function should be avoided if possible,
 i.e. for all time-dependent piecewise expressions.

 

Interpolations

 

Cubic spline

 Values (uValues) and second derivatives (uValues2) of the spline have to
 be specified for all knots (uTimes) to define a cubic spline as described
 in the Numerical Recipes, section 3.3 (Cubic spline interpolation).

 v  = value of spline
 v2 = second derivative of spline

  h = t[right] - t[left];'; % right and left are the indeces around time of interest tt
  a = (t[right] - tt) / h;';
  b = (tt - t[left]) / h;';
  interpolated_value_at_tt = a * v[left] + b * v[right] + ...
                            ((a*a*a - a) * v2[left] + ...
                            (b*b*b-b) * v2[right]) * (h*h) / 6.0;';

 

Example

 A step input of ligand 'L' starting at t=-100 at level 0,
 jumping at t=0 to 5 and decreasing at t=10 to level 2:

 m = pwAddU(m, 'L', 'steps', [-100 0 10], [0 5 2]);

See also

pwGetDrivingFunction
pwAddR
pwAddData
pwDrivingInputTypeConversion