77from vtkmodules .vtkCommonCore import vtkIntArray
88from vtkmodules .vtkCommonMath import vtkMatrix4x4
99from vtkmodules .vtkImagingCore import vtkImageCast , vtkImageThreshold
10- from vtkmodules .vtkITK import vtkITKIslandMath
1110
12- from trame_slicer .segmentation import ModificationMode
11+ try :
12+ from vtkmodules .vtkITK import vtkITKIslandMath
13+ except ImportError :
14+ from vtkITK import vtkITKIslandMath
1315
16+ from . import ModificationMode
1417from .segmentation_effect import SegmentationEffect
1518
1619
1720class SegmentationEffectIslands (SegmentationEffect ):
21+ def __init__ (self ) -> None :
22+ super ().__init__ ()
23+ self .set_mode (ModificationMode .Set )
24+
1825 def _create_pipeline (self , _view_node : vtkMRMLAbstractViewNode , _parameter : vtkMRMLNode ) -> None :
1926 # Islands effect does not require a pipeline
2027 return None
@@ -26,8 +33,6 @@ def apply(
2633 return
2734
2835 island_image = self .get_island_labelmap (segment_id , minimum_size )
29- modification_mode = self .modifier .modification_mode
30- self .modifier .modification_mode = ModificationMode .Set
3136
3237 label_values = vtkIntArray ()
3338 vtkSlicerSegmentationsModuleLogic .GetAllLabelValues (label_values , island_image )
@@ -71,7 +76,6 @@ def apply(
7176 self .modifier .segmentation .segmentation_node ,
7277 self .modifier .segmentation .get_segment (segment_id ).GetName (),
7378 )
74- self .modifier .modification_mode = modification_mode
7579 self .modifier .segmentation .segmentation_modified .emit ()
7680
7781 def get_island_labelmap (self , segment_id : str , minimum_size : int = 0 ) -> vtkOrientedImageData :
0 commit comments