예제 #1
0
 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)
예제 #2
0
 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}}