@@ -5020,35 +5020,40 @@ def _uvbeam_constructor(loader, node):
50205020 if isinstance (values ["filename" ], str ):
50215021 files_use = [values ["filename" ]]
50225022
5023- zfiles = None
5023+ zfiles_use = None
50245024 if "mwa_zfile" in values :
5025- zfiles = values ["mwa_zfile" ]
5025+ zfiles_use = values ["mwa_zfile" ]
50265026 if isinstance (values ["mwa_zfile" ], str ):
5027- zfiles = [values ["mwa_zfile" ]]
5027+ zfiles_use = [values ["mwa_zfile" ]]
50285028
50295029 if "path_variable" in values :
50305030 path_var = values .pop ("path_variable" )
50315031 # first check to see if this is a file on disk
50325032 test_files = [os .path .join (path_var , file ) for file in files_use ]
5033- files_exist = np .asarray ([os .path .exists (file ) for file in test_files ])
5033+ if "mwa_zfile" in values :
5034+ test_zfiles = [os .path .join (path_var , file ) for file in zfiles_use ]
5035+ else :
5036+ test_zfiles = []
5037+ files_exist = np .asarray (
5038+ [os .path .exists (file ) for file in (test_files + test_zfiles )]
5039+ )
50345040 if np .any (files_exist ):
50355041 files_use = test_files
5042+ zfiles_use = test_zfiles
50365043 if not np .all (files_exist ):
5037- missing_files = (np .asarray (test_files ))[np .nonzero (~ files_exist )]
5038- raise FileNotFoundError (f"File(s) { missing_files } do not exist." )
5039-
5040- if zfiles is not None :
5041- zfiles = [os .path .join (path_var , file ) for file in zfiles ]
5042- zfiles_exist = np .asarray ([os .path .exists (file ) for file in zfiles ])
5043- if not np .all (zfiles_exist ):
5044- missing_files = (np .asarray (zfiles ))[np .nonzero (~ zfiles_exist )]
5045- raise FileNotFoundError (f"File(s) { missing_files } do not exist." )
5044+ missing_files = (np .asarray (test_files + test_zfiles ))[
5045+ np .nonzero (~ files_exist )
5046+ ]
5047+ raise FileNotFoundError (
5048+ f"File(s) { missing_files .tolist ()} do not exist."
5049+ )
50465050 else :
50475051 bad_pathvar_message = (
50485052 "If 'path_variable' is specified, it should either be the "
50495053 "directory a file is in or take the form of a module.variable_name "
50505054 "where the variable name can be imported from the module. "
5051- f"The path_variable is { path_var } . Files { test_files } do not exist "
5055+ f"The path_variable is { path_var } . Files { test_files + test_zfiles } "
5056+ "do not exist "
50525057 )
50535058 path_parts = (path_var ).split ("." )
50545059 var_name = path_parts [- 1 ]
@@ -5068,18 +5073,22 @@ def _uvbeam_constructor(loader, node):
50685073 ) from ie
50695074 path_var = getattr (module , var_name )
50705075 files_use = [os .path .join (path_var , file ) for file in files_use ]
5071- files_exist = np .asarray ([os .path .exists (file ) for file in files_use ])
5076+ if "mwa_zfile" in values :
5077+ zfiles_use = [os .path .join (path_var , file ) for file in zfiles_use ]
5078+ else :
5079+ zfiles_use = []
5080+
5081+ files_exist = np .asarray (
5082+ [os .path .exists (file ) for file in (files_use + zfiles_use )]
5083+ )
50725084 if not np .all (files_exist ):
5073- missing_files = (np .asarray (files_use ))[np .nonzero (~ files_exist )]
5085+ missing_files = (np .asarray (files_use + zfiles_use ))[
5086+ np .nonzero (~ files_exist )
5087+ ]
50745088 raise FileNotFoundError (
5075- bad_pathvar_message + f"and file(s) { missing_files } do not exist."
5089+ bad_pathvar_message + f"and file(s) { missing_files .tolist ()} "
5090+ "do not exist."
50765091 )
5077- if zfiles is not None :
5078- zfiles = [os .path .join (path_var , file ) for file in zfiles ]
5079- zfiles_exist = np .asarray ([os .path .exists (file ) for file in zfiles ])
5080- if not np .all (zfiles_exist ):
5081- missing_files = (np .asarray (zfiles ))[np .nonzero (~ zfiles_exist )]
5082- raise FileNotFoundError (f"File(s) { missing_files } do not exist." )
50835092
50845093 for i , file in enumerate (files_use ):
50855094 # if file does not exist, check pyuvsim cache defined from astropy prescription
@@ -5091,15 +5100,15 @@ def _uvbeam_constructor(loader, node):
50915100 files_use = files_use [0 ]
50925101 values ["filename" ] = files_use
50935102
5094- if zfiles is not None :
5095- for i , file in enumerate (zfiles ):
5103+ if "mwa_zfile" in values :
5104+ for i , file in enumerate (zfiles_use ):
50965105 # if file does not exist, check pyuvsim cache defined from astropy
50975106 # prescription treat file as download url to check astropy cache for file
50985107 if not os .path .exists (file ) and is_url_in_cache (file , pkgname = "pyuvsim" ):
5099- zfiles [i ] = cache_contents ("pyuvsim" )[file ]
5100- if len (zfiles ) == 1 :
5101- zfiles = zfiles [0 ]
5102- values ["mwa_zfile" ] = zfiles
5108+ zfiles_use [i ] = cache_contents ("pyuvsim" )[file ]
5109+ if len (zfiles_use ) == 1 :
5110+ zfiles_use = zfiles_use [0 ]
5111+ values ["mwa_zfile" ] = zfiles_use
51035112
51045113 beam = UVBeam .from_file (** values )
51055114
0 commit comments