Like InitialConditions, the Parameters field of scotch model JSON files is a dictionary. Each key is the name of a parameter, as a string. Each value is a string expression for the value of that parameter.

"Parameters" : {
    "alpha" : "1/10",
    "beta" : "1 + sin(2 * pi * time)"

Values are required to be strings because parameter values are parsed into expressions that can be evaluated as lambdas. This allows a number of functions to be used :

  • sin, sinh, arcsin, arcsinh
  • cos, cosh, arccos, arccosh
  • tan, tanh, arctan, arctanh
  • exp, expm1 ( exp(x) - 1 )
  • log, log10, log2, log1p ( log(1+x) )
  • ceil, floor, abs
  • sinc
  • square, sqrt
  • sign ( returns +1 or -1 )
  • time

A number of reserved keywords also allow access to constants and to the explicit value of time :

  • pi
  • time ( allows time-dependent parameter rates to be used )

As an example, sin(2 * pi * sqrt(F) * time) is a legal part of a parameter value, if you have declared F as a state variable; this particular example allows parameters to vary sinusoidally in time. The time keyword is replaced by the numerical value of time during simulation. Parameters can therefore be state-dependent and time-dependent; they cannot, however, be written in terms of other parameters.

All numerical values are cast as floats, so expressions like 1/10 will be evaluated as 0.1.

Allowed operators are :

  • +
  • -
  • *
  • /
  • **
  • (, )

Currently, custom functions that cannot be written with this syntax will not evaluate.