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
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
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
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))
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))