# Data Set Math

As of version 15, cpptraj can perform basic math operations, even on data sets (with some limitations).

Currently recognized operations are:

Operation |
Symbol |

Minus | – |

Plus | + |

Divide | / |

Multiply | * |

Power | ^ |

Negate | – |

Assign | + |

Several functions are also supported:

Function |
Form |

Square Root | sqrt() |

Exponential | exp() |

Natural Logarith | ln() |

Absolute Value | abs() |

Sine | sin() |

Cosine | cos() |

Tangent | tan() |

Summation | sum() |

Average | avg() |

Standard Deviation | stdev() |

Minimum | min() |

Maximum | max() |

Numbers can be expressed in scientific notation using “E” notation, e.g. 1E-5 = 0.00001. The parser also recognizes PI as the number pi. Expressions can also be enclosed in parentheses. So for example, the following expression is valid:

> 1 - ln(sin(PI/4) * 2)^2

Result: 0.879887

Results of numerical calculations like the above can be assigned to a variable (essentially a data set of size 1) for use in subsequent calculations, e.g.

> R = 1 - ln(sin(PI/4) * 2)^2

Result stored in ’R’

> R + 1 Result: 1.879887

Data sets can be specified in expressions as well. Currently data sets in an expression must be of the same type

and only 1D, 2D, and 3D data sets are supported. Functions are applied to each member of the data set. So for

example, given two 1D data sets of the same size named D0 and D1, the following expression:

> D2 = sqrt( D0 ) + D1

would take the square root of each member of D0, add it to the corresponding member of D1, and assign the

result to D2. The following table lists which operations are valid for data set types. If a type is not listed it is not

supported:

Data Set Type |
Supported Ops |
Supported Functions |
Notes |

1D (integer.double, float) | All | All | |

1D (vector) | +,-,*,/,= | None | ‘*’ is dot product |

2D (matrices) | +,-,*,/,= | sum, avg, stdev, min, mix | |

3D (grids) | +,-,*,/,= | sum, avg, stdev, min, mix |