# SystemDSContext

All operations using SystemDS need a java instance running. The connection is ensured by an `SystemDSContext` object. An `SystemDSContext` object can be created using:

    from systemds.context import SystemDSContext
    sds = SystemDSContext()

When the calculations are finished the context has to be closed again:

    sds.close()

Since it is annoying that it is always necessary to close the context, `SystemDSContext` implements the python context management protocol, which supports the following syntax:

    with SystemDSContext() as sds:
      # do something with sds which is an SystemDSContext
      pass

This will automatically close the `SystemDSContext` once the with-block is left.

Note

Creating a context is an expensive procedure, because a sub-process starting a JVM might have to start, therefore try to do this only once for your program, or always leave at least one context open.

class `systemds.context.``SystemDSContext`

  A context with a connection to a java instance with which SystemDS operations are executed. The java process is started and is running using a random tcp port for instruction parsing.

  `__init__`()

    Starts a new instance of SystemDSContext, in which the connection to a JVM systemds instance is handled Any new instance of this SystemDS Context, would start a separate new JVM.

    Standard out and standard error form the JVM is also handled in this class, filling up Queues, that can be read from to get the printed statements from the JVM.

  `close`()

    Close the connection to the java process and do necessary cleanup.

  `exception_and_close`(e)

    Method for printing exception, printing stdout and error, while also closing the context correctly.

  `full`(shape: Tuple[int, int], value: Union[float, int]) → systemds.operator.operation_node.OperationNode

    Generates a matrix completely filled with a value

    Parameters

      - sds_context – SystemDS context

      - shape – shape (rows and cols) of the matrix TODO tensor

      - value – the value to fill all cells with

    Returns

      the OperationNode representing this operation

  `get_stderr`(lines: int = - 1)

    Getter for the stderr of the java subprocess The output is taken from the stderr queue and returned in a new list. :param lines: The number of lines to try to read from the stderr queue. default -1 prints all current lines in the queue.

  `get_stdout`(lines: int = - 1)

    Getter for the stdout of the java subprocess The output is taken from the stdout queue and returned in a new list. :param lines: The number of lines to try to read from the stdout queue. default -1 prints all current lines in the queue.

  `rand`(rows: int, cols: int, min: Union[float, int] = None, max: Union[float, int] = None, pdf: str = 'uniform', sparsity: Union[float, int] = None, seed: Union[float, int] = None, lambd: Union[float, int] = 1) → systemds.operator.operation_node.OperationNode

    Generates a matrix filled with random values

    Parameters

      - sds_context – SystemDS context

      - rows – number of rows

      - cols – number of cols

      - min – min value for cells

      - max – max value for cells

      - pdf – “uniform”/”normal”/”poison” distribution

      - sparsity – fraction of non-zero cells

      - seed – random seed

      - lambd – lamda value for “poison” distribution

    Returns

  `read`(path: os.PathLike, **kwargs: Dict[str, Union[DAGNode, str, int, float, bool]]) → OperationNode

    Read an file from disk. Supportted types include: CSV, Matrix Market(coordinate), Text(i,j,v), SystemDS Binay See: http://apache.github.io/systemds/site/dml-language-reference#readwrite-built-in-functions for more details :return: an Operation Node, containing the read data.

  `scalar`(v: Dict[str, Union[DAGNode, str, int, float, bool]]) → OperationNode

    Construct an scalar value, this can contain str, float, double, integers and booleans. :return: An OperationNode containing the scalar value.

  `seq`(start: Union[float, int], stop: Union[float, int] = None, step: Union[float, int] = 1) → systemds.operator.operation_node.OperationNode

    Create a single column vector with values from start to stop and an increment of step. If no stop is defined and only one parameter is given, then start will be 0 and the parameter will be interpreted as stop.

    Parameters

      - sds_context – SystemDS context

      - start – the starting value

      - stop – the maximum value

      - step – the step size

    Returns

      the OperationNode representing this operation