def calculate_statistics(display_data_and_metadata_func, display_data_range, region, displayed_intensity_calibration): display_data_and_metadata = display_data_and_metadata_func() data = display_data_and_metadata.data if display_data_and_metadata else None data_range = display_data_range if data is not None and data.size > 0 and displayed_intensity_calibration: mean = numpy.mean(data) std = numpy.std(data) rms = numpy.sqrt(numpy.mean(numpy.square( numpy.absolute(data)))) sum_data = mean * functools.reduce( operator.mul, Image.dimensional_shape_from_shape_and_dtype( data.shape, data.dtype)) if region is None: data_min, data_max = data_range if data_range is not None else ( None, None) else: data_min, data_max = numpy.amin(data), numpy.amax(data) mean_str = displayed_intensity_calibration.convert_to_calibrated_value_str( mean) std_str = displayed_intensity_calibration.convert_to_calibrated_value_str( std) data_min_str = displayed_intensity_calibration.convert_to_calibrated_value_str( data_min) data_max_str = displayed_intensity_calibration.convert_to_calibrated_value_str( data_max) rms_str = displayed_intensity_calibration.convert_to_calibrated_value_str( rms) sum_data_str = displayed_intensity_calibration.convert_to_calibrated_value_str( sum_data) return { "mean": mean_str, "std": std_str, "min": data_min_str, "max": data_max_str, "rms": rms_str, "sum": sum_data_str } return dict()
def calculate_statistics(display_data_and_metadata_func: typing.Callable[[], typing.Optional[DataAndMetadata.DataAndMetadata]], display_data_range: typing.Optional[typing.Tuple[float, float]], region: typing.Optional[Graphics.Graphic], displayed_intensity_calibration: typing.Optional[Calibration.Calibration]) -> typing.Dict[str, str]: display_data_and_metadata = display_data_and_metadata_func() data = display_data_and_metadata.data if display_data_and_metadata else None data_range = display_data_range if data is not None and data.size > 0 and displayed_intensity_calibration: mean = numpy.mean(data) std = numpy.std(data) rms = numpy.sqrt(numpy.mean(numpy.square(numpy.absolute(data)))) dimensional_shape = Image.dimensional_shape_from_shape_and_dtype(data.shape, data.dtype) or (1, 1) sum_data = mean * functools.reduce(operator.mul, dimensional_shape) if region is None: data_min, data_max = data_range if data_range is not None else (None, None) else: data_min, data_max = numpy.amin(data), numpy.amax(data) mean_str = displayed_intensity_calibration.convert_to_calibrated_value_str(mean) std_str = displayed_intensity_calibration.convert_to_calibrated_value_str(std) data_min_str = displayed_intensity_calibration.convert_to_calibrated_value_str(data_min) if data_min is not None else str() data_max_str = displayed_intensity_calibration.convert_to_calibrated_value_str(data_max) if data_max is not None else str() rms_str = displayed_intensity_calibration.convert_to_calibrated_value_str(rms) sum_data_str = displayed_intensity_calibration.convert_to_calibrated_value_str(sum_data) return { "mean": mean_str, "std": std_str, "min": data_min_str, "max": data_max_str, "rms": rms_str, "sum": sum_data_str } return dict()