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
destination – The location which the file is stored. Defaulting to HDFS paths if available.
format – The format which the file is saved in. Default is binary to improve SystemDS reading times.
kwargs – Contains multiple extra specific arguments, can be seen at http://apache.github.io/systemds/site/dml-language-reference#readwrite-built-in-functions
-