diff --git a/test_average_calculate.py b/test_average_calculate.py new file mode 100644 index 0000000..a4f4497 --- /dev/null +++ b/test_average_calculate.py @@ -0,0 +1,82 @@ +import torch +from DataContainer import DataContainer +import numpy as np +from tqdm import trange + +# path: str = "/data_1/robert/2021-05-05/M3852M/raw" +path: str = "/data_1/robert/2021-05-21/M3852M/raw" +initital_mask_name: str | None = "mask.npy" +initital_mask_update: bool = True +initital_mask_roi: bool = False # default: True + +experiment_id: int = 2 +trial_id: int = 180 +start_position: int = 0 +start_position_coefficients: int = 100 +remove_heartbeat: bool = True # i.e. use SVD +bin_size: int = 4 +threshold: float | None = 0.05 # Between 0 and 1.0 + + +display_logging_messages: bool = False +save_logging_messages: bool = False + +# Post data processing modifiations +gaussian_blur_kernel_size: int | None = 3 +gaussian_blur_sigma: float = 1.0 +bin_size_post: int | None = None + +# ------------------------ + + +torch_device: torch.device = torch.device( + "cuda:0" if torch.cuda.is_available() else "cpu" +) + +af = DataContainer( + path=path, + device=torch_device, + display_logging_messages=display_logging_messages, + save_logging_messages=save_logging_messages, +) + + +list_of_experiments = af.get_experiments() +print( + f"The following experiments have been found:\n {list_of_experiments.cpu().numpy()}" +) +assert experiment_id in list_of_experiments +print(f"Continue with experiment: {experiment_id}") +list_of_trials = af.get_trials(experiment_id).cpu().numpy() +print(f"The following trials have been found:\n {list_of_trials}") + +result: torch.Tensor | None = None +n: float = 0 +for trial_id in trange(0, len(list_of_trials)): + result_temp, mask = af.automatic_load( + experiment_id=experiment_id, + trial_id=int(list_of_trials[trial_id]), + start_position=start_position, + remove_heartbeat=remove_heartbeat, # i.e. use SVD + bin_size=bin_size, + initital_mask_name=initital_mask_name, + initital_mask_update=initital_mask_update, + initital_mask_roi=initital_mask_roi, + start_position_coefficients=start_position_coefficients, + gaussian_blur_kernel_size=gaussian_blur_kernel_size, + gaussian_blur_sigma=gaussian_blur_sigma, + bin_size_post=bin_size_post, + threshold=threshold, + ) + n += 1.0 + if result is None: + result = result_temp + else: + result += result_temp + +assert result is not None +assert mask is not None + +result /= n + +np.savez("result.npz", result=result.cpu(), mask=mask.cpu()) diff --git a/test_average_show.py b/test_average_show.py new file mode 100644 index 0000000..a8cb419 --- /dev/null +++ b/test_average_show.py @@ -0,0 +1,31 @@ +from Anime import Anime +import matplotlib.pyplot as plt +import numpy as np + +show_example_timeseries: bool = True +play_movie: bool = True + +example_position_x: int = 280 +example_position_y: int = 440 +bin_size: int = 4 +bin_size_post: int | None = None + +data = np.load("result.npz") +result = data["result"] +mask = data["mask"] + +example_position_x = example_position_x // bin_size +example_position_y = example_position_y // bin_size +if bin_size_post is not None: + example_position_x = example_position_x // bin_size_post + example_position_y = example_position_y // bin_size_post + +if show_example_timeseries: + plt.plot(result[:, example_position_x, example_position_y]) + plt.show() + +if play_movie: + ani = Anime() + ani.show( + result - 1.0, mask=mask, vmin_scale=0.5, vmax_scale=0.5 + ) # , vmin=0.98) # , vmin=1.0, vmax_scale=1.0)