Source code for pyspedas.projects.erg.ground.geomag.gmag_mm210

import numpy as np

from pyspedas.tplot_tools import get_data, store_data, options, clip, ylim

from ...satellite.erg.load import load
from ...satellite.erg.get_gatt_ror import get_gatt_ror


from typing import List, Optional, Union


[docs] def gmag_mm210( trange: List[str] = ["2020-08-01", "2020-08-02"], suffix: str = "", site: Union[str, List[str]] = "all", datatype: Union[str, List[str]] = "all", get_support_data: bool = False, varformat: Optional[str] = None, varnames: List[str] = [], downloadonly: bool = False, notplot: bool = False, no_update: bool = False, uname: Optional[str] = None, passwd: Optional[str] = None, time_clip: bool = False, ror: bool = True, force_download: bool = False, ) -> List[str]: """ Load mm210 data from ERG Science Center Parameters ---------- trange: list of str time range of interest [starttime, endtime] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] Default: ['2020-08-01', '2020-08-02'] suffix: str The tplot variable names will be given this suffix. Default: '' site: str or list of str The site or list of sites to load. Valid values: 'tik', 'zgn', 'yak', 'irt', 'ppi', 'bji', 'lnp', 'mut', 'ptn', 'wtk', 'lmt', 'kat', 'ktn', 'chd', 'zyk', 'mgd', 'ptk', 'msr', 'rik', 'onw', 'kag', 'ymk', 'cbi', 'gua', 'yap', 'kor', 'ktb', 'bik', 'wew', 'daw', 'wep', 'bsv', 'dal', 'can', 'adl', 'kot', 'cst', 'ewa', 'asa', 'mcq', 'all' Default: ['all'] datatype: str or list of str The data types to load. Valid values: '1s', '1sec', '1m', '1min', '1h', '1hr', 'all' Default: 'all' get_support_data: bool If true, data with an attribute "VAR_TYPE" with a value of "support_data" or 'data' will be loaded into tplot. Default: False varformat: str The CDF file variable formats to load into tplot. Wildcard character "*" is accepted. Default: None (all variables will be loaded). varnames: list of str List of variable names to load. Default: [] (all variables will be loaded) downloadonly: bool Set this flag to download the CDF files, but not load them into tplot variables. Default: False notplot: bool Return the data in hash tables instead of creating tplot variables. Default: False no_update: bool If set, only load data from your local cache. Default: False uname: str User name. Default: None passwd: str Password. Default: None time_clip: bool Time clip the variables to exactly the range specified in the trange keyword. Default: False ror: bool If set, print PI info and rules of the road. Default: True force_download: bool Download file even if local version is more recent than server version Default: False Returns ------- Examples ________ >>> import pyspedas >>> from pyspedas import tplot >>> mm210_vars=pyspedas.projects.erg.gmag_mm210(trange=["2005-01-01", "2005-01-02"],site='adl',datatype='1min') >>> tplot('mm210_mag_adl_1min_hdz') """ site_code_all = [ "tik", "zgn", "yak", "irt", "ppi", "bji", "lnp", "mut", "ptn", "wtk", "lmt", "kat", "ktn", "chd", "zyk", "mgd", "ptk", "msr", "rik", "onw", "kag", "ymk", "cbi", "gua", "yap", "kor", "ktb", "bik", "wew", "daw", "wep", "bsv", "dal", "can", "adl", "kot", "cst", "ewa", "asa", "mcq", ] tres_all = ["1sec", "1min", "1h"] if isinstance(datatype, str): datatype = datatype.lower() datatype = datatype.split(" ") elif isinstance(datatype, list): for i in range(len(datatype)): datatype[i] = datatype[i].lower() if "all" in datatype: datatype = tres_all datatype = list(set(datatype).intersection(tres_all)) if len(datatype) < 1: return if "1s" in datatype: index = np.where(np.array(datatype) == "1s")[0][0] datatype[index] = "1sec" elif "1m" in datatype: index = np.where(np.array(datatype) == "1m")[0][0] datatype[index] = "1min" elif "1hr" in datatype: index = np.where(np.array(datatype) == "1hr")[0][0] datatype[index] = "1h" if isinstance(site, str): site_code = site.lower() site_code = site_code.split(" ") elif isinstance(site, list): site_code = [] for i in range(len(site)): site_code.append(site[i].lower()) if "all" in site_code: site_code = site_code_all site_code = list(set(site_code).intersection(site_code_all)) prefix = "mm210_" if notplot: loaded_data = {} else: loaded_data = [] for site_input in site_code: for data_type_in in datatype: fres = data_type_in if fres == "1h": fres = "1min" file_res = 3600.0 * 24 pathformat = ( "ground/geomag/mm210/" + fres + "/" + site_input + "/%Y/mm210_" + fres + "_" + site_input + "_%Y%m%d_v??.cdf" ) loaded_data_temp = load( pathformat=pathformat, file_res=file_res, trange=trange, datatype=datatype, prefix=prefix, suffix="_" + site_input + suffix, get_support_data=get_support_data, varformat=varformat, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update, uname=uname, passwd=passwd, force_download=force_download, ) if notplot: loaded_data.update(loaded_data_temp) else: loaded_data += loaded_data_temp if (len(loaded_data_temp) > 0) and ror: try: gatt = get_gatt_ror(downloadonly, loaded_data) print( "**************************************************************************" ) print(gatt["Logical_source_description"]) print("") print(f'Information about {gatt["Station_code"]}') print("PI and Host PI(s):") print(gatt["PI_name"]) print("") print("Affiliations: ") print(gatt["PI_affiliation"]) print("") print("Rules of the Road for 210 MM Data Use:") for gatt_text in gatt["TEXT"]: print(gatt_text) print(f'{gatt["LINK_TEXT"]} {gatt["HTTP_LINK"]}') print( "**************************************************************************" ) except: print("printing PI info and rules of the road was failed") if (not downloadonly) and (not notplot): if fres == "1min": fres_list = ["1min", "1h"] else: fres_list = [fres] for fres_in in fres_list: current_tplot_name = ( prefix + "hdz_" + fres_in + "_" + site_input + suffix ) if current_tplot_name in loaded_data: get_data_vars = get_data(current_tplot_name) if get_data_vars is None: store_data(current_tplot_name, delete=True) else: # ;--- Rename new_tplot_name = ( prefix + "mag_" + site_input + "_" + fres_in + "_hdz" + suffix ) store_data(current_tplot_name, newname=new_tplot_name) loaded_data.remove(current_tplot_name) loaded_data.append(new_tplot_name) # ;--- Missing data -1.e+31 --> NaN clip(new_tplot_name, -1e4, 1e4) get_data_vars = get_data(new_tplot_name) ylim( new_tplot_name, np.nanmin(get_data_vars[1]), np.nanmax(get_data_vars[1]), ) # ;--- Labels options( new_tplot_name, "legend_names", ["Ch1", "Ch2", "Ch3"] ) options(new_tplot_name, "Color", ["b", "g", "r"]) options( new_tplot_name, "ytitle", "\n".join(new_tplot_name.split("_")), ) return loaded_data