diff --git a/dap/algos/radprof.py b/dap/algos/radprof.py index c54bc02..a014ddc 100644 --- a/dap/algos/radprof.py +++ b/dap/algos/radprof.py @@ -1,18 +1,19 @@ import numpy as np -def calc_radial_integration(results, data, pixel_mask_pf, center, rad): +def calc_radial_integration(results, data, pixel_mask_pf, center, rad, norm): if center is None: center = [ results["beam_center_x"], results["beam_center_y"] ] - rad = None + rad = norm = None - if rad is None: + if rad is None or norm is None: rad, norm = prepare_radial_profile(data, center, keep_pixels=pixel_mask_pf) - r_min = int(np.min(rad)) - r_max = int(np.max(rad)) + 1 + + r_min = int(np.min(rad)) + r_max = int(np.max(rad)) + 1 apply_threshold = results.get("apply_threshold", False) @@ -44,7 +45,7 @@ def calc_radial_integration(results, data, pixel_mask_pf, center, rad): rp = rp / integral_silent_region results["radint_normalised"] = [silent_min, silent_max] - results["radint_I"] = rp[r_min:].tolist() + results["radint_I"] = rp[r_min:].tolist() #TODO: why not stop at r_max? results["radint_q"] = [r_min, r_max] return center, rad diff --git a/dap/worker.py b/dap/worker.py index 37bf25f..b672838 100644 --- a/dap/worker.py +++ b/dap/worker.py @@ -55,8 +55,9 @@ def work(backend_address, accumulator_host, accumulator_port, visualisation_host # all the normal workers worker = 1 - rad_radial_integration = None center_radial_integration = None + rad_radial_integration = None + norm_radial_integration = None results = {} @@ -80,7 +81,7 @@ def work(backend_address, accumulator_host, accumulator_port, visualisation_host sleep(0.5) peakfinder_parameters = json_load(fn_peakfinder_parameters) peakfinder_parameters_time = new_time - center_radial_integration = None + center_radial_integration = None # beam_center_x/beam_center_y might have changed if worker == 0: print(f"({pulse_id}) update peakfinder parameters {old_peakfinder_parameters}", flush=True) print(f" --> {peakfinder_parameters}", flush=True) @@ -143,7 +144,7 @@ def work(backend_address, accumulator_host, accumulator_port, visualisation_host id_pixel_mask_2 = id(pixel_mask_corrected) if id_pixel_mask_1 != id_pixel_mask_2: - rad_radial_integration = None + rad_radial_integration = norm_radial_integration = None # if the pixel mask changes, the radii and normalization need to be re-calculated if pixel_mask_corrected is not None: pixel_mask_pf = np.ascontiguousarray(pixel_mask_corrected) calc_apply_additional_mask(results, pixel_mask_pf) # changes pixel_mask_pf in place @@ -161,7 +162,7 @@ def work(backend_address, accumulator_host, accumulator_port, visualisation_host # pump probe analysis do_radial_integration = results.get("do_radial_integration", False) if do_radial_integration: - center_radial_integration, rad_radial_integration = calc_radial_integration(results, data, pixel_mask_pf, center_radial_integration, rad_radial_integration) + center_radial_integration, rad_radial_integration, norm_radial_integration = calc_radial_integration(results, data, pixel_mask_pf, center_radial_integration, rad_radial_integration, norm_radial_integration) #copy image to work with peakfinder, just in case