@@ -82,6 +82,7 @@ def on_change_data_filename(self, fname):
8282 """
8383 try :
8484 is_stemtomo = False
85+ print (f'Loading { fname } ...' )
8586 if Path (fname ).suffix .lower () == '.emd' :
8687 # Check for special STEMTomo7 Berkeley EMD files
8788 try :
@@ -230,7 +231,8 @@ def get_mrc_metadata(path):
230231 if hasattr (mrc1 , 'FEIinfo' ):
231232 # add in the special FEIinfo if it exists
232233 try :
233- metaData .update (mrc1 .FEIinfo )
234+ if isinstance (mrc1 .FEIinfo , dict ):
235+ metaData .update (mrc1 .FEIinfo )
234236 except TypeError :
235237 pass
236238
@@ -313,6 +315,8 @@ def get_velox_metadata(path):
313315 import json
314316 metaData = {}
315317 with ncempy .io .emdVelox .fileEMDVelox (path ) as f0 :
318+ if f0 .list_data is None :
319+ return metaData
316320 dataGroup = f0 .list_data [0 ]
317321 dataset0 = dataGroup ['Data' ]
318322
@@ -402,11 +406,17 @@ def on_change_data_filename(self, fname):
402406 elif ext in ('.mrc' , '.rec' , '.ali' ):
403407 meta_data = self .get_mrc_metadata (fname )
404408 elif ext in ('.emd' ,):
405- with ncempy .io .emd .fileEMD (fname ) as emd0 :
406- if len (emd0 .list_emds ) > 0 :
407- meta_data = self .get_emd_metadata (fname )
408- else :
409- meta_data = self .get_velox_metadata (fname )
409+ try :
410+ # Parse the file to see if any EMD datasets exist
411+ # if not then it throws a NoEmdDataSets error
412+ with ncempy .io .emd .fileEMD (fname ) as f0 :
413+ meta_data = f0 .getMetadata (0 )
414+ except ncempy .io .emd .NoEmdDataSets :
415+ with ncempy .io .emdVelox .fileEMDVelox (fname ) as f0 :
416+ if f0 .list_data is not None :
417+ meta_data = f0 .getMetadata (0 )
418+ else :
419+ meta_data = {'file name' : str (fname ), 'error' : 'No EMD datasets found' }
410420 elif ext in ('.ser' ,):
411421 meta_data = self .get_ser_metadata (fname )
412422 elif ext in ('.emi' ,):
0 commit comments