def processAlgorithm(self, parameters, context, feedback): """ Executes the algorithm """ self.results = {} if RUtils.is_windows(): path = RUtils.r_binary_folder() if path == '': raise QgsProcessingException( self.tr('R folder is not configured.\nPlease configure it ' 'before running R scripts.')) feedback.pushInfo(self.tr('R execution commands')) output = RUtils.execute_r_algorithm(self, parameters, context, feedback) if self.show_plots: html_filename = self.parameterAsFileOutput(parameters, RAlgorithm.RPLOTS, context) if html_filename: with open(html_filename, 'w') as f: f.write('<html><img src="{}"/></html>'.format( QUrl.fromLocalFile(self.plots_filename).toString())) self.results[RAlgorithm.RPLOTS] = html_filename if self.show_console_output: html_filename = self.parameterAsFileOutput( parameters, RAlgorithm.R_CONSOLE_OUTPUT, context) if html_filename: with open(html_filename, 'w') as f: f.write(RUtils.html_formatted_console_output(output)) self.results[RAlgorithm.R_CONSOLE_OUTPUT] = html_filename if self.save_output_values and self.output_values_filename: with open(self.output_values_filename, 'r') as f: lines = [line.strip() for line in f] # get output values stored into the file outputs = self.parse_output_values(iter(lines)) # merge output values into results for k, v in outputs.items(): if k not in self.results: self.results[k] = v return self.results
def processAlgorithm(self, parameters, context, feedback): """ Executes the algorithm """ self.results = {} if RUtils.is_windows(): path = RUtils.r_binary_folder() if path == '': raise QgsProcessingException( self.tr('R folder is not configured.\nPlease configure it ' 'before running R scripts.')) feedback.pushInfo(self.tr('R execution commands')) script_lines = self.build_r_script(parameters, context, feedback) for line in script_lines: feedback.pushCommandInfo(line) output = RUtils.execute_r_algorithm(self, parameters, context, feedback) if self.show_plots: html_filename = self.parameterAsFileOutput(parameters, RAlgorithm.RPLOTS, context) if html_filename: with open(html_filename, 'w') as f: f.write('<html><img src="{}"/></html>'.format( QUrl.fromLocalFile(self.plots_filename).toString())) self.results[RAlgorithm.RPLOTS] = html_filename if self.show_console_output: html_filename = self.parameterAsFileOutput( parameters, RAlgorithm.R_CONSOLE_OUTPUT, context) if html_filename: with open(html_filename, 'w') as f: f.write(RUtils.html_formatted_console_output(output)) self.results[RAlgorithm.R_CONSOLE_OUTPUT] = html_filename return self.results