Expression Evaluation
The compile command has support for evaluation of custom expressions.
In general, these tools are a very limited subset of Python, but they do make some this a little easier. For example, if you want the edge of a state definition to be at 100 degrees, but the underlying CV actually calculates in radians, you can use the expression value:
100 * np.pi / 180
Internally, OpenPathSampling will evaluate this and return 1.745329(…), which is 100 degrees in radians.
Expression evaluation is limited to a single Python expression. Typically, this translates to “a single line of Python.” No imports are allowed, but the following namespaces are available:
np: NumPy, as ifimport numpy as npmath: standard math library, as ifimport math
EvalFloat
A parameter of type EvalFloat uses expression evaluation and must
evaluate to a floating point number. It will be cast to a Python float,
and if that cast fails, an error will be raised.
EvalInt
A parameter of type EvalInt uses expression evaluation and will be cast
to a Python int (i.e., the result will be passed through
int(result)). Note that this means that it will use the standard Python
truncation rules for int (int(1.5) == 1, int(-1.5) == -1, etc.).
If that cast fails, an error will be raised.
EvalIntStrictPos
A parameter of type EvalIntStrictPos follows the same rules as a
parameter of type EvalInt with the additional restriction
that the resulting value must be strictly positive (non-negative, non-zero).
If it is not, an error will be raised.