@@ -3659,8 +3659,12 @@ def __init__(self):
36593659
36603660class OMEXML_Channel :
36613661 def __init__ (self , Channel ) -> None :
3662- self .Name = Channel .attrib .get ('Name' , '' )
3663- self .node = Channel .attrib
3662+ if not Channel or Channel is None :
3663+ self .Name = 'not_found'
3664+ self .node = None
3665+ else :
3666+ self .Name = Channel .attrib .get ('Name' , '' )
3667+ self .node = Channel .attrib
36643668
36653669class OMEXML_Pixels :
36663670 def __init__ (self , Pixels , node , ome_schema ) -> None :
@@ -3683,7 +3687,10 @@ def __init__(self, Pixels, node, ome_schema) -> None:
36833687 self .PhysicalSizeZ = node .get ('PhysicalSizeZ' , 1.0 )
36843688
36853689 def Channel (self , channel_index = 0 ):
3686- Channel = self .Pixels .findall (f'{ self .ome_schema } Channel' )[channel_index ]
3690+ try :
3691+ Channel = self .Pixels .findall (f'{ self .ome_schema } Channel' )[channel_index ]
3692+ except Exception as err :
3693+ Channel = None
36873694 return OMEXML_Channel (Channel )
36883695
36893696class OMEXML :
@@ -3697,12 +3704,20 @@ def read_omexml_string(self):
36973704 return tif .ome_metadata
36983705
36993706 def parse_metadata (self ):
3707+ self .root = None
3708+ self .ome_schema = None
37003709 self .omexml_string = self .read_omexml_string ()
3710+ if self .omexml_string is None :
3711+ return
3712+
37013713 self .root = ET .fromstring (self .omexml_string )
37023714 self .ome_schema = re .findall (r'({.+})OME' , self .root .tag )[0 ]
37033715
37043716 def instrument (self ):
37053717 instrument = OMEXML_intrument ()
3718+ if self .root is None :
3719+ return instrument
3720+
37063721 instrument_xml = self .root .find (f'{ self .ome_schema } Instrument' )
37073722 if instrument_xml is None :
37083723 return instrument
@@ -3716,9 +3731,15 @@ def instrument(self):
37163731 return instrument
37173732
37183733 def get_image_count (self ):
3734+ if self .root is None :
3735+ return 1
3736+
37193737 return len (self .root .findall (f'{ self .ome_schema } Image' ))
37203738
37213739 def image (self ):
3740+ if self .root is None :
3741+ return OMEXML_image (None , 'not_found' )
3742+
37223743 Image = self .root .find (f'{ self .ome_schema } Image' )
37233744 Pixels = Image .find (f'{ self .ome_schema } Pixels' )
37243745 image = OMEXML_image (Pixels , self .ome_schema )
0 commit comments