diff --git a/dap/algos/streakfind.py b/dap/algos/streakfind.py index d1cdd00..9eacf80 100644 --- a/dap/algos/streakfind.py +++ b/dap/algos/streakfind.py @@ -54,20 +54,20 @@ def calc_streakfinder_analysis(results, data, pf_pixel_mask): if do_snr: # Changes data in-place - data = cryst_data.snr[0].copy() + data = cryst_data #.snr[0].copy() try: _calc_streakfinder_analysis(results, cryst_data) except Exception as error: # Broad exception - we don't want to break anything here results["cbd_error"] = f"Error processing CBD data:\n{error}" - print(f"Deleting cryst data;\nmem used before {virtual_memory().used // pow(2, 30)} Gb ") - cryst_data.clear() - del cryst_data + # print(f"Deleting cryst data;\nmem used before {virtual_memory().used // pow(2, 30)} Gb ") + # cryst_data.clear() + # del cryst_data print(f"mem used after {virtual_memory().used // pow(2, 30)} Gb \n") return data -def _generate_cryst_data(results, data, pf_pixel_mask) -> CrystData: +def _generate_cryst_data(results, data, pf_pixel_mask): # -> CrystData: params_required = [ "cbd_whitefield_data_file", "cbd_std_data_file", @@ -80,13 +80,13 @@ def _generate_cryst_data(results, data, pf_pixel_mask) -> CrystData: whitefield_data_file = results["cbd_whitefield_data_file"] std_data_file = results["cbd_std_data_file"] - scale_whitefield = results["cbd_scale_whitefield"] + # scale_whitefield = results["cbd_scale_whitefield"] # Using CXI Store specification as default whitefield_dataset = results.get("cbd_whitefield_dataset", "entry/crystallography/whitefield") std_dataset = results.get("cbd_std_dataset", "entry/crystallography/std") - num_threads = results.get("cbd_num_threads", DEFAULT_NUM_THREADS) + # num_threads = results.get("cbd_num_threads", DEFAULT_NUM_THREADS) with h5py.File(whitefield_data_file, "r") as hf: whitefield = hf[whitefield_dataset][:] @@ -103,17 +103,16 @@ def _generate_cryst_data(results, data, pf_pixel_mask) -> CrystData: mask = hf[mask_dataset][:].astype(bool) mask *= pf_pixel_mask - data = CrystData( - data=data[np.newaxis, :], - mask=mask, - std=std, - whitefield=whitefield + snr = np.divide( + data * mask - whitefield, + std, + out=np.zeros_like(data), + where=(std==0.0) ) - if scale_whitefield: - data = data.scale_whitefield(method='median', num_threads=num_threads) - - data = data.update_snr() - return data + del whitefield + del std + del mask + return snr def _calc_streakfinder_analysis(results, cryst_data: CrystData): do_streakfinder_analysis = results.get("do_streakfinder_analysis", False)