Example #1
0
    def compute(self, verbose: bool = False, lineage: bool = False) -> \
            Union[float, np.array, Tuple[Union[float, np.array], str]]:

        if self._result_var is None or self._lineage_trace is None:
            self._script = DMLScript(self.sds_context)
            self._script.build_code(self)
            if verbose:
                print("SCRIPT:")
                print(self._script.dml_script)

            if lineage:
                result_variables, self._lineage_trace = self._script.execute(
                    lineage)
            else:
                result_variables = self._script.execute(lineage)

            if self.output_type == OutputType.DOUBLE:
                self._result_var = result_variables.getDouble(
                    self._script.out_var_name[0])
            elif self.output_type == OutputType.MATRIX:
                self._result_var = matrix_block_to_numpy(
                    self.sds_context.java_gateway.jvm,
                    result_variables.getMatrixBlock(
                        self._script.out_var_name[0]))
            elif self.output_type == OutputType.LIST:
                self._result_var = []
                for idx, v in enumerate(self._script.out_var_name):
                    if (self._output_types == None):
                        self._result_var.append(
                            matrix_block_to_numpy(
                                self.sds_context.java_gateway.jvm,
                                result_variables.getMatrixBlock(v)))
                    elif (self._output_types[idx] == OutputType.MATRIX):
                        self._result_var.append(
                            matrix_block_to_numpy(
                                self.sds_context.java_gateway.jvm,
                                result_variables.getMatrixBlock(v)))
                    else:
                        self._result_var.append(
                            result_variables.getDouble(
                                self._script.out_var_name[idx]))
        if verbose:
            for x in self.sds_context.get_stdout():
                print(x)
            for y in self.sds_context.get_stderr():
                print(y)

        if lineage:
            return self._result_var, self._lineage_trace
        else:
            return self._result_var
Example #2
0
    def compute(self, verbose: bool = False, lineage: bool = False) -> \
            Union[float, np.array, Tuple[Union[float, np.array], str]]:
        if self._result_var is None or self._lineage_trace is None:
            self._script = DMLScript(self.sds_context)
            self._script.build_code(self)
            if lineage:
                result_variables, self._lineage_trace = self._script.execute(
                    lineage)
            else:
                result_variables = self._script.execute(lineage)
            if self.output_type == OutputType.DOUBLE:
                self._result_var = result_variables.getDouble(
                    self._script.out_var_name)
            elif self.output_type == OutputType.MATRIX:
                self._result_var = matrix_block_to_numpy(
                    self.sds_context.java_gateway.jvm,
                    result_variables.getMatrixBlock(self._script.out_var_name))
        if verbose:
            print(self._script.dml_script)
            # TODO further info

        if lineage:
            return self._result_var, self._lineage_trace
        else:
            return self._result_var
Example #3
0
 def _parse_output_result_variables(self, result_variables):
     result_var = []
     jvmV = self.sds_context.java_gateway.jvm
     for idx, v in enumerate(self._script.out_var_name):
         out_type = self._outputs[idx].output_type
         if out_type == OutputType.MATRIX:
             result_var.append(
                 matrix_block_to_numpy(jvmV,
                                       result_variables.getMatrixBlock(v)))
         elif out_type == OutputType.FRAME:
             result_var.append(
                 frame_block_to_pandas(jvmV,
                                       result_variables.getFrameBlock(v)))
         elif out_type == OutputType.DOUBLE:
             result_var.append(result_variables.getDouble(v))
         else:
             raise NotImplementedError("Not Implemented Support of type" +
                                       out_type)
     return result_var
Example #4
0
 def _parse_output_result_variables(self, result_variables):
     return matrix_block_to_numpy(
         self.sds_context.java_gateway.jvm,
         result_variables.getMatrixBlock(self._script.out_var_name[0]))
 def convert_back_and_forth(self, array):
     matrix_block = numpy_to_matrix_block(self.jvm, array)
     # use the ability to call functions on matrix_block.
     returned = matrix_block_to_numpy(self.jvm, matrix_block)
     self.assertTrue(np.allclose(array, returned))
Example #6
0
 def __parse_output_result_matrix(self, result_variables, var_name):
     return matrix_block_to_numpy(self.sds_context.java_gateway.jvm,
                                  result_variables.getMatrixBlock(var_name))