Operation Node

An OperationNode represents an operation that executes in SystemDS. Most methods are overloaded for OperationNode. This means that they return an OperationNode.

To get the result from an OperationNode you simply call .compute() on it, thereby getting the numpy equivalent result. Even comparisons like __eq__, __lt__ etc. return OperationNode.

Note

All operations are lazily evaluated, meaning before calling .compute() nothing will be executed in SystemDS. Therefore errors will not immediately be recognized while constructing an sequence of operators.

class systemds.operator.OperationNode(sds_context: SystemDSContext, operation: str, unnamed_input_nodes: Iterable[Union[DAGNode, str, int, float, bool]] = None, named_input_nodes: Dict[str, Union[DAGNode, str, int, float, bool]] = None, output_type: systemds.script_building.dag.OutputType = <OutputType.MATRIX: 1>, is_python_local_data: bool = False, shape: Tuple[int] = (), number_of_outputs=1, output_types: Iterable[systemds.script_building.dag.OutputType] = None)

A Node representing an operation in SystemDS

__init__(sds_context: SystemDSContext, operation: str, unnamed_input_nodes: Iterable[Union[DAGNode, str, int, float, bool]] = None, named_input_nodes: Dict[str, Union[DAGNode, str, int, float, bool]] = None, output_type: systemds.script_building.dag.OutputType = <OutputType.MATRIX: 1>, is_python_local_data: bool = False, shape: Tuple[int] = (), number_of_outputs=1, output_types: Iterable[systemds.script_building.dag.OutputType] = None)

Create general OperationNode

Parameters
  • sds_context – The SystemDS context for performing the operations

  • operation – The name of the DML function to execute

  • unnamed_input_nodes – inputs identified by their position, not name

  • named_input_nodes – inputs with their respective parameter name

  • output_type – type of the output in DML (double, matrix etc.)

  • is_python_local_data – if the data is local in python e.g. Numpy arrays

  • number_of_outputs – If set to other value than 1 then it is expected that this operation node returns multiple values. If set remember to set the output_types value as well.

  • output_types – The types of output in a multi output scenario. Default is None, and means every multi output is a matrix.

abs() → systemds.operator.operation_node.OperationNode

Calculate absolute.

Returns

OperationNode representing operation

acos() → systemds.operator.operation_node.OperationNode

Calculate arccos.

Returns

OperationNode representing operation

asin() → systemds.operator.operation_node.OperationNode

Calculate arcsin.

Returns

OperationNode representing operation

atan() → systemds.operator.operation_node.OperationNode

Calculate arctan.

Returns

OperationNode representing operation

cholesky(safe: bool = False) → systemds.operator.operation_node.OperationNode

Computes the Cholesky decomposition of a symmetric, positive definite matrix

Parameters

safe – default value is False, if flag is True additional checks to ensure that the matrix is symmetric positive definite are applied, if False, checks will be skipped

Returns

the OperationNode representing this operation

code_line(var_name: str, unnamed_input_vars: Sequence[str], named_input_vars: Dict[str, str]) → str

Generates the DML code line equal to the intended action of this node.

Parameters
  • var_name – Name of DML-variable this nodes result should be saved in

  • unnamed_input_vars – all strings representing the unnamed parameters

  • named_input_vars – all strings representing the named parameters (name value pairs)

Returns

the DML code line that is equal to this operation

compute(verbose: bool = False, lineage: bool = False) → Union[float, numpy.array, Tuple[Union[float, numpy.array], str]]

Get result of this operation. Builds the dml script and executes it in SystemDS, before this method is called all operations are only building the DAG without actually executing (lazy evaluation).

Parameters
  • verbose – Can be activated to print additional information such as created DML-Script

  • lineage – Can be activated to print lineage trace till this node

Returns

the output as an python builtin data type or numpy array

cos() → systemds.operator.operation_node.OperationNode

Calculate cos.

Returns

OperationNode representing operation

cosh() → systemds.operator.operation_node.OperationNode

Calculate cos.

Returns

OperationNode representing operation

get_lineage_trace() → str

Get the lineage trace for this node.

Returns

Lineage trace

mean(axis: int = None) → systemds.operator.operation_node.OperationNode

Calculate mean of matrix.

Parameters

axis – can be 0 or 1 to do either row or column means

Returns

OperationNode representing operation

order(by: int = 1, decreasing: bool = False, index_return: bool = False) → systemds.operator.operation_node.OperationNode

Sort by a column of the matrix X in increasing/decreasing order and returns either the index or data

Parameters
  • by – sort matrix by this column number

  • decreasing – If true the matrix will be sorted in decreasing order

  • index_return – If true, the index numbers will be returned

Returns

the OperationNode representing this operation

pass_python_data_to_prepared_script(jvm: py4j.java_gateway.JVMView, var_name: str, prepared_script: py4j.java_gateway.JavaObject) → None

Passes data from python to the prepared script object.

Parameters
  • jvm – the java virtual machine object

  • var_name – the variable name the data should get in java

  • prepared_script – the prepared script

print(**kwargs: Dict[str, Union[DAGNode, str, int, float, bool]]) → systemds.operator.operation_node.OperationNode

Prints the given Operation Node. There is no return on calling. To get the returned string look at the stdout of SystemDSContext.

rev() → systemds.operator.operation_node.OperationNode

Reverses the rows in a matrix

Returns

the OperationNode representing this operation

sin() → systemds.operator.operation_node.OperationNode

Calculate sin.

Returns

OperationNode representing operation

sinh() → systemds.operator.operation_node.OperationNode

Calculate sin.

Returns

OperationNode representing operation

sum(axis: int = None) → systemds.operator.operation_node.OperationNode

Calculate sum of matrix.

Parameters

axis – can be 0 or 1 to do either row or column sums

Returns

OperationNode representing operation

t() → systemds.operator.operation_node.OperationNode

Transposes the input matrix

Returns

the OperationNode representing this operation

tan() → systemds.operator.operation_node.OperationNode

Calculate tan.

Returns

OperationNode representing operation

tanh() → systemds.operator.operation_node.OperationNode

Calculate tan.

Returns

OperationNode representing operation

to_one_hot(num_classes: int) → systemds.operator.operation_node.OperationNode

OneHot encode the matrix.

It is assumed that there is only one column to encode, and all values are whole numbers > 0

Parameters

num_classes – The number of classes to encode into. max value contained in the matrix must be <= num_classes

Returns

The OperationNode containing the oneHotEncoded values

to_string(**kwargs: Dict[str, Union[DAGNode, str, int, float, bool]]) → systemds.operator.operation_node.OperationNode

Converts the input to a string representation. :return: OperationNode containing the string.

var(axis: int = None) → systemds.operator.operation_node.OperationNode

Calculate variance of matrix.

Parameters

axis – can be 0 or 1 to do either row or column vars

Returns

OperationNode representing operation

write(destination: str, format: str = 'binary', **kwargs: Dict[str, Union[DAGNode, str, int, float, bool]]) → systemds.operator.operation_node.OperationNode

Write input to disk. The written format is easily read by SystemDSContext.read(). There is no return on write.

Parameters