Source code for pyaerocom.io.utils

"""
High level I/O utility methods for pyaerocom
"""

from pyaerocom import change_verbosity, const
from pyaerocom.io.aerocom_browser import AerocomBrowser
from pyaerocom.io.readgridded import ReadGridded
from pyaerocom.io.readungridded import ReadUngridded


[docs] def get_ungridded_reader(obs_id): for reader in ReadUngridded.SUPPORTED_READERS: if obs_id in reader.SUPPORTED_DATASETS: return reader raise ValueError(f"No ungridded reader found that supports {obs_id}")
[docs] def browse_database(model_or_obs, verbose=False): """Browse Aerocom database using model or obs ID (or wildcard) Searches database for matches and prints information about all matches found (e.g. available variables, years, etc.) Parameters ---------- model_or_obs : str model or obs ID or search pattern verbose : bool if True, verbosity level will be set to debug, else to critical Returns ------- list list with data_ids of all matches Example ------- >>> import pyaerocom as pya >>> pya.io.browse_database('AATSR*ORAC*v4*') Pyaerocom ReadGridded --------------------- Model ID: AATSR_ORAC_v4.01 Data directory: /lustre/storeA/project/aerocom/aerocom-users-database/CCI-Aerosol/CCI_AEROSOL_Phase2/AATSR_ORAC_v4.01/renamed Available variables: ['abs550aer', 'ang4487aer', 'clt', 'landseamask', 'od550aer', 'od550dust', 'od550gt1aer', 'od550lt1aer', 'pixelcount'] Available years: [2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012] Available time resolutions ['daily'] """ if not verbose: change_verbosity("critical") else: change_verbosity("debug") browser = AerocomBrowser() matches = browser.find_matches(model_or_obs) if len(matches) == 0: print(f"No match could be found for {model_or_obs}") return elif len(matches) > 20: print( f"Found more than 20 matches for input pattern {model_or_obs}:\n\n" f"Matches: {matches}\n\n" f"To receive more detailed information, please specify search ID more accurately" ) return for match in matches: try: if match in const.OBS_IDS_UNGRIDDED: reader = ReadUngridded(match) else: reader = ReadGridded(match) print(reader) except Exception as e: print(f"Reading failed for {match}. Error: {repr(e)}") return matches