Try to get rid of cryst data entirely

This commit is contained in:
2025-07-14 19:40:28 +02:00
parent 6ebaf0ae6a
commit 2ea2129d5b

View File

@@ -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)