**Articles:**

Nodes: Data Expression

The Nodes: Data Expression feature in Ligantic provides a powerful and flexible way to manipulate data using intuitive, math-oriented expressions. This feature allows you to perform a wide range of data transformations and calculations directly within your Ligantic workflows, without the need for complex programming or scripting.

The expression syntax used in Nodes: Data Expression is similar to normal JavaScript expressions, but is more math-oriented.

In addition to the standard arithmetic operators, Nodes: Data Expression also includes a number of unary operators that can be used to perform various mathematical and logical operations. These include:

`-x`

: Negation`+x`

: Unary plus (converts the operand to a number, but has no other effect)`x!`

: Factorial`abs x`

: Absolute value (magnitude) of x`acos x`

: Arc cosine of x (in radians)`acosh x`

: Hyperbolic arc cosine of x (in radians)`asin x`

: Arc sine of x (in radians)`asinh x`

: Hyperbolic arc sine of x (in radians)`atan x`

: Arc tangent of x (in radians)`atanh x`

: Hyperbolic arc tangent of x (in radians)`cbrt x`

: Cube root of x`ceil x`

: Ceiling of x — the smallest integer that's >= x`cos x`

: Cosine of x (x is in radians)`cosh x`

: Hyperbolic cosine of x (x is in radians)`exp x`

: e^x (exponential/antilogarithm function with base e)`expm1 x`

: e^x - 1`floor x`

: Floor of x — the largest integer that's <= x`length x`

: String or array length of x`ln x`

: Natural logarithm of x`log x`

: Natural logarithm of x (synonym for`ln`

, not base-10)`log10 x`

: Base-10 logarithm of x`log2 x`

: Base-2 logarithm of x`log1p x`

: Natural logarithm of (1 + x)`not x`

: Logical NOT operator`round x`

: X, rounded to the nearest integer, using "grade-school rounding"`sign x`

: Sign of x (-1, 0, or 1 for negative, zero, or positive respectively)`sin x`

: Sine of x (x is in radians)`sinh x`

: Hyperbolic sine of x (x is in radians)`sqrt x`

: Square root of x. Result is NaN (Not a Number) if x is negative.`tan x`

: Tangent of x (x is in radians)`tanh x`

: Hyperbolic tangent of x (x is in radians)`trunc x`

: Integral part of a X, looks like`floor(x)`

unless for negative number

In addition to the built-in operators, Nodes: Data Expression also includes a number of pre-defined functions that can be used to perform various data manipulation and analysis tasks. These include:

`random(n)`

: Get a random number in the range`[0, n)`

. If`n`

is zero, or not provided, it defaults to 1.`min(a,b,...)`

: Get the smallest (minimum) number in the list.`max(a,b,...)`

: Get the largest (maximum) number in the list.`hypot(a,b)`

: Hypotenuse, i.e. the square root of the sum of squares of its arguments.`pyt(a, b)`

: Alias for`hypot`

.`pow(x, y)`

: Equivalent to`x^y`

.`atan2(y, x)`

: Arc tangent of`x/y`

. i.e. the angle between`(0, 0)`

and`(x, y)`

in radians.`roundTo(x, n)`

: Rounds`x`

to`n`

places after the decimal point.`map(f, a)`

: Array map: Pass each element of`a`

the function`f`

, and return an array of the results.`fold(f, y, a)`

: Array fold: Fold/reduce array`a`

into a single value,`y`

by setting`y = f(y, x, index)`

for each element`x`

of the array.`filter(f, a)`

: Array filter: Return an array containing only the values from`a`

where`f(x, index)`

is true.`indexOf(x, a)`

: Return the first index of string or array`a`

matching the value`x`

, or`-1`

if not found.`join(sep, a)`

: Concatenate the elements of`a`

, separated by`sep`

.`if(c, a, b)`

: Function form of`c ? a : b`

. Note: This always evaluates both`a`

and`b`

, regardless of whether`c`

is true or not. Use`c ? a : b`

instead if there are side effects, or if evaluating the branches could be expensive.`addDuration(dateTime, durationValue, durationUnit)`

: Add a duration to a given date and time.`dateTime`

: The starting datetime value.`durationValue`

: The numeric value of the duration to add.`durationUnit`

: The unit of the duration - supported values:`hours`

,`minutes`

,`seconds`

.

`slice(stringOrArray, start, end)`

: Extract a portion of a string or array.`stringOrArrayLink`

: The input string or array to slice.`start`

: The starting index of the slice (inclusive).`end`

: The optional ending index of the slice (exclusive).

Nodes: Data Expression also includes a number of pre-defined constants that can be used in expressions, including:

`true`

: Logical true value`false`

: Logical false value

The Nodes: Data Expression feature in Ligantic can be used for a wide variety of data manipulation and analysis tasks, including:

**Performing mathematical calculations**: You can use the various arithmetic and mathematical operators and functions to perform complex calculations on your data.**Transforming data**: You can use the expression syntax to transform data in various ways, such as filtering, mapping, and reducing arrays.**Conditional logic**: You can use the ternary operator and logical operators to implement conditional logic in your data processing workflows.

Overall, the Nodes: Data Expression feature provides a powerful and flexible way to work with data within the Ligantic platform, allowing you to perform a wide range of data manipulation and analysis tasks without the need for complex programming or scripting.