def perform_roi_info_test(self, project, save_path, save_method: Type[SaveBase], load_method: Type[LoadBase]): alt1 = np.copy(project.roi_info.roi) alt1[alt1 > 0] += 3 roi_info = ROIInfo( roi=project.roi_info.roi, annotations={i: f"a{i}" for i in range(1, 5)}, alternative={"test": alt1} ) proj = dataclasses.replace(project, roi_info=roi_info) save_method.save(save_path / "data.tgz", proj, SaveROI.get_default_values()) proj2 = load_method.load([save_path / "data.tgz"]) assert np.all(proj2.roi_info.roi == project.roi_info.roi) assert set(proj2.roi_info.annotations) == {1, 2, 3, 4} assert proj2.roi_info.annotations == {i: f"a{i}" for i in range(1, 5)} assert "test" in proj2.roi_info.alternative assert np.all(proj2.roi_info.alternative["test"] == alt1)
def perform_roi_info_history_test( self, project, save_path, mask_property, save_method: Type[SaveBase], load_method: Type[LoadBase] ): alt1 = np.copy(project.roi_info.roi) alt1[alt1 > 0] += 3 roi_info = ROIInfo( roi=project.roi_info.roi, annotations={i: f"a{i}" for i in range(1, 5)}, alternative={"test": alt1} ) history = [] for i in range(3): alt2 = np.copy(alt1) alt2[alt2 > 0] = i + 5 roi_info2 = ROIInfo( roi=project.roi_info.roi, annotations={i: f"a{i}_{j}" for j in range(1, 5)}, alternative={f"test{i}": alt2}, ) history.append( HistoryElement.create( roi_info2, alt1, {"algorithm_name": f"task_{i}", "values": {"a": 1}}, mask_property ) ) proj = dataclasses.replace(project, roi_info=roi_info, history=history) save_method.save(save_path / "data.tgz", proj, SaveROI.get_default_values()) proj2: ProjectInfoBase = load_method.load([save_path / "data.tgz"]) assert np.all(proj2.roi_info.roi == project.roi_info.roi) assert set(proj2.roi_info.annotations) == {1, 2, 3, 4} assert proj2.roi_info.annotations == {i: f"a{i}" for i in range(1, 5)} assert "test" in proj2.roi_info.alternative assert np.all(proj2.roi_info.alternative["test"] == alt1) assert len(proj2.history) == 3 for i in range(3): roi_info3, mask2 = proj2.history[i].get_roi_info_and_mask() assert np.all(mask2 == alt1) assert set(roi_info3.alternative) == {f"test{i}"} assert np.all(roi_info3.alternative[f"test{i}"][alt1 > 0] == i + 5) assert np.all(roi_info3.alternative[f"test{i}"][alt1 == 0] == 0) assert roi_info3.annotations == {i: f"a{i}_{j}" for j in range(1, 5)} assert proj2.history[i].roi_extraction_parameters == {"algorithm_name": f"task_{i}", "values": {"a": 1}}