def save_results(self): if not self.plotted_ticket is None: try: file_name, _ = QtWidgets.QFileDialog.getSaveFileName( self, "Save Current Plot", filter="HDF5 Files (*.hdf5 *.h5 *.hdf)") if not file_name is None and not file_name.strip() == "": if not (file_name.endswith("hd5") or file_name.endswith("hdf5") or file_name.endswith("hdf")): file_name += ".hdf5" save_file = ShadowPlot.HistogramHdf5File( congruence.checkDir(file_name)) save_file.write_coordinates(self.plotted_ticket) dataset_name = self.weight_column.itemText( self.weight_column_index) save_file.add_histogram(self.plotted_ticket, dataset_name=dataset_name) save_file.close() except Exception as exception: QtWidgets.QMessageBox.critical(self, "Error", str(exception), QtWidgets.QMessageBox.Ok) if self.IS_DEVELOP: raise exception
def replace_fig(self, beam, var, xrange, title, xtitle, ytitle, xum): if self.plot_canvas is None: self.plot_canvas = ShadowPlot.DetailedHistoWidget( y_scale_factor=1.14) self.image_box.layout().addWidget(self.plot_canvas) try: if self.autosave == 1: if self.autosave_file is None: self.autosave_file = ShadowPlot.HistogramHdf5File( congruence.checkDir(self.autosave_file_name)) elif self.autosave_file.filename != congruence.checkFileName( self.autosave_file_name): self.autosave_file.close() self.autosave_file = ShadowPlot.HistogramHdf5File( congruence.checkDir(self.autosave_file_name)) if self.keep_result == 1: self.cumulated_ticket, last_ticket = self.plot_canvas.plot_histo( beam, var, self.rays, xrange, self.weight_column_index, title, xtitle, ytitle, nbins=self.number_of_bins, xum=xum, conv=self.workspace_units_to_cm, ticket_to_add=self.cumulated_ticket) self.plotted_ticket = self.cumulated_ticket if self.autosave == 1: self.autosave_prog_id += 1 self.autosave_file.write_coordinates(self.cumulated_ticket) dataset_name = self.weight_column.itemText( self.weight_column_index) self.autosave_file.add_histogram(self.cumulated_ticket, dataset_name=dataset_name) if self.autosave_partial_results == 1: if last_ticket is None: self.autosave_file.add_histogram( self.cumulated_ticket, plot_name="Histogram #" + str(self.autosave_prog_id), dataset_name=dataset_name) else: self.autosave_file.add_histogram( last_ticket, plot_name="Histogram #" + str(self.autosave_prog_id), dataset_name=dataset_name) self.autosave_file.flush() else: ticket, _ = self.plot_canvas.plot_histo( beam, var, self.rays, xrange, self.weight_column_index, title, xtitle, ytitle, nbins=self.number_of_bins, xum=xum, conv=self.workspace_units_to_cm) self.cumulated_ticket = None self.plotted_ticket = ticket if self.autosave == 1: self.autosave_prog_id += 1 self.autosave_file.write_coordinates(ticket) self.autosave_file.add_histogram( ticket, dataset_name=self.weight_column.itemText( self.weight_column_index)) self.autosave_file.flush() except Exception as e: if not self.IS_DEVELOP: raise Exception( "Data not plottable: No good rays or bad content") else: raise e