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

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, Union, Optional, Dict, Any

[docs] def gmag_isee_fluxgate( 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=False, ) -> Union[Dict, None, List[Union[str, Any]]]: """ Load data from ISEE Fluxgate Magnetometers 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: 'msr', 'rik', 'kag', 'ktb', 'lcl', 'mdm', 'tew', 'all' Default: ['all'] datatype: str or list of str The data types to load. Valid values: '64hz', '1sec', '1min', '1h', '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 >>> fluxgate_vars=pyspedas.projects.erg.gmag_isee_fluxgate(trange=['2020-08-01','2020-08-02'], site='all') >>> tplot('isee_fluxgate_mag_ktb_1min_hdz') """ site_code_all = ['msr', 'rik', 'kag', 'ktb', 'lcl', 'mdm', 'tew'] tres_all=['64hz', '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 '64' in datatype: index = np.where(np.array(datatype) == '64')[0][0] datatype[index] = '64hz' elif '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 = 'isee_fluxgate_' 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 == '64hz': file_res = 3600. pathformat = 'ground/geomag/isee/fluxgate/'+fres+'/'+site_input\ +'/%Y/%m/isee_fluxgate_'+fres+'_'+site_input+'_%Y%m%d%H_v??.cdf' if fres == '1h': fres = '1min' if (fres == '1sec') or (fres == '1min'): file_res = 3600. * 24 pathformat = 'ground/geomag/isee/fluxgate/'+fres+'/'+site_input\ +'/%Y/isee_fluxgate_'+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 ISEE Fluxgate 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: 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) clip(new_tplot_name, -1e+4, 1e+4) get_data_vars = get_data(new_tplot_name) ylim(new_tplot_name, np.nanmin(get_data_vars[1]), np.nanmax(get_data_vars[1])) options(new_tplot_name, 'legend_names', ['H','D','Z']) options(new_tplot_name, 'Color', ['b', 'g', 'r']) options(new_tplot_name, 'ytitle', '\n'.join(new_tplot_name.split('_'))) return loaded_data