From 6fb63b8f3e2e82ef178f28496a41f47bc6594d5d Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Thu, 13 Jul 2023 13:32:15 -0400 Subject: [PATCH 01/82] Addition of MAVEN module Download MAVEN data from CDAWeb and use pysatNASA --- pysatNASA/instruments/__init__.py | 2 +- pysatNASA/instruments/methods/mvn.py | 2101 ++++++++++++++++++++++++++ pysatNASA/instruments/mvn_kp.py | 402 +++++ pysatNASA/instruments/mvn_mag.py | 230 +++ 4 files changed, 2734 insertions(+), 1 deletion(-) create mode 100644 pysatNASA/instruments/methods/mvn.py create mode 100644 pysatNASA/instruments/mvn_kp.py create mode 100644 pysatNASA/instruments/mvn_mag.py diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index c3a8bfae..a56c7e99 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -10,7 +10,7 @@ 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', 'iss_fpmu', 'jpl_gps', 'omni_hro', 'ses14_gold', - 'timed_saber', 'timed_see'] + 'timed_saber', 'timed_see','mvn_kp','mvn_mag'] for inst in __all__: exec("from pysatNASA.instruments import {x}".format(x=inst)) diff --git a/pysatNASA/instruments/methods/mvn.py b/pysatNASA/instruments/methods/mvn.py new file mode 100644 index 00000000..02d28213 --- /dev/null +++ b/pysatNASA/instruments/methods/mvn.py @@ -0,0 +1,2101 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Thu Jul 13 11:21:01 2023 + +@author: tesman +""" +import datetime as dt +import pysat +import xarray as xr +import pandas as pd + +ackn_str = ' '.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al. The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015). https://doi.org/10.1007/s11214-015-0139-x')) +references = ' '.join(('Connerney, J., and P. Lawton, MAVEN MAG PDS Archive SIS - This document ', + 'describes the format and content of the MAVEN Magnetometer (MAG) Planetary', + 'Data System (PDS) data archive. It includes descriptions of the Standard', + 'Data Products and associated metadata, and the volume archive format,', + 'content, and generation pipeline.',' ', + 'Connerney, J.E.P.; Espley, J.; Lawton, P.; Murphy, S.; Odom, J.; Oliversen, R.;', + 'and Sheppard, D., The MAVEN Magnetic Field Investigation, Space Sci Rev,', + 'Vol 195, Iss 1-4, pp.257-291, 2015. doi:10.1007/s11214-015-0169-4', + 'Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al. The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015). https://doi.org/10.1007/s11214-015-0139-x')) + +def scrub_mvn_mag(data): + """Make data labels and epoch compatible with SPASE and pysat. + Parameters + ---------- + data : pandas.Dataframe() + Metadata object containing the default metadata loaded from the sav files. + Returns + ------- + data : pandas.Dataframe() + Replacement data object with compatible variable names and epoch. + """ + + UTC = data['epoch'].values / 1e9 #UTC time from 01-Jan-2000 12:00:00.000, nanoseconds + unix_time = UTC + 946728000 + array_size = len(unix_time) + pdata = pd.DataFrame(index = unix_time) + for key in data.keys(): #For one dimensional arrays + try: + if len(data[key]) == array_size and key not in {'OB_B','POSN','OB_BDPL'}: + pdata[key] = data[key] + except TypeError: + pass + + for key in data.keys(): #For three-dimensional arrays + for coord in {'x','y','z'}: + try: + if len(data[key]) == array_size and key in {'OB_B','POSN','OB_BDPL'}: + if coord == 'x': ind = 0 + if coord == 'y': ind = 1 + if coord == 'z': ind = 2 + pdata[key+'_'+coord] = data[key].values[:,ind] + except TypeError: + pass + + xdata = xr.Dataset(pdata) #Switch to xarray type + data = xdata.rename(dim_0 = 'time') + return data + + +def generate_header(data): + """Generate the meta header info for mvn mag. + + Parameters + ---------- + inst_id : str + The VID of the associated dataset. + epoch : dt.datetime + The epoch of the datafile. Corresponds to the first data point. + Returns + ------- + header : dict + A dictionary compatible with the pysat.meta_header format. Top-level + metadata for the file. + + + Global attributes are used to provide information about the data set as an entity. Together with variables and variable attributes, the global attributes make the data correctly and independently usable by someone not connected with the instrument team, and hence, a good archive product. The global attributes are also used by the CDAWeb Display and Retrieval system. + +The required Global Attributes are listed here with example values. Note that CDF attributes are case-sensitive and must exactly follow what is shown here. Additional Global attributes can be defined but they must start with a letter and can otherwise contain letters, numbers and the unscore character (no other special characters allowed). See Global Attribute Definitions for the full set of defined Global Attributes. + + ATTRIBUTE EXAMPLE VALUE +-------------------------------------------------------------------- + + "Project" { "ISTP>International " - + "Solar-Terrestrial Physics" }. + + This attribute identifies the name of the project and indicates ownership. + For ISTP missions and investigations, the value used is "ISTP>International + Solar-Terrestrial Physics". For the Cluster mission, the value is "STSP Cluster>Solar + Terrestrial Science Programmes, Cluster". + + + + "Source_name" { "GEOTAIL>Geomagnetic Tail" }. + + This attribute identifies the mission or investigation that contains the sensors. + For ISTP, this is the mission name for spacecraft missions or the investigation name for + ground-based or theory investigations. Both a long name and a short name are provided. + This attribute should be single valued. + + + "Discipline" { "Space Physics>Magnetospheric Science" }. + "Data_type" { "K0>Key Parameter" }. + "Descriptor" { "EPI>Energetic Particles" - + " and Ion Composition" }. + This attribute identifies the name of the instrument or sensor + that collected the data + + "Data_version" { "1" }. + "Logical_file_id" { "GE_K0_EPI_19920908_V01" }. + "PI_name" { "D. Williams" }. + "PI_affiliation" { "JHU/APL" }. + "TEXT" { "reference to journal article, URL address" }. + + This attribute is an NSSDC standard global attribute which is a + text description of the experiment whose data is included in the CDF. + A reference to a journal article(s) or to a World Wide Web page describing + the experiment is essential, and constitutes the minimum requirement. + A written description of the data set is also desirable. This attribute + can have as many entries as necessary to contain the desired information. + + "Instrument_type" { "Magnetic Fields (space)" }. + "Mission_group" { "Geotail" }. + "Logical_source" { "GE_K0_EPI" }. + "Logical_source_description" { "Geotail Magnetic Field Key Parameters" }. + +-------------------------------------------------------------------- + + Medium Energy Proton and Electron Detector (MEPED) + """ + header = {'Project': data.Project, + 'Source_name': data.Source_name, + 'Discipline':data.Discipline, + 'Data_type': data.Data_type, + 'Descriptor': data.Descriptor, + 'Data_version': '', + 'Logical_file_id': data.Logical_file_id, + 'PI_name': data.PI_name, + 'PI_affiliation': data.PI_affiliation, + 'TEXT': data.TEXT, + 'Rules_of_use': data.Rules_of_use, + 'Instrument_type': data.Instrument_type, + 'Mission_group': data.Mission_group, + 'Logical_source': data.Logical_source, + 'Logical_source_description': data.Logical_source_description, + 'DOI':'10.17189/1414178', + 'File_naming_convention': data.File_naming_convention, + 'Time_resolution': data.Time_resolution, + 'Generated_by': data.Generated_by, + 'Generation_date': '', + 'Generation_datetime': dt.datetime.today().isoformat(), + 'Acknowledgement': ackn_str, + 'TITLE': data.TITLE, + 'spase_DatasetResourceID': {'spase://NASA/NumericalData', + '/MAVEN/MAG/SunState/Level2', + '/PT1S' }, + 'LINK_TEXT': data.LINK_TEXT, + 'LINK_TITLE': data.LINK_TITLE, + 'HTTP_LINK': data.HTTP_LINK} + + return header + + +def generate_metadata(header_data,data): + """Generate metadata object for mvn mag data compatible with SPASE and pysat. + Parameters + ---------- + header_data : dict + A dictionary compatible with the pysat.meta_header format. Required to + properly initialize metadata. + Returns + ------- + metadata : pandas.Dataframe() + Contains data compatible with SPASE standards to initialize pysat.Meta. + + Variables: + epoch, DDAY, OB_B, OB_B_range, POSN, OB_BDPL, OB_BDPL_range,compno_3, OB_B_labl, POSN_labl, OB_BDPL_labl + """ + meta = pysat.Meta(header_data=header_data) + + meta['time'] = {meta.labels.name: 'Unix time', + meta.labels.units: 'seconds', + meta.labels.min_val: float(data.epoch.VALIDMIN)/1e9 +946728000, + meta.labels.max_val: float(data.epoch.VALIDMAX)/1e9 +946728000, + meta.labels.desc: data.epoch.CATDESC, + meta.labels.fill_val: float(data.epoch.FILLVAL)} + + meta['DDAY'] ={meta.labels.name: data.DDAY.FIELDNAM, + meta.labels.units: data.DDAY.UNITS, + meta.labels.min_val: float(data.DDAY.VALIDMIN), + meta.labels.max_val: float(data.DDAY.VALIDMAX), + meta.labels.desc: data.DDAY.CATDESC, + meta.labels.fill_val: float(data.DDAY.FILLVAL)} + + meta['OB_B_x']={meta.labels.name: 'Outboard Magnetic Field x', + meta.labels.units: data.OB_B.UNITS, + meta.labels.desc: data.OB_B.CATDESC, + meta.labels.min_val: float(data.OB_B.VALIDMIN), + meta.labels.max_val: float(data.OB_B.VALIDMAX), + meta.labels.fill_val: float(data.OB_B.FILLVAL)} + meta['OB_B_y']={meta.labels.name: 'Outboard Magnetic Field y', + meta.labels.units: data.OB_B.UNITS, + meta.labels.desc: data.OB_B.CATDESC, + meta.labels.min_val: float(data.OB_B.VALIDMIN), + meta.labels.max_val: float(data.OB_B.VALIDMAX), + meta.labels.fill_val: float(data.OB_B.FILLVAL)} + meta['OB_B_z']={meta.labels.name: 'Outboard Magnetic Field z', + meta.labels.units: data.OB_B.UNITS, + meta.labels.desc: data.OB_B.CATDESC, + meta.labels.min_val: float(data.OB_B.VALIDMIN), + meta.labels.max_val: float(data.OB_B.VALIDMAX), + meta.labels.fill_val: float(data.OB_B.FILLVAL)} + + meta['OB_B_range']={meta.labels.name: data.OB_B_range.long_name, + meta.labels.units: data.OB_B_range.UNITS, + meta.labels.desc: data.OB_B_range.CATDESC, + meta.labels.min_val: float(data.OB_B_range.VALIDMIN), + meta.labels.max_val: float(data.OB_B_range.VALIDMAX), + meta.labels.fill_val: float(data.OB_B_range.FILLVAL)} + + meta['POSN_x']={meta.labels.name: 'Spacecraft Position x', + meta.labels.units: data.POSN.UNITS, + meta.labels.desc: 'Spacecraft position x', + meta.labels.min_val: float(data.POSN.VALIDMIN), + meta.labels.max_val: float(data.POSN.VALIDMAX), + meta.labels.fill_val:float(data.POSN.FILLVAL)} + meta['POSN_y']={meta.labels.name: 'Spacecraft Position y', + meta.labels.units: data.POSN.UNITS, + meta.labels.desc: 'Spacecraft position y', + meta.labels.min_val: float(data.POSN.VALIDMIN), + meta.labels.max_val: float(data.POSN.VALIDMAX), + meta.labels.fill_val:float(data.POSN.FILLVAL)} + meta['POSN_z']={meta.labels.name: 'Spacecraft Position z', + meta.labels.units: data.POSN.UNITS, + meta.labels.desc: 'Spacecraft position z', + meta.labels.min_val: float(data.POSN.VALIDMIN), + meta.labels.max_val: float(data.POSN.VALIDMAX), + meta.labels.fill_val:float(data.POSN.FILLVAL)} + + meta['OB_BDPL_x']={meta.labels.name: data.OB_BDPL_labl.values[0], + meta.labels.units: data.OB_BDPL.UNITS, + meta.labels.desc: data.OB_BDPL.CATDESC + ' x', + meta.labels.min_val: float(data.OB_BDPL.VALIDMIN), + meta.labels.max_val: float(data.OB_BDPL.VALIDMAX), + meta.labels.fill_val: float(data.OB_BDPL.FILLVAL)} + meta['OB_BDPL_y']={meta.labels.name: data.OB_BDPL_labl.values[1], + meta.labels.units: data.OB_BDPL.UNITS, + meta.labels.desc: data.OB_BDPL.CATDESC + ' y', + meta.labels.min_val: float(data.OB_BDPL.VALIDMIN), + meta.labels.max_val: float(data.OB_BDPL.VALIDMAX), + meta.labels.fill_val: float(data.OB_BDPL.FILLVAL)} + meta['OB_BDPL_z']={meta.labels.name: data.OB_BDPL_labl.values[2], + meta.labels.units: data.OB_BDPL.UNITS, + meta.labels.desc: data.OB_BDPL.CATDESC + ' z', + meta.labels.min_val: float(data.OB_BDPL.VALIDMIN), + meta.labels.max_val: float(data.OB_BDPL.VALIDMAX), + meta.labels.fill_val: float(data.OB_BDPL.FILLVAL)} + + meta['OB_BDPL_range']={meta.labels.name: data.OB_BDPL_range.FIELDNAM, + meta.labels.desc: data.OB_BDPL_range.CATDESC, + meta.labels.min_val: float(data.OB_BDPL.VALIDMIN), + meta.labels.max_val: float(data.OB_BDPL.VALIDMAX), + meta.labels.fill_val: float(data.OB_BDPL.FILLVAL), + meta.labels.units: data.OB_BDPL.UNITS} + + return meta + +"""Provides metadata specific routines for MGS KP data.""" +def scrub_mvn_kp(data): + """Make data labels and epoch compatible with SPASE and pysat. + Parameters + ---------- + data : pandas.Dataframe() + Metadata object containing the default metadata loaded from the sav files. + Returns + ------- + data : pandas.Datafram() + Replacement data object with compatible variable names and epoch. + """ + + # Now we make our Epoch variable + unix_time = data['epoch'].values/1e3 - 62167204800 #originally time from 0-0-0 0:00:00.000 ms + + #KP data from the MAVEN SDC is in the format yyyy-mm-ddThh:mm:ss + array_size = len(unix_time) + pdata = pd.DataFrame(index = unix_time) + p2data = pd.DataFrame(index = unix_time) + p3data = pd.DataFrame(index = unix_time) + for key in data.keys(): + try: + if len(data[key]) == array_size and key not in {'SWIA_Hplus_flow_velocity_MSO','SWIA_Hplus_flow_velocity_MSO_data_quality', + 'SWIA_Hplus_flow_velocity_MSO_dq_labl', 'STATIC_O2plus_flow_velocity_MAVEN_APP', + 'STATIC_O2plus_flow_velocity_MAVEN_APP_labl', 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality', + 'SPICE_spacecraft_GEO', + 'STATIC_O2plus_flow_velocity_MSO','MAG_field_GEO','MAG_field_MSO_data_quality', + 'STATIC_O2plus_flow_velocity_MSO_data_quality', + 'SPICE_app_attitude_MSO','SEP_Look_direction_1R_MSO', + 'STATIC_Hplus_characteristic_direction_MSO', + 'STATIC_dominant_pickup_ion_characteristic_direction_MSO', + 'MAG_field_MSO_dq_labl','MAG_field_MSO','MAG_field_GEO_labl', 'SEP_Look_direction_1F_MSO', + 'MAG_field_GEO_dq_labl','SEP_Look_direction_2F_MSO','MAG_field_GEO_data_quality', + 'SPICE_spacecraft_GEO_labl','SEP_Look_direction_2R_MSO', + 'SPICE_spacecraft_MSO_labl','SPICE_spacecraft_MSO','SPICE_spacecraft_attitude_MSO', + 'SPICE_spacecraft_attitude_GEO_labl','SPICE_spacecraft_attitude_GEO', + 'SPICE_spacecraft_attitude_MSO_labl','SPICE_app_attitude_GEO', + 'Rotation_matrix_SPACECRAFT_MAVEN_MSO','Rotation_matrix_IAU_MARS_MAVEN_MSO'}: + if pdata.shape[1] < 100: + pdata[key] = data[key] + else: + p2data[key] = data[key] + except TypeError: + pass + + for key in data.keys(): + for coord in {'x','y','z'}: + try: + if len(data[key]) == array_size and key in {'SWIA_Hplus_flow_velocity_MSO','SWIA_Hplus_flow_velocity_MSO_data_quality', + 'STATIC_O2plus_flow_velocity_MAVEN_APP','STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality', + 'SPICE_spacecraft_GEO','STATIC_O2plus_flow_velocity_MSO', + 'STATIC_O2plus_flow_velocity_MSO_dq_labl','MAG_field_GEO', + 'STATIC_Hplus_MSO_characteristic_direction_labl','MAG_field_GEO_data_quality', + 'MAG_field_MSO_data_quality','MAG_field_MSO', + 'STATIC_O2plus_flow_velocity_MSO_data_quality','SPICE_app_attitude_MSO', + 'SEP_Look_direction_1R_MSO', + 'STATIC_Hplus_characteristic_direction_MSO', + 'STATIC_dominant_pickup_ion_characteristic_direction_MSO', + 'SEP_Look_direction_1F_MSO','SEP_Look_direction_2F_MSO','SEP_Look_direction_2R_MSO', + 'SPICE_spacecraft_MSO','SPICE_spacecraft_attitude_MSO', + 'SPICE_spacecraft_attitude_GEO_labl','SPICE_spacecraft_attitude_GEO', + 'SPICE_spacecraft_attitude_MSO_labl','SPICE_app_attitude_GEO'}: + if coord == 'x': ind = 0 + if coord == 'y': ind = 1 + if coord == 'z': ind = 2 + p3data[key+'_'+coord] = data[key].values[:,ind] + except TypeError: + pass + xdata = xr.Dataset(pdata) + p2data = xr.Dataset(p2data) + p3data = xr.Dataset(p3data) + xdata = xdata.merge(p2data) + xdata = xdata.merge(p3data) + data = xdata.rename(dim_0 = 'time') + return data + +def generate_header_kp(data): + """Generate the meta header info for mvn kp data. + Parameters + ---------- + inst_id : str + The VID of the associated dataset. + epoch : dt.datetime + The epoch of the datafile. Corresponds to the first data point. + Returns + ------- + header : dict + A dictionary compatible with the pysat.meta_header format. Top-level + metadata for the file. + + Global attributes are used to provide information about the data set as an entity. + Together with variables and variable attributes, the global attributes make the data correctly and + independently usable by someone not connected with the instrument team, and hence, a good archive product. + The global attributes are also used by the CDAWeb Display and Retrieval system. + """ + header = {'Project': data.Project, + 'Source_name': data.Source_name, + 'Discipline':data.Discipline, + 'Data_type': data.Data_type, + 'Descriptor': data.Descriptor, + 'Data_version': '', + 'Logical_file_id': data.Logical_file_id, + 'PI_name': data.PI_name, + 'PI_affiliation': data.PI_affiliation, + 'TEXT': data.TEXT, + 'Rules_of_use': data.Rules_of_use, + 'Instrument_type': data.Instrument_type, + 'Mission_group': data.Mission_group, + 'Logical_source': data.Logical_source, + 'Logical_source_description': data.Logical_source_description, + 'DOI':'10.17189/1414178', + 'File_naming_convention': data.File_naming_convention, + 'Time_resolution': data.Time_resolution, + 'Generated_by': data.Generated_by, + 'Generation_date': '', + 'Generation_datetime': dt.datetime.today().isoformat(), + 'Acknowledgement': ackn_str, + 'TITLE': data.TITLE, + 'spase_DatasetResourceID': {'spase://NASA/NumericalData', + '/MAVEN/InSitu/KeyParameter/PT4S'}, + 'LINK_TEXT': data.LINK_TEXT, + 'LINK_TITLE': data.LINK_TITLE, + 'HTTP_LINK': data.HTTP_LINK} + + return header + + +def generate_metadata_kp(header_data,data): + """Generate metadata object for mvn kp data compatible with SPASE and pysat. + Parameters + ---------- + header_data : dict + A dictionary compatible with the pysat.meta_header format. Required to + properly initialize metadata. + Returns + ------- + metadata : pandas.Dataframe() + Contains data compatible with SPASE standards to initialize pysat.Meta. + + Variables: + + """ + meta = pysat.Meta(header_data=header_data) + meta['LPW_Electron_density'] = {meta.labels.name: 'LPW_Electron_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Derived from the LP sweep and when available from the plasma line', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron density (LPW) '} + + meta['LPW_Electron_density_min'] = {meta.labels.name: 'LPW_Electron_density_min', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron density min (LPW)'} + + meta['LPW_Electron_density_max'] = {meta.labels.name: 'LPW_Electron_density_max', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron density max (LPW)'} + + meta['LPW_Electron_temperature'] = {meta.labels.name: 'LPW_Electron_temperature', + meta.labels.units: 'K', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Derived from the LP sweep', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron temperature (LPW)'} + + meta['LPW_Electron_temperature_min'] = {meta.labels.name: 'LPW_Electron_temperature_min', + meta.labels.units: 'K', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron temperature min (LPW)'} + + meta['LPW_Electron_temperature_max'] = {meta.labels.name: 'LPW_Electron_temperature_max', + meta.labels.units: 'K', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron temperature max (LPW)'} + + meta['LPW_Spacecraft_potential'] = {meta.labels.name: 'LPW_Spacecraft_potential', + meta.labels.units: 'V', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Measured from the probe potentials', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Spacecraft potential (LPW)'} + + meta['LPW_Spacecraft_potential_min'] = {meta.labels.name: 'LPW_Spacecraft_potential_min', + meta.labels.units: 'V', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Spacecraft potential min (LPW)'} + + meta['LPW_Spacecraft_potential_max'] = {meta.labels.name: 'LPW_Spacecraft_potential_max', + meta.labels.units: 'V', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Spacecraft potential max (LPW)'} + + meta['LPW_E_field_wave_power_2_100'] = {meta.labels.name: 'LPW_E_field_wave_power_2_100', + meta.labels.units: '(V/m)^2/Hz', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Integrated wave power from the onboard calculated FFT, frequencies important for wave heating', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'E-field wave power 2-100 Hz (LPW)'} + + meta['LPW_E_field_wave_power_2_100_data_quality'] = {meta.labels.name: 'LPW_E_field_wave_power_2_100_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Range: 0-100, where 100 is the highest confidence level, use data with quality flag of 50 or above', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> E-field wave power 2-100 Hz data quality (LPW)'} + + meta['LPW_E_field_wave_power_100_800'] = {meta.labels.name: 'LPW_E_field_wave_power_100_800', + meta.labels.units: '(V/m)^2/Hz', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Integrated wave power from the onboard calculated FFT', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'E-field wave power 100-800 Hz (LPW)'} + + meta['LPW_E_field_wave_power_100_800_data_quality'] = {meta.labels.name: 'LPW_E_field_wave_power_100_800_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Range: 0-100, where 100 is the highest confidence level, use data with quality flag of 50 or above', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> E-field wave power 100-800 Hz data quality (LPW)'} + + meta['LPW_E_field_wave_power_800_1000'] = {meta.labels.name: 'LPW_E_field_wave_power_800_1000', + meta.labels.units: '(V/m)^2/Hz', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Integrated wave power from the onboard calculated FFT', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'E-field wave power 800-1000 Hz (LPW)'} + + meta['LPW_E_field_wave_power_800_1000_data_quality'] = {meta.labels.name: 'LPW_E_field_wave_power_800_1000_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Range: 0-100, where 100 is the highest confidence level, use data with quality flag of 50 or above', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> E-field wave power 800-1000 Hz data quality (LPW)'} + + meta['LPW_EUV_irradiance_pt1_7'] = {meta.labels.name: 'LPW_EUV_irradiance_pt1_7', + meta.labels.units: 'W/m^2', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'EUV irradiance wave power 0.1-7.0 nm bandpass (LPW-EUV)'} + + meta['LPW_EUV_irradiance_pt1_7_data_quality'] = {meta.labels.name: 'LPW_EUV_irradiance_pt1_7_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '0 = good solar, 1 = occultation, 2 = no pointing info, 3 = Sun NOT fully in FOV, 4 = Sun NOT in FOV, 5 = windowed, 6 = eclipse, 7 = spare', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> EUV irradiance wave power 0.1-7.0 nm data quality (LPW-EUV)'} + + meta['LPW_EUV_irradiance_17_22'] = {meta.labels.name: 'LPW_EUV_irradiance_17_22', + meta.labels.units: 'W/m^2', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'EUV irradiance wave power 17-22 nm bandpass (LPW-EUV)'} + + meta['LPW_EUV_irradiance_17_22_data_quality'] = {meta.labels.name: 'LPW_EUV_irradiance_17_22_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '0 = good solar, 1 = occultation, 2 = no pointing info, 3 = Sun NOT fully in FOV, 4 = Sun NOT in FOV, 5 = windowed, 6 = eclipse, 7 = spare', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> EUV irradiance wave power 17-22 nm data quality (LPW-EUV)'} + + meta['LPW_EUV_irradiance_lyman_alpha'] = {meta.labels.name: 'LPW_EUV_irradiance_lyman_alpha', + meta.labels.units: 'W/m^2', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'EUV irradiance wave power Lyman-alpha bandpass (LPW-EUV)'} + + meta['LPW_EUV_irradiance_lyman_alpha_data_quality'] = {meta.labels.name: 'LPW_EUV_irradiance_lyman_alpha_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '0 = good solar, 1 = occultation, 2 = no pointing info, 3 = Sun NOT fully in FOV, 4 = Sun NOT in FOV, 5 = windowed, 6 = eclipse, 7 = spare', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> EUV irradiance wave power Lyman-alpha data quality (LPW-EUV)'} + + meta['SWEA_Electron_density'] = {meta.labels.name: 'SWEA_Electron_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Density of solar wind or magnetosheath electrons based on moments of the electron distribution after correcting for the spacecraft potential', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Solar wind electron density (SWEA)'} + + meta['SWEA_Electron_density_quality'] = {meta.labels.name: 'SWEA_Electron_density_quality', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Statistical uncertainty, (1 sigma), not including systematic error', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Solar wind electron density data quality (SWEA)'} + + meta['SWEA_Electron_temperature'] = {meta.labels.name: 'SWEA_Electron_temperature', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Temperature of solar wind or magnetosheath electrons based on moments of the electron distribution after correcting for the spacecraft potential', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Solar wind electron temperature (SWEA)'} + + meta['SWEA_Electron_temperature_quality'] = {meta.labels.name: 'SWEA_Electron_temperature_quality', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Statistical uncertainty, (1 sigma), not including systematic error', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Solar wind electron temperature data quality (SWEA)'} + + meta['SWEA_Electron_parallel_flux_5_100'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_5_100', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Electron energy flux parallel to the magnetic field vector (0-90 degrees pitch angle)', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux parallel 5-100 eV (SWEA)'} + + meta['SWEA_Electron_parallel_flux_5_100_data_quality'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_5_100_data_quality', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux parallel 5-100 eV data quality (SWEA)'} + + meta['SWEA_Electron_parallel_flux_100_500'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_100_500', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Electron energy flux parallel to the magnetic field vector (0-90 degrees pitch angle)', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux parallel 100-500 eV (SWEA)'} + + meta['SWEA_Electron_parallel_flux_100_500_data_quality'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_100_500_data_quality', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux parallel 100-500 eV data quality (SWEA)'} + + meta['SWEA_Electron_parallel_flux_500_1000'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_500_1000', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Electron energy flux parallel to the magnetic field vector (0-90 degrees pitch angle)', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux parallel 500-1000 eV (SWEA)'} + + meta['SWEA_Electron_parallel_flux_500_1000_data_quality'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_500_1000_data_quality', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux parallel 500-1000 eV data quality (SWEA)'} + + meta['SWEA_Electron_anti_parallel_flux_5_100'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_5_100', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Electron energy flux anti-parallel to the magnetic field vector (90-180 degrees pitch angle)', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux anti-parallel 5-100 eV (SWEA)'} + + meta['SWEA_Electron_anti_parallel_flux_5_100_data_quality'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_5_100_data_quality', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux anti-parallel 5-100 eV data quality (SWEA)'} + + meta['SWEA_Electron_anti_parallel_flux_100_500'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_100_500', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Electron energy flux anti-parallel to the magnetic field vector (90-180 degrees pitch angle)', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux anti-parallel 100-500 eV (SWEA)'} + + meta['SWEA_Electron_anti_parallel_flux_100_500_data_quality'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_100_500_data_quality', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux anti-parallel 100-500 eV data quality (SWEA)'} + + meta['SWEA_Electron_anti_parallel_flux_500_1000'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_500_1000', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Electron energy flux anti-parallel to the magnetic field vector (90-180 degrees pitch angle)', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux anti-parallel 500-1000 eV (SWEA)'} + + meta['SWEA_Electron_anti_parallel_flux_500_1000_data_quality'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_500_1000_data_quality', + meta.labels.units: 'eV/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux anti-parallel 500-1000 eV data quality (SWEA)'} + + meta['SWEA_Electron_spectrum_shape'] = {meta.labels.name: 'SWEA_Electron_spectrum_shape', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Energy spectrum shape parameter used to distingush between ionospheric photoelectrons and solar wind electrons', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron spectrum shape parameter (SWEA)'} + + meta['SWEA_Electron_spectrum_shape_data_quality'] = {meta.labels.name: 'SWEA_Electron_spectrum_shape_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron spectrum shape parameter data quality (SWEA)'} + + meta['SWIA_Hplus_density'] = {meta.labels.name: 'SWIA_Hplus_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Total ion density from onboard moment calculation, assuming 100% protons (SWIA)'} + + meta['SWIA_Hplus_density_data_quality'] = {meta.labels.name: 'SWIA_Hplus_density_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Total ion density data quality (SWIA)'} + + + + + + + meta['SWIA_Hplus_flow_velocity_MSO_x'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_x', + meta.labels.units: 'km_s', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Bulk ion flow velocity X component from onboard moment calculation, assuming 100% protons (SWIA)'} + + meta['SWIA_Hplus_flow_velocity_MSO_y'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_y', + meta.labels.units: 'km_s', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'Bulk ion flow velocity Y component from onboard moment calculation, assuming 100% protons (SWIA)'} + + meta['SWIA_Hplus_flow_velocity_MSO_z'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_z', + meta.labels.units: 'km_s', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'Bulk ion flow velocity Z component from onboard moment calculation, assuming 100% protons (SWIA)'} + + meta['SWIA_Hplus_flow_velocity_MSO_data_quality_x'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_data_quality_x', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', + meta.labels.desc: '---> Bulk ion flow velocity X data quality (SWIA)'} + + meta['SWIA_Hplus_flow_velocity_MSO_data_quality_y'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_data_quality_y', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', + meta.labels.desc: '---> Bulk ion flow velocity Y data quality (SWIA)'} + + meta['SWIA_Hplus_flow_velocity_MSO_data_quality_z'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_data_quality_z', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', + meta.labels.desc: '---> Bulk ion flow velocity Z data quality (SWIA)'} + + meta['SWIA_Hplus_temperature'] = {meta.labels.name: 'SWIA_Hplus_temperature', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Scalar ion temperature from onboard moment calculation, assuming 100% protons (SWIA)'} + + meta['SWIA_Hplus_temperature_data_quality'] = {meta.labels.name: 'SWIA_Hplus_temperature_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Scalar ion temperature data quality (SWIA)'} + + meta['SWIA_dynamic_pressure'] = {meta.labels.name: 'SWIA_dynamic_pressure', + meta.labels.units: 'nPa', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion dynamic pressure computed on ground from density and velocity moments, assuming 100% protons (SWIA)'} + + meta['SWIA_dynamic_pressure_data_quality'] = {meta.labels.name: 'SWIA_dynamic_pressure_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion dynamic pressure data quality (SWIA)'} + + meta['STATIC_Quality'] = {meta.labels.name: 'STATIC_Quality', + meta.labels.units: ' ', + meta.labels.min_val: 0.0, + meta.labels.max_val: 999999999.0, + meta.labels.notes: 'Integer flag bits, Valid=0, Flag=1, See KP SIS for bit descriptions (formatted as a float in order to include NaN values for data gaps) ', + meta.labels.fill_val: -2147483648.0, + meta.labels.desc: 'STATIC Data quality'} + + meta['STATIC_Hplus_density'] = {meta.labels.name: 'STATIC_Hplus_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'H+ number density below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'H+ density (STATIC)'} + + meta['STATIC_Hplus_density_data_quality'] = {meta.labels.name: 'STATIC_Hplus_density_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> H+ density data quality (STATIC)'} + + meta['STATIC_Oplus_density'] = {meta.labels.name: 'STATIC_Oplus_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'O+ number density below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O+ density (STATIC)'} + + meta['STATIC_Oplus_density_data_quality'] = {meta.labels.name: 'STATIC_Oplus_density_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O+ density data quality (STATIC)'} + + meta['STATIC_O2plus_density'] = {meta.labels.name: 'STATIC_O2plus_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'O2+ number density below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ density (STATIC)'} + + meta['STATIC_O2plus_density_data_quality'] = {meta.labels.name: 'STATIC_O2plus_density_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O2+ density data quality (STATIC)'} + + meta['STATIC_Hplus_temperature'] = {meta.labels.name: 'STATIC_Hplus_temperature', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'H+ RAM temperature below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'H+ temperature (STATIC)'} + + meta['STATIC_Hplus_temperature_data_quality'] = {meta.labels.name: 'STATIC_Hplus_temperature_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> H+ temperature data quality (STATIC)'} + + meta['STATIC_Oplus_temperature'] = {meta.labels.name: 'STATIC_Oplus_temperature', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'O+ RAM temperature below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O+ temperature (STATIC)'} + + meta['STATIC_Oplus_temperature_data_quality'] = {meta.labels.name: 'STATIC_Oplus_temperature_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O+ temperature data quality (STATIC)'} + + meta['STATIC_O2plus_temperature'] = {meta.labels.name: 'STATIC_O2plus_temperature', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'O2+ RAM temperature below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ temperature (STATIC)'} + + meta['STATIC_O2plus_temperature_data_quality'] = {meta.labels.name: 'STATIC_O2plus_temperature_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O2+ temperature data quality (STATIC)'} + + + + meta['STATIC_O2plus_flow_velocity_MAVEN_APP_x'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_x', + meta.labels.units: 'km/s', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ MAVEN_APP X component of velocity below TBD altitude determined from APID c6 while in Ram or Conic mode (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MAVEN_APP_y'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_y', + meta.labels.units: 'km/s', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ MAVEN_APP Y component of velocity below TBD altitude determined from APID c6 while in Ram or Conic mode (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MAVEN_APP_z'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_z', + meta.labels.units: 'km/s', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ MAVEN_APP Z component of velocity below TBD altitude determined from APID c6 while in Ram or Conic mode (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_x'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_x', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.desc: '---> O2+ MAVEN_APP X component of velocity data quality (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_y'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_y', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O2+ MAVEN_APP Y component of velocity data quality (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_z'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_z', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.desc: '---> O2+ MAVEN_APP Z component of velocity data quality (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MSO_x'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_x', + meta.labels.units: 'km/s', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ MSO X component of velocity below TBD altitude while in Ram or Conic mode (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MSO_y'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_y', + meta.labels.units: 'km/s', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ MSO Y component of velocity below TBD altitude while in Ram or Conic mode (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MSO_z'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_z', + meta.labels.units: 'km/s', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ MSO Y component of velocity below TBD altitude while in Ram or Conic mode (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MSO_data_quality_x'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_data_quality_x', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O2+ MSO X component of velocity data quality (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MSO_data_quality_y'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_data_quality_y', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O2+ MSO Y component of velocity data quality (STATIC)'} + + meta['STATIC_O2plus_flow_velocity_MSO_data_quality_z'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_data_quality_z', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O2+ MSO Z component of velocity data quality (STATIC)'} + + + + meta['STATIC_Hplus_omni_directional_flux'] = {meta.labels.name: 'STATIC_Hplus_omni_directional_flux', + meta.labels.units: '(cm^2 s)^-1', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'H+ omni-directional flux above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'H+ omni-directional flux (STATIC)'} + + meta['STATIC_Hplus_characteristic_energy'] = {meta.labels.name: 'STATIC_Hplus_characteristic_energy', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'H+ omni-directional characteristic energy above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'H+ characteristic energy (STATIC)'} + + meta['STATIC_Hplus_characteristic_energy_DQ'] = {meta.labels.name: 'STATIC_Hplus_characteristic_energy_DQ', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> H+ characteristic energy data quality (STATIC)'} + + meta['STATIC_HEplus_omni_directional_flux'] = {meta.labels.name: 'STATIC_HEplus_omni_directional_flux', + meta.labels.units: '(cm^2 s)^-1', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'HE+ omni-directional flux above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'He+ omni-directional flux (STATIC)'} + + meta['STATIC_HEplus_characteristic_energy'] = {meta.labels.name: 'STATIC_HEplus_characteristic_energy', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'HE+ omni-directional characteristic energy above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'He+ characteristic energy (STATIC)'} + + meta['STATIC_HEplus_characteristic_energy_DQ'] = {meta.labels.name: 'STATIC_HEplus_characteristic_energy_DQ', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> He+ characteristic energy data quality (STATIC)'} + + meta['STATIC_Oplus_omni_directional_flux'] = {meta.labels.name: 'STATIC_Oplus_omni_directional_flux', + meta.labels.units: '(cm^2 s)^-1', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'O+ omni-directional flux above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O+ omni-directional flux (STATIC)'} + + meta['STATIC_Oplus_characteristic_energy'] = {meta.labels.name: 'STATIC_Oplus_characteristic_energy', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'O+ omni-directional characteristic energy above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O+ characteristic energy (STATIC)'} + + meta['STATIC_Oplus_characteristic_energy_DQ'] = {meta.labels.name: 'STATIC_Oplus_characteristic_energy_DQ', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O+ characteristic energy data quality (STATIC)'} + + meta['STATIC_O2plus_omni_directional_flux'] = {meta.labels.name: 'STATIC_O2plus_omni_directional_flux', + meta.labels.units: '(cm^2 s)^-1', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'O2+ omni-directional flux above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ omni-directional flux (STATIC)'} + + meta['STATIC_O2plus_characteristic_energy'] = {meta.labels.name: 'STATIC_O2plus_characteristic_energy', + meta.labels.units: 'eV', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'O2+ omni-directional characteristic energy above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O2+ characteristic energy (STATIC)'} + + meta['STATIC_O2plus_characteristic_energy_DQ'] = {meta.labels.name: 'STATIC_O2plus_characteristic_energy_DQ', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O2+ characteristic energy data quality (STATIC)'} + + + meta['STATIC_Hplus_characteristic_direction_MSO_x'] = {meta.labels.name: 'STATIC_Hplus_characteristic_direction_MSO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'H+ MSO X-direction of flux above TBD altitude determined from TBD APID while in Pickup and Scan mode (STATIC)'} + + meta['STATIC_Hplus_characteristic_direction_MSO_y'] = {meta.labels.name: 'STATIC_Hplus_characteristic_direction_MSO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'H+ MSO Y-direction of flux above TBD altitude determined from TBD APID while in Pickup and Scan mode (STATIC)'} + + meta['STATIC_Hplus_characteristic_direction_MSO_z'] = {meta.labels.name: 'STATIC_Hplus_characteristic_direction_MSO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'H+ MSO Z-direction of flux above TBD altitude determined from TBD APID while in Pickup and Scan mode (STATIC)'} + + + + + + + + meta['STATIC_Hplus_characteristic_angular_width'] = {meta.labels.name: 'STATIC_Hplus_characteristic_angular_width', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'H+ flux angular width above TBD altitude determined from TBD APID while in Pickup and Scan mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'H+ characteristic width (STATIC)'} + + meta['STATIC_Hplus_characteristic_angular_width_DQ'] = {meta.labels.name: 'STATIC_Hplus_characteristic_angular_width_DQ', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> H+ characteristic width data quality (STATIC)'} + + + meta['STATIC_dominant_pickup_ion_characteristic_direction_MSO_z'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_direction_MSO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Dominant pickup ion MSO Z direction of flux above TBD altitude determined from APID D0 and CE while in Pickup, Eclipse and Protect mode'} + + meta['STATIC_dominant_pickup_ion_characteristic_direction_MSO_x'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_direction_MSO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Dominant pickup ion MSO X direction of flux above TBD altitude determined from APID D0 and CE while in Pickup, Eclipse and Protect mode'} + + meta['STATIC_dominant_pickup_ion_characteristic_direction_MSO_y'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_direction_MSO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Dominant pickup ion MSO Y direction of flux above TBD altitude determined from APID D0 and CE while in Pickup, Eclipse and Protect mode'} + + + + + + meta['STATIC_dominant_pickup_ion_characteristic_angular_width'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_angular_width', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Dominant pickup ion flux angular width above TBD altitude determined from APID D0 and CE while in Pickup, Eclipse and Protect mode', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Dominant pickup ion characteristic angular width (STATIC)'} + + meta['STATIC_dominant_pickup_ion_characteristic_angular_width_DQ'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_angular_width_DQ', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number of counts in the measurement', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Dominant pickup ion characteristic angular width DQ (STATIC)'} + + meta['SEP_Ion_Energy_Flux_30_1000_FOV_1F'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_1F', + meta.labels.units: 'n/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number flux of ions, integrated over the energy range 0.03-1.0 MeV', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion energy flux (30-1000 keV), FOV 1-F (SEP)'} + + meta['SEP_Ion_Energy_Flux_30_1000_FOV_1F_data_quality'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_1F_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Standard uncertainty in total ion flux, based on Poisson statistics', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion energy flux (30-1000 keV), FOV 1-F data quality (SEP)'} + + meta['SEP_Ion_Energy_Flux_30_1000_FOV_1R'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_1R', + meta.labels.units: 'n/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number flux of ions, integrated over the energy range 0.03-1.0 MeV', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion energy flux (30-1000 keV), FOV 1-R (SEP)'} + + meta['SEP_Ion_Energy_Flux_30_1000_FOV_1R_data_quality'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_1R_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Standard uncertainty in total ion flux, based on Poisson statistics', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion energy flux (30-1000 keV), FOV 1-R data quality (SEP)'} + + meta['SEP_Ion_Energy_Flux_30_1000_FOV_2F'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_2F', + meta.labels.units: 'n/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number flux of ions, integrated over the energy range 0.03-1.0 MeV', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion energy flux (30-1000 keV), FOV 2-F (SEP)'} + + meta['SEP_Ion_Energy_Flux_30_1000_FOV_2F_data_quality'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_2F_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Standard uncertainty in total ion flux, based on Poisson statistics', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion energy flux (30-1000 keV), FOV 2-F data quality (SEP)'} + + meta['SEP_Ion_Energy_Flux_30_1000_FOV_2R'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_2R', + meta.labels.units: 'n/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number flux of ions, integrated over the energy range 0.03-1.0 MeV', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion energy flux (30-1000 keV), FOV 2-R (SEP)'} + + meta['SEP_Ion_Energy_Flux_30_1000_FOV_2R_data_quality'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_2R_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Standard uncertainty in total ion flux, based on Poisson statistics', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion energy flux (30-1000 keV), FOV 2-R data quality (SEP)'} + + meta['SEP_Electron_Energy_Flux_30_300_FOV_1F'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_1F', + meta.labels.units: 'n/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number flux of electrons, integrated over the energy range 30-300 keV', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux (30-300 keV), FOV 1-F (SEP)'} + + meta['SEP_Electron_Energy_Flux_30_300_FOV_1F_data_quality'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_1F_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Standard uncertainty in total electron flux, based on Poisson statistics', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux (30-300 keV), FOV 1-F data quality (SEP)'} + + meta['SEP_Electron_Energy_Flux_30_300_FOV_1R'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_1R', + meta.labels.units: 'n/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number flux of electrons, integrated over the energy range 30-300 keV', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux (30-300 keV), FOV 1-R (SEP)'} + + meta['SEP_Electron_Energy_Flux_30_300_FOV_1R_data_quality'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_1R_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Standard uncertainty in total electron flux, based on Poisson statistics', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux (30-300 keV), FOV 1-R data quality (SEP)'} + + meta['SEP_Electron_Energy_Flux_30_300_FOV_2F'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_2F', + meta.labels.units: 'n/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number flux of electrons, integrated over the energy range 30-300 keV', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux (30-300 keV), FOV 2-F (SEP)'} + + meta['SEP_Electron_Energy_Flux_30_300_FOV_2F_data_quality'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_2F_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Standard uncertainty in total electron flux, based on Poisson statistics', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux (30-300 keV), FOV 2-F data quality (SEP)'} + + meta['SEP_Electron_Energy_Flux_30_300_FOV_2R'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_2R', + meta.labels.units: 'n/(cm^2 s sr)', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Number flux of electrons, integrated over the energy range 30-300 keV', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Electron energy flux (30-300 keV), FOV 2-R (SEP)'} + + meta['SEP_Electron_Energy_Flux_30_300_FOV_2R_data_quality'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_2R_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Standard uncertainty in total electron flux, based on Poisson statistics', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Electron energy flux (30-300 keV), FOV 2-R data quality (SEP)'} + + + + + + + + + + meta['SEP_Look_direction_1F_MSO_x'] = {meta.labels.name: 'SEP_Look_direction_1F_MSO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'SEP look direction 1-F MSO X'} + + meta['SEP_Look_direction_1F_MSO_y'] = {meta.labels.name: 'SEP_Look_direction_1F_MSO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'SEP look direction 1-F MSO Y'} + + meta['SEP_Look_direction_1F_MSO_z'] = {meta.labels.name: 'SEP_Look_direction_1F_MSO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 1-F MSO Z'} + + meta['SEP_Look_direction_1R_MSO_x'] = {meta.labels.name: 'SEP_Look_direction_1R_MSO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 1-R MSO X'} + + meta['SEP_Look_direction_1R_MSO_y'] = {meta.labels.name: 'SEP_Look_direction_1R_MSO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 1-R MSO Y'} + + meta['SEP_Look_direction_1R_MSO_z'] = {meta.labels.name: 'SEP_Look_direction_1R_MSO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 1-R MSO Z'} + + meta['SEP_Look_direction_2F_MSO_x'] = {meta.labels.name: 'SEP_Look_direction_2F_MSO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 2-F MSO X'} + + meta['SEP_Look_direction_2F_MSO_y'] = {meta.labels.name: 'SEP_Look_direction_2F_MSO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 2-F MSO Y'} + + meta['SEP_Look_direction_2F_MSO_z'] = {meta.labels.name: 'SEP_Look_direction_2F_MSO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 2-F MSO Z'} + + meta['SEP_Look_direction_2R_MSO_x'] = {meta.labels.name: 'SEP_Look_direction_2R_MSO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 2-R MSO X'} + + meta['SEP_Look_direction_2R_MSO_y'] = {meta.labels.name: 'SEP_Look_direction_2R_MSO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 2-R MSO Y'} + + meta['SEP_Look_direction_2R_MSO_z'] = {meta.labels.name: 'SEP_Look_direction_2R_MSO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'SEP look direction 2-R MSO Z'} + + meta['MAG_field_MSO_x'] = {meta.labels.name: 'MAG_field_MSO_x', + meta.labels.units: 'nT', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'Magnetic field vector component in the X direction in MSO coordinates (MAG)'} + + meta['MAG_field_MSO_y'] = {meta.labels.name: 'MAG_field_MSO_y', + meta.labels.units: 'nT', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'Magnetic field vector component in the Y direction in MSO coordinates (MAG)'} + + meta['MAG_field_MSO_z'] = {meta.labels.name: 'MAG_field_MSO_z', + meta.labels.units: 'nT', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'Magnetic field vector component in the Z direction in MSO coordinates (MAG)'} + + + meta['MAG_field_MSO_data_quality_x'] = {meta.labels.name: 'MAG_field_MSO_data_quality_x', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Unused column', + meta.labels.desc: '---> Magnetic field X vector component in MSO coordinates data quality (MAG)'} + + meta['MAG_field_MSO_data_quality_y'] = {meta.labels.name: 'MAG_field_MSO_data_quality_y', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'Unused column', + meta.labels.desc: '---> Magnetic field Y vector component in MSO coordinates data quality (MAG)'} + + meta['MAG_field_MSO_data_quality_z'] = {meta.labels.name: 'MAG_field_MSO_data_quality_z', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'Unused column', + meta.labels.desc: '---> Magnetic field Z vector component in MSO coordinates data quality (MAG)'} + + meta['MAG_field_GEO_x'] = {meta.labels.name: 'MAG_field_GEO_x', + meta.labels.units: 'nT', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'Magnetic field vector component in the X direction in GEO coordinates (MAG)'} + + meta['MAG_field_GEO_y'] = {meta.labels.name: 'MAG_field_GEO_y', + meta.labels.units: 'nT', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.desc: 'Magnetic field vector component in the Y direction in GEO coordinates (MAG)'} + + meta['MAG_field_GEO_z'] = {meta.labels.name: 'MAG_field_GEO_z', + meta.labels.units: 'nT', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Magnetic field vector component in the Z direction in GEO coordinates (MAG)'} + + meta['MAG_field_GEO_data_quality_x'] = {meta.labels.name: 'MAG_field_GEO_data_quality_x', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'Unused column', + meta.labels.desc: '---> Magnetic field X vector component in GEO coordinates data quality (MAG)'} + + meta['MAG_field_GEO_data_quality_y'] = {meta.labels.name: 'MAG_field_GEO_data_quality_y', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Unused column', + meta.labels.desc: '---> Magnetic field Y vector component in GEO coordinates data quality (MAG)'} + + meta['MAG_field_GEO_data_quality_z'] = {meta.labels.name: 'MAG_field_GEO_data_quality_z', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Unused column', + meta.labels.desc: '---> Magnetic field Z vector component in GEO coordinates data quality (MAG)'} + + + + meta['MAG_field_RMS_deviation'] = {meta.labels.name: 'MAG_field_RMS_deviation', + meta.labels.units: 'nT', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Deviations from the mean magnetic field magnitude (MAG)'} + + meta['MAG_field_RMS_deviation_data_quality'] = {meta.labels.name: 'MAG_field_RMS_deviation_data_quality', + meta.labels.units: ' ', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Unused column', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Deviations from the mean magnetic field magnitude data quality (MAG)'} + + meta['NGIMS_He_density'] = {meta.labels.name: 'NGIMS_He_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'He density (NGIMS)'} + + meta['NGIMS_He_density_precision'] = {meta.labels.name: 'NGIMS_He_density_precision', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> He density precision (NGIMS)'} + + meta['NGIMS_He_density_data_quality'] = {meta.labels.name: 'NGIMS_He_density_data_quality', + meta.labels.units: '-', + meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', + meta.labels.desc: '---> [DOES NOT PLOT] He density data quality (NGIMS)'} + + meta['NGIMS_O_density'] = {meta.labels.name: 'NGIMS_O_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'O density (NGIMS)'} + + meta['NGIMS_O_density_precision'] = {meta.labels.name: 'NGIMS_O_density_precision', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> O density precision (NGIMS)'} + + meta['NGIMS_O_density_data_quality'] = {meta.labels.name: 'NGIMS_O_density_data_quality', + meta.labels.units: '-', + meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', + meta.labels.desc: '---> [DOES NOT PLOT] O density data quality (NGIMS)'} + + meta['NGIMS_CO_density'] = {meta.labels.name: 'NGIMS_CO_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'CO density (NGIMS)'} + + meta['NGIMS_CO_density_precision'] = {meta.labels.name: 'NGIMS_CO_density_precision', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> CO density precision (NGIMS)'} + + meta['NGIMS_CO_density_data_quality'] = {meta.labels.name: 'NGIMS_CO_density_data_quality', + meta.labels.units: '-', + meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', + meta.labels.desc: '---> [DOES NOT PLOT] CO density data quality (NGIMS)'} + + meta['NGIMS_N2_density'] = {meta.labels.name: 'NGIMS_N2_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'N2 density (NGIMS)'} + + meta['NGIMS_N2_density_precision'] = {meta.labels.name: 'NGIMS_N2_density_precision', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> N2 density precision (NGIMS)'} + + meta['NGIMS_N2_density_data_quality'] = {meta.labels.name: 'NGIMS_N2_density_data_quality', + meta.labels.units: '-', + meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', + meta.labels.desc: '---> [DOES NOT PLOT] N2 density data quality (NGIMS)'} + + meta['NGIMS_NO_density'] = {meta.labels.name: 'NGIMS_NO_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'NO density (NGIMS)'} + + meta['NGIMS_NO_density_precision'] = {meta.labels.name: 'NGIMS_NO_density_precision', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> NO density precision (NGIMS)'} + + meta['NGIMS_NO_density_data_quality'] = {meta.labels.name: 'NGIMS_NO_density_data_quality', + meta.labels.units: '-', + meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', + meta.labels.desc: '---> [DOES NOT PLOT] NO density data quality (NGIMS)'} + + meta['NGIMS_Ar_density'] = {meta.labels.name: 'NGIMS_Ar_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ar density (NGIMS)'} + + meta['NGIMS_Ar_density_precision'] = {meta.labels.name: 'NGIMS_Ar_density_precision', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ar density precision (NGIMS)'} + + meta['NGIMS_Ar_density_data_quality'] = {meta.labels.name: 'NGIMS_Ar_density_data_quality', + meta.labels.units: '-', + meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', + meta.labels.desc: '---> [DOES NOT PLOT] Ar density data quality (NGIMS)'} + + meta['NGIMS_CO2_density'] = {meta.labels.name: 'NGIMS_CO2_density', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'CO2 density (NGIMS)'} + + meta['NGIMS_CO2_density_precision'] = {meta.labels.name: 'NGIMS_CO2_density_precision', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> CO2 density precision (NGIMS)'} + + meta['NGIMS_CO2_density_data_quality'] = {meta.labels.name: 'NGIMS_CO2_density_data_quality', + meta.labels.units: '-', + meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', + meta.labels.desc: '---> [DOES NOT PLOT] CO2 density data quality (NGIMS)'} + + meta['NGIMS_Ion_density_32plus'] = {meta.labels.name: 'NGIMS_Ion_density_32plus', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion density - amu 32+ (NGIMS)'} + + meta['NGIMS_Ion_density_precision_32plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_32plus', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion density precision - amu 32+ (NGIMS)'} + + meta['NGIMS_Ion_density_data_quality_32plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_32plus', + meta.labels.units: '-', + meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', + meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 32+ (NGIMS)'} + + meta['NGIMS_Ion_density_44plus'] = {meta.labels.name: 'NGIMS_Ion_density_44plus', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion density - amu 44+ (NGIMS)'} + + meta['NGIMS_Ion_density_precision_44plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_44plus', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion density precision - amu 44+ (NGIMS)'} + + meta['NGIMS_Ion_density_data_quality_44plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_44plus', + meta.labels.units: '-', + meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', + meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 44+ (NGIMS)'} + + meta['NGIMS_Ion_density_30plus'] = {meta.labels.name: 'NGIMS_Ion_density_30plus', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion density - amu 30+ (NGIMS)'} + + meta['NGIMS_Ion_density_precision_30plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_30plus', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion density precision - amu 30+ (NGIMS)'} + + meta['NGIMS_Ion_density_data_quality_30plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_30plus', + meta.labels.units: '-', + meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', + meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 30+ (NGIMS)'} + + meta['NGIMS_Ion_density_16plus'] = {meta.labels.name: 'NGIMS_Ion_density_16plus', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion density - amu 16+ (NGIMS)'} + + meta['NGIMS_Ion_density_precision_16plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_16plus', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion density precision - amu 16+ (NGIMS)'} + + meta['NGIMS_Ion_density_data_quality_16plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_16plus', + meta.labels.units: '-', + meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', + meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 16+ (NGIMS)'} + + meta['NGIMS_Ion_density_28plus'] = {meta.labels.name: 'NGIMS_Ion_density_28plus', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion density - amu 28+ (NGIMS)'} + + meta['NGIMS_Ion_density_precision_28plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_28plus', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion density precision - amu 28+ (NGIMS)'} + + meta['NGIMS_Ion_density_data_quality_28plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_28plus', + meta.labels.units: '-', + meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', + meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 28+ (NGIMS)'} + + meta['NGIMS_Ion_density_12plus'] = {meta.labels.name: 'NGIMS_Ion_density_12plus', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion density - amu 12+ (NGIMS)'} + + meta['NGIMS_Ion_density_precision_12plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_12plus', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion density precision - amu 12+ (NGIMS)'} + + meta['NGIMS_Ion_density_data_quality_12plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_12plus', + meta.labels.units: '-', + meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', + meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 12+ (NGIMS)'} + + meta['NGIMS_Ion_density_17plus'] = {meta.labels.name: 'NGIMS_Ion_density_17plus', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion density - amu 17+ (NGIMS)'} + + meta['NGIMS_Ion_density_precision_17plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_17plus', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion density precision - amu 17+ (NGIMS)'} + + meta['NGIMS_Ion_density_data_quality_17plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_17plus', + meta.labels.units: '-', + meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', + meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 17+ (NGIMS)'} + + meta['NGIMS_Ion_density_14plus'] = {meta.labels.name: 'NGIMS_Ion_density_14plus', + meta.labels.units: 'cm^-3', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Abundance or upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Ion density - amu 14+ (NGIMS)'} + + meta['NGIMS_Ion_density_precision_14plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_14plus', + meta.labels.units: '%', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: '---> Ion density precision - amu 14+ (NGIMS)'} + + meta['NGIMS_Ion_density_data_quality_14plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_14plus', + meta.labels.units: '-', + meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', + meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 14+ (NGIMS)'} + + + + + + + meta['SPICE_spacecraft_GEO_x'] = {meta.labels.name: 'SPICE_spacecraft_GEO_x', + meta.labels.units: 'km', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'X-component of spacecraft position in Mars planetocentric (geographic) GEO coordinates'} + + meta['SPICE_spacecraft_GEO_y'] = {meta.labels.name: 'SPICE_spacecraft_GEO_y', + meta.labels.units: 'km', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Y-component of spacecraft position in Mars planetocentric (geographic) GEO coordinates'} + + meta['SPICE_spacecraft_GEO_z'] = {meta.labels.name: 'SPICE_spacecraft_GEO_z', + meta.labels.units: 'km', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Z-component of spacecraft position in Mars planetocentric (geographic) GEO coordinates'} + + meta['SPICE_spacecraft_MSO_x'] = {meta.labels.name: 'SPICE_spacecraft_MSO_x', + meta.labels.units: 'km', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'X-component of spacecraft position in MSO coordinates'} + + meta['SPICE_spacecraft_MSO_y'] = {meta.labels.name: 'SPICE_spacecraft_MSO_y', + meta.labels.units: 'km', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Y-component of spacecraft position in MSO coordinates'} + + meta['SPICE_spacecraft_MSO_z'] = {meta.labels.name: 'SPICE_spacecraft_MSO_z', + meta.labels.units: 'km', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Z-component of spacecraft position in MSO coordinates'} + + + + meta['SPICE_spacecraft_longitude_GEO'] = {meta.labels.name: 'SPICE_spacecraft_longitude_GEO', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Longitudinal component of MAVEN\'s location with respect to Mars', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Spacecraft longitude GEO (SPICE)'} + + meta['SPICE_spacecraft_latitude_GEO'] = {meta.labels.name: 'SPICE_spacecraft_latitude_GEO', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Latitudinal (areodetic) component of MAVEN\'s location with respect to IAU Mars ellipsoid, equatorial radius of 3396.2 km, polar radius of', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Spacecraft latitude GEO (SPICE)'} + + meta['SPICE_spacecraft_sza'] = {meta.labels.name: 'SPICE_spacecraft_sza', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Angle measured from MAVEN to the geometric center of the Sun\'s disc, as described using a horizontal coordinate system', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Spacecraft solar zenith angle (SPICE)'} + + meta['SPICE_spacecraft_local_time'] = {meta.labels.name: 'SPICE_spacecraft_local_time', + meta.labels.units: 'hours', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Angle measured from MAVEN to the geometric center of the Sun\'s disc, as described using a horizontal coordinate system', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Spacecraft local time (SPICE)'} + + meta['SPICE_spacecraft_altitude'] = {meta.labels.name: 'SPICE_spacecraft_altitude', + meta.labels.units: 'km', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Altitude (areodetic) with respect to IAU Mars ellipsoid, equatorial radius of 3396.2 km, ', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Spacecraft altitude w.r.t. aeroid (SPICE)'} + + + meta['SPICE_spacecraft_attitude_GEO_x'] = {meta.labels.name: 'SPICE_spacecraft_attitude_GEO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'X-component of spacecraft attitude in GEO coordinates'} + + meta['SPICE_spacecraft_attitude_GEO_y'] = {meta.labels.name: 'SPICE_spacecraft_attitude_GEO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Y-component of spacecraft attitude in GEO coordinates'} + + meta['SPICE_spacecraft_attitude_GEO_z'] = {meta.labels.name: 'SPICE_spacecraft_attitude_GEO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Z-component of spacecraft attitude in GEO coordinates'} + + meta['SPICE_spacecraft_attitude_MSO_x'] = {meta.labels.name: 'SPICE_spacecraft_attitude_MSO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'X-component of spacecraft attitude in MSO coordinates'} + + meta['SPICE_spacecraft_attitude_MSO_y'] = {meta.labels.name: 'SPICE_spacecraft_attitude_MSO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Y-component of spacecraft attitude in MSO coordinates'} + + meta['SPICE_spacecraft_attitude_MSO_z'] = {meta.labels.name: 'SPICE_spacecraft_attitude_MSO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Z-component of spacecraft attitude in MSO coordinates'} + + + meta['SPICE_app_attitude_GEO_x'] = {meta.labels.name: 'SPICE_app_attitude_GEO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'X-component of pointing direction of Articulated Payload Platform (z-axis of MAVEN_APP_BP frame) in GEO coordinates', + meta.labels.desc: 'X-component of articulated payload platform (app) attitude in GEO coordinates'} + + meta['SPICE_app_attitude_GEO_y'] = {meta.labels.name: 'SPICE_app_attitude_GEO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'Y-component of pointing direction of Articulated Payload Platform (z-axis of MAVEN_APP_BP frame) in GEO coordinates', + meta.labels.desc: 'Y-component of articulated payload platform (app) attitude in GEO coordinates'} + + meta['SPICE_app_attitude_GEO_z'] = {meta.labels.name: 'SPICE_app_attitude_GEO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.notes: 'Z-component of pointing direction of Articulated Payload Platform (z-axis of MAVEN_APP_BP frame) in GEO coordinates', + meta.labels.desc: 'Z-component of articulated payload platform (app) attitude in GEO coordinates'} + + + meta['SPICE_app_attitude_MSO_x'] = {meta.labels.name: 'SPICE_app_attitude_MSO_x', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'X-component of articulated payload platform (app) attitude in MSO coordinates'} + + meta['SPICE_app_attitude_MSO_y'] = {meta.labels.name: 'SPICE_app_attitude_MSO_y', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Y-component of articulated payload platform (app) attitude in MSO coordinates'} + + meta['SPICE_app_attitude_MSO_z'] = {meta.labels.name: 'SPICE_app_attitude_MSO_z', + meta.labels.units: 'unit vector', + meta.labels.min_val: -999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'same as IAU_MARS in SPICE', + meta.labels.desc: 'Z-component of articulated payload platform (app) attitude in MSO coordinates'} + + meta['SPICE_Orbit_Number'] = {meta.labels.name: 'SPICE_Orbit_Number', + meta.labels.units: ' ', + meta.labels.min_val: 1.0, + meta.labels.max_val: 10000000.0, + meta.labels.notes: 'Orbit number increments each time MAVEN reaches geometric periapsis', + meta.labels.fill_val: -2147483648.0, + meta.labels.desc: 'Orbit number (SPICE)'} + + meta['Inbound_Outbound_Flag'] = {meta.labels.name: 'Inbound_Outbound_Flag', + meta.labels.units: ' ', + meta.labels.notes: 'Inbound (\'I\') is from geometric apoapsis to next geometric periapsis in time, outbound (\'O\') is the reverse', + meta.labels.desc: '---> [DOES NOT PLOT] Inbound/Outbound Flag (SPICE)'} + + meta['SPICE_Mars_season'] = {meta.labels.name: 'SPICE_Mars_season', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Martian solar longitude. Ls = 0 (northern spring equinox), Ls = 90 (northern summer solstice), etc.', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Mars Season (Ls) (SPICE)'} + + meta['SPICE_Mars_Sun_distance'] = {meta.labels.name: 'SPICE_Mars_Sun_distance', + meta.labels.units: 'AU', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Mars-Sun distance (SPICE)'} + + meta['SPICE_Subsolar_Point_longitude_GEO'] = {meta.labels.name: 'SPICE_Subsolar_Point_longitude_GEO', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'GEO longitude of the sub-solar point', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Subsolar Point longitude GEO (SPICE)'} + + meta['SPICE_Subsolar_Point_latitude_GEO'] = {meta.labels.name: 'SPICE_Subsolar_Point_latitude_GEO', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'GEO latitude of the sub-solar point', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Subsolar Point latitude GEO (SPICE)'} + + meta['SPICE_Sub_Mars_Point_longitude'] = {meta.labels.name: 'SPICE_Sub_Mars_Point_longitude', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Solar longitude of the center of the Sun as seen from Mars', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Sub-Mars Point on the Sun, Longitude (SPICE)'} + + meta['SPICE_Sub_Mars_Point_latitude'] = {meta.labels.name: 'SPICE_Sub_Mars_Point_latitude', + meta.labels.units: 'deg', + meta.labels.min_val: -999999995904.0, + meta.labels.max_val: 999999995904.0, + meta.labels.notes: 'Solar latitude of the center of the Sun as seen from Mars', + meta.labels.fill_val: -9.999999848243207e+30, + meta.labels.desc: 'Sub-Mars Point on the Sun, Latitude (SPICE)'} + + meta['Rotation_matrix_IAU_MARS_MAVEN_MSO'] = {meta.labels.name: 'Rotation_matrix_IAU_MARS_MAVEN_MSO', + meta.labels.units: ' ', + meta.labels.min_val: -1000000000000.0, + meta.labels.max_val: 1000000000000.0, + meta.labels.notes: 'From IAU_MARS frame to MAVEN_MSO frame', + meta.labels.fill_val: -1e+31, + meta.labels.desc: 'Rotation matrix (IAU_MARS -> MAVEN_MSO) (SPICE)'} + + meta['Rotation_matrix_SPACECRAFT_MAVEN_MSO'] = {meta.labels.name: 'Rotation_matrix_SPACECRAFT_MAVEN_MSO', + meta.labels.units: ' ', + meta.labels.min_val: -1000000000000.0, + meta.labels.max_val: 1000000000000.0, + meta.labels.notes: 'From MAVEN_SPACECRAFT frame to MAVEN_MSO frame', + meta.labels.fill_val: -1e+31, + meta.labels.desc: '---> Rotation matrix (MAVEN_SPACECRAFT -> MAVEN_MSO) (SPICE)'} + + + return meta diff --git a/pysatNASA/instruments/mvn_kp.py b/pysatNASA/instruments/mvn_kp.py new file mode 100644 index 00000000..c8a63e9a --- /dev/null +++ b/pysatNASA/instruments/mvn_kp.py @@ -0,0 +1,402 @@ +# -*- coding: utf-8 -*- +"""Module for the MAVEN kp instrument. +Created by: Teresa Esman, NPP at GSFC +Last editted: Jun 2, 2023 + May 12, 2023 + +Supports the Key parameter (kp) data from multiple instruments onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. + +Accesses local data in CDF format. +Downlaods from CDAWeb. + +Properties +---------- +platform + 'mvn' +name + 'kp' +tag + None supported + +Warnings +-------- + +- Only supports level-2 sunstate 1 second data. + + +Examples +-------- +:: + + import pysat + from pysat.utils import registry + registry.register_by_module(pysatNASA.instruments) + + + kp = pysat.Instrument(platform='MAVEN', name='kp') + kp.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) + kp.load(2020, 1, use_header = True) +""" + +import datetime as dt +import functools +import numpy as np +import cdflib +import pysat +from pysat.instruments.methods import general as mm_gen +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import mvn as mm_mvn + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'mvn' +name = 'kp' +tags = {'': ''} +inst_ids = {'': ['']} + +pandas_format = False + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {'': {'': dt.datetime(2020, 1, 1)}} +_test_load_opt = {'': {'': {'keep_original_names': True}}} + +# ---------------------------------------------------------------------------- +# Instrument methods + + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) + + +def preprocess(self, keep_original_names=False): + """Adjust epoch timestamps to datetimes and remove variable preambles. + + Parameters + ---------- + keep_original_names : bool + if True then the names as given in the netCDF MAVEN file + will be used as is. If False, a preamble is removed. (default=False) + + """ + + if not keep_original_names: + mm_gen.remove_leading_text(self, target='MAVEN_') + return + + +def clean(self): + """Clean MAVEN kp data to the specified level. + + Note + ---- + Supports 'clean', 'dusty', 'dirty', 'none'. Method is + not called by pysat if clean_level is None or 'none'. + + + """ + return + + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the MAVEN and pysat methods + +# Set the list_files routine +fname = ''.join(('mvn_insitu_kp-4sec_{year:04d}{month:02d}{day:02d}_', + 'v{version:02d}_r{revision:02d}.cdf')) +supported_tags = {'': {'': fname}} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the download routine +basic_tag = {'remote_dir': '/pub/data/maven/insitu/kp-4sec/cdfs/{year:04d}/{month:02d}', + 'fname': fname} +download_tags = {'': {'': basic_tag}} +download = functools.partial(cdw.download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.list_remote_files, + supported_tags=download_tags) + + +def filter_metadata(meta_dict): + """Filter kp metadata to remove warnings during loading. + + Parameters + ---------- + meta_dict : dict + Dictionary of metadata from file + + Returns + ------- + meta_dict : dict + Filtered kp metadata + + """ + vars = ['LPW_Electron_density', + 'LPW_Electron_density_min', + 'LPW_Electron_density_max', + 'LPW_Electron_temperature', + 'LPW_Electron_temperature_min', + 'LPW_Electron_temperature_max', + 'LPW_Spacecraft_potential', + 'LPW_Spacecraft_potential_min', + 'LPW_Spacecraft_potential_max', + 'LPW_E_field_wave_power_2_100', + 'LPW_E_field_wave_power_2_100_data_quality', + 'LPW_E_field_wave_power_100_800', + 'LPW_E_field_wave_power_100_800_data_quality', + 'LPW_E_field_wave_power_800_1000', + 'LPW_E_field_wave_power_800_1000_data_quality', + 'LPW_EUV_irradiance_pt1_7', + 'LPW_EUV_irradiance_pt1_7_data_quality', + 'LPW_EUV_irradiance_17_22', + 'LPW_EUV_irradiance_17_22_data_quality', + 'LPW_EUV_irradiance_lyman_alpha', + 'LPW_EUV_irradiance_lyman_alpha_data_quality', + 'SWEA_Electron_density', + 'SWEA_Electron_density_quality', + 'SWEA_Electron_temperature', + 'SWEA_Electron_temperature_quality', + 'SWEA_Electron_parallel_flux_5_100', + 'SWEA_Electron_parallel_flux_5_100_data_quality', + 'SWEA_Electron_parallel_flux_100_500', + 'SWEA_Electron_parallel_flux_100_500_data_quality', + 'SWEA_Electron_parallel_flux_500_1000', + 'SWEA_Electron_parallel_flux_500_1000_data_quality', + 'SWEA_Electron_anti_parallel_flux_5_100', + 'SWEA_Electron_anti_parallel_flux_5_100_data_quality', + 'SWEA_Electron_anti_parallel_flux_100_500', + 'SWEA_Electron_anti_parallel_flux_100_500_data_quality', + 'SWEA_Electron_anti_parallel_flux_500_1000', + 'SWEA_Electron_anti_parallel_flux_500_1000_data_quality', + 'SWEA_Electron_spectrum_shape', + 'SWEA_Electron_spectrum_shape_data_quality', + 'SWIA_Hplus_density', + 'SWIA_Hplus_density_data_quality', + 'SWIA_Hplus_flow_velocity_MSO', + 'SWIA_Hplus_flow_velocity_MSO_data_quality', + 'SWIA_Hplus_temperature', + 'SWIA_Hplus_temperature_data_quality', + 'SWIA_dynamic_pressure', + 'SWIA_dynamic_pressure_data_quality', + 'STATIC_Quality', + 'STATIC_Hplus_density', + 'STATIC_Hplus_density_data_quality', + 'STATIC_Oplus_density', + 'STATIC_Oplus_density_data_quality', + 'STATIC_O2plus_density', + 'STATIC_O2plus_density_data_quality', + 'STATIC_Hplus_temperature', + 'STATIC_Hplus_temperature_data_quality', + 'STATIC_Oplus_temperature', + 'STATIC_Oplus_temperature_data_quality', + 'STATIC_O2plus_temperature', + 'STATIC_O2plus_temperature_data_quality', + 'STATIC_O2plus_flow_velocity_MAVEN_APP', + 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality', + 'STATIC_O2plus_flow_velocity_MSO', + 'STATIC_O2plus_flow_velocity_MSO_data_quality', + 'STATIC_Hplus_omni_directional_flux', + 'STATIC_Hplus_characteristic_energy', + 'STATIC_Hplus_characteristic_energy_DQ', + 'STATIC_HEplus_omni_directional_flux', + 'STATIC_HEplus_characteristic_energy', + 'STATIC_HEplus_characteristic_energy_DQ', + 'STATIC_Oplus_omni_directional_flux', + 'STATIC_Oplus_characteristic_energy', + 'STATIC_Oplus_characteristic_energy_DQ', + 'STATIC_O2plus_omni_directional_flux', + 'STATIC_O2plus_characteristic_energy', + 'STATIC_O2plus_characteristic_energy_DQ', + 'STATIC_Hplus_characteristic_direction_MSO', + 'STATIC_Hplus_characteristic_angular_width', + 'STATIC_Hplus_characteristic_angular_width_DQ', + 'STATIC_dominant_pickup_ion_characteristic_direction_MSO', + 'STATIC_dominant_pickup_ion_characteristic_angular_width', + 'STATIC_dominant_pickup_ion_characteristic_angular_width_DQ', + 'SEP_Ion_Energy_Flux_30_1000_FOV_1F', + 'SEP_Ion_Energy_Flux_30_1000_FOV_1F_data_quality', + 'SEP_Ion_Energy_Flux_30_1000_FOV_1R', + 'SEP_Ion_Energy_Flux_30_1000_FOV_1R_data_quality', + 'SEP_Ion_Energy_Flux_30_1000_FOV_2F', + 'SEP_Ion_Energy_Flux_30_1000_FOV_2F_data_quality', + 'SEP_Ion_Energy_Flux_30_1000_FOV_2R', + 'SEP_Ion_Energy_Flux_30_1000_FOV_2R_data_quality', + 'SEP_Electron_Energy_Flux_30_300_FOV_1F', + 'SEP_Electron_Energy_Flux_30_300_FOV_1F_data_quality', + 'SEP_Electron_Energy_Flux_30_300_FOV_1R', + 'SEP_Electron_Energy_Flux_30_300_FOV_1R_data_quality', + 'SEP_Electron_Energy_Flux_30_300_FOV_2F', + 'SEP_Electron_Energy_Flux_30_300_FOV_2F_data_quality', + 'SEP_Electron_Energy_Flux_30_300_FOV_2R', + 'SEP_Electron_Energy_Flux_30_300_FOV_2R_data_quality', + 'SEP_Look_direction_1F_MSO', + 'SEP_Look_direction_1R_MSO', + 'SEP_Look_direction_2F_MSO', + 'SEP_Look_direction_2R_MSO', + 'MAG_field_MSO', + 'MAG_field_MSO_data_quality', + 'MAG_field_GEO', + 'MAG_field_GEO_data_quality', + 'MAG_field_RMS_deviation', + 'MAG_field_RMS_deviation_data_quality', + 'NGIMS_He_density', + 'NGIMS_He_density_precision', + 'NGIMS_He_density_data_quality', + 'NGIMS_O_density', + 'NGIMS_O_density_precision', + 'NGIMS_O_density_data_quality', + 'NGIMS_CO_density', + 'NGIMS_CO_density_precision', + 'NGIMS_CO_density_data_quality', + 'NGIMS_N2_density', + 'NGIMS_N2_density_precision', + 'NGIMS_N2_density_data_quality', + 'NGIMS_NO_density', + 'NGIMS_NO_density_precision', + 'NGIMS_NO_density_data_quality', + 'NGIMS_Ar_density', + 'NGIMS_Ar_density_precision', + 'NGIMS_Ar_density_data_quality', + 'NGIMS_CO2_density', + 'NGIMS_CO2_density_precision', + 'NGIMS_CO2_density_data_quality', + 'NGIMS_Ion_density_32plus', + 'NGIMS_Ion_density_precision_32plus', + 'NGIMS_Ion_density_data_quality_32plus', + 'NGIMS_Ion_density_44plus', + 'NGIMS_Ion_density_precision_44plus', + 'NGIMS_Ion_density_data_quality_44plus', + 'NGIMS_Ion_density_30plus', + 'NGIMS_Ion_density_precision_30plus', + 'NGIMS_Ion_density_data_quality_30plus', + 'NGIMS_Ion_density_16plus', + 'NGIMS_Ion_density_precision_16plus', + 'NGIMS_Ion_density_data_quality_16plus', + 'NGIMS_Ion_density_28plus', + 'NGIMS_Ion_density_precision_28plus', + 'NGIMS_Ion_density_data_quality_28plus', + 'NGIMS_Ion_density_12plus', + 'NGIMS_Ion_density_precision_12plus', + 'NGIMS_Ion_density_data_quality_12plus', + 'NGIMS_Ion_density_17plus', + 'NGIMS_Ion_density_precision_17plus', + 'NGIMS_Ion_density_data_quality_17plus', + 'NGIMS_Ion_density_14plus', + 'NGIMS_Ion_density_precision_14plus', + 'NGIMS_Ion_density_data_quality_14plus', + 'SPICE_spacecraft_GEO', + 'SPICE_spacecraft_MSO', + 'SPICE_spacecraft_longitude_GEO', + 'SPICE_spacecraft_latitude_GEO', + 'SPICE_spacecraft_sza', + 'SPICE_spacecraft_local_time', + 'SPICE_spacecraft_altitude', + 'SPICE_spacecraft_attitude_GEO', + 'SPICE_spacecraft_attitude_MSO', + 'SPICE_app_attitude_GEO', + 'SPICE_app_attitude_MSO', + 'SPICE_Orbit_Number', + 'Inbound_Outbound_Flag', + 'SPICE_Mars_season', + 'SPICE_Mars_Sun_distance', + 'SPICE_Subsolar_Point_longitude_GEO', + 'SPICE_Subsolar_Point_latitude_GEO', + 'SPICE_Sub_Mars_Point_longitude', + 'SPICE_Sub_Mars_Point_latitude', + 'Rotation_matrix_IAU_MARS_MAVEN_MSO', + 'Rotation_matrix_SPACECRAFT_MAVEN_MSO'] + + for var in vars: + if var in meta_dict: + meta_dict[var]['FillVal'] = np.nan + + # Deal with string arrays + for var in meta_dict.keys(): + if 'Var_Notes' in meta_dict[var]: + meta_dict[var]['Var_Notes'] = ' '.join(pysat.utils.listify( + meta_dict[var]['Var_Notes'])) + + return meta_dict + +def init(self): + """Initialize the Instrument object with instrument specific values. + Runs once upon instantiation. + Parameters + ----------- + self : pysat.Instrument + Instrument class object + """ + + pysat.logger.info(mm_mvn.ackn_str) + self.acknowledgements = mm_mvn.ackn_str + self.references = mm_mvn.references + + return + +def load(fnames, tag='', inst_id='', keep_original_names=False): + """Load MAVEN kp data into `xarray.Dataset` object and `pysat.Meta` objects. + + This routine is called as needed by pysat. It is not intended + for direct user interaction. + + Parameters + ---------- + fnames : array-like + Iterable of filename strings, full path, to data files to be loaded. + This input is nominally provided by pysat itself. + tag : str + Tag name used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default='') + inst_id : str + Instrument ID used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default='') + keep_original_names : bool + If True then the names as given in the netCDF MAVEN file + will be used as is. If False, a preamble is removed. (default=False) + + Returns + ------- + data : xr.Dataset + An xarray Dataset with data prepared for the pysat.Instrument + meta : pysat.Meta + Metadata formatted for a pysat.Instrument object. + + Note + ---- + Any additional keyword arguments passed to pysat.Instrument + upon instantiation are passed along to this routine. + + The 'Altitude' dimension is renamed as 'Alt' to avoid confusion with the + 'Altitude' variable when performing xarray operations + + Examples + -------- + :: + + inst = pysat.Instrument('mvn', 'kp') + inst.load(2020, 1) + + """ + + + data = cdflib.cdf_to_xarray(fnames[0]) + + meta = [] + + xdata = mm_mvn.scrub_mvn_kp(data) + #this switches type to xarray + + # Add meta here + header_data = mm_mvn.generate_header_kp(data) + meta = mm_mvn.generate_metadata_kp(header_data,data) + + data = xdata + + return data,meta diff --git a/pysatNASA/instruments/mvn_mag.py b/pysatNASA/instruments/mvn_mag.py new file mode 100644 index 00000000..14635c4f --- /dev/null +++ b/pysatNASA/instruments/mvn_mag.py @@ -0,0 +1,230 @@ +# -*- coding: utf-8 -*- +"""Module for the MAVEN mag instrument. +Created by: Teresa Esman, NPP at GSFC +Last editted: Jul 13, 2023 + May 24, 2023 + May 12, 2023 + +Supports the Magnetometer (MAG) onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. +Accesses local data in CDF format. +Downloads from CDAWeb. + +Properties +---------- +platform + 'mvn' +name + 'mag' +tag + None supported + +Warnings +-------- + +- Only supports level-2 sunstate 1 second data. + + +Examples +-------- +:: + + import pysat + from pysat.utils import registry + registry.register_by_module(pysatNASA.instruments) + + + mag = pysat.Instrument(platform='MAVEN', name='mag') + mag.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) + mag.load(2020, 1, use_header = True) +""" + +import datetime as dt +import functools +import numpy as np +import cdflib +import pysat +from pysat.instruments.methods import general as mm_gen +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import mvn as mm_mvn + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'mvn' +name = 'mag' +tags = {'': 'l2'} +inst_ids = {'': ['']} + +pandas_format = False + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {'': {'': dt.datetime(2020, 1, 1)}} +_test_load_opt = {'': {'': {'keep_original_names': True}}} + +# ---------------------------------------------------------------------------- +# Instrument methods + + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) + + +def preprocess(self, keep_original_names=False): + """Adjust epoch timestamps to datetimes and remove variable preambles. + + Parameters + ---------- + keep_original_names : bool + if True then the names as given in the netCDF MAVEN file + will be used as is. If False, a preamble is removed. (default=False) + + """ + + if not keep_original_names: + mm_gen.remove_leading_text(self, target='MAVEN_') + return + + +def clean(self): + """Clean MAVEN mag data to the specified level. + + Note + ---- + Supports 'clean', 'dusty', 'dirty', 'none'. Method is + not called by pysat if clean_level is None or 'none'. + + + """ + + return + + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the CDAWeb and pysat methods + +# Set the list_files routine +fname = ''.join(('mvn_mag_l2-sunstate-1sec_{year:04d}{month:02d}{day:02d}_', + 'v{version:02d}_r{revision:02d}.cdf')) +supported_tags = {'': {'': fname}} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the download routine +basic_tag = {'remote_dir': '/pub/data/maven/mag/l2/sunstate-1sec/cdfs/{year:04d}/{month:02d}', + 'fname': fname} +download_tags = {'': {'': basic_tag}} +download = functools.partial(cdw.download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.list_remote_files, + supported_tags=download_tags) + + +def filter_metadata(meta_dict): + """Filter mag metadata to remove warnings during loading. + + Parameters + ---------- + meta_dict : dict + Dictionary of metadata from file + + Returns + ------- + meta_dict : dict + Filtered mag metadata + + """ + vars = ['time', 'DDAY', 'OB_B_x', 'OB_B_y','OB_B_z', 'OB_B_range', + 'POSN_x','POSN_y','POSN_z', 'OB_BDPL_x','OB_BDPL_y','OB_BDPL_z', + 'OB_BDPL_range'] + + for var in vars: + if var in meta_dict: + meta_dict[var]['FillVal'] = np.nan + + # Deal with string arrays + for var in meta_dict.keys(): + if 'Var_Notes' in meta_dict[var]: + meta_dict[var]['Var_Notes'] = ' '.join(pysat.utils.listify( + meta_dict[var]['Var_Notes'])) + + return meta_dict + +def init(self): + """Initialize the Instrument object with instrument specific values. + Runs once upon instantiation. + Parameters + ----------- + self : pysat.Instrument + Instrument class object + """ + + pysat.logger.info(mm_mvn.ackn_str) + self.acknowledgements = mm_mvn.ackn_str + self.references = mm_mvn.references + + return + +def load(fnames, tag='', inst_id='', keep_original_names=False): + """Load MAVEN mag data into `xarray.Dataset` object and `pysat.Meta` objects. + + This routine is called as needed by pysat. It is not intended + for direct user interaction. + + Parameters + ---------- + fnames : array-like + Iterable of filename strings, full path, to data files to be loaded. + This input is nominally provided by pysat itself. + tag : str + Tag name used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default='') + inst_id : str + Instrument ID used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default='') + keep_original_names : bool + If True then the names as given in the netCDF MAVEN file + will be used as is. If False, a preamble is removed. (default=False) + + Returns + ------- + data : xr.Dataset + An xarray Dataset with data prepared for the pysat.Instrument + meta : pysat.Meta + Metadata formatted for a pysat.Instrument object. + + Note + ---- + Any additional keyword arguments passed to pysat.Instrument + upon instantiation are passed along to this routine. + + + Examples + -------- + :: + + inst = pysat.Instrument('mvn', 'mag') + inst.load(2020, 1) + + """ + + + data = cdflib.cdf_to_xarray(fnames[0]) + + meta = [] + + xdata = mm_mvn.scrub_mvn_mag(data) + # mm_mvn.scrub_mvn_mag switches the type to xarray + + # Add meta here + header_data = mm_mvn.generate_header(data) + meta = mm_mvn.generate_metadata(header_data,data) + + data = xdata + + return data,meta From 7e194134fec30c4b931b4c6c92a76f7a678e8982 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Thu, 13 Jul 2023 14:54:19 -0400 Subject: [PATCH 02/82] Merge branch 'develop' into maven_mgs_jk --- .github/ISSUE_TEMPLATE/bug_report.md | 34 +- .github/ISSUE_TEMPLATE/feature_request.md | 24 +- .github/ISSUE_TEMPLATE/question.md | 19 + .github/pull_request_template.md | 13 +- .github/workflows/docs.yml | 9 +- .github/workflows/main.yml | 42 +- .github/workflows/pip_rc_install.yml | 40 ++ .github/workflows/pysat_rc.yml | 14 +- .gitignore | 3 + .readthedocs.yml | 22 + .zenodo.json | 5 + CHANGELOG.md | 63 +++ CONTRIBUTING.md | 55 ++- LICENSE | 2 +- README.md | 56 ++- docs/conf.py | 18 +- docs/figures/{logo.png => pysatnasa_logo.png} | Bin docs/installation.rst | 28 +- docs/overview.rst | 2 +- docs/supported_constellations.rst | 2 + docs/supported_instruments.rst | 72 ++++ pyproject.toml | 88 ++++ pysatNASA/__init__.py | 14 +- pysatNASA/constellations/de2.py | 23 +- pysatNASA/constellations/icon.py | 22 +- pysatNASA/instruments/__init__.py | 12 +- pysatNASA/instruments/ace_epam_l2.py | 101 +++++ pysatNASA/instruments/ace_mag_l2.py | 127 ++++++ pysatNASA/instruments/ace_sis_l2.py | 96 +++++ pysatNASA/instruments/ace_swepam_l2.py | 100 +++++ pysatNASA/instruments/cnofs_ivm.py | 45 +- pysatNASA/instruments/cnofs_plp.py | 40 +- pysatNASA/instruments/cnofs_vefi.py | 22 +- pysatNASA/instruments/de2_fpi.py | 107 +++++ pysatNASA/instruments/de2_lang.py | 25 +- pysatNASA/instruments/de2_nacs.py | 27 +- pysatNASA/instruments/de2_rpa.py | 52 ++- pysatNASA/instruments/de2_vefi.py | 105 +++++ pysatNASA/instruments/de2_wats.py | 27 +- pysatNASA/instruments/dmsp_ssusi.py | 124 ++++++ pysatNASA/instruments/formosat1_ivm.py | 15 +- pysatNASA/instruments/icon_euv.py | 18 +- pysatNASA/instruments/icon_fuv.py | 21 +- pysatNASA/instruments/icon_ivm.py | 16 +- pysatNASA/instruments/icon_mighti.py | 47 +- pysatNASA/instruments/igs_gps.py | 134 ++++++ pysatNASA/instruments/iss_fpmu.py | 32 +- pysatNASA/instruments/jpl_gps.py | 47 +- pysatNASA/instruments/methods/__init__.py | 5 + pysatNASA/instruments/methods/_cdf.py | 55 ++- pysatNASA/instruments/methods/ace.py | 87 ++++ pysatNASA/instruments/methods/cdaweb.py | 408 ++++++++++++++---- pysatNASA/instruments/methods/de2.py | 17 +- pysatNASA/instruments/methods/dmsp.py | 16 + pysatNASA/instruments/methods/general.py | 47 +- pysatNASA/instruments/methods/gold.py | 24 -- pysatNASA/instruments/methods/gps.py | 8 +- pysatNASA/instruments/methods/igs.py | 45 ++ pysatNASA/instruments/methods/jhuapl.py | 335 ++++++++++++++ pysatNASA/instruments/methods/omni.py | 19 +- pysatNASA/instruments/methods/ses14.py | 24 ++ pysatNASA/instruments/methods/timed.py | 33 ++ pysatNASA/instruments/omni_hro.py | 62 +-- pysatNASA/instruments/ses14_gold.py | 193 +++++++-- pysatNASA/instruments/timed_guvi.py | 199 +++++++++ pysatNASA/instruments/timed_saber.py | 42 +- pysatNASA/instruments/timed_see.py | 53 +-- pysatNASA/tests/test_instruments.py | 94 +++- pysatNASA/tests/test_methods_cdaweb.py | 35 +- pysatNASA/tests/test_methods_platform.py | 129 ++++++ pysatNASA/version.txt | 1 - requirements.txt | 11 +- setup.cfg | 62 +-- setup.py | 17 - 74 files changed, 3269 insertions(+), 762 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/question.md create mode 100644 .github/workflows/pip_rc_install.yml create mode 100644 .readthedocs.yml rename docs/figures/{logo.png => pysatnasa_logo.png} (100%) create mode 100644 pyproject.toml create mode 100644 pysatNASA/instruments/ace_epam_l2.py create mode 100644 pysatNASA/instruments/ace_mag_l2.py create mode 100644 pysatNASA/instruments/ace_sis_l2.py create mode 100644 pysatNASA/instruments/ace_swepam_l2.py create mode 100644 pysatNASA/instruments/de2_fpi.py create mode 100644 pysatNASA/instruments/de2_vefi.py create mode 100644 pysatNASA/instruments/dmsp_ssusi.py create mode 100644 pysatNASA/instruments/igs_gps.py create mode 100644 pysatNASA/instruments/methods/ace.py create mode 100644 pysatNASA/instruments/methods/dmsp.py delete mode 100644 pysatNASA/instruments/methods/gold.py create mode 100644 pysatNASA/instruments/methods/igs.py create mode 100644 pysatNASA/instruments/methods/jhuapl.py create mode 100644 pysatNASA/instruments/methods/ses14.py create mode 100644 pysatNASA/instruments/methods/timed.py create mode 100644 pysatNASA/instruments/timed_guvi.py create mode 100644 pysatNASA/tests/test_methods_platform.py delete mode 100644 pysatNASA/version.txt delete mode 100644 setup.py diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 23d236d6..57640182 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,35 +1,29 @@ --- name: Bug report -about: Create a report to help us improve +about: Create a report to report a problem that needs to be fixed +labels: bug +title: "BUG: " --- -**Describe the bug** -A clear and concise description of what the bug is. +# Description +A clear and concise description of what the bug is, including a description +of what you expected the outcome to be. -**To Reproduce** +# To Reproduce this bug: Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error -or +Consider including images or test files to help others reproduce the bug and +solve the problem. -``` -# test code here -``` - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Version [e.g. Python 3.7] +## Test configuration + - OS: [e.g. Hal] + - Version [e.g. Python 3.47] - Other details about your setup that could be relevant -**Additional context** -Add any other context about the problem here. +# Additional context +Add any other context about the problem here, including expected behaviour. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 066b2d92..d02da2ef 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,17 +1,27 @@ --- name: Feature request about: Suggest an idea for this project +title: "ENH: " +labels: enhancement --- -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] +# Description +A clear and concise description of the new feature or behaviour you would like. -**Describe the solution you'd like** +## Potential impact + +- Is the feature related to an existing problem? +- How critical is this feature to your workflow? +- How wide of an impact to you anticipate this enhancement having? +- Would this break any existing functionality? + +## Potential solution(s) A clear and concise description of what you want to happen. -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. +# Alternatives +A clear description of any alternative solutions or features you've considered. -**Additional context** -Add any other context or screenshots about the feature request here. +# Additional context +Add any other context or screenshots about the feature request here, potentially +including your operational configuration. diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 00000000..da43edc7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,19 @@ +--- +name: Question +about: A question about this project +title: "QUEST: " +labels: question + +--- + +# Description +A clear and concise summary of your query + +## Example code (optional) +If relevant, include sample code, images, or files so that others can understand +the full context of your question. + +## Configuration + - OS: [e.g. Hal] + - Version: [e.g. Python 3.47] + - Other details about your setup that could be relevant diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 5331eb30..e1d2dbe5 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,12 +1,12 @@ # Description -Addresses # (issue) +Addresses #(issue) Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. Please see ``CONTRIBUTING.md`` for more guidelines. -## Type of change +# Type of change Please delete options that are not relevant. @@ -25,9 +25,9 @@ your test configuration - Test A - Test B -## Test Configuration -* Operating system: [Os Type] -* Version number: [Python 2.9] +**Test Configuration**: +* Operating system: Hal +* Version number: Python 3.X * Any details about your local setup that are relevant # Checklist: @@ -43,3 +43,6 @@ your test configuration - [ ] Any dependent changes have been merged and published in downstream modules - [ ] Add a note to ``CHANGELOG.md``, summarizing the changes - [ ] Update zenodo.json file for new code contributors + +If this is a release PR, replace the first item of the above checklist with the release +checklist on the wiki: https://github.com/pysat/pysat/wiki/Checklist-for-Release diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index dffe178e..fe6d6ca4 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,4 +1,4 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# This workflow will install Python dependencies and check the sphinx build, links in the docs, and the readability of the zenodo file # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: Documentation Check @@ -8,11 +8,11 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ["ubuntu-latest"] strategy: fail-fast: false matrix: - python-version: [3.9] + python-version: ["3.10"] # Keep this version at the highest supported Python version name: Documentation tests steps: @@ -25,8 +25,7 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - pip install -r test_requirements.txt - pip install -r requirements.txt + pip install .[doc] - name: Set up pysat run: | diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index be920387..61125636 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,13 +10,19 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.9", "3.10"] - numpy_ver: [latest] + os: ["ubuntu-latest", "macos-latest", "windows-latest"] + python-version: ["3.10", "3.11"] + numpy_ver: ["latest"] + test_config: ["latest"] include: - - python-version: "3.8" - numpy_ver: "1.20" + - python-version: "3.9" + numpy_ver: "1.21" os: ubuntu-latest + test_config: "NEP29" + - python-version: "3.6.8" + numpy_ver: "1.19.5" + os: "ubuntu-20.04" + test_config: "Ops" name: Python ${{ matrix.python-version }} on ${{ matrix.os }} with numpy ${{ matrix.numpy_ver }} runs-on: ${{ matrix.os }} @@ -31,18 +37,25 @@ jobs: if: ${{ matrix.os == 'macos-latest' }} run: brew reinstall gcc + - name: Install Operational dependencies + if: ${{ matrix.test_config == 'Ops'}} + run: | + pip install --no-cache-dir numpy==${{ matrix.numpy_ver }} + pip install "cdflib<1.0" + pip install -r requirements.txt + pip install -r test_requirements.txt + pip install . + - name: Install NEP29 dependencies - if: ${{ matrix.numpy_ver != 'latest'}} + if: ${{ matrix.test_config == 'NEP29'}} run: | - pip install --no-binary :numpy: numpy==${{ matrix.numpy_ver }} - # Need to force a version of pandas compliant with NEP29 - pip install "pandas<1.5" + pip install numpy==${{ matrix.numpy_ver }} + pip install --upgrade-strategy only-if-needed .[test] - name: Install standard dependencies + if: ${{ matrix.test_config == 'latest'}} run: | - pip install -r requirements.txt - pip install pysatCDF --no-binary=pysatCDF - pip install -r test_requirements.txt + pip install .[test] - name: Set up pysat run: | @@ -56,10 +69,9 @@ jobs: run: flake8 . --count --exit-zero --max-complexity=10 --statistics - name: Test with pytest - run: | - pytest -vs --cov=pysatNASA/ + run: pytest - name: Publish results to coveralls env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: coveralls --rcfile=setup.cfg --service=github + run: coveralls --rcfile=pyproject.toml --service=github diff --git a/.github/workflows/pip_rc_install.yml b/.github/workflows/pip_rc_install.yml new file mode 100644 index 00000000..5191c994 --- /dev/null +++ b/.github/workflows/pip_rc_install.yml @@ -0,0 +1,40 @@ +# This workflow will install Python dependencies and the latest RC of pysatNASA from test pypi. +# This test should be manually run before a pysatNASA RC is officially approved and versioned. +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: Test install of latest RC from pip + +on: [workflow_dispatch] + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macos-latest", "windows-latest"] + python-version: ["3.10"] # Keep this version at the highest supported Python version + + name: Python ${{ matrix.python-version }} on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install standard dependencies + run: pip install -r requirements.txt + + - name: Install pysatNASA RC + run: pip install --no-deps --pre -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pysatNASA + + - name: Set up pysat + run: | + mkdir pysatData + python -c "import pysat; pysat.params['data_dirs'] = 'pysatData'" + + - name: Check that install imports correctly + run: | + cd .. + python -c "import pysatNASA; print(pysatNASA.__version__)" diff --git a/.github/workflows/pysat_rc.yml b/.github/workflows/pysat_rc.yml index ec9e4d20..b6292e18 100644 --- a/.github/workflows/pysat_rc.yml +++ b/.github/workflows/pysat_rc.yml @@ -1,4 +1,6 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# This workflow will install Python dependencies and the latest RC of pysat from test pypi. +# All unit tests for pysatNASA will be run using the pysat RC. +# This test should be manually run before a pysat RC is officially approved and versioned. # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions name: Test with latest pysat RC @@ -10,8 +12,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python-version: ["3.10"] + os: ["ubuntu-latest", "macos-latest", "windows-latest"] + python-version: ["3.10"] # Keep this version at the highest supported Python version name: Python ${{ matrix.python-version }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} @@ -27,14 +29,12 @@ jobs: run: brew reinstall gcc - name: Install pysat RC - run: | - pip install -r test_requirements.txt - pip install --no-deps -i https://test.pypi.org/simple/ pysat + run: pip install --no-deps --pre -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ pysat - name: Install standard dependencies run: | pip install -r requirements.txt - pip install pysatCDF --no-binary=pysatCDF + pip install -r test_requirements.txt - name: Set up pysat run: | diff --git a/.gitignore b/.gitignore index 6db464db..c8350919 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,6 @@ custom_lint.sh # IDEs .idea/ + +# vscode +.vscode diff --git a/.readthedocs.yml b/.readthedocs.yml new file mode 100644 index 00000000..23fa5ade --- /dev/null +++ b/.readthedocs.yml @@ -0,0 +1,22 @@ +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.10" + +# Build documentation in the docs/ directory with Sphinx +sphinx: + configuration: docs/conf.py + + +# Optionally declare the Python requirements required to build your docs +python: + install: + - requirements: docs/requirements.txt diff --git a/.zenodo.json b/.zenodo.json index a5bcff9a..1052a817 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -27,6 +27,11 @@ { "name": "Spence, Carey", "orcid": "0000-0001-8340-5625" + }, + { + "affilitation":"University of Colorado at Boulder", + "name": "Navarro, Luis", + "orcid": "0000-0002-6362-6575" } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index e4a1d903..45d86081 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,69 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## [0.0.5] - 2023-XX-XX +* New Instruments + * ACE EPAM + * ACE MAG + * ACE SIS + * ACE SWEPAM + * DE2 Fabry-Perot Interferometer (FPI) + * DE2 Vector Electric Field Instrument (VEFI) and magnetometer + * DMSP SSUSI EDR-Aurora data + * IGS GPS (TEC and ROTI) + * SES-14 GOLD -- tdisk, tlimb and o2den data products added + * TIMED GUVI +* Add TIMED GUVI platform to support L1C intensity datasets. + * Type of sensor source handled by inst_id with options of + spectrograph, imaging + * Resolution of dataset handled by tag with + low, high +* Added CDAWeb methods that can use cdasws to get the remote file list +* Bug Fixes + * Pandas datasets made with cdflib now have header level meta + * Updated CDAWeb routines to allow for data stored by year/day-of-year + * Updated GOLD nmax to sort scans by time. + * Added 1 usec to GOLD nmax channel B times to ensure uniqueness + * Fixed multi-file loads for cdf xarray datasets. + * Adds a 0.1 sec delay between file downloads to avoid excessive calls + to servers. +* Documentation + * Added TIMED-GUVI platform + * Added missing sub-module imports + * Added discussion of ICON constellation to docstrings, including caveats +* Enhancements + * Updated platform methods to follow a consistent style and work with the + general `init` function + * Added unit tests for the different platform method attributes + * xarray support for TIMED SABER and SEE + * Added `drop_dims` kwarg to `load_xarray` interface so that orphan dims can + be removed before attempting to merge. + * Added `var_translation` kwarg to `load_xarray` interface so that variables can + be renamed before attempting to merge. + * Improved usage of cdflib for users in xarray instruments + * Added a generalized `clean` routine to replace fill vals with NaNs +* Deprecations + * Deprecated jpl_gps instrtument module, moved roti instrument to igs_gps +* Maintenance + * Updated download functions to take data_path as an arg, not a kwarg + * Removed duplicate tests if pysatCDF not isntalled + * Removed pysatCDF tests on GitHub Actions workflows (see #167) + * Updated actions and templates based on pysatEcosystem docs + * Remove pandas cap on NEP29 tests + * Updated dosctring style for consistency + * Removed version cap for xarray + * Added manual workflow to check that latest RC is installable through test pip + * Update meta label type for instruments + * Updated GitHub Actions workflows for improved compliance with pip>=23.0 + * Added .readthedocs.yml to configure settings there. + * Use pyproject.toml to manage installation and metadata + * Set use_cdflib=True for supported xarray instruments + * Set pysat 3.1.0 minimum + * Use pysat logger to raise non-deprecation warnings + * Update syntax based on latest pysat deprecations to make the code compatible with pysat 3.2.0. + * Updated syntax compliance with cdflib 1.0+ + * Updated use of `decode_times` kwarg when loading xarray data to maintain current behaviour + ## [0.0.4] - 2022-11-07 * Update instrument tests with new test class * Support xarray datasets through cdflib diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5e9b2a04..45943ed4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -78,33 +78,44 @@ To set up `pysatNASA` for local development: 4. When you're done making changes, run all the checks to ensure that nothing - is broken on your local system, as well as check for flake8 compliance: + is broken on your local system: - ``` - pytest -vs --flake8 pysatNASA - ``` + ``` + pytest pysatNASA + ``` + +5. You should also check for flake8 style compliance: + + ``` + flake8 . --count --select=D,E,F,H,W --show-source --statistics + ``` -5. Update/add documentation (in ``docs``), if relevant + Note that pysat uses the `flake-docstrings` and `hacking` packages to ensure + standards in docstring formatting. -6. Add your name to the .zenodo.json file as an author -7. Commit your changes: - ``` - git add . - git commit -m "AAA: Brief description of your changes" - ``` - Where AAA is a standard shorthand for the type of change (eg, BUG or DOC). - `pysat` follows the [numpy development workflow](https://numpy.org/doc/stable/dev/development_workflow.html), - see the discussion there for a full list of this shorthand notation. +6. Update/add documentation (in ``docs``), if relevant -8. Once you are happy with the local changes, push to Github: - ``` - git push origin name-of-your-bugfix-or-feature - ``` - Note that each push will trigger the Continuous Integration workflow. +7. Add your name to the .zenodo.json file as an author + +8. Commit your changes: + ``` + git add . + git commit -m "AAA: Brief description of your changes" + ``` + Where AAA is a standard shorthand for the type of change (eg, BUG or DOC). + `pysat` follows the [numpy development workflow](https://numpy.org/doc/stable/dev/development_workflow.html), + see the discussion there for a full list of this shorthand notation. + +9. Once you are happy with the local changes, push to Github: + ``` + git push origin name-of-your-bugfix-or-feature + ``` + Note that each push will trigger the Continuous Integration workflow. -9. Submit a pull request through the GitHub website. Pull requests should be - made to the ``develop`` branch. +10. Submit a pull request through the GitHub website. Pull requests should be + made to the ``develop`` branch. Note that automated tests will be run on + github actions, but these must be initialized by a member of the pysat team. Pull Request Guidelines ----------------------- @@ -160,3 +171,5 @@ These include: * Block and inline comments should use proper English grammar and punctuation with the exception of single sentences in a block, which may then omit the final period +* When casting is necessary, use `np.int64` and `np.float64` to ensure operating + system agnosticism diff --git a/LICENSE b/LICENSE index c9a10064..666d8f5d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ BSD 3-Clause License -Copyright (c) 2020, pysat +Copyright (c) 2023, pysat All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README.md b/README.md index d04d1045..de310e27 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@
- pysatNASA + pysatNASA
# pysatNASA: pysat support for NASA Space Science instruments @@ -20,37 +20,41 @@ some examples on how to use the routines pysatNASA uses common Python modules, as well as modules developed by and for the Space Physics community. This module officially supports -Python 3.8+. - -| Common modules | Community modules | -| ---------------- | ----------------- | -| beautifulsoup4 | cdflib | -| lxml | pysat>=3.0.4 | -| netCDF4 | | -| numpy | | -| pandas | | -| requests | | -| xarray<2022.11 | | +Python 3.6+. + +| Common modules | Community modules | Optional Modules | +| ---------------- | ----------------- |------------------| +| beautifulsoup4 | cdflib>=0.4.4 | pysatCDF | +| lxml | pysat>=3.1.0 | | +| netCDF4 | | | +| numpy | | | +| pandas | | | +| requests | | | +| xarray | | | + +## PyPi Installation +``` +pip install pysatNASA +``` ## GitHub Installation -Currently, the main way to get pysatNASA is through github. - ``` git clone https://github.com/pysat/pysatNASA.git ``` -Change directories into the repository folder and run the setup.py file. For +Change directories into the repository folder and build the project. For a local install use the "--user" flag after "install". ``` cd pysatNASA/ -python setup.py install +pip install . ``` Note: pre-1.0.0 version ----------------------- pysatNASA is currently in an initial development phase and requires pysat 3.0.4. +Feedback and contributions are appreciated. # Using with pysat @@ -62,7 +66,9 @@ from pysatNASA.instruments import icon_ivm ivm = pysat.Instrument(inst_module=icon_ivm, inst_id='a') ``` -Another way to use the instruments in an external repository is to register the instruments. This only needs to be done the first time you load an instrument. Afterward, pysat will identify them using the `platform` and `name` keywords. +Another way to use the instruments in an external repository is to register the +instruments. This only needs to be done the first time you load an instrument. +Afterward, pysat will identify them using the `platform` and `name` keywords. ``` import pysat @@ -70,3 +76,19 @@ import pysat pysat.utils.registry.register(['pysatNASA.instruments.icon_ivm']) ivm = pysat.Instrument('icon', 'ivm', inst_id='a') ``` + +# CDF Integration +For data products stored as CDF files, this package can use either `cdflib` or +`pysatCDF`. Note that `cdflib` is a pure python package and more readily +deployable across systems, whereas `pysatCDF` interfaces with the fortran. +This is a faster approach for loading data, but may not install on all systems. +There are known issues with `numpy`>=1.24. Therefore, `pysatCDF` is optional +rather than required. + +You can specify which load routine to use via the optional `use_cdflib` kwarg. +If no kwarg is specified, `pysatNASA` will default to `pysatCDF` if it is +successfully installed, and default to `cdflib` otherwise. + +``` +ivm = pysat.Instrument('cnofs', 'ivm', use_cdflib=True) +``` diff --git a/docs/conf.py b/docs/conf.py index c3398628..43245c9d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -10,6 +10,7 @@ import json import os +import pkg_resources import sys sys.path.insert(0, os.path.abspath('..')) @@ -52,19 +53,18 @@ master_doc = 'index' # General information about the project. -zenodo = json.loads(open('../.zenodo.json').read()) project = 'pysatNASA' -author = ', '.join([creator['name'] for creator in zenodo['creators']]) -manual_copyright = ', '.join(['2021', author]) title = '{:s} Documentation'.format(project) +zenodo = json.loads(open('../.zenodo.json').read()) +author = ', '.join([creator['name'] for creator in zenodo['creators']]) +manual_copyright = ', '.join(['2023', author]) +category = 'Space Physics' description = 'Tools for NASA CDAWeb instruments.' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. -doc_dir = os.path.abspath(os.path.dirname(__file__)) -with open(os.path.join(doc_dir, "..", project, "version.txt"), "r") as fin: - version = fin.read().strip() +version = pkg_resources.get_distribution('pysatNASA').version release = '{:s}-alpha'.format(version) # Include alpha/beta/rc tags. # The language for content autogenerated by Sphinx. Refer to documentation @@ -96,7 +96,7 @@ # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. -html_logo = os.path.join(os.path.abspath('.'), 'figures', 'logo.png') +html_logo = os.path.join(os.path.abspath('.'), 'figures', 'pysatnasa_logo.png') html_theme_options = {'logo_only': True} # Add any paths that contain custom static files (such as style sheets) here, @@ -148,8 +148,8 @@ # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) -texinfo_documents = [(master_doc, project, title, author, project, description, - 'Space Physics')] +texinfo_documents = [(master_doc, project, title, author, project, + description, category)] # -- Options for Epub output ---------------------------------------------- diff --git a/docs/figures/logo.png b/docs/figures/pysatnasa_logo.png similarity index 100% rename from docs/figures/logo.png rename to docs/figures/pysatnasa_logo.png diff --git a/docs/installation.rst b/docs/installation.rst index 82f840fa..7b5858b7 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -14,18 +14,18 @@ Prerequisites pysatNASA uses common Python modules, as well as modules developed by and for the Space Physics community. This module officially supports -Python 3.8+ and pysat 3.0.4+. +Python 3.6+ and pysat 3.1.0+. ================== ================= Common modules Community modules ================== ================= beautifulsoup4 cdflib>=0.4.4 - lxml pysat>=3.0.4 + lxml pysat>=3.1.0 netCDF4 numpy pandas requests - xarray<2022.11 + xarray ================== ================= @@ -40,24 +40,32 @@ Installation Options 2. Install pysatNASA: - Change directories into the repository folder and run the setup.py file. + Change directories into the repository folder and build the project. There are a few ways you can do this: A. Install on the system (root privileges required):: - sudo python setup.py install + sudo pip install . + B. Install at the user level:: - python setup.py install --user - C. Install with the intent to develop locally:: + pip install --user . + + C. Install with the intent to change the code:: + + + pip install --user -e . +.. extras-require:: pysatcdf + :pyproject: - python setup.py develop --user +.. extras-require:: test + :pyproject: -.. extras-require:: all - :setup.cfg: +.. extras-require:: doc + :pyproject: .. _post-install: diff --git a/docs/overview.rst b/docs/overview.rst index c103d568..4c8a8d4e 100644 --- a/docs/overview.rst +++ b/docs/overview.rst @@ -5,7 +5,7 @@ This is a library of ``pysat`` instrument modules and methods designed to suppor NASA instruments and missions archived at the Community Data Analysis Web portal. -.. image:: figures/logo.png +.. image:: figures/pysatnasa_logo.png :width: 400px :align: center :alt: pysatNASA Logo, a blue planet with red orbiting python and the module name superimposed diff --git a/docs/supported_constellations.rst b/docs/supported_constellations.rst index f5ebf71f..d7e7eaa3 100644 --- a/docs/supported_constellations.rst +++ b/docs/supported_constellations.rst @@ -6,10 +6,12 @@ DE2 The Dynamics Explorer 2 spacecraft. Includes the instruments +- :ref:`de2_fpi` - :ref:`de2_lang` - :ref:`de2_nacs` - :ref:`de2_rpa` - :ref:`de2_wats` +- :ref:`de2_vefi` .. automodule:: pysatNASA.constellations.de2 :members: diff --git a/docs/supported_instruments.rst b/docs/supported_instruments.rst index 054bc982..0980414e 100644 --- a/docs/supported_instruments.rst +++ b/docs/supported_instruments.rst @@ -1,6 +1,38 @@ Supported Instruments ===================== +.. _ace_epam: + +ACE EPAM +-------- + +.. automodule:: pysatNASA.instruments.ace_epam_l2 + :members: + +.. _ace_mag: + +ACE MAG +------- + +.. automodule:: pysatNASA.instruments.ace_mag_l2 + :members: + +.. _ace_sis: + +ACE SIS +------- + +.. automodule:: pysatNASA.instruments.ace_sis_l2 + :members: + +.. _ace_swepam: + +ACE SWEPAM +---------- + +.. automodule:: pysatNASA.instruments.ace_swepam_l2 + :members: + .. _cnofs_ivm: C/NOFS IVM @@ -25,6 +57,14 @@ C/NOFS VEFI .. automodule:: pysatNASA.instruments.cnofs_vefi :members: +.. _de2_fpi: + +DE2 FPI +-------- + +.. automodule:: pysatNASA.instruments.de2_fpi + :members: + .. _de2_lang: DE2 LANG @@ -49,6 +89,14 @@ DE2 RPA .. automodule:: pysatNASA.instruments.de2_rpa :members: +.. _de2_vefi: + +DE2 VEFI +-------- + +.. automodule:: pysatNASA.instruments.de2_vefi + :members: + .. _de2_wats: DE2 WATS @@ -57,6 +105,14 @@ DE2 WATS .. automodule:: pysatNASA.instruments.de2_wats :members: +.. _dmsp_ssusi: + +DMSP SSUSI +---------- + +.. automodule:: pysatNASA.instruments.dmsp_ssusi + :members: + .. _formosat1_ivm: FORMOSAT-1 IVM @@ -98,6 +154,14 @@ ICON MIGHTI .. automodule:: pysatNASA.instruments.icon_mighti :members: +.. _igs_gps: + +IGS GPS +------- + +.. automodule:: pysatNASA.instruments.igs_gps + :members: + .. _iss_fpmu: ISS FPMU @@ -130,6 +194,14 @@ SES14 GOLD .. automodule:: pysatNASA.instruments.ses14_gold :members: +.. _timed_guvi: + +TIMED GUVI +---------- + +.. automodule:: pysatNASA.instruments.timed_guvi + :members: + .. _timed_saber: TIMED SABER diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..646969a3 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,88 @@ +[build-system] +requires = ["setuptools", "pip >= 10"] +build-backend = "setuptools.build_meta" + +[project] +name = "pysatNASA" +version = "0.0.5" +description = "pysat support for NASA Instruments" +readme = "README.md" +requires-python = ">=3.6" +license = {file = "LICENSE"} +authors = [ + {name = "Jeff Klenzing, et al.", email = "pysat.developers@gmail.com"}, +] +classifiers = [ + "Development Status :: 3 - Alpha", + "Topic :: Scientific/Engineering :: Astronomy", + "Topic :: Scientific/Engineering :: Physics", + "Topic :: Scientific/Engineering :: Atmospheric Science", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: BSD License", + "Natural Language :: English", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.6", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Operating System :: POSIX :: Linux", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows" +] +keywords = [ + "pysat", + "ionosphere", + "magnetosphere", + "solar wind", + "thermosphere" +] +dependencies = [ + "beautifulsoup4", + "cdasws", + "cdflib >= 0.4.4", + "lxml", + "netCDF4", + "numpy", + "pandas", + "pysat >= 3.1", + "requests", + "xarray" +] + +[project.optional-dependencies] +pysatcdf = ["pysatCDF"] +test = [ + "coveralls < 3.3", + "flake8", + "flake8-docstrings", + "hacking >= 1.0", + "pytest", + "pytest-cov", + "pytest-ordering" +] +doc = [ + "extras_require", + "ipython", + "m2r2", + "numpydoc", + "sphinx", + "sphinx_rtd_theme" +] + +[project.urls] +Documentation = "https://pysatnasa.readthedocs.io/en/latest/" +Source = "https://github.com/pysat/pysatNASA" + +[tool.coverage.report] +omit = ["*/instruments/templates/"] + +[tool.pytest.ini_options] +addopts = "-vs --cov=pysatNASA" +markers = [ + "all_inst", + "download", + "no_download", + "load_options", + "first", + "second" +] diff --git a/pysatNASA/__init__.py b/pysatNASA/__init__.py index 1df92789..ea9f8ff2 100644 --- a/pysatNASA/__init__.py +++ b/pysatNASA/__init__.py @@ -6,13 +6,15 @@ """ -import os +import importlib +import importlib_metadata + from pysatNASA import constellations # noqa F401 from pysatNASA import instruments # noqa F401 # set version -here = os.path.abspath(os.path.dirname(__file__)) -version_filename = os.path.join(here, 'version.txt') -with open(version_filename, 'r') as version_file: - __version__ = version_file.read().strip() -del here, version_filename, version_file +try: + __version__ = importlib.metadata.version('pysatNASA') +except AttributeError: + # Python 3.6 requires a different version + __version__ = importlib_metadata.version('pysatNASA') diff --git a/pysatNASA/constellations/de2.py b/pysatNASA/constellations/de2.py index eca99b6a..2a5ad572 100644 --- a/pysatNASA/constellations/de2.py +++ b/pysatNASA/constellations/de2.py @@ -1,13 +1,32 @@ -"""Creates a constellation from the NASA DE2 satellite platform.""" +"""Creates a constellation from the NASA DE2 satellite platform. + +Includes the core supported instruments. + + +Examples +-------- +:: + + import pysat + import pysatNASA + + de2 = pysat.Constellation(const_module=pysatNASA.constellations.de2) + + de2.load(1983, 1) + + +""" import pysat from pysatNASA import instruments +fpi = pysat.Instrument(inst_module=instruments.de2_fpi) lang = pysat.Instrument(inst_module=instruments.de2_lang) nacs = pysat.Instrument(inst_module=instruments.de2_nacs) rpa = pysat.Instrument(inst_module=instruments.de2_rpa) wats = pysat.Instrument(inst_module=instruments.de2_wats) +vefi = pysat.Instrument(inst_module=instruments.de2_vefi) -instruments = [lang, nacs, rpa, wats] +instruments = [fpi, lang, nacs, rpa, wats, vefi] diff --git a/pysatNASA/constellations/icon.py b/pysatNASA/constellations/icon.py index 3df198a0..42cd6462 100644 --- a/pysatNASA/constellations/icon.py +++ b/pysatNASA/constellations/icon.py @@ -1,4 +1,24 @@ -"""Creates a constellation from NASA the ICON satellite platform.""" +"""Creates a constellation from NASA the ICON satellite platform. + +Includes the core instruments without the line of sight winds. + +Note that IVM A and B are nominally never active at the same time. This +constellation should be initialized with `common_index=False`. This forgoes +the pysat check that ensures all instruments load data. + +Examples +-------- +:: + + import pysat + import pysatNASA + + icon = pysat.Constellation(const_module=pysatNASA.constellations.icon, + common_index=False) + + icon.load(2020, 1) + +""" import pysat diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index a56c7e99..60967d8a 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -4,13 +4,15 @@ Each instrument is contained within a subpackage of this set. """ +from pysatNASA.instruments import methods # noqa F401 -__all__ = ['cnofs_ivm', 'cnofs_plp', 'cnofs_vefi', - 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_wats', - 'formosat1_ivm', +__all__ = ['ace_epam_l2', 'ace_mag_l2', 'ace_sis_l2', 'ace_swepam_l2', + 'cnofs_ivm', 'cnofs_plp', 'cnofs_vefi', 'de2_fpi', + 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_vefi', 'de2_wats', + 'dmsp_ssusi', 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', - 'iss_fpmu', 'jpl_gps', 'omni_hro', 'ses14_gold', - 'timed_saber', 'timed_see','mvn_kp','mvn_mag'] + 'igs_gps', 'iss_fpmu', 'jpl_gps', 'mvn_kp', 'mvn_mag', 'omni_hro', + 'ses14_gold', 'timed_guvi', 'timed_saber', 'timed_see'] for inst in __all__: exec("from pysatNASA.instruments import {x}".format(x=inst)) diff --git a/pysatNASA/instruments/ace_epam_l2.py b/pysatNASA/instruments/ace_epam_l2.py new file mode 100644 index 00000000..61dddf8e --- /dev/null +++ b/pysatNASA/instruments/ace_epam_l2.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +"""Module for the Advanced Composition Explorer (ACE) EPAM instrument. + +Properties +---------- +platform + 'ace' +name + 'epam_l2' +tag + 'base' or 'key' +inst_id + '12sec', '5min', '1hr' + +References +---------- +- Stone, E., Frandsen, A., Mewaldt, R. et al. The Advanced Composition Explorer. + Space Science Reviews 86, 1–22 (1998). https://doi.org/10.1023/A:1005082526237 +- Gold, R., Krimigis, S., Hawkins, S. et al. Electron, Proton, and Alpha Monitor + on the Advanced Composition Explorer spacecraft. Space Science Reviews 86, + 541–562 (1998). https://doi.org/10.1023/A:1005088115759 + +Note +---- +- Level 1 ACE data is maintained at pysatSpaceWeather. +- Release notes at + https://cdaweb.gsfc.nasa.gov/pub/data/ace/epam/epam_level2_release_notes.txt + +Warnings +-------- +- The cleaning parameters for the instrument are still under development. + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen + +from pysatNASA.instruments.methods import ace as mm_ace +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'ace' +name = 'epam_l2' +tags = {'base': 'ACE/EPAM Solar Energetic Particle Base Data', + 'key': 'ACE/EPAM Solar Energetic Particle Key Parameters'} +inst_ids = {'12sec': ['base'], + '5min': ['key', 'base'], + '1hr': ['key', 'base']} + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {id: {tag: dt.datetime(2022, 1, 1) for tag in inst_ids[id]} + for id in inst_ids.keys()} + +# ---------------------------------------------------------------------------- +# Instrument methods + + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_ace, name=name) + +# Use default clean +clean = mm_nasa.clean + +# ---------------------------------------------------------------------------- +# Instrument functions +# + +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +strid = {'12sec': {'base': 'h3'}, + '5min': {'base': 'h1', 'key': 'k0'}, + '1hr': {'base': 'h2', 'key': 'k1'}} +fname = ''.join(('ac_{sid:s}_epm_{{year:4d}}{{month:02d}}{{day:02d}}_', + 'v{{version:02d}}.cdf')) +supported_tags = {id: {tag: fname.format(sid=strid[id][tag]) + for tag in inst_ids[id]} + for id in inst_ids.keys()} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the load routine +load = functools.partial(mm_ace.load, to_pandas=True) + +# Set the download routine +download_tags = {'12sec': {'base': 'AC_H3_EPM'}, + '5min': {'base': 'AC_H1_EPM', 'key': 'AC_K0_EPM'}, + '1hr': {'base': 'AC_H2_EPM', 'key': 'AC_K1_EPM'}} + +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) diff --git a/pysatNASA/instruments/ace_mag_l2.py b/pysatNASA/instruments/ace_mag_l2.py new file mode 100644 index 00000000..dfe26153 --- /dev/null +++ b/pysatNASA/instruments/ace_mag_l2.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +"""Module for the Advanced Composition Explorer (ACE) MAG instrument. + +Properties +---------- +platform + 'ace' +name + 'mag_l2' +tag + 'base' or 'key' +inst_id + '1sec', '16sec', '4min', '5min', '1hr' + +References +---------- +- Stone, E., Frandsen, A., Mewaldt, R. et al. The Advanced Composition Explorer. + Space Science Reviews 86, 1–22 (1998). https://doi.org/10.1023/A:1005082526237 +- Smith, C., L'Heureux, J., Ness, N. et al. The ACE Magnetic Fields Experiment. + Space Science Reviews 86, 613–632 (1998). + https://doi.org/10.1023/A:1005092216668 + +Note +---- +- Level 1 ACE data is maintained at pysatSpaceWeather. +- Release notes at + https://cdaweb.gsfc.nasa.gov/pub/data/ace/mag/mag_level2_release_notes.txt + +Warnings +-------- +- The cleaning parameters for the instrument are still under development. + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen + +from pysatNASA.instruments.methods import ace as mm_ace +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'ace' +name = 'mag_l2' +tags = {'base': 'ACE Magnetic Field Base Data', + 'key': 'ACE Magnetic Field Key Parameters'} +inst_ids = {'1sec': ['base'], + '16sec': ['base', 'key'], + '4min': ['base'], + '5min': ['key'], + '1hr': ['base', 'key']} +pandas_format = False + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {id: {tag: dt.datetime(2022, 1, 1) for tag in inst_ids[id]} + for id in inst_ids.keys()} + +# ---------------------------------------------------------------------------- +# Instrument methods + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_ace, name=name) + + +def preprocess(self): + """Adjust dimensionality of metadata.""" + + # TODO(https://github.com/pysat/pysat/issues/1078): Update the metadata by + # removing value_min0, value_min1, etc, once possible + self.meta['BGSEc'] = {'value_min': min([self.meta['BGSEc']['value_min0'], + self.meta['BGSEc']['value_min1'], + self.meta['BGSEc']['value_min2']]), + 'value_max': max([self.meta['BGSEc']['value_max0'], + self.meta['BGSEc']['value_max1'], + self.meta['BGSEc']['value_max2']]), + 'SCALEMIN': min([self.meta['BGSEc']['SCALEMIN0'], + self.meta['BGSEc']['SCALEMIN1'], + self.meta['BGSEc']['SCALEMIN2']]), + 'SCALEMAX': max([self.meta['BGSEc']['SCALEMAX0'], + self.meta['BGSEc']['SCALEMAX1'], + self.meta['BGSEc']['SCALEMAX2']])} + return + + +# Use default clean +clean = mm_nasa.clean + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +strid = {'1sec': {'base': 'h3'}, + '16sec': {'base': 'h0', 'key': 'k1'}, + '4min': {'base': 'h1'}, + '5min': {'key': 'k0'}, + '1hr': {'base': 'h2', 'key': 'k2'}} +fname = ''.join(('ac_{sid:s}_mfi_{{year:4d}}{{month:02d}}{{day:02d}}_', + 'v{{version:02d}}.cdf')) +supported_tags = {id: {tag: fname.format(sid=strid[id][tag]) + for tag in inst_ids[id]} + for id in inst_ids.keys()} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the load routine +load = functools.partial(mm_ace.load, to_pandas=False) + +# Set the download routine +download_tags = {'1sec': {'base': 'AC_H3_MFI'}, + '16sec': {'base': 'AC_H0_MFI', 'key': 'AC_K1_MFI'}, + '4min': {'base': 'AC_H1_MFI'}, + '5min': {'key': 'AC_K0_MFI'}, + '1hr': {'base': 'AC_H2_MFI', 'key': 'AC_K2_MFI'}} + +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) diff --git a/pysatNASA/instruments/ace_sis_l2.py b/pysatNASA/instruments/ace_sis_l2.py new file mode 100644 index 00000000..188f5973 --- /dev/null +++ b/pysatNASA/instruments/ace_sis_l2.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +"""Module for the Advanced Composition Explorer (ACE) SIS instrument. + +Properties +---------- +platform + 'ace' +name + 'sis_l2' +tag + 'base' or 'key' +inst_id + '256sec' or '1hr' + +References +---------- +- Stone, E., Frandsen, A., Mewaldt, R. et al. The Advanced Composition Explorer. + Space Science Reviews 86, 1–22 (1998). https://doi.org/10.1023/A:1005082526237 +- Stone, E., Cohen, C., Cook, W. et al. The Solar Isotope Spectrometer for the + Advanced Composition Explorer. Space Science Reviews 86, 357–408 (1998). + https://doi.org/10.1023/A:1005027929871 + +Note +---- +- Level 1 ACE data is maintained at pysatSpaceWeather. + +Warnings +-------- +- The cleaning parameters for the instrument are still under development. + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen + +from pysatNASA.instruments.methods import ace as mm_ace +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'ace' +name = 'sis_l2' +tags = {'base': 'ACE/SIS Solar Isotope Spectrometer Base Data', + 'key': 'ACE/SIS Solar Isotope Spectrometer Key Parameters'} +inst_ids = {'256sec': ['base'], + '1hr': ['base', 'key']} +pandas_format = False + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {id: {tag: dt.datetime(2022, 1, 1) for tag in inst_ids[id]} + for id in inst_ids.keys()} + +# ---------------------------------------------------------------------------- +# Instrument methods + + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_ace, name=name) + +# Use default clean +clean = mm_nasa.clean + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +strid = {'256sec': {'base': 'h1'}, + '1hr': {'base': 'h2', 'key': 'k0'}} +fname = ''.join(('ac_{sid:s}_sis_{{year:4d}}{{month:02d}}{{day:02d}}_', + 'v{{version:02d}}.cdf')) +supported_tags = {id: {tag: fname.format(sid=strid[id][tag]) + for tag in inst_ids[id]} + for id in inst_ids.keys()} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the load routine +load = functools.partial(mm_ace.load, to_pandas=False) + +# Set the download routine +download_tags = {'256sec': {'base': 'AC_H1_SIS'}, + '1hr': {'base': 'AC_H2_SIS', 'key': 'AC_K0_SIS'}} + +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) diff --git a/pysatNASA/instruments/ace_swepam_l2.py b/pysatNASA/instruments/ace_swepam_l2.py new file mode 100644 index 00000000..b16b37ed --- /dev/null +++ b/pysatNASA/instruments/ace_swepam_l2.py @@ -0,0 +1,100 @@ +# -*- coding: utf-8 -*- +"""Module for the Advanced Composition Explorer (ACE) EPAM instrument. + +Properties +---------- +platform + 'ace' +name + 'swepam_l2' +tag + 'base' or 'key' +inst_id + '64sec', '5min', '1hr' + +References +---------- +- Stone, E., Frandsen, A., Mewaldt, R. et al. The Advanced Composition Explorer. + Space Science Reviews 86, 1–22 (1998). https://doi.org/10.1023/A:1005082526237 +- McComas, D., Bame, S., Barker, P. et al. Solar Wind Electron Proton Alpha + Monitor (SWEPAM) for the Advanced Composition Explorer. Space Science Reviews + 86, 563–612 (1998). https://doi.org/10.1023/A:1005040232597 + +Note +---- +- Level 1 ACE data is maintained at pysatSpaceWeather. +- Release notes at + https://cdaweb.gsfc.nasa.gov/pub/data/ace/swepam/swepam_level2_release_notes.txt + +Warnings +-------- +- The cleaning parameters for the instrument are still under development. + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen + +from pysatNASA.instruments.methods import ace as mm_ace +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'ace' +name = 'swepam_l2' +tags = {'base': 'ACE/SWEPAM Solar Wind Experiment Base Data', + 'key': 'ACE/SWEPAM Solar Wind Experiment Key Parameters'} +inst_ids = {'64sec': ['base'], + '5min': ['key'], + '1hr': ['key', 'base']} + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {id: {tag: dt.datetime(2021, 1, 1) for tag in inst_ids[id]} + for id in inst_ids.keys()} + +# ---------------------------------------------------------------------------- +# Instrument methods + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_ace, name=name) + +# Use default clean +clean = mm_nasa.clean + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +strid = {'64sec': {'base': 'h0'}, + '5min': {'key': 'k0'}, + '1hr': {'base': 'h2', 'key': 'k1'}} +fname = ''.join(('ac_{sid:s}_swe_{{year:4d}}{{month:02d}}{{day:02d}}_', + 'v{{version:02d}}.cdf')) +supported_tags = {id: {tag: fname.format(sid=strid[id][tag]) + for tag in inst_ids[id]} + for id in inst_ids.keys()} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + + +# Set the load routine +load = functools.partial(mm_ace.load, to_pandas=True) + +# Set the download routine +download_tags = {'64sec': {'base': 'AC_H0_SWE'}, + '5min': {'key': 'AC_K0_SWE'}, + '1hr': {'base': 'AC_H2_SWE', 'key': 'AC_K1_SWE'}} + +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) diff --git a/pysatNASA/instruments/cnofs_ivm.py b/pysatNASA/instruments/cnofs_ivm.py index a7693648..59dbf57b 100644 --- a/pysatNASA/instruments/cnofs_ivm.py +++ b/pysatNASA/instruments/cnofs_ivm.py @@ -16,23 +16,6 @@ motion of the satellite the angle is converted into ion motion along two orthogonal directions, perpendicular to the satellite track. -References ----------- -A brief discussion of the C/NOFS mission and instruments can be found at -de La Beaujardière, O., et al. (2004), C/NOFS: A mission to forecast -scintillations, J. Atmos. Sol. Terr. Phys., 66, 1573–1591, -doi:10.1016/j.jastp.2004.07.030. - -Discussion of cleaning parameters for ion drifts can be found in: -Burrell, Angeline G., Equatorial topside magnetic field-aligned ion drifts -at solar minimum, The University of Texas at Dallas, ProQuest -Dissertations Publishing, 2012. 3507604. - -Discussion of cleaning parameters for ion temperature can be found in: -Hairston, M. R., W. R. Coley, and R. A. Heelis (2010), Mapping the -duskside topside ionosphere with CINDI and DMSP, J. Geophys. Res.,115, -A08324, doi:10.1029/2009JA015051. - Properties ---------- @@ -45,6 +28,7 @@ inst_id None supported + Warnings -------- - The sampling rate of the instrument changes on July 29th, 2010. @@ -52,6 +36,24 @@ - The cleaning parameters for the instrument are still under development. + +References +---------- +A brief discussion of the C/NOFS mission and instruments can be found at +de La Beaujardière, O., et al. (2004), C/NOFS: A mission to forecast +scintillations, J. Atmos. Sol. Terr. Phys., 66, 1573–1591, +doi:10.1016/j.jastp.2004.07.030. + +Discussion of cleaning parameters for ion drifts can be found in: +Burrell, Angeline G., Equatorial topside magnetic field-aligned ion drifts +at solar minimum, The University of Texas at Dallas, ProQuest +Dissertations Publishing, 2012. 3507604. + +Discussion of cleaning parameters for ion temperature can be found in: +Hairston, M. R., W. R. Coley, and R. A. Heelis (2010), Mapping the +duskside topside ionosphere with CINDI and DMSP, J. Geophys. Res.,115, +A08324, doi:10.1029/2009JA015051. + """ import datetime as dt @@ -245,12 +247,9 @@ def clean(self): # Set the load routine load = cdw.load -# Set the download routine -basic_tag = {'remote_dir': '/pub/data/cnofs/cindi/ivm_500ms_cdf/{year:4d}/', - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'CNOFS_CINDI_IVM_500MS'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/cnofs_plp.py b/pysatNASA/instruments/cnofs_plp.py index fb43ab9e..1b5b546e 100644 --- a/pysatNASA/instruments/cnofs_plp.py +++ b/pysatNASA/instruments/cnofs_plp.py @@ -29,12 +29,6 @@ The data is PRELIMINARY, and as such, is intended for BROWSE PURPOSES ONLY. -References ----------- -A brief discussion of the C/NOFS mission and instruments can be found at -de La Beaujardière, O., et al. (2004), C/NOFS: A mission to forecast -scintillations, J. Atmos. Sol. Terr. Phys., 66, 1573–1591, -doi:10.1016/j.jastp.2004.07.030. Properties ---------- @@ -54,11 +48,18 @@ - Currently no cleaning routine. - Module not written by PLP team. + +References +---------- +A brief discussion of the C/NOFS mission and instruments can be found at +de La Beaujardière, O., et al. (2004), C/NOFS: A mission to forecast +scintillations, J. Atmos. Sol. Terr. Phys., 66, 1573–1591, +doi:10.1016/j.jastp.2004.07.030. + """ import datetime as dt import functools -import numpy as np from pysat.instruments.methods import general as mm_gen @@ -86,21 +87,8 @@ init = functools.partial(mm_nasa.init, module=mm_cnofs, name=name) -def clean(self): - """Clean C/NOFS PLP data to the specified level. - - Note - ---- - Basic cleaning to find valid Epoch values - - """ - - for key in self.data.columns: - if key != 'Epoch': - fill = self.meta[key, self.meta.labels.fill_val] - idx, = np.where(self[key] == fill) - self[idx, key] = np.nan - return +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- @@ -119,11 +107,9 @@ def clean(self): load = cdw.load # Set the download routine -basic_tag = {'remote_dir': '/pub/data/cnofs/plp/plasma_1sec/{year:4d}/', - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'CNOFS_PLP_PLASMA_1SEC'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/cnofs_vefi.py b/pysatNASA/instruments/cnofs_vefi.py index 78d54e36..f2e4bf24 100644 --- a/pysatNASA/instruments/cnofs_vefi.py +++ b/pysatNASA/instruments/cnofs_vefi.py @@ -26,12 +26,6 @@ The data is PRELIMINARY, and as such, is intended for BROWSE PURPOSES ONLY. -References ----------- -A brief discussion of the C/NOFS mission and instruments can be found at -de La Beaujardière, O., et al. (2004), C/NOFS: A mission to forecast -scintillations, J. Atmos. Sol. Terr. Phys., 66, 1573–1591, -doi:10.1016/j.jastp.2004.07.030. Properties ---------- @@ -56,6 +50,14 @@ - Limited cleaning routine. - Module not written by VEFI team. + +References +---------- +A brief discussion of the C/NOFS mission and instruments can be found at +de La Beaujardière, O., et al. (2004), C/NOFS: A mission to forecast +scintillations, J. Atmos. Sol. Terr. Phys., 66, 1573–1591, +doi:10.1016/j.jastp.2004.07.030. + """ import datetime as dt @@ -122,11 +124,9 @@ def clean(self): load = cdw.load # Set the download routine -basic_tag = {'remote_dir': '/pub/data/cnofs/vefi/bfield_1sec/{year:4d}/', - 'fname': fname} -download_tags = {'': {'dc_b': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'dc_b': 'CNOFS_VEFI_BFIELD_1SEC'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/de2_fpi.py b/pysatNASA/instruments/de2_fpi.py new file mode 100644 index 00000000..4f0d210e --- /dev/null +++ b/pysatNASA/instruments/de2_fpi.py @@ -0,0 +1,107 @@ +# -*- coding: utf-8 -*- +"""The DE2 FPI instrument. + +Supports the Fabry-Perot Interferometer (FPI) instrument on Dynamics Explorer 2 +(DE2). + +From CDAWeb: + +The Fabry-Perot Interferometer (FPI) was a high-resolution remote sensing +instrument designed to measure the thermospheric temperature, meridional wind, +and density of the following metastable atoms: atomic oxygen (singlet S and D) +and the 2P state of ionic atomic oxygen. The FPI performed a wavelength analysis +on the light detected from the thermospheric emission features by spatially +scanning the interference fringe plane with a multichannel array detector. The +wavelength analysis characterized the Doppler line profile of the emitting +species. A sequential altitude scan performed by a commandable horizon scan +mirror provided a cross-sectional view of the thermodynamic and dynamic state of +the thermosphere below the DE 2 orbit. The information obtained from this +investigation was used to study the dynamic response of the thermosphere to the +energy sources caused by magnetospheric electric fields and the absorption of +solar ultraviolet light in the thermosphere. The instrument was based on the +visible airglow experiment (VAE) used in the AE program. The addition of a +scanning mirror, the Fabry-Perot etalon, an image plane detector, and a +calibration lamp were the principal differences. Interference filters isolated +lines at (in Angstroms) 5577, 6300, 7320, 5896, and 5200. The FPI had a field of +view of 0.53 deg (half-cone angle). More details are found in P. B. Hays et al., +Space Sci. Instrum., v. 5, n. 4, p. 395, 1981. From February 16, 1982 to +September 11, 1982 the DE satellite was inverted and the FPI measured galactic +emissions. + +Properties +---------- +platform + 'de2' +name + 'fpi' +inst_id + None Supported +tag + None Supported + + +Warnings +-------- +- Currently no cleaning routine. + + +References +---------- +Hays, P B, Killeen, T L, and Kennedy, B C. "Fabry-Perot interferometer on +Dynamics Explorer". Space Sci. Instrum., 5, 395-416, 1981. + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen + +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import de2 as mm_de2 +from pysatNASA.instruments.methods import general as mm_nasa + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'de2' +name = 'fpi' +tags = {'': '8 s cadence Fabry-Perot Interferometer data'} +inst_ids = {'': ['']} + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {'': {'': dt.datetime(1983, 1, 1)}} + +# ---------------------------------------------------------------------------- +# Instrument methods + + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_de2, name=name) + +# Use default clean +clean = mm_nasa.clean + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +fname = 'de2_neutral8s_fpi_{year:04d}{month:02d}{day:02d}_v{version:02d}.cdf' +supported_tags = {'': {'': fname}} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Use the default CDAWeb method +load = cdw.load + +# Support download routine +download_tags = {'': {'': 'DE2_NEUTRAL8S_FPI'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) + +# Support listing files currently on CDAWeb +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) diff --git a/pysatNASA/instruments/de2_lang.py b/pysatNASA/instruments/de2_lang.py index 07430357..01a77c56 100644 --- a/pysatNASA/instruments/de2_lang.py +++ b/pysatNASA/instruments/de2_lang.py @@ -25,12 +25,6 @@ or correct the inflight processed data. Time resolution was 0.5 seconds. -References ----------- -J. P. Krehbiel, L. H. Brace, R. F. Theis, W. H. Pinkus, and R. B. Kaplan, -"The Dynamics Explorer 2 Langmuir Probe (LANG)", Space Sci. Instrum., 5, -493-502, 1981. - Properties ---------- platform @@ -48,6 +42,12 @@ - Currently no cleaning routine. +References +---------- +J. P. Krehbiel, L. H. Brace, R. F. Theis, W. H. Pinkus, and R. B. Kaplan, +"The Dynamics Explorer 2 Langmuir Probe (LANG)", Space Sci. Instrum., 5, +493-502, 1981. + """ import datetime as dt @@ -79,8 +79,8 @@ # Use standard init routine init = functools.partial(mm_nasa.init, module=mm_de2, name=name) -# No cleaning, use standard warning function instead -clean = mm_nasa.clean_warn +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- # Instrument functions @@ -97,12 +97,9 @@ load = cdw.load # Set the download routine -basic_tag = {'remote_dir': ''.join(('/pub/data/de/de2/plasma_lang', - '/plasma500ms_lang_cdaweb/{year:4d}/')), - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'DE2_PLASMA500MS_LANG'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/de2_nacs.py b/pysatNASA/instruments/de2_nacs.py index b03212fe..dd6b7d16 100644 --- a/pysatNASA/instruments/de2_nacs.py +++ b/pysatNASA/instruments/de2_nacs.py @@ -50,12 +50,6 @@ were lost between 12 March 1982 and 31 March 1982 when the counter overflowed. -References ----------- -G. R. Carrignan, B. P. Block, J. C. Maurer, A. E. Hedin, C. A. Reber, -N. W. Spencer, "The neutral mass spectrometer on Dynamics Explorer B", -Space Sci. Instrum., 5, 429-441, 1981. - Properties ---------- platform @@ -67,10 +61,18 @@ tag None Supported + Warnings -------- - Currently no cleaning routine. + +References +---------- +G. R. Carrignan, B. P. Block, J. C. Maurer, A. E. Hedin, C. A. Reber, +N. W. Spencer, "The neutral mass spectrometer on Dynamics Explorer B", +Space Sci. Instrum., 5, 429-441, 1981. + """ import datetime as dt @@ -102,8 +104,8 @@ # Use standard init routine init = functools.partial(mm_nasa.init, module=mm_de2, name=name) -# No cleaning, use standard warning function instead -clean = mm_nasa.clean_warn +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- # Instrument functions @@ -120,12 +122,9 @@ load = cdw.load # Support download routine -basic_tag = {'remote_dir': ''.join(('/pub/data/de/de2/neutral_gas_nacs', - '/neutral1s_nacs_cdaweb/{year:4d}/')), - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'DE2_NEUTRAL1S_NACS'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Support listing files currently on CDAWeb -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/de2_rpa.py b/pysatNASA/instruments/de2_rpa.py index 912dd66f..e06b67b3 100644 --- a/pysatNASA/instruments/de2_rpa.py +++ b/pysatNASA/instruments/de2_rpa.py @@ -26,21 +26,11 @@ spectrum; and the concentration of H+, He+, O+, and Fe+, and of molecular ions near perigee. -It includes the DUCT portion of the high resolutiondata from the Dynamics -Explorer 2 (DE-2) Retarding Potential Analyzer (RPA) for the whole DE-2 mission -time period in ASCII format. This version was generated at NSSDC from the -PI-provided binary data (SPIO-00232). The DUCT files include RPA measurements -ofthe total ion concentration every 64 times per second. Due to a failure in -the instrument memory system RPA data are not available from 81317 06:26:40 UT -to 82057 13:16:00 UT. This data set is based on the revised version of the RPA -files that was submitted by the PI team in June of 1995. The revised RPA data -include a correction to the spacecraft potential. +Due to a failure in the instrument memory system RPA data are not available +from 81317 06:26:40 UT to 82057 13:16:00 UT. This data set is based on the +revised version of the RPA files that was submitted by the PI team in June of +1995. The revised RPA data include a correction to the spacecraft potential. -References ----------- -W. B. Hanson, R. A. Heelis, R. A. Power, C. R. Lippincott, D. R. Zuccaro, -B. J. Holt, L. H. Harmon, and S. Sanatani, “The retarding potential analyzer -for dynamics explorer-B,” Space Sci. Instrum. 5, 503–510 (1981). Properties ---------- @@ -53,10 +43,18 @@ tag None Supported + Warnings -------- - Currently no cleaning routine. + +References +---------- +W. B. Hanson, R. A. Heelis, R. A. Power, C. R. Lippincott, D. R. Zuccaro, +B. J. Holt, L. H. Harmon, and S. Sanatani, “The retarding potential analyzer +for dynamics explorer-B,” Space Sci. Instrum. 5, 503–510 (1981). + """ import datetime as dt @@ -73,13 +71,13 @@ platform = 'de2' name = 'rpa' -tags = {'': '2 sec cadence RPA data'} # this is the default cadence -inst_ids = {'': ['']} +tags = {'': '2 sec cadence RPA data'} +inst_ids = {'': [tag for tag in tags]} # ---------------------------------------------------------------------------- # Instrument test attributes -_test_dates = {'': {'': dt.datetime(1983, 1, 1)}} +_test_dates = {'': {tag: dt.datetime(1983, 1, 1) for tag in tags}} # ---------------------------------------------------------------------------- # Instrument methods @@ -88,8 +86,8 @@ # Use standard init routine init = functools.partial(mm_nasa.init, module=mm_de2, name=name) -# No cleaning, use standard warning function instead -clean = mm_nasa.clean_warn +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- # Instrument functions @@ -97,8 +95,11 @@ # Use the default CDAWeb and pysat methods # Set the list_files routine -fname = 'de2_ion2s_rpa_{year:04d}{month:02d}{day:02d}_v{version:02d}.cdf' -supported_tags = {'': {'': fname}} +datestr = '{year:04d}{month:02d}{day:02d}_v{version:02d}' +dataproduct = {'': 'ion2s'} +fname = 'de2_{dp:s}_rpa_{datestr:s}.cdf' +supported_tags = {'': {tag: fname.format(dp=dataproduct[tag], datestr=datestr) + for tag in tags}} list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) @@ -106,12 +107,9 @@ load = cdw.load # Set the download routine -basic_tag = {'remote_dir': ''.join(('/pub/data/de/de2/plasma_rpa', - '/ion2s_cdaweb/{year:4d}/')), - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'DE2_ION2S_RPA'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/de2_vefi.py b/pysatNASA/instruments/de2_vefi.py new file mode 100644 index 00000000..9e4140e6 --- /dev/null +++ b/pysatNASA/instruments/de2_vefi.py @@ -0,0 +1,105 @@ +"""Module for the DE2 VEFI instrument. + +From CDAWeb (adpated): +This directory gathers data for the VEFI instrument that flew on the DE 2 +spacecraft which was launched on 3 August 1981 into an elliptical orbit with +an altitude range of 300 km to 1000 km and re-entered the atmosphere on +19 February 1983. + +dca (NSSDC ID: 81-070B-02C) + +This data set contains the averaged (2 samples per second) DC electric fields in +spacecraft coordinates and orbit information in ASCII format. + +ac (NSSDC ID: 81-070B-02E) + +This data set contains the averaged AC electric field data (1 or 2 points per +second) and orbit information. + +References +---------- +Maynard, N. C., E. A. Bielecki, H. G. Burdick, Instrumentation for vector +electric field measurements from DE-B, Space Sci. Instrum., 5, 523, 1981. + +Properties +---------- +platform + 'de2' +name + 'vefi' +inst_id + None Supported +tag + 'dca' or 'ac' + + +Warnings +-------- +- Currently no cleaning routine. + + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import de2 as mm_de2 +from pysatNASA.instruments.methods import general as mm_nasa + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'de2' +name = 'vefi' +tags = {'': '62 ms combination of Electric Field and Magnetometer', + 'dca': '500 ms cadence DC Averaged Electric Field data', + 'ac': '500 ms cadence AC Electric Field data'} +inst_ids = {'': [tag for tag in tags]} + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {'': {tag: dt.datetime(1983, 1, 1) for tag in tags}} + + +# ---------------------------------------------------------------------------- +# Instrument methods + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_de2, name=name) + +# Use default clean +clean = mm_nasa.clean + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +datestr = '{year:04d}{month:02d}{day:02d}_v{version:02d}' +fid = {'': '62ms_vefimagb', + 'ac': 'ac500ms_vefi', + 'dca': 'dca500ms_vefi'} +fname = 'de2_{fid:s}_{datestr:s}.cdf' +supported_tags = {'': {tag: fname.format(fid=fid[tag], datestr=datestr) + for tag in tags}} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the load routine +# Forcing use of cdflib as default since pysatCDF has a known issue with vefi +# data. See pysat/pysatCDF#48 +load = functools.partial(cdw.load, use_cdflib=True) + +# Set the download routine +download_tags = {'': {'': 'DE2_62MS_VEFIMAGB', + 'ac': 'DE2_AC500MS_VEFI', + 'dca': 'DE2_DCA500MS_VEFI'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) diff --git a/pysatNASA/instruments/de2_wats.py b/pysatNASA/instruments/de2_wats.py index 1345841a..e3b52bb7 100644 --- a/pysatNASA/instruments/de2_wats.py +++ b/pysatNASA/instruments/de2_wats.py @@ -47,12 +47,6 @@ about the processing done at NSSDC is given in WATS_NSSDC_PRO_DE.DOC. -References ----------- -N. W. Spencer, L. E. Wharton, H. B. Niemann, A. E. Hedin, G. R. Carrignan, -J. C. Maurer, "The Dynamics Explorer Wind and Temperature Spectrometer", -Space Sci. Instrum., 5, 417-428, 1981. - Properties ---------- platform @@ -64,10 +58,18 @@ tag None Supported + Warnings -------- - Currently no cleaning routine. + +References +---------- +N. W. Spencer, L. E. Wharton, H. B. Niemann, A. E. Hedin, G. R. Carrignan, +J. C. Maurer, "The Dynamics Explorer Wind and Temperature Spectrometer", +Space Sci. Instrum., 5, 417-428, 1981. + """ import datetime as dt @@ -99,8 +101,8 @@ # Use standard init routine init = functools.partial(mm_nasa.init, module=mm_de2, name=name) -# No cleaning, use standard warning function instead -clean = mm_nasa.clean_warn +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- # Instrument functions @@ -117,12 +119,9 @@ load = cdw.load # Set the download routine -basic_tag = {'remote_dir': ''.join(('/pub/data/de/de2/neutral_gas_wats', - '/wind2s_wats_cdaweb/{year:4d}/')), - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'DE2_WIND2S_WATS'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/dmsp_ssusi.py b/pysatNASA/instruments/dmsp_ssusi.py new file mode 100644 index 00000000..268985a8 --- /dev/null +++ b/pysatNASA/instruments/dmsp_ssusi.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +"""Module for the DMSP SSUSI instrument. + +Supports the Special Sensor Ultraviolet Spectrographic Imager (SSUSI) +instrument on Defense Meteorological Satellite Program (DMSP). + +From JHU APL: + +SSUSI was designed for the DMSP Block 5D-3 satellites. These satellites are +placed into nearly polar, sun-synchronous orbits at an altitude of about 850 km. +SSUSI is a remote-sensing instrument which measures ultraviolet (UV) emissions +in five different wavelength bands from the Earth's upper atmosphere. SSUSI is +mounted on a nadir-looking panel of the satellite. The multicolor images from +SSUSI cover the visible Earth disk from horizon to horizon and the anti-sunward +limb up to an altitude of approximately 520 km. + +The UV images and the derived environmental data provide the Air Force Weather +Agency (Offutt Air Force Base, Bellevue, NE) with near real-time information +that can be utilized in a number of applications, such as maintenance of high +frequency (HF) communication links and related systems and assessment of the +environmental hazard to astronauts on the Space Station. + + +Properties +---------- +platform + 'dmsp' +name + 'ssusi' +tag + 'edr-aurora' +inst_id + 'f16', 'f17', 'f18', 'f19' + + +Warnings +-------- +- Currently no cleaning routine. + + +References +---------- +Larry J. Paxton, Daniel Morrison, Yongliang Zhang, Hyosub Kil, Brian Wolven, +Bernard S. Ogorzalek, David C. Humm, and Ching-I. Meng "Validation of remote +sensing products produced by the Special Sensor Ultraviolet Scanning Imager +(SSUSI): a far UV-imaging spectrograph on DMSP F-16", Proc. SPIE 4485, Optical +Spectroscopic Techniques, Remote Sensing, and Instrumentation for Atmospheric +and Space Research IV, (30 January 2002); doi:10.1117/12.454268 + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen + +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import dmsp as mm_dmsp +from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import jhuapl + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'dmsp' +name = 'ssusi' +tags = {'edr-aurora': ''.join(['Electron energy flux and mean energy, auroral', + ' boundaries, identified discrete auroral arcs,', + ' hemispheric power, and magnetic field lines ', + 'traced to 4 Earth radii'])} +inst_ids = {sat_id: list(tags.keys()) + for sat_id in ['f16', 'f17', 'f18', 'f19']} + +pandas_format = False +multi_file_day = True + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {inst_id: {tag: dt.datetime(2015, 1, 1) for tag in tags.keys()} + for inst_id in inst_ids.keys()} + +# ---------------------------------------------------------------------------- +# Instrument methods + + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_dmsp, name=name) + +# No cleaning, use standard warning function instead +clean = mm_nasa.clean_warn + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +fname = ''.join(['dmsp{inst_id:s}_ssusi_{tag:s}_{{year:04d}}{{day:03d}}T', + '{{hour:02d}}{{minute:02d}}{{second:02d}}-???????T??????-REV', + '?????_vA{{version:1d}}.?.?r{{cycle:03d}}.nc']) +supported_tags = {sat_id: {tag: fname.format(tag=tag, inst_id=sat_id) + for tag in tags.keys()} + for sat_id in inst_ids.keys()} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the load routine +load = functools.partial(jhuapl.load_edr_aurora, pandas_format=pandas_format, + strict_dim_check=False) + +# Set the download routine +basic_tag = {'remote_dir': ''.join(('/pub/data/dmsp/dmsp{inst_id:s}/ssusi/', + '/data/{tag:s}/{{year:4d}}/{{day:03d}}/')), + 'fname': fname} +download_tags = { + sat_id: {tag: {btag: basic_tag[btag].format(tag=tag, inst_id=sat_id) + for btag in basic_tag.keys()} for tag in tags.keys()} + for sat_id in inst_ids.keys()} +download = functools.partial(cdw.download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.list_remote_files, + supported_tags=download_tags) diff --git a/pysatNASA/instruments/formosat1_ivm.py b/pysatNASA/instruments/formosat1_ivm.py index 24be65bd..3ac177d9 100644 --- a/pysatNASA/instruments/formosat1_ivm.py +++ b/pysatNASA/instruments/formosat1_ivm.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -"""Module for the ICON EUV instrument. +"""Module for the Formosat-1 IVM instrument. Supports the Ion Velocity Meter (IVM) onboard the Formosat-1 (formerly ROCSAT-1) mission. Downloads data from the NASA Coordinated Data Analysis @@ -74,8 +74,8 @@ def init(self): return -# No cleaning, use standard warning function instead -clean = mm_nasa.clean_warn +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- # Instrument functions @@ -92,12 +92,9 @@ def init(self): load = cdw.load # Set the download routine -basic_tag = {'remote_dir': ''.join(('/pub/data/formosat-rocsat/formosat-1', - '/ipei/{year:4d}/')), - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'RS_K0_IPEI'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/icon_euv.py b/pysatNASA/instruments/icon_euv.py index 7a5be9e4..f3abcf58 100644 --- a/pysatNASA/instruments/icon_euv.py +++ b/pysatNASA/instruments/icon_euv.py @@ -127,13 +127,11 @@ def clean(self): supported_tags=supported_tags) # Set the download routine -basic_tag = {'remote_dir': '/pub/data/icon/l2/l2-6_euv/{year:04d}/', - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'ICON_L2-6_EUV'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) @@ -214,19 +212,21 @@ def load(fnames, tag='', inst_id='', keep_original_names=False): """ labels = {'units': ('Units', str), 'name': ('Long_Name', str), 'notes': ('Var_Notes', str), 'desc': ('CatDesc', str), - 'min_val': ('ValidMin', float), - 'max_val': ('ValidMax', float), 'fill_val': ('FillVal', float)} + 'min_val': ('ValidMin', (int, float)), + 'max_val': ('ValidMax', (int, float)), + 'fill_val': ('FillVal', (int, float))} meta_translation = {'FieldNam': 'plot'} data, meta = pysat.utils.io.load_netcdf(fnames, epoch_name='Epoch', pandas_format=pandas_format, - labels=labels, + meta_kwargs={'labels': labels}, meta_processor=filter_metadata, meta_translation=meta_translation, drop_meta_labels=['Valid_Max', 'Valid_Min', - '_FillValue']) + '_FillValue'], + decode_times=False) # xarray can't merge if variable and dim names are the same if 'Altitude' in data.dims: diff --git a/pysatNASA/instruments/icon_fuv.py b/pysatNASA/instruments/icon_fuv.py index 19b3cae5..7749f006 100644 --- a/pysatNASA/instruments/icon_fuv.py +++ b/pysatNASA/instruments/icon_fuv.py @@ -119,16 +119,13 @@ def clean(self): supported_tags=supported_tags) # Set the download routine -basic_tag24 = {'remote_dir': '/pub/data/icon/l2/l2-4_fuv_day/{year:04d}/', - 'fname': fname24} -basic_tag25 = {'remote_dir': '/pub/data/icon/l2/l2-5_fuv_night/{year:04d}/', - 'fname': fname25} -download_tags = {'': {'day': basic_tag24, 'night': basic_tag25}} +download_tags = {'': {'day': 'ICON_L2-4_FUV_DAY', + 'night': 'ICON_L2-5_FUV_NIGHT'}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) @@ -211,8 +208,9 @@ def load(fnames, tag='', inst_id='', keep_original_names=False): """ labels = {'units': ('Units', str), 'name': ('Long_Name', str), 'notes': ('Var_Notes', str), 'desc': ('CatDesc', str), - 'min_val': ('ValidMin', float), - 'max_val': ('ValidMax', float), 'fill_val': ('FillVal', float)} + 'min_val': ('ValidMin', (int, float)), + 'max_val': ('ValidMax', (int, float)), + 'fill_val': ('FillVal', (int, float))} meta_translation = {'FieldNam': 'plot', 'LablAxis': 'axis', 'FIELDNAM': 'plot', 'LABLAXIS': 'axis', @@ -223,8 +221,9 @@ def load(fnames, tag='', inst_id='', keep_original_names=False): data, meta = pysat.utils.io.load_netcdf(fnames, epoch_name='Epoch', pandas_format=pandas_format, - labels=labels, + meta_kwargs={'labels': labels}, meta_processor=filter_metadata, meta_translation=meta_translation, - drop_meta_labels=drop_labels) + drop_meta_labels=drop_labels, + decode_times=False) return data, meta diff --git a/pysatNASA/instruments/icon_ivm.py b/pysatNASA/instruments/icon_ivm.py index e16ca5b0..ff6012d0 100644 --- a/pysatNASA/instruments/icon_ivm.py +++ b/pysatNASA/instruments/icon_ivm.py @@ -192,13 +192,12 @@ def clean(self): # Set the download routine dirstr = '/pub/data/icon/l2/l2-7_ivm-{id:s}/{{year:4d}}/' -download_tags = {id: {'': {'remote_dir': dirstr.format(id=id), - 'fname': supported_tags[id]['']}} - for id in ['a', 'b']} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'a': {'': 'ICON_L2-7_IVM-A'}, 'b': {'': 'ICON_L2-7_IVM-B'}} + +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) @@ -273,15 +272,16 @@ def load(fnames, tag='', inst_id='', keep_original_names=False): labels = {'units': ('Units', str), 'name': ('Long_Name', str), 'notes': ('Var_Notes', str), 'desc': ('CatDesc', str), - 'min_val': ('ValidMin', float), - 'max_val': ('ValidMax', float), 'fill_val': ('FillVal', float)} + 'min_val': ('ValidMin', (int, float)), + 'max_val': ('ValidMax', (int, float)), + 'fill_val': ('FillVal', (int, float))} meta_translation = {'FieldNam': 'plot', 'LablAxis': 'axis', 'ScaleTyp': 'scale', '_FillValue': 'FillVal'} data, meta = pysat.utils.io.load_netcdf(fnames, epoch_name='Epoch', - labels=labels, + meta_kwargs={'labels': labels}, meta_processor=filter_metadata, meta_translation=meta_translation, drop_meta_labels=['Valid_Max', diff --git a/pysatNASA/instruments/icon_mighti.py b/pysatNASA/instruments/icon_mighti.py index 006a9f8a..a108e8d2 100644 --- a/pysatNASA/instruments/icon_mighti.py +++ b/pysatNASA/instruments/icon_mighti.py @@ -226,30 +226,23 @@ def _clean_vars(var_list, flag, min_level): supported_tags=supported_tags) # Set the download routine -dirstr1 = '/pub/data/icon/l2/l2-1_mighti-{{id:s}}_los-wind-{color:s}/' -dirstr2 = '/pub/data/icon/l2/l2-2_mighti_vector-wind-{color:s}/' -dirstr3 = '/pub/data/icon/l2/l2-3_mighti-{id:s}_temperature/' -dirnames = {'los_wind_green': dirstr1.format(color='green'), - 'los_wind_red': dirstr1.format(color='red'), - 'vector_wind_green': dirstr2.format(color='green'), - 'vector_wind_red': dirstr2.format(color='red'), - 'temperature': dirstr3} - -download_tags = {} -for inst_id in supported_tags.keys(): - download_tags[inst_id] = {} - for tag in supported_tags[inst_id].keys(): - fname = supported_tags[inst_id][tag] - - download_tags[inst_id][tag] = { - 'remote_dir': ''.join((dirnames[tag].format(id=inst_id), - '{year:04d}/')), - 'fname': fname} - -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'vector': + {'vector_wind_green': 'ICON_L2-2_MIGHTI_VECTOR-WIND-GREEN', + 'vector_wind_red': 'ICON_L2-2_MIGHTI_VECTOR-WIND-RED'}, + 'a': + {'los_wind_green': 'ICON_L2-1_MIGHTI-A_LOS-WIND-GREEN', + 'los_wind_red': 'ICON_L2-1_MIGHTI-A_LOS-WIND-RED', + 'temperature': 'ICON_L2-3_MIGHTI-A_TEMPERATURE'}, + 'b': + {'los_wind_green': 'ICON_L2-1_MIGHTI-B_LOS-WIND-GREEN', + 'los_wind_red': 'ICON_L2-1_MIGHTI-B_LOS-WIND-RED', + 'temperature': 'ICON_L2-3_MIGHTI-B_TEMPERATURE'}} + + +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) @@ -325,8 +318,9 @@ def load(fnames, tag='', inst_id='', keep_original_names=False): """ labels = {'units': ('Units', str), 'name': ('Long_Name', str), 'notes': ('Var_Notes', str), 'desc': ('CatDesc', str), - 'min_val': ('ValidMin', float), - 'max_val': ('ValidMax', float), 'fill_val': ('FillVal', float)} + 'min_val': ('ValidMin', (int, float)), + 'max_val': ('ValidMax', (int, float)), + 'fill_val': ('FillVal', (int, float))} meta_translation = {'FieldNam': 'plot', 'LablAxis': 'axis', 'FIELDNAM': 'plot', 'LABLAXIS': 'axis', @@ -335,14 +329,15 @@ def load(fnames, tag='', inst_id='', keep_original_names=False): data, meta = pysat.utils.io.load_netcdf(fnames, epoch_name='Epoch', pandas_format=pandas_format, - labels=labels, + meta_kwargs={'labels': labels}, meta_processor=filter_metadata, meta_translation=meta_translation, drop_meta_labels=['Valid_Max', 'Valid_Min', 'Valid_Range', '_Fillvalue', - 'ScaleTyp']) + 'ScaleTyp'], + decode_times=False) # xarray can't merge if variable and dim names are the same if 'Altitude' in data.dims: diff --git a/pysatNASA/instruments/igs_gps.py b/pysatNASA/instruments/igs_gps.py new file mode 100644 index 00000000..99cd4690 --- /dev/null +++ b/pysatNASA/instruments/igs_gps.py @@ -0,0 +1,134 @@ +# -*- coding: utf-8 -*- +"""Module for the IGS GPS data products. + +Supports GPS data produced from International GNSS Service Total Electron +Content (TEC). + +From CDAWeb (modified): + +This directory contains the GPS Total Electron Content (TEC) data produced by +the International Global Navigation Satellite Systems Service (IGS) Ionosphere +Working Group and by the Analysis Centers that have contributed to the IGS data +including CODE of the University of Bern (Switzerland), ESA of the European +Space Operations Center (ESOC) in Darmstadt (Germany), JPL of the Jet Propulsion +Laboratory, Pasadena (USA), and UPC of the University Politechnical Catalonia in +Barcelona (Spain). The IGS data are a computed as a weighted mean of the data +from the four analysis centers. + +The rate of TEC index (ROTI) characterizes TEC fluctuations observed along +receiver-to-satellite line of sight links over a 5-minute interval. +The measurement is obtained by processing GNSS dual-frequency phase data and +computing the standard deviation of the rate of TEC change over that interval +after removing its background variation trend. + +ROTI data are provided as global maps using a 2.5 x 5 degree (geographic +latitude x longitude) grid. The median ROTI value is calculated in each bin. +GNSS data contributing to the ROTI computation are primarily collected from +the global network of International GNSS Service and the regional network of +Continuous Operating Reference Station (CORS). + +Properties +---------- +platform + 'igs' +name + 'gps' +tag + ['tec', 'roti'] +inst_id + ['15min', '1hr', '2hr'] + + +Warnings +-------- +- The cleaning parameters for the instrument are still under development. + + +References +---------- +M. Hernández-Pajares, J.M. Juan, J. Sanz, R. Orus, A. Garcia-Rigo, J. Feltens, +A. Komjathy, S.C. Schaer, and A. Krankowski, The IGS VTEC maps: a reliable +source of ionospheric information since 1998Journal of Geodesy (2009) 83:263–275 +doi:10.1007/s00190-008-0266-1 + +Feltens, J., M. Angling, N. Jackson‐Booth, N. Jakowski, M. Hoque, M. +Hernández‐Pajares, A. Aragón‐Àngel, R. Orús, and R. Zandbergen (2011), +Comparative testing of four ionospheric models driven with GPS measurements, +Radio Sci., 46, RS0D12, doi:10.1029/2010RS004584 + +Peng Chen, Hang Liu, Yongchao Ma, Naiquan Zheng, Accuracy and consistency of +different global ionospheric maps released by IGS ionosphere associate analysis +centers, Advances in Space Research, Volume 65, Issue 1, 2020, Pages 163-174, +doi:10.1016/j.asr.2019.09.042. + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen + +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import igs as mm_igs + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'igs' +name = 'gps' +tags = {'tec': 'Total Electron Content', + 'roti': 'Rate of Change in TEC'} +# tags = {'15min': '15 min cadence TEC', +# '1hr': '1 hour cadence TEC', +# '2hr': '2 hour cadence TEC'} +inst_ids = {'15min': ['tec', 'roti'], + '1hr': ['tec'], + '2hr': ['tec']} +pandas_format = False +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {jj: {kk: dt.datetime(2013, 1, 1) for kk in inst_ids[jj]} + for jj in inst_ids.keys()} +# ---------------------------------------------------------------------------- +# Instrument methods + + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_igs, name=name) + + +# Use default clean +clean = mm_nasa.clean + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +cdas_labels = {'15min': {'tec': 'GPS_TEC15MIN_IGS', + 'roti': 'GPS_ROTI15MIN_JPL'}, + '1hr': {'tec': 'GPS_TEC1HR_IGS'}, + '2hr': {'tec': 'GPS_TEC2HR_IGS'}} + +date_ver = '{year:4d}{month:02d}{day:02d}_v{version:02d}' +fname = '{cdas:s}_{date_ver:s}.cdf' + +supported_tags = {id: {tag: fname.format(cdas=cdas_labels[id][tag].lower(), + date_ver=date_ver) + for tag in inst_ids[id]} for id in inst_ids.keys()} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the load routine +load = functools.partial(cdw.load, pandas_format=pandas_format, + use_cdflib=True) + +# Set the download routine +download = functools.partial(cdw.cdas_download, supported_tags=cdas_labels) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=cdas_labels) diff --git a/pysatNASA/instruments/iss_fpmu.py b/pysatNASA/instruments/iss_fpmu.py index b85c6aa5..c98f907c 100644 --- a/pysatNASA/instruments/iss_fpmu.py +++ b/pysatNASA/instruments/iss_fpmu.py @@ -26,12 +26,12 @@ import datetime as dt import functools -import numpy as np from pysat.instruments.methods import general as mm_gen from pysat import logger from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa # ---------------------------------------------------------------------------- # Instrument attributes @@ -79,25 +79,8 @@ def init(self): return -def clean(self): - """Clean ISS FPMU data to the specified level. - - Note - ---- - 'clean' - Replace Te and Ni fill values with NaN - 'dusty' - Same as clean - 'dirty' - Same as clean - 'none' - Not applied, default fill values are preserved - - """ - - # Replace Te data fill - self.data.replace(-999., np.nan, inplace=True) - - # Replace Ne data fill - self.data.replace(-9.9999998e+30, np.nan, inplace=True) - - return +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- @@ -115,12 +98,9 @@ def clean(self): load = cdw.load # Set the download routine -basic_tag = {'remote_dir': ''.join(('/pub/data/international_space_station_iss', - '/sp_fpmu/{year:4d}/')), - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'ISS_SP_FPMU'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/jpl_gps.py b/pysatNASA/instruments/jpl_gps.py index ddbe66cf..040ceac0 100644 --- a/pysatNASA/instruments/jpl_gps.py +++ b/pysatNASA/instruments/jpl_gps.py @@ -1,6 +1,11 @@ # -*- coding: utf-8 -*- """Module for the JPL GPS data products. +.. deprecated:: 0.0.5 + This module is now included in igs_gps.py. + This instrument will be removed in 0.1.0+ to reduce redundancy. + + Supports ROTI data produced at JPL from International GNSS Service Total Electron Content (TEC) @@ -16,16 +21,6 @@ the global network of International GNSS Service and the regional network of Continuous Operating Reference Station (CORS). -References ----------- -Pi, X., A. J. Mannucci, U. J. Lindqwister, and C. M. Ho, Monitoring of global -ionospheric irregularities using the worldwide GPS network, Geophys. Res. -Lett., 24, 2283, 1997. - -Pi, X., F. J. Meyer, K. Chotoo, Anthony Freeman, R. G. Caton, and C. T. -Bridgwood, Impact of ionospheric scintillation on Spaceborne SAR observations -studied using GNSS, Proc. ION-GNSS, pp.1998-2006, 2012. - Properties ---------- @@ -38,14 +33,27 @@ inst_id None supported + Warnings -------- - The cleaning parameters for the instrument are still under development. + +References +---------- +Pi, X., A. J. Mannucci, U. J. Lindqwister, and C. M. Ho, Monitoring of global +ionospheric irregularities using the worldwide GPS network, Geophys. Res. +Lett., 24, 2283, 1997. + +Pi, X., F. J. Meyer, K. Chotoo, Anthony Freeman, R. G. Caton, and C. T. +Bridgwood, Impact of ionospheric scintillation on Spaceborne SAR observations +studied using GNSS, Proc. ION-GNSS, pp.1998-2006, 2012. + """ import datetime as dt import functools +import warnings import pysat from pysat.instruments.methods import general as mm_gen @@ -78,6 +86,10 @@ def init(self): """ + warnings.warn(" ".join(["The instrument module `jpl_gps` has", + "been deprecated and will be removed in 0.1.0+."]), + DeprecationWarning, stacklevel=2) + pysat.logger.info('') self.acknowledgements = mm_gps.ackn_str self.references = '\n'.join((mm_gps.refs['mission'], @@ -86,8 +98,8 @@ def init(self): return -# No cleaning, use standard warning function instead -clean = mm_nasa.clean_warn +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- # Instrument functions @@ -101,14 +113,13 @@ def init(self): supported_tags=supported_tags) # Set the load routine -load = functools.partial(cdw.load, pandas_format=pandas_format) +load = functools.partial(cdw.load, pandas_format=pandas_format, + use_cdflib=True) # Set the download routine -basic_tag = {'remote_dir': '/pub/data/gps/roti15min_jpl/{year:4d}/', - 'fname': fname} -download_tags = {'': {'roti': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'roti': 'GPS_ROTI15MIN_JPL'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/methods/__init__.py b/pysatNASA/instruments/methods/__init__.py index 5bde9a41..8542fcbc 100644 --- a/pysatNASA/instruments/methods/__init__.py +++ b/pysatNASA/instruments/methods/__init__.py @@ -4,6 +4,11 @@ from pysatNASA.instruments.methods import cdaweb # noqa F401 from pysatNASA.instruments.methods import cnofs # noqa F401 from pysatNASA.instruments.methods import de2 # noqa F401 +from pysatNASA.instruments.methods import dmsp # noqa F401 from pysatNASA.instruments.methods import general # noqa F401 +from pysatNASA.instruments.methods import gps # noqa F401 from pysatNASA.instruments.methods import icon # noqa F401 +from pysatNASA.instruments.methods import jhuapl # noqa F401 from pysatNASA.instruments.methods import omni # noqa F401 +from pysatNASA.instruments.methods import ses14 # noqa F401 +from pysatNASA.instruments.methods import timed # noqa F401 diff --git a/pysatNASA/instruments/methods/_cdf.py b/pysatNASA/instruments/methods/_cdf.py index 29071ff8..c02dc55d 100644 --- a/pysatNASA/instruments/methods/_cdf.py +++ b/pysatNASA/instruments/methods/_cdf.py @@ -87,12 +87,18 @@ def __init__(self, filename, self._cdf_file = cdflib.CDF(self._filename) self._cdf_info = self._cdf_file.cdf_info() + self.global_attrs = self._cdf_file.globalattsget() self.data = {} self.meta = {} self._dependencies = {} - self._variable_names = (self._cdf_info['rVariables'] - + self._cdf_info['zVariables']) + if hasattr(self._cdf_info, 'rVariables'): + self._variable_names = (self._cdf_info.rVariables + + self._cdf_info.zVariables) + else: + # cdflib < 1.0 stores info as a dict + self._variable_names = (self._cdf_info['rVariables'] + + self._cdf_info['zVariables']) self.load_variables() @@ -156,8 +162,13 @@ def set_epoch(self, x_axis_var): """ - data_type_description = self._cdf_file.varinq( - x_axis_var)['Data_Type_Description'] + if hasattr(self._cdf_file.varinq(x_axis_var), 'Data_Type_Description'): + data_type_description = self._cdf_file.varinq( + x_axis_var).Data_Type_Description + else: + # cdflib < 1.0 stores this as a dict + data_type_description = self._cdf_file.varinq( + x_axis_var)['Data_Type_Description'] center_measurement = self._center_measurement cdf_file = self._cdf_file @@ -298,7 +309,12 @@ def load_variables(self): if not re.match(var_regex, variable_name): # Skip this variable continue - var_atts = self._cdf_file.varattsget(variable_name, to_np=True) + try: + var_atts = self._cdf_file.varattsget(variable_name, to_np=True) + except TypeError: + # cdflib 1.0+ drops to_np kwarg, assumes True + var_atts = self._cdf_file.varattsget(variable_name) + for k in var_atts: var_atts[k] = var_atts[k] # [0] @@ -319,13 +335,14 @@ def load_variables(self): continue if "FILLVAL" in var_atts: - if (var_properties['Data_Type_Description'] == 'CDF_FLOAT' - or var_properties['Data_Type_Description'] - == 'CDF_REAL4' - or var_properties['Data_Type_Description'] - == 'CDF_DOUBLE' - or var_properties['Data_Type_Description'] - == 'CDF_REAL8'): + if hasattr(var_properties, 'Data_Type_Description'): + data_type_desc = var_properties.Data_Type_Description + else: + # cdflib < 1.0 stores this as a dict + data_type_desc = var_properties['Data_Type_Description'] + + if data_type_desc in ['CDF_FLOAT', 'CDF_REAL4', 'CDF_DOUBLE', + 'CDF_REAL8']: if ydata[ydata == var_atts["FILLVAL"]].size != 0: ydata[ydata == var_atts["FILLVAL"]] = np.nan @@ -360,9 +377,9 @@ def load_variables(self): def to_pysat(self, flatten_twod=True, labels={'units': ('Units', str), 'name': ('Long_Name', str), 'notes': ('Var_Notes', str), 'desc': ('CatDesc', str), - 'min_val': ('ValidMin', float), - 'max_val': ('ValidMax', float), - 'fill_val': ('FillVal', float)}): + 'min_val': ('ValidMin', (float, int, str)), + 'max_val': ('ValidMax', (float, int, str)), + 'fill_val': ('FillVal', (float, int, str))}): """Export loaded CDF data into data, meta for pysat module. Parameters @@ -382,9 +399,9 @@ def to_pysat(self, flatten_twod=True, that order. (default={'units': ('units', str), 'name': ('long_name', str), 'notes': ('notes', str), 'desc': ('desc', str), - 'min_val': ('value_min', float), - 'max_val': ('value_max', float) - 'fill_val': ('fill', float)}) + 'min_val': ('value_min', (float, int, str)), + 'max_val': ('value_max', (float, int, str)) + 'fill_val': ('fill', (float, int, str))}) Returns ------- @@ -407,7 +424,7 @@ def to_pysat(self, flatten_twod=True, # and utilizing the attribute labels provided by the user meta = pysat.Meta(pds.DataFrame.from_dict(self.meta, orient='index'), labels=labels) - + meta.header = pysat.MetaHeader(header_data=self.global_attrs) cdata = self.data.copy() lower_names = [name.lower() for name in meta.keys()] for name, true_name in zip(lower_names, meta.keys()): diff --git a/pysatNASA/instruments/methods/ace.py b/pysatNASA/instruments/methods/ace.py new file mode 100644 index 00000000..f9e78412 --- /dev/null +++ b/pysatNASA/instruments/methods/ace.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +"""Provides non-instrument specific routines for ACE data.""" + +from pysatNASA.instruments.methods import cdaweb as cdw + +ackn_str = ' '.join(("Please acknowledge the NASA National Space Science Data", + "Center, the Space Physics Data Facility, and the ACE", + "Principal Investigator, Edward C. Stone of the", + "California Institute of Technology, for usage of ACE", + "data from this site in publications and presentations.")) + +refs = {'mission': ' '.join(('Stone, E., Frandsen, A., Mewaldt, R. et al.', + 'The Advanced Composition Explorer. Space Science', + 'Reviews 86, 1–22 (1998).', + 'https://doi.org/10.1023/A:1005082526237')), + 'epam_l2': ' '.join(('Gold, R., Krimigis, S., Hawkins, S. et al.', + 'Electron, Proton, and Alpha Monitor on the', + 'Advanced Composition Explorer spacecraft.', + 'Space Science Reviews 86, 541–562 (1998).', + 'https://doi.org/10.1023/A:1005088115759')), + 'mag_l2': ' '.join(("Smith, C., L'Heureux, J., Ness, N. et al. The ACE", + "Magnetic Fields Experiment. Space Science Reviews", + "86, 613–632 (1998).", + "https://doi.org/10.1023/A:1005092216668")), + 'sis_l2': ' '.join(('Stone, E., Cohen, C., Cook, W. et al. The Solar', + 'Isotope Spectrometer for the Advanced Composition', + 'Explorer. Space Science Reviews 86, 357–408', + '(1998). https://doi.org/10.1023/A:1005027929871')), + 'swepam_l2': ' '.join(('McComas, D., Bame, S., Barker, P. et al. Solar', + 'Wind Electron Proton Alpha Monitor (SWEPAM)', + 'for the Advanced Composition Explorer. Space', + 'Science Reviews 86, 563–612 (1998).', + 'https://doi.org/10.1023/A:1005040232597')) + } + + +def load(fnames, tag='', inst_id='', to_pandas=False, **kwargs): + """Load ACE data via xarray and convert to pandas if needed. + + This routine is called as needed by pysat. It is not intended + for direct user interaction. + + Parameters + ---------- + fnames : array-like + Iterable of filename strings, full path, to data files to be loaded. + This input is nominally provided by pysat itself. + tag : str + Tag name used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default='') + inst_id : str + Instrument ID used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. (default='') + to_pandas : bool + If True, convert to pandas. If False, leave as xarray. (default=False) + + Returns + ------- + data : pds.DataFrame or xr.Dataset + A pandas DataFrame or xarray Dataset with data prepared for the + `pysat.Instrument`. + meta : pysat.Meta + Metadata formatted for a pysat.Instrument object. + + Note + ---- + Several variables relating to time stored in different formats are dropped. + These are redundant and complicate the load procedure. + + """ + + meta_translation = {'CATDESC': 'desc', 'FILLVAL': 'fill', + 'LABLAXIS': 'plot_label', 'VALIDMAX': 'value_max', + 'VALIDMIN': 'value_min', 'VAR_NOTES': 'notes'} + data, meta = cdw.load(fnames, tag=tag, inst_id=inst_id, pandas_format=False, + meta_translation=meta_translation, + drop_dims=['dim_empty', 'dim0', 'unit_time'], + use_cdflib=True) + + if to_pandas: + if hasattr(data, 'to_pandas'): + data = data.to_pandas() + else: + # xarray 0.16 support required for operational server + data = data.to_dataframe() + + return data, meta diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index c71115f2..235090eb 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -7,15 +7,16 @@ """ -import cdflib import datetime as dt +import numpy as np import os import pandas as pds import requests -import warnings +from time import sleep import xarray as xr from bs4 import BeautifulSoup +from cdasws import CdasWs import pysat from pysat.instruments.methods import general @@ -24,6 +25,13 @@ from pysat.utils import io from pysatNASA.instruments.methods import CDF as libCDF +try: + # cdflib 1.0 syntax + from cdflib.xarray import cdf_to_xarray +except ModuleNotFoundError: + # cdflib 0.4 syntax required for backwards compatibility + from cdflib import cdf_to_xarray + try: import pysatCDF auto_CDF = pysatCDF.CDF @@ -31,10 +39,39 @@ auto_CDF = libCDF +def try_inst_dict(inst_id, tag, supported_tags): + """Check that the inst_id and tag combination is valid. + + Parameters + ---------- + tag : str + Data product tag (default='') + inst_id : str + Instrument ID (default='') + supported_tags : dict + dict of dicts. Keys are supported tag names for download. Value is + a dict with 'remote_dir', 'fname'. Inteded to be + pre-set with functools.partial then assigned to new instrument code. + (default=None) + + Returns + ------- + inst_dict : dict or str + dictionary containing file location in spdf archive, or dataset ID for + cdasws + """ + try: + inst_dict = supported_tags[inst_id][tag] + except KeyError: + raise ValueError('inst_id / tag combo unknown.') + + return inst_dict + + def load(fnames, tag='', inst_id='', file_cadence=dt.timedelta(days=1), flatten_twod=True, pandas_format=True, epoch_name='Epoch', - meta_processor=None, meta_translation=None, drop_meta_labels=None, - use_cdflib=None): + drop_dims=None, var_translation=None, meta_processor=None, + meta_translation=None, drop_meta_labels=None, use_cdflib=None): """Load NASA CDAWeb CDF files. Parameters @@ -62,6 +99,13 @@ def load(fnames, tag='', inst_id='', file_cadence=dt.timedelta(days=1), specified by `epoch_origin` with units specified by `epoch_unit`. This epoch variable will be converted to a `DatetimeIndex` for consistency across pysat instruments. (default='Epoch') + drop_dims : list or NoneType + List of variable dimensions that should be dropped. Applied + to data as loaded from the file. Used only from xarray Dataset. + (default=None) + var_translation : dict or NoneType + Variables that should be renamed. Applied to data as loaded + from the file. Used only from xarray Dataset. (default=None) meta_processor : function or NoneType If not None, a dict containing all of the loaded metadata will be passed to `meta_processor` which should return a filtered version @@ -93,8 +137,10 @@ def load(fnames, tag='', inst_id='', file_cadence=dt.timedelta(days=1), Note ---- - This routine is intended to be used by pysat instrument modules supporting - a particular NASA CDAWeb dataset + - This routine is intended to be used by pysat instrument modules supporting + a particular NASA CDAWeb dataset + - pysatCDF (as of v0.3.2) does not support numpy>=1.24. Load errors may + arise. See https://github.com/pysat/pysatCDF/issues/46 """ @@ -106,10 +152,13 @@ def load(fnames, tag='', inst_id='', file_cadence=dt.timedelta(days=1), else: if not use_cdflib: estr = 'The `use_cdflib` option is not currently enabled for xarray' - warnings.warn(estr) + pysat.logger.warn(estr) data, meta = load_xarray(fnames, tag=tag, inst_id=inst_id, epoch_name=epoch_name, + drop_dims=drop_dims, + var_translation=var_translation, + file_cadence=file_cadence, meta_processor=meta_processor, meta_translation=meta_translation, drop_meta_labels=drop_meta_labels) @@ -224,15 +273,15 @@ def load_pandas(fnames, tag='', inst_id='', file_cadence=dt.timedelta(days=1), def load_xarray(fnames, tag='', inst_id='', - labels={'units': ('units', str), 'name': ('long_name', str), - 'notes': ('notes', str), 'desc': ('desc', str), - 'plot': ('plot_label', str), 'axis': ('axis', str), - 'scale': ('scale', str), - 'min_val': ('value_min', float), - 'max_val': ('value_max', float), - 'fill_val': ('fill', float)}, - epoch_name='Epoch', meta_processor=None, - meta_translation=None, drop_meta_labels=None): + file_cadence=dt.timedelta(days=1), + labels={'units': ('Units', str), 'name': ('Long_Name', str), + 'notes': ('Var_Notes', str), 'desc': ('CatDesc', str), + 'min_val': ('ValidMin', (float, int, str)), + 'max_val': ('ValidMax', (float, int, str)), + 'fill_val': ('FillVal', (float, int, str))}, + epoch_name='Epoch', drop_dims=None, var_translation=None, + meta_processor=None, meta_translation=None, + drop_meta_labels=None): """Load NASA CDAWeb CDF files into an xarray Dataset. Parameters @@ -243,20 +292,31 @@ def load_xarray(fnames, tag='', inst_id='', Data product tag (default='') inst_id : str Instrument ID (default='') + file_cadence : dt.timedelta or pds.DateOffset + pysat assumes a daily file cadence, but some instrument data files + contain longer periods of time. This parameter allows the specification + of regular file cadences greater than or equal to a day (e.g., weekly, + monthly, or yearly). (default=dt.timedelta(days=1)) labels : dict Dict where keys are the label attribute names and the values are tuples that have the label values and value types in that order. - (default={'units': ('units', str), 'name': ('long_name', str), - 'notes': ('notes', str), 'desc': ('desc', str), - 'min_val': ('value_min', np.float64), - 'max_val': ('value_max', np.float64), - 'fill_val': ('fill', np.float64)}) + (default={'units': ('Units', str), 'name': ('Long_Name', str), + 'notes': ('Var_Notes', str), 'desc': ('CatDesc', str), + 'min_val': ('ValidMin', (float, int, str)), + 'max_val': ('ValidMax', (float, int, str)), + 'fill_val': ('FillVal', (float, int, str))}) epoch_name : str Data key for epoch variable. The epoch variable is expected to be an array of integer or float values denoting time elapsed from an origin specified by `epoch_origin` with units specified by `epoch_unit`. This epoch variable will be converted to a `DatetimeIndex` for consistency across pysat instruments. (default='Epoch') + drop_dims : list or NoneType + List of variable dimensions that should be dropped. Applied + to data as loaded from the file. (default=None) + var_translation : dict or NoneType + Variables that should be renamed. Applied to data as loaded + from the file. Used only from xarray Dataset. (default=None) meta_processor : function or NoneType If not None, a dict containing all of the loaded metadata will be passed to `meta_processor` which should return a filtered version @@ -308,33 +368,27 @@ def load_xarray(fnames, tag='', inst_id='', # metadata for pysat using some assumptions. Depending upon your needs # the resulting pandas DataFrame may need modification. ldata = [] - for lfname in fnames: - temp_data = cdflib.cdf_to_xarray(lfname, to_datetime=True) + + # Find unique files for monthly / yearly cadence. + # Arbitrary timestamp needed for comparison. + t0 = dt.datetime(2009, 1, 1) + if (t0 + file_cadence) > (t0 + dt.timedelta(days=1)): + lfnames = list(np.unique([fname[:-11] for fname in fnames])) + else: + lfnames = fnames + + for lfname in lfnames: + temp_data = cdf_to_xarray(lfname, to_datetime=True) + if drop_dims: + temp_data = temp_data.drop_dims(drop_dims) + if var_translation: + temp_data = temp_data.rename(var_translation) ldata.append(temp_data) - # Combine individual files together + # Combine individual files together, concat along epoch if len(ldata) > 0: - data = xr.combine_by_coords(ldata) - - all_vars = io.xarray_all_vars(data) - - # Convert output epoch name to 'time' for pysat consistency - if epoch_name != 'time': - if 'time' not in all_vars: - if epoch_name in data.dims: - data = data.rename({epoch_name: 'time'}) - elif epoch_name in all_vars: - data = data.rename({epoch_name: 'time'}) - wstr = ''.join(['Epoch label: "', epoch_name, '"', - ' is not a dimension.']) - pysat.logger.warning(wstr) - else: - estr = ''.join(['Epoch label: "', epoch_name, '"', - ' not found in loaded data, ', - repr(all_vars)]) - raise ValueError(estr) - - epoch_name = 'time' + data = xr.combine_nested(ldata, epoch_name, + combine_attrs='override') all_vars = io.xarray_all_vars(data) @@ -390,15 +444,35 @@ def load_xarray(fnames, tag='', inst_id='', for key in filt_mdict: meta[key] = filt_mdict[key] + # Convert output epoch name to 'time' for pysat consistency + # This needs to be done last so that meta is updated properly + if epoch_name != 'time': + if 'time' not in all_vars: + if epoch_name in data.dims: + data = data.rename({epoch_name: 'time'}) + elif epoch_name in all_vars: + data = data.rename({epoch_name: 'time'}) + wstr = ''.join(['Epoch label: "', epoch_name, '"', + ' is not a dimension.']) + pysat.logger.warning(wstr) + else: + estr = ''.join(['Epoch label: "', epoch_name, '"', + ' not found in loaded data, ', + repr(all_vars)]) + raise ValueError(estr) + + epoch_name = 'time' + # Remove attributes from the data object data.attrs = {} return data, meta -def download(date_array, tag='', inst_id='', supported_tags=None, - remote_url='https://cdaweb.gsfc.nasa.gov', data_path=None): - """Download NASA CDAWeb CDF data. +# TODO(#103): Include support to unzip / untar files after download. +def download(date_array, data_path, tag='', inst_id='', supported_tags=None, + remote_url='https://cdaweb.gsfc.nasa.gov'): + """Download NASA CDAWeb data. This routine is intended to be used by pysat instrument modules supporting a particular NASA CDAWeb dataset. @@ -407,6 +481,8 @@ def download(date_array, tag='', inst_id='', supported_tags=None, ---------- date_array : array-like Array of datetimes to download data for. Provided by pysat. + data_path : str + Path to data directory. tag : str Data product tag (default='') inst_id : str @@ -419,15 +495,12 @@ def download(date_array, tag='', inst_id='', supported_tags=None, remote_url : str Remote site to download data from (default='https://cdaweb.gsfc.nasa.gov') - data_path : str or NoneType - Path to data directory. If None is specified, the value previously - set in Instrument.files.data_path is used. (default=None) Examples -------- :: - # download support added to cnofs_vefi.py using code below + # Download support added to cnofs_vefi.py using code below fn = 'cnofs_vefi_bfield_1sec_{year:4d}{month:02d}{day:02d}_v05.cdf' dc_b_tag = {'remote_dir': ''.join(('/pub/data/cnofs/vefi/bfield_1sec', '/{year:4d}/')), @@ -439,10 +512,7 @@ def download(date_array, tag='', inst_id='', supported_tags=None, """ - try: - inst_dict = supported_tags[inst_id][tag] - except KeyError: - raise ValueError('inst_id / tag combo unknown.') + inst_dict = try_inst_dict(inst_id, tag, supported_tags) # Naming scheme for files on the CDAWeb server remote_dir = inst_dict['remote_dir'] @@ -457,12 +527,21 @@ def download(date_array, tag='', inst_id='', supported_tags=None, # Download only requested files that exist remotely for date, fname in remote_files.items(): # Format files for specific dates and download location - formatted_remote_dir = remote_dir.format(year=date.year, - month=date.month, - day=date.day, - hour=date.hour, - min=date.minute, - sec=date.second) + # Year and day found in remote_dir: day is assumed to be day of year + if 'day' in remote_dir and 'month' not in remote_dir: + doy = date.timetuple().tm_yday + formatted_remote_dir = remote_dir.format(year=date.year, + day=doy, + hour=date.hour, + min=date.minute, + sec=date.second) + else: + formatted_remote_dir = remote_dir.format(year=date.year, + month=date.month, + day=date.day, + hour=date.hour, + min=date.minute, + sec=date.second) remote_path = '/'.join((remote_url.strip('/'), formatted_remote_dir.strip('/'), fname)) @@ -485,6 +564,104 @@ def download(date_array, tag='', inst_id='', supported_tags=None, except requests.exceptions.RequestException as exception: logger.info(' '.join((str(exception), '- File not available for', date.strftime('%d %B %Y')))) + # Pause to avoid excessive pings to server + sleep(0.2) + return + + +def cdas_download(date_array, data_path, tag='', inst_id='', + supported_tags=None): + """Download NASA CDAWeb CDF data using cdasws. + + This routine is intended to be used by pysat instrument modules supporting + a particular NASA CDAWeb dataset. + + Parameters + ---------- + date_array : array-like + Array of datetimes to download data for. Provided by pysat. + data_path : str + Path to data directory. + tag : str + Data product tag (default='') + inst_id : str + Instrument ID (default='') + supported_tags : dict + dict of dicts. Keys are supported tag names for download. Value is + a dict with 'remote_dir', 'fname'. Inteded to be pre-set with + functools.partial then assigned to new instrument code. + (default=None) + + Note + ---- + Supported tags for this function use the cdaweb dataset naming convention. + You can find the data set names on CDAWeb or you can use cdasws. + + Starting from scratch using cdasws + :: + from cdasws import CdasWs + cdas = CdasWs() + + # Get list of available observatories/platforms. + cdas.get_observatories() + + # Once your observatory is located, list the available instruments. + cdas.get_instruments(observatory=‘observatory_name’) + + # Now list the available data sets for one instrument. + cdas.get_datasets(observatory=‘observatory_name’, + instrument=‘instrument_name’) + + # You can also list all of the datasets for an observatory. + cdas.get_datasets(observatory=‘observatory_name’) + + Alternatively + :: + Visit https://cdaweb.gsfc.nasa.gov/ + Select the observatory you want from the list and press submit. + The following page will have a list of the data sets. + The bolded names are in the format that cdasws uses. + + Examples + -------- + :: + # Download support added to cnofs_vefi.py using code below + download_tags = {'': {'dc_b': 'CNOFS_VEFI_BFIELD_1SEC'}} + download = functools.partial(cdw.cdas_download, + supported_tags=download_tags) + + """ + + start = date_array[0] + stop = date_array[-1] + remote_files = cdas_list_remote_files(tag=tag, inst_id=inst_id, + start=start, stop=stop, + supported_tags=supported_tags, + series_out=False) + + for file in remote_files: + + fname = file.split('/')[-1] + saved_local_fname = os.path.join(data_path, fname) + + # Perform download + logger.info(' '.join(('Attempting to download file: ', + file))) + try: + with requests.get(file) as req: + if req.status_code != 404: + with open(saved_local_fname, 'wb') as open_f: + open_f.write(req.content) + logger.info('Successfully downloaded {:}.'.format( + saved_local_fname)) + else: + logger.info(' '.join(('File: "', file, + '" is not available'))) + except requests.exceptions.RequestException as exception: + logger.info(' '.join((str(exception), '- File: "', file, + '" Is not available'))) + # Pause to avoid excessive pings to server + sleep(0.2) return @@ -551,10 +728,7 @@ def list_remote_files(tag='', inst_id='', start=None, stop=None, """ - try: - inst_dict = supported_tags[inst_id][tag] - except KeyError: - raise ValueError('inst_id / tag combo unknown.') + inst_dict = try_inst_dict(inst_id, tag, supported_tags) # Naming scheme for files on the CDAWeb server format_str = '/'.join((inst_dict['remote_dir'].strip('/'), @@ -599,18 +773,27 @@ def list_remote_files(tag='', inst_id='', start=None, stop=None, stop = dt.datetime.now() if (stop is None) else stop if 'year' in search_dir['keys']: + url_list = [] if 'month' in search_dir['keys']: search_times = pds.date_range(start, stop + pds.DateOffset(months=1), freq='M') + for time in search_times: + subdir = format_dir.format(year=time.year, month=time.month) + url_list.append('/'.join((remote_url, subdir))) else: - search_times = pds.date_range(start, - stop + pds.DateOffset(years=1), - freq='Y') - url_list = [] - for time in search_times: - subdir = format_dir.format(year=time.year, month=time.month) - url_list.append('/'.join((remote_url, subdir))) + if 'day' in search_dir['keys']: + search_times = pds.date_range(start, stop + + pds.DateOffset(days=1), + freq='D') + else: + search_times = pds.date_range(start, stop + + pds.DateOffset(years=1), + freq='Y') + for time in search_times: + doy = int(time.strftime('%j')) + subdir = format_dir.format(year=time.year, day=doy) + url_list.append('/'.join((remote_url, subdir))) try: for top_url in url_list: for level in range(n_layers + 1): @@ -654,3 +837,82 @@ def list_remote_files(tag='', inst_id='', start=None, stop=None, stored_list = stored_list[mask] return stored_list + + +def cdas_list_remote_files(tag='', inst_id='', start=None, stop=None, + supported_tags=None, series_out=True): + """Return a list of every file for chosen remote data. + + This routine is intended to be used by pysat instrument modules supporting + a particular NASA CDAWeb dataset. + + Parameters + ---------- + tag : str + Data product tag (default='') + inst_id : str + Instrument ID (default='') + start : dt.datetime or NoneType + Starting time for file list. A None value will start with the first + file found. + (default=None) + stop : dt.datetime or NoneType + Ending time for the file list. A None value will stop with the last + file found. + (default=None) + supported_tags : dict + dict of dicts. Keys are supported tag names for download. Value is + a dict with 'remote_dir', 'fname'. Inteded to be + pre-set with functools.partial then assigned to new instrument code. + (default=None) + series_out : bool + boolean to determine output type. True for pandas series of file names, + and False for a list of the full web address. + + Returns + ------- + file_list : list + A list containing the verified available files + + Note + ---- + Supported tags for this function use the cdaweb dataset naming convention. + You can find the dataset names on cdaweb or you can use cdasws. + + Examples + -------- + :: + download_tags = {'': {'dc_b': 'CNOFS_VEFI_BFIELD_1SEC'}} + list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) + + download_tags = {'': {'': 'CNOFS_CINDI_IVM_500MS'}} + list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) + """ + cdas = CdasWs() + dataset = try_inst_dict(inst_id, tag, supported_tags) + + if start is None and stop is None: + # Use the topmost directory without variables + start = cdas.get_inventory(identifier=dataset)[0].start + stop = cdas.get_inventory(identifier=dataset)[-1].end + elif stop is None: + stop = start + dt.timedelta(days=1) + elif start == stop: + stop = start + dt.timedelta(days=1) + + if isinstance(start, pds._libs.tslibs.timestamps.Timestamp): + start = start.tz_localize('utc') + stop = stop.tz_localize('utc') + + og_files = cdas.get_original_files(dataset=dataset, start=start, end=stop) + + if series_out: + name_list = [os.path.basename(f['Name']) for f in og_files[1]] + t_stamp = [pds.Timestamp(f['StartTime'][:10]) for f in og_files[1]] + file_list = pds.Series(data=name_list, index=t_stamp) + else: + file_list = [f['Name'] for f in og_files[1]] + + return file_list diff --git a/pysatNASA/instruments/methods/de2.py b/pysatNASA/instruments/methods/de2.py index ea33e23b..8e44575d 100644 --- a/pysatNASA/instruments/methods/de2.py +++ b/pysatNASA/instruments/methods/de2.py @@ -3,7 +3,10 @@ ackn_str = "The Dynamics Explorer 2 satellite data is provided through CDAWeb" -refs = {'lang': ' '.join(('J. P. Krehbiel, L. H. Brace, R. F. Theis, W. H.', +refs = {'fpi': ' '.join(('Hays, P B, Killeen, T L, and Kennedy, B C.', + '"Fabry-Perot interferometer on Dynamics Explorer".', + 'Space Sci. Instrum., v. 5, p. 395-416, 1981.')), + 'lang': ' '.join(('J. P. Krehbiel, L. H. Brace, R. F. Theis, W. H.', 'Pinkus, and R. B. Kaplan, The Dynamics Explorer 2', 'Langmuir Probe (LANG), Space Sci. Instrum., v. 5,', 'n. 4, p. 493, 1981.')), @@ -15,9 +18,17 @@ 'Lippincott, D. R. Zuccaro, B. J. Holt, L. H. Harmon,', 'and S. Sanatani, The retarding potential analyzer', 'for dynamics explorer-B, Space Sci. Instrum. 5,', - '503–510 (1981).')), + '503–510 (1981).\n', + 'Heelis, R. A., W. B. Hanson, C. R. Lippincott, D. R.', + 'Zuccaro, L. L. Harmon, B. J. Holt, J. E. Doherty, R.', + 'A. Power, The ion drift meter for Dynamics', + 'Explorer-B, Space Sci. Instrum., 5, 511, 1981.')), 'wats': ' '.join(('N. W. Spencer, L. E. Wharton, H. B. Niemann, A. E.', 'Hedin, G. R. Carrignan, J. C. Maurer, The', 'Dynamics Explorer Wind and Temperature Spectrometer', - 'Space Sci. Instrum., v. 5, n. 4, p. 417, 1981.')) + 'Space Sci. Instrum., v. 5, n. 4, p. 417, 1981.')), + 'vefi': ' '.join(('Maynard, N. C., E. A. Bielecki, H. G. Burdick,', + 'Instrumentation for vector electric field', + 'measurements from DE-B, Space Sci. Instrum., 5,', + '523, 1981.')) } diff --git a/pysatNASA/instruments/methods/dmsp.py b/pysatNASA/instruments/methods/dmsp.py new file mode 100644 index 00000000..3f930c0b --- /dev/null +++ b/pysatNASA/instruments/methods/dmsp.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +"""Provides non-instrument specific routines for the DMSP data.""" + +ackn_str = "".join(["This Defense Meteorological Satellite Program (DMSP) ", + "satellite data is provided through CDAWeb"]) + +refs = {'ssusi': ''.join(('Larry J. Paxton, Daniel Morrison, Yongliang Zhang,', + ' Hyosub Kil, Brian Wolven, Bernard S. Ogorzalek, ', + 'David C. Humm, and Ching-I. Meng "Validation of ', + 'remote sensing products produced by the Special ', + 'Sensor Ultraviolet Scanning Imager (SSUSI): a far ', + 'UV-imaging spectrograph on DMSP F-16", Proc. SPIE ', + '4485, Optical Spectroscopic Techniques, Remote ', + 'Sensing, and Instrumentation for Atmospheric and ', + 'Space Research IV, (30 January 2002); ', + 'doi:10.1117/12.454268'))} diff --git a/pysatNASA/instruments/methods/general.py b/pysatNASA/instruments/methods/general.py index 60ead57f..cc6a24e9 100644 --- a/pysatNASA/instruments/methods/general.py +++ b/pysatNASA/instruments/methods/general.py @@ -1,6 +1,6 @@ """General methods for NASA instruments.""" -import warnings +import numpy as np import pysat @@ -23,15 +23,52 @@ def init(self, module, name): # Set acknowledgements self.acknowledgements = getattr(module, 'ackn_str') + + if hasattr(module, 'rules_url'): + self.acknowledgements.format(getattr(module, 'rules_url')[name]) + pysat.logger.info(self.acknowledgements) # Set references refs = getattr(module, 'refs') + try: + # See if there is a tag level reference + inst_refs = refs[name][self.tag] + except TypeError: + # No tag-level ref, use name-levele + inst_refs = refs[name] if 'mission' in refs.keys(): - self.references = '\n'.join((refs['mission'], refs[name])) + self.references = '\n'.join((refs['mission'], inst_refs)) + else: + self.references = inst_refs + + return + + +def clean(self): + """Clean data to the specified level. + + Note + ---- + Basic cleaning to replace fill values with NaN + + """ + + # Get a list of coords for the data + if self.pandas_format: + coords = [self.data.index.name] else: - self.references = refs[name] + coords = [key for key in self.data.coords.keys()] + + for key in self.variables: + # Skip over the coordinates when cleaning + if key not in coords: + fill = self.meta[key, self.meta.labels.fill_val] + # Replace fill with nan + fill_mask = self[key] == fill + self[key] = self.data[key].where(~fill_mask) + self.meta[key] = {self.meta.labels.fill_val: np.nan} return @@ -46,7 +83,7 @@ def clean_warn(self): 'none' No cleaning applied, routine not called in this case. """ - warnings.warn(' '.join(('No cleaning routines available for', - self.platform, self.name))) + pysat.logger.warning(' '.join(('No cleaning routines available for', + self.platform, self.name))) return diff --git a/pysatNASA/instruments/methods/gold.py b/pysatNASA/instruments/methods/gold.py deleted file mode 100644 index 9ac51312..00000000 --- a/pysatNASA/instruments/methods/gold.py +++ /dev/null @@ -1,24 +0,0 @@ -# -*- coding: utf-8 -*- -"""Provides non-instrument specific routines for GOLD data.""" - -ack_str = ' '.join(('This is a data product from the NASA Global-scale', - 'Observations of the Limb and Disk (GOLD) mission, an', - 'Heliophysics Explorer mission of opportunity launched', - 'in January 2018.\n Responsibility of the mission', - 'science falls to the Principal Investigator, Dr.', - 'Richard Eastes at University of Colorado/LASP.\n', - 'Validation of the L1B data products falls to the', - 'instrument lead investigators/scientists.\n* EUV', - 'Dr. Bill McClintock\nValidation of the L2 data', - 'products falls to Computational Physics, Inc.\n* Dr.', - 'Jerry Lumpe\n (https://gold.cs.ucf.edu/).\nOverall', - 'validation of the products is overseen by the GOLD', - 'Project Scientist Dr. Alan Burns.\nUsers of these', - 'data should contact and acknowledge the Principal', - 'Investigator Dr. Richard Eastes and the party', - 'directly responsible for the data product and the', - 'NASA Explorers Project Office.')) -ref_str = ' '.join(('Eastes, R.W., McClintock, W.E., Burns, A.G. et al.', - 'The Global-Scale Observations of the Limb and Disk', - '(GOLD) Mission. Space Sci Rev 212, 383–408 (2017).', - 'https://doi.org/10.1007/s11214-017-0392-2')) diff --git a/pysatNASA/instruments/methods/gps.py b/pysatNASA/instruments/methods/gps.py index bb11168e..684ab544 100644 --- a/pysatNASA/instruments/methods/gps.py +++ b/pysatNASA/instruments/methods/gps.py @@ -1,5 +1,11 @@ # -*- coding: utf-8 -*- -"""Provides non-instrument specific routines for JPL ROTI data.""" +"""Provides non-instrument specific routines for JPL ROTI data. + +.. deprecated:: 0.0.5 + This module is now included in `methods.igs`. + This instrument will be removed in 0.1.0+ to reduce redundancy. + +""" ackn_str = ' '.join(("The GPS Total Electron Content (TEC) data", "produced by the International Global Navigation", diff --git a/pysatNASA/instruments/methods/igs.py b/pysatNASA/instruments/methods/igs.py new file mode 100644 index 00000000..63ad4a5d --- /dev/null +++ b/pysatNASA/instruments/methods/igs.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +"""Provides non-instrument specific routines for JPL ROTI data.""" + +ackn_str = ' '.join(("The GPS Total Electron Content (TEC) data", + "produced by the International Global Navigation", + "Satellite Systems Service (IGS) Ionosphere Working", + "Group is provided through CDAWeb")) + +refs = {'mission': ' '.join(('Feltens J, Schaer S (1998) IGS Products for the', + 'Ionosphere, IGS Position Paper. In:', + 'Proceedings of the IGS analysis centers', + 'workshop, ESOC, Darmstadt, Germany,', + 'pp 225–232, 9–11 February')), + 'gps': {'tec': ' '.join(('M. Hernández-Pajares, J.M. Juan, J. Sanz, R.', + 'Orus, A. Garcia-Rigo, J. Feltens, A.', + 'Komjathy, S.C. Schaer, and A. Krankowski,', + 'The IGS VTEC maps: a reliable source of', + 'ionospheric information since 1998, Journal', + 'of Geodesy (2009) 83:263–275', + 'doi:10.1007/s00190-008-0266-1.\n', + 'Feltens, J., M. Angling, N. Jackson‐Booth,', + 'N. Jakowski, M. Hoque, M. Hernández‐Pajares,', + 'A. Aragón‐Àngel, R. Orús, and R. Zandbergen', + '(2011), Comparative testing of four', + 'ionospheric models driven with GPS', + 'measurements, Radio Sci., 46, RS0D12,', + 'doi:10.1029/2010RS004584.\n', + 'Peng Chen, Hang Liu, Yongchao Ma, Naiquan', + 'Zheng, Accuracy and consistency of different', + 'global ionospheric maps released by IGS', + 'ionosphere associate analysis centers,', + 'Advances in Space Research, Volume 65, Issue', + '1, 2020, Pages 163-174,', + 'doi:10.1016/j.asr.2019.09.042.\n')), + 'roti': ' '.join(('Pi, X., A. J. Mannucci, U. J.', + 'Lindqwister, and C. M. Ho, Monitoring of', + 'global ionospheric irregularities using', + 'the worldwide GPS network, Geophys. Res.', + 'Lett., 24, 2283, 1997.\n', + 'Pi, X., F. J. Meyer, K. Chotoo, Anthony', + 'Freeman, R. G. Caton, and C. T. Bridgwood,', + 'Impact of ionospheric scintillation on', + 'Spaceborne SAR observations studied using', + 'GNSS, Proc. ION-GNSS, pp.1998-2006,', + '2012.'))}} diff --git a/pysatNASA/instruments/methods/jhuapl.py b/pysatNASA/instruments/methods/jhuapl.py new file mode 100644 index 00000000..1f92c802 --- /dev/null +++ b/pysatNASA/instruments/methods/jhuapl.py @@ -0,0 +1,335 @@ +# -*- coding: utf-8 -*- +"""Module for data sets created by JHU APL.""" + +import datetime as dt +import numpy as np +import pandas as pds +import xarray as xr + +from pysat.utils.coords import expand_xarray_dims +from pysat.utils.io import load_netcdf + + +def build_dtimes(data, var, epoch=None, epoch_var='time'): + """Build datetime objects from standard JHU APL time variables. + + Parameters + ---------- + data : xr.Dataset + Xarray dataset with time variables + var : str + Common string to identify desired year, day of year, and seconds of day + epoch : dt.datetime or NoneType + Epoch to subtract from data or NoneType to get seconds of day from + `data` (default=None) + epoch_var : str + Epoch variable containing time data that seconds of day will be + obtained from if `epoch` != None (default='time') + + Returns + ------- + dtimes : list-like + List of datetime objects + + """ + ykey = 'YEAR{:s}'.format(var) + dkey = 'DOY{:s}'.format(var) + skey = 'TIME{:s}'.format(var) + + if epoch is None: + hours = [int(np.floor(sec / 3600.0)) for sec in data[skey].values] + mins = [int(np.floor((sec - hours[i] * 3600) / 60.0)) + for i, sec in enumerate(data[skey].values)] + secs = [int(np.floor((sec - hours[i] * 3600 - mins[i] * 60))) + for i, sec in enumerate(data[skey].values)] + dtimes = [ + dt.datetime.strptime( + "{:4d}-{:03d}-{:02d}-{:02d}-{:02d}-{:06.0f}".format( + int(data[ykey].values[i]), int(data[dkey].values[i]), + hours[i], mins[i], secs[i], + (sec - hours[i] * 3600 - mins[i] * 60 - secs[i]) * 1.0e6), + '%Y-%j-%H-%M-%S-%f') + for i, sec in enumerate(data[skey].values)] + else: + dtimes = [ + dt.datetime.strptime("{:4d}-{:03d}".format( + int(data[ykey].values[i]), int(data[dkey].values[i])), '%Y-%j') + + (pds.to_datetime(etime).to_pydatetime() - epoch) + for i, etime in enumerate(data[epoch_var].values)] + + return dtimes + + +def load_edr_aurora(fnames, tag='', inst_id='', pandas_format=False, + strict_dim_check=True): + """Load JHU APL EDR Aurora data and meta data. + + Parameters + ---------- + fnames : array-like + Iterable of filename strings, full path, to data files to be loaded. + tag : str + Tag name used to identify particular data set to be loaded (default='') + inst_id : str + Instrument ID name used to identify different instrument carriers + (default='') + pandas_format : bool + False for xarray format, True for pandas (default=False) + strict_dim_check : bool + Used for xarray data (`pandas_format` is False). If True, warn the user + that the desired epoch, 'TIME', is not present as a dimension in the + NetCDF file. If False, no warning is raised. (default=True) + + Returns + ------- + data : pds.DataFrame or xr.Dataset + Data to be assigned to the pysat.Instrument.data object. + mdata : pysat.Meta + Pysat Meta data for each data variable. + + Note + ---- + Logger warning 'Epoch label: TIME is not a dimension.' is raised due to + the data format and pysat file expectations. + + Examples + -------- + :: + + inst = pysat.Instrument('timed', 'guvi', tag='edr-aur') + inst.load(2003, 1) + + """ + # Define the input variables + labels = {'units': ('UNITS', str), 'desc': ('TITLE', str)} + + # CDAWeb stores these files in the NetCDF format instead of the CDF format + single_data = list() + for fname in fnames: + # There are multiple files per day, with time as a variable rather + # than a dimension or coordinate. Additionally, no coordinates + # are assigned. + sdata, mdata = load_netcdf(fname, epoch_name='TIME', epoch_unit='s', + meta_kwargs={'labels': labels}, + pandas_format=pandas_format, + decode_times=False, + strict_dim_check=strict_dim_check) + + # Calculate the time for this data file. The pysat `load_netcdf` routine + # converts the 'TIME' parameter (seconds of day) into datetime using + # the UNIX epoch as the date offset + ftime = dt.datetime.strptime( + "{:4d}-{:03d}".format( + sdata['YEAR'].values.astype(int), + sdata['DOY'].values.astype(int)), '%Y-%j') + ( + pds.to_datetime(sdata['time'].values).to_pydatetime() + - dt.datetime(1970, 1, 1)) + + # Assign a datetime variable, making indexing possible + sdata['time'] = ftime + sdata = sdata.assign_coords( + {'time': sdata['time']}).expand_dims(dim='time') + + # Save the data in the file list + single_data.append(sdata) + + # Update the meta data + # TODO(https://github.com/pysat/pysat/issues/1078): Update the metadata by + # removing 'TIME', once possible + for var in mdata.keys(): + # Update the fill value, using information from the global header + mdata[var] = {mdata.labels.fill_val: mdata.header.NO_DATA_IN_BIN_VALUE} + + # After loading all the data, determine which dimensions need to be + # expanded. Pad the data so that all dimensions are the same shape. + single_data = expand_xarray_dims(single_data, mdata, dims_equal=False) + + # Combine all the data, indexing along time + data = xr.combine_by_coords(single_data) + + return data, mdata + + +def load_sdr_aurora(fnames, tag='', inst_id='', pandas_format=False, + strict_dim_check=True, combine_times=False): + """Load JHU APL SDR data and meta data. + + Parameters + ---------- + fnames : array-like + Iterable of filename strings, full path, to data files to be loaded. + tag : str + Tag name used to identify particular data set to be loaded (default='') + inst_id : str + Instrument ID name used to identify different instrument carriers + (default='') + pandas_format : bool + False for xarray format, True for pandas (default=False) + strict_dim_check : bool + Used for xarray data (`pandas_format` is False). If True, warn the user + that the desired epoch, 'TIME_DAY', is not present as a dimension in the + NetCDF file. If False, no warning is raised. (default=True)``` + combine_times : bool + For SDR data, optionally combine the different datetime coordinates + into a single time coordinate (default=False) + + Returns + ------- + data : pds.DataFrame or xr.Dataset + Data to be assigned to the pysat.Instrument.data object. + mdata : pysat.Meta + Pysat Meta data for each data variable. + + Note + ---- + Logger warning 'Epoch label: TIME is not a dimension.' is raised due to + the data format and pysat file expectations. + + Examples + -------- + :: + + inst = pysat.Instrument('timed', 'guvi', tag='edr-aur') + inst.load(2003, 1) + + """ + # Define the input variables and working variables + labels = {'units': ('UNITS', str), 'desc': ('TITLE', str)} + load_time = 'TIME_DAY' + time_vars = ['YEAR_DAY', 'DOY_DAY', 'TIME_EPOCH_DAY', 'YEAR_NIGHT', + 'DOY_NIGHT', 'TIME_NIGHT', 'TIME_EPOCH_NIGHT'] + coords = ['PIERCEPOINT_NIGHT_LATITUDE', 'PIERCEPOINT_NIGHT_LONGITUDE', + 'PIERCEPOINT_NIGHT_ALTITUDE', 'PIERCEPOINT_NIGHT_SZA', + 'PIERCEPOINT_DAY_LATITUDE', 'PIERCEPOINT_DAY_LONGITUDE', + 'PIERCEPOINT_DAY_ALTITUDE', 'PIERCEPOINT_DAY_SZA'] + time_dims = ['time'] + rename_dims = {'nAlongDay': 'nAlong', 'nAlongNight': 'nAlong'} + + if tag == 'sdr-imaging': + time_vars.extend(["YEAR_DAY_AURORAL", "DOY_DAY_AURORAL", + "TIME_DAY_AURORAL", "TIME_EPOCH_DAY_AURORAL"]) + coords.extend(['PIERCEPOINT_DAY_LATITUDE_AURORAL', + 'PIERCEPOINT_DAY_LONGITUDE_AURORAL', + 'PIERCEPOINT_DAY_ALTITUDE_AURORAL', + 'PIERCEPOINT_DAY_SZA_AURORAL']) + time_dims.append('time_auroral') + rename_dims['nCrossDay'] = 'nCross' + rename_dims['nCrossNight'] = 'nCross' + rename_dims['nAlongDayAur'] = 'time_auroral' + elif tag == 'sdr-spectrograph': + coords.extend(['PIERCEPOINT_NIGHT_ZENITH_ANGLE', + 'PIERCEPOINT_NIGHT_SAZIMUTH', + 'PIERCEPOINT_DAY_ZENITH_ANGLE', + 'PIERCEPOINT_DAY_SAZIMUTH']) + + if inst_id == 'low_res': + time_vars.extend(["YEAR_GAIM_DAY", "DOY_GAIM_DAY", "TIME_GAIM_DAY", + "TIME_GAIM_NIGHT", "YEAR_GAIM_NIGHT", + "DOY_GAIM_NIGHT"]) + time_dims.extend(['time_gaim_day', 'time_gaim_night']) + rename_dims['nAlongGAIMDay'] = 'time_gaim_day' + rename_dims['nAlongGAIMNight'] = 'time_gaim_night' + + # CDAWeb stores these files in the NetCDF format instead of the CDF format + inners = None + for fname in fnames: + # There are multiple files per day, with time as a variable rather + # than a dimension or coordinate. Additionally, no coordinates + # are assigned. + sdata, mdata = load_netcdf(fname, epoch_name=load_time, epoch_unit='s', + meta_kwargs={'labels': labels}, + pandas_format=pandas_format, + decode_times=False, + strict_dim_check=strict_dim_check) + + # Calculate the time for this data file. The pysat `load_netcdf` routine + # converts the 'TIME' parameter (seconds of day) into datetime using + # the UNIX epoch as the date offset + ftime = build_dtimes(sdata, '_DAY', dt.datetime(1970, 1, 1)) + + # Ensure identical day and night dimensions + if sdata.dims['nAlongDay'] != sdata.dims['nAlongNight']: + raise ValueError('Along-track day and night dimensions differ') + + if 'nCrossDay' in rename_dims.keys(): + if sdata.dims['nCrossDay'] != sdata.dims['nCrossNight']: + raise ValueError('Cross-track day and night dimensions differ') + + # Combine identical dimensions and rename 'nAlong' to 'time' + sdata = sdata.rename_dims(rename_dims) + + if tag == 'sdr-imaging': + sdata = sdata.assign(time_auroral=build_dtimes(sdata, + '_DAY_AURORAL')) + elif tag == 'sdr-spectrograph' and inst_id == 'low_res': + sdata = sdata.assign(time_gaim_day=build_dtimes( + sdata, '_GAIM_DAY'), time_gaim_night=build_dtimes( + sdata, '_GAIM_NIGHT')) + + # Test that day and night times are consistent to the nearest second + for i, ntime in enumerate(build_dtimes(sdata, '_NIGHT')): + if abs(ntime - ftime[i]).total_seconds() > 1.0: + raise ValueError('Day and night times differ') + + # Remove redundant time variables and rname the 'nAlong' dimension + sdata = sdata.drop_vars(time_vars).swap_dims({'nAlong': 'time'}) + + # Assign time as a coordinate for combining files indexing + sdata['time'] = ftime + + # Separate into inner datasets + inner_keys = {dim: [key for key in sdata.keys() + if dim in sdata[key].dims] for dim in time_dims} + inner_dat = {dim: sdata.get(inner_keys[dim]) for dim in time_dims} + + # Add 'single_var's into 'time' dataset to keep track + sv_keys = [val.name for val in sdata.values() + if 'single_var' in val.dims] + singlevar_set = sdata.get(sv_keys) + inner_dat['time'] = xr.merge([inner_dat['time'], singlevar_set]) + + # Concatenate along desired dimension with previous files' data + if inners is None: + # No previous data, assign the data separated by dimension + inners = dict(inner_dat) + else: + # Concatenate with existing data + inners = {dim: xr.concat([inners[dim], inner_dat[dim]], dim=dim) + for dim in time_dims} + + # Update the meta data + # TODO(https://github.com/pysat/pysat/issues/1078): Update the metadata by + # removing dimensions and time, once possible + for var in mdata.keys(): + # Update the fill value, using information from the global header + mdata[var] = {mdata.labels.fill_val: mdata.header.NO_DATA_IN_BIN_VALUE} + + # Combine all time dimensions + if combine_times: + data_list = expand_xarray_dims([inners[dim] if dim == 'time' else + inners[dim].rename_dims({dim: 'time'}) + for dim in time_dims], mdata, + dims_equal=False) + else: + data_list = [inners[dim] for dim in time_dims] + + # Combine all the data, indexing along time + data = xr.merge(data_list) + + # Set additional coordinates + data = data.set_coords(coords).assign_coords({'time': data['time']}) + if tag == 'sdr-imaging': + data = data.assign_coords( + {'nchan': ["121.6nm", "130.4nm", "135.6nm", "LBHshort", "LBHlong"], + "nchanAur": ["121.6nm", "130.4nm", "135.6nm", "LBHshort", + "LBHlong"], + "nCross": sdata.nCross.data, + "nCrossDayAur": sdata.nCrossDayAur.data}) + elif tag == 'sdr-spectrograph': + data = data.assign_coords({"nchan": ["121.6nm", "130.4nm", "135.6nm", + "LBHshort", "LBHlong", "?"]}) + + # Ensure the data is ordered correctly + data = data.sortby('time') + + return data, mdata diff --git a/pysatNASA/instruments/methods/omni.py b/pysatNASA/instruments/methods/omni.py index 8640340a..2844b0cb 100644 --- a/pysatNASA/instruments/methods/omni.py +++ b/pysatNASA/instruments/methods/omni.py @@ -5,9 +5,8 @@ import numpy as np import pandas as pds from scipy import stats -import warnings -from pysat import logger +import pysat def time_shift_to_magnetic_poles(inst): @@ -46,8 +45,8 @@ def time_shift_to_magnetic_poles(inst): time_x = inst['BSN_x'] * 6371.2 / -inst['Vx'] idx, = np.where(np.isnan(time_x)) if len(idx) > 0: - logger.info(time_x[idx]) - logger.info(time_x) + pysat.logger.info(time_x[idx]) + pysat.logger.info(time_x) time_x_offset = [pds.DateOffset(seconds=time) for time in time_x.astype(int)] new_index = [] @@ -115,8 +114,10 @@ def calculate_imf_steadiness(inst, steady_window=15, min_window_frac=0.75, max_wnum = np.floor(steady_window / sample_rate) if max_wnum != steady_window / sample_rate: steady_window = max_wnum * sample_rate - logger.warning("sample rate is not a factor of the statistical window") - logger.warning("new statistical window is {:.1f}".format(steady_window)) + pysat.logger.warning(" ".join(("sample rate is not a factor of the", + "statistical window"))) + pysat.logger.warning(" ".join(("new statistical window is", + "{:.1f}".format(steady_window)))) min_wnum = int(np.ceil(max_wnum * min_window_frac)) @@ -137,9 +138,9 @@ def calculate_imf_steadiness(inst, steady_window=15, min_window_frac=0.75, kwargs=circ_kwargs, raw=True) except TypeError: - warnings.warn(' '.join(['To automatically remove NaNs from the', - 'calculation, please upgrade to scipy 1.4 or', - 'newer'])) + pysat.logger.warn(' '.join(['To automatically remove NaNs from the', + 'calculation, please upgrade to scipy 1.4', + 'or newer.'])) circ_kwargs.pop('nan_policy') ca_std = \ inst['clock_angle'].rolling(min_periods=min_wnum, diff --git a/pysatNASA/instruments/methods/ses14.py b/pysatNASA/instruments/methods/ses14.py new file mode 100644 index 00000000..5307d592 --- /dev/null +++ b/pysatNASA/instruments/methods/ses14.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +"""Provides non-instrument specific routines for SES14 instruments.""" + +ackn_str = ' '.join(('This is a data product from the NASA Global-scale', + 'Observations of the Limb and Disk (GOLD) mission, an', + 'Heliophysics Explorer mission of opportunity launched', + 'in January 2018.\n Responsibility of the mission', + 'science falls to the Principal Investigator, Dr.', + 'Richard Eastes at University of Colorado/LASP.\n', + 'Validation of the L1B data products falls to the', + 'instrument lead investigators/scientists.\n* EUV', + 'Dr. Bill McClintock\nValidation of the L2 data', + 'products falls to Computational Physics, Inc.\n* Dr.', + 'Jerry Lumpe\n (https://gold.cs.ucf.edu/).\nOverall', + 'validation of the products is overseen by the GOLD', + 'Project Scientist Dr. Alan Burns.\nUsers of these', + 'data should contact and acknowledge the Principal', + 'Investigator Dr. Richard Eastes and the party', + 'directly responsible for the data product and the', + 'NASA Explorers Project Office.')) +refs = {'gold': ' '.join(('Eastes, R.W., McClintock, W.E., Burns, A.G. et', + 'al., The Global-Scale Observations of the Limb', + 'and Disk (GOLD) Mission. Space Sci Rev 212,', + '383–408 (2017). doi:10.1007/s11214-017-0392-2'))} diff --git a/pysatNASA/instruments/methods/timed.py b/pysatNASA/instruments/methods/timed.py new file mode 100644 index 00000000..e6d4e2fa --- /dev/null +++ b/pysatNASA/instruments/methods/timed.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +"""Provides non-instrument specific routines for the TIMED data.""" + +rules_url = {'guvi': 'http://guvitimed.jhuapl.edu/home_guvi-datausage', + 'saber': 'https://saber.gats-inc.com/data_services.php', + 'see': 'https://www.timed.jhuapl.edu/WWW/scripts/mdc_rules.pl'} + +ackn_str = "".join(["This Thermosphere Ionosphere Mesosphere Energetics ", + "Dynamics (TIMED) satellite data is provided through ", + "CDAWeb. Please see the Rules of the Road at {:s}"]) + +refs = {'guvi': ''.join(['Larry J. Paxton, Andrew B. Christensen, David C. ', + 'Humm, Bernard S. Ogorzalek, C. Thompson Pardoe, ', + 'Daniel Morrison, Michele B. Weiss, W. Crain, ', + 'Patricia H. Lew, Dan J. Mabry, John O. Goldsten, ', + 'Stephen A. Gary, David F. Persons, Mark J. Harold, ', + 'E. Brian Alvarez, Carl J. Ercol, Douglas J. ', + 'Strickland, and Ching-I. Meng "Global ultraviolet ', + 'imager (GUVI): measuring composition and energy ', + 'inputs for the NASA Thermosphere Ionosphere ', + 'Mesosphere Energetics and Dynamics (TIMED) mission",', + 'Proc. SPIE 3756, Optical Spectroscopic Techniques ', + 'and Instrumentation for Atmospheric and Space ', + 'Research III, (20 October 1999); ', + 'doi:10.1117/12.366380']), + 'saber': '', + 'see': ' '.join(('Woods, T. N., Eparvier, F. G., Bailey,', + 'S. M., Chamberlin, P. C., Lean, J.,', + 'Rottman, G. J., Solomon, S. C., Tobiska,', + 'W. K., and Woodraska, D. L. (2005),', + 'Solar EUV Experiment (SEE): Mission', + 'overview and first results, J. Geophys.', + 'Res., 110, A01312, doi:10.1029/2004JA010765.'))} diff --git a/pysatNASA/instruments/omni_hro.py b/pysatNASA/instruments/omni_hro.py index d709c1b5..d7a205cf 100644 --- a/pysatNASA/instruments/omni_hro.py +++ b/pysatNASA/instruments/omni_hro.py @@ -44,9 +44,8 @@ import pandas as pds import warnings +import pysat from pysat.instruments.methods import general as mm_gen -from pysat import logger -from pysat.utils import time as pysat_time from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import omni as mm_omni @@ -86,7 +85,7 @@ def init(self): 'magnetic field data, J. Geophys. Res.,', 'Vol. 110, No. A2, A02209,', '10.1029/2004JA010649.')) - logger.info(ackn_str) + pysat.logger.info(ackn_str) return @@ -140,59 +139,12 @@ def clean(self): file_cadence=pds.DateOffset(months=1)) # Set the list_remote_files routine -remote_dir = '/pub/data/omni/omni_cdaweb/hro_{tag:s}/{{year:4d}}/' -download_tags = {inst_id: {tag: {'remote_dir': remote_dir.format(tag=tag), - 'fname': supported_tags[inst_id][tag]} - for tag in tags.keys()} - for inst_id in inst_ids.keys()} -list_remote_files = functools.partial(cdw.list_remote_files, - supported_tags=download_tags) - - -# Set the download routine -def download(date_array, tag, inst_id, data_path, update_files=False): - """Download OMNI HRO data from CDAWeb. - - Parameters - ---------- - date_array : array-like - Sequence of dates for which files will be downloaded. - tag : str - Denotes type of file to load. - inst_id : str - Specifies the satellite ID for a constellation. - data_path : str - Path to data directory. - update_files : bool - Re-download data for files that already exist if True (default=False) - - Raises - ------ - IOError - If a problem is encountered connecting to the gateway or retrieving - data from the repository. - - Warnings - -------- - Only able to download current forecast data, not archived forecasts. - - Note - ---- - Called by pysat. Not intended for direct use by user. - - """ - - # Set the download tags - - # Adjust the date_array for monthly downloads - if date_array.freq != 'MS': - date_array = pysat_time.create_date_range( - dt.datetime(date_array[0].year, date_array[0].month, 1), - date_array[-1], freq='MS') +download_tags = {'': {'1min': 'OMNI_HRO_1MIN', '5min': 'OMNI_HRO_5MIN'}} +download = functools.partial(cdw.cdas_download, + supported_tags=download_tags) - cdw.download(date_array, tag=tag, inst_id=inst_id, - supported_tags=download_tags, data_path=data_path) - return +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) # Set the load routine diff --git a/pysatNASA/instruments/ses14_gold.py b/pysatNASA/instruments/ses14_gold.py index 5a89413f..980143a2 100644 --- a/pysatNASA/instruments/ses14_gold.py +++ b/pysatNASA/instruments/ses14_gold.py @@ -11,12 +11,20 @@ 'gold' tag 'nmax' + 'tlimb' + 'tdisk' + 'o2den' Warnings -------- - The cleaning parameters for the instrument are still under development. -- strict_time_flag must be set to False +- Loading multiple days of data requires a bugfix in pysat 3.1.0 or higher. +Note +---- +In roughly 0.3% of daily files, Channel A and Channel B scans begin at the same +time. One microsecond is added to Channel B to ensure uniqueness in the xarray +index. The nominal scan rate for each channel is every 30 minutes. Examples -------- @@ -24,8 +32,7 @@ import datetime as dt import pysat - nmax = pysat.Instrument(platform='ses14', name='gold', tag='nmax' - strict_time_flag=False) + nmax = pysat.Instrument(platform='ses14', name='gold', tag='nmax') nmax.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) nmax.load(2020, 1) @@ -36,60 +43,38 @@ import numpy as np from pysat.instruments.methods import general as ps_gen -from pysat import logger from pysat.utils.io import load_netcdf from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import general as mm_nasa -from pysatNASA.instruments.methods import gold as mm_gold +from pysatNASA.instruments.methods import ses14 as mm_gold # ---------------------------------------------------------------------------- # Instrument attributes platform = 'ses14' name = 'gold' -tags = {'nmax': 'Level 2 Nmax data for the GOLD instrument'} -inst_ids = {'': ['nmax']} +tags = {'nmax': 'Level 2 max dens data for the GOLD instrument', + 'tlimb': 'Level 2 limb temp data for the GOLD instrument', + 'tdisk': 'Level 2 disk temp data for the GOLD instrument', + 'o2den': 'Level 2 O2 dens data for the GOLD instrument'} +inst_ids = {'': [tag for tag in tags.keys()]} pandas_format = False # ---------------------------------------------------------------------------- # Instrument test attributes -_test_dates = {'': {'nmax': dt.datetime(2020, 1, 1)}} +_test_dates = {'': {tag: dt.datetime(2020, 1, 1) for tag in tags.keys()}} # ---------------------------------------------------------------------------- # Instrument methods - -def init(self): - """Initialize the Instrument object with instrument specific values. - - Runs once upon instantiation. - - Parameters - ----------- - self : pysat.Instrument - Instrument class object - - """ - - logger.info(mm_gold.ack_str) - logger.warning(' '.join(('Time stamps may be non-unique because Channel A', - 'and B are different instruments. An upgrade to', - 'the pysat.Constellation object is required to', - 'solve this issue. See pysat issue #614 for more', - 'info.'))) - self.acknowledgements = mm_gold.ack_str - self.references = mm_gold.ref_str - - return - +init = functools.partial(mm_nasa.init, module=mm_gold, name=name) # No cleaning, use standard warning function instead clean = mm_nasa.clean_warn - # ---------------------------------------------------------------------------- # Instrument functions # @@ -103,17 +88,90 @@ def init(self): list_files = functools.partial(ps_gen.list_files, supported_tags=supported_tags) +# Set download tags. Note that tlimb uses the general implementation, while +# other tags use the cdasws implementation. +download_tags = {'': {'tlimb': {'remote_dir': ''.join(('/pub/data/gold/', + 'level2/tlimb', + '/{year:4d}/')), + 'fname': supported_tags['']['tlimb']}, + 'nmax': 'GOLD_L2_NMAX', + 'o2den': 'GOLD_L2_O2DEN', + 'tdisk': 'GOLD_L2_TDISK'}} + + # Set the download routine -download_tags = {inst_id: - {tag: {'remote_dir': ''.join(('/pub/data/gold/level2/', tag, - '/{year:4d}/')), - 'fname': supported_tags[''][tag]} - for tag in tags.keys()} for inst_id in inst_ids.keys()} -download = functools.partial(cdw.download, supported_tags=download_tags) +def download(date_array, tag='', inst_id='', data_path=None): + """Download NASA GOLD data. + + This routine is intended to be used by pysat instrument modules supporting + a particular NASA CDAWeb dataset. + + Parameters + ---------- + date_array : array-like + Array of datetimes to download data for. Provided by pysat. + tag : str + Data product tag (default='') + inst_id : str + Instrument ID (default='') + data_path : str or NoneType + Path to data directory. If None is specified, the value previously + set in Instrument.files.data_path is used. (default=None) + + """ + + if tag == 'tlimb': + cdw.download(date_array, tag=tag, inst_id=inst_id, + supported_tags=download_tags, data_path=data_path) + else: + cdw.cdas_download(date_array, tag=tag, inst_id=inst_id, + supported_tags=download_tags, data_path=data_path) + # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, - supported_tags=download_tags) +def list_remote_files(tag='', inst_id='', start=None, stop=None, + series_out=True): + """Return a list of every file for chosen remote data. + + This routine is intended to be used by pysat instrument modules supporting + a particular NASA CDAWeb dataset. + + Parameters + ---------- + tag : str + Data product tag (default='') + inst_id : str + Instrument ID (default='') + start : dt.datetime or NoneType + Starting time for file list. A None value will start with the first + file found. + (default=None) + stop : dt.datetime or NoneType + Ending time for the file list. A None value will stop with the last + file found. + (default=None) + series_out : bool + boolean to determine output type. True for pandas series of file names, + and False for a list of the full web address. + (default=True) + + Returns + ------- + file_list : list + A list containing the verified available files + + """ + + if tag == 'tlimb': + file_list = cdw.list_remote_files(tag=tag, inst_id=inst_id, + start=start, stop=stop, + supported_tags=download_tags) + else: + file_list = cdw.cdas_list_remote_files(tag=tag, inst_id=inst_id, + start=start, stop=stop, + supported_tags=download_tags, + series_out=series_out) + return file_list def load(fnames, tag='', inst_id=''): @@ -179,15 +237,32 @@ def load(fnames, tag='', inst_id=''): 'Valid_Max': 'Valid_Max', '_FillValue': 'fill', 'FillVal': 'fill', 'TIME_BASE': 'time_base'} + if tag in ['nmax', 'tdisk', 'tlimb']: + epoch_name = 'nscans' + + elif tag == 'o2den': + epoch_name = 'nevents' + data, meta = load_netcdf(fnames, pandas_format=pandas_format, - epoch_name='nscans', labels=labels, + epoch_name=epoch_name, + meta_kwargs={'labels': labels}, meta_translation=meta_translation, - drop_meta_labels='FILLVAL') + combine_by_coords=False, + drop_meta_labels='FILLVAL', + decode_times=False) - if tag == 'nmax': + if tag in ['nmax', 'tdisk', 'tlimb']: # Add time coordinate from scan_start_time - data['time'] = [dt.datetime.strptime(str(val), "b'%Y-%m-%dT%H:%M:%SZ'") - for val in data['scan_start_time'].values] + time = [dt.datetime.strptime(str(val), "b'%Y-%m-%dT%H:%M:%SZ'") + for val in data['scan_start_time'].values] + + # Add a delta of 1 microsecond for channel B. + delta_time = [1 if ch == b'CHB' else 0 for ch in data['channel'].values] + data['time'] = [time[i] + dt.timedelta(microseconds=delta_time[i]) + for i in range(0, len(time))] + + # Sort times to ensure monotonic increase. + data = data.sortby('time') # Update coordinates with dimensional data data = data.assign_coords({'nlats': data['nlats'], @@ -200,4 +275,30 @@ def load(fnames, tag='', inst_id=''): meta['nlons'] = {meta.labels.notes: 'Index for longitude values'} meta['nmask'] = {meta.labels.notes: 'Index for mask values'} + elif tag == 'o2den': + + # Removing extra variables + if len(data['zret'].dims) > 1: + data['zret'] = data['zret'].isel(time=0) + data['zdat'] = data['zdat'].isel(time=0) + + # Add time coordinate from utc_time + data['time'] = [dt.datetime.strptime(str(val), + "b'%Y-%m-%dT%H:%M:%S.%fZ'") + for val in data['time_utc'].values] + + # Add retrieval altitude values and data tangent altitude values + data = data.swap_dims({"nzret": "zret", "nzdat": "zdat"}) + + # Update coordinates with dimensional data + data = data.assign_coords({'zret': data['zret'], + 'zdat': data['zdat'], + 'n_wavelength': data['n_wavelength'], + 'channel': data['channel']}) + meta['time'] = {meta.labels.notes: 'Converted from time_utc'} + meta['zret'] = {meta.labels.notes: ''.join(('Index for retrieval', + ' altitude values'))} + meta['zdat'] = {meta.labels.notes: ''.join(('Index for data tangent', + ' altitude values'))} + return data, meta diff --git a/pysatNASA/instruments/timed_guvi.py b/pysatNASA/instruments/timed_guvi.py new file mode 100644 index 00000000..2a0f7da8 --- /dev/null +++ b/pysatNASA/instruments/timed_guvi.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +"""Module for the TIMED GUVI instrument. + +Supports the Global UltraViolet Imager (GUVI) instrument on the Thermosphere +Ionosphere Mesosphere Energetics Dynamics (TIMED) satellite data from the +NASA Coordinated Data Analysis Web (CDAWeb). + +From JHU APL: + +The Global Ultraviolet Imager (GUVI) is one of four instruments that constitute +the TIMED spacecraft, the first mission of the NASA Solar Connections program. +The TIMED spacecraft is being built by Johns Hopkins University Applied Physics +Laboratory and GUVI is a joint collaboration between JHU/APL and the Aerospace +Corporation. TIMED will be used to study the energetics and dynamics of the +Mesosphere and lower Thermosphere between an altitude of approximately 60 to 180 +kilometers. + +References +---------- +Larry J. Paxton, Andrew B. Christensen, David C. Humm, Bernard S. Ogorzalek, C. +Thompson Pardoe, Daniel Morrison, Michele B. Weiss, W. Crain, Patricia H. Lew, +Dan J. Mabry, John O. Goldsten, Stephen A. Gary, David F. Persons, Mark J. +Harold, E. Brian Alvarez, Carl J. Ercol, Douglas J. Strickland, and Ching-I. +Meng "Global ultraviolet imager (GUVI): measuring composition and energy inputs +for the NASA Thermosphere Ionosphere Mesosphere Energetics and Dynamics (TIMED) +mission", Proc. SPIE 3756, Optical Spectroscopic Techniques and Instrumentation +for Atmospheric and Space Research III, (20 October 1999); +https://doi.org/10.1117/12.366380 + +Properties +---------- +platform + 'timed' +name + 'guvi' +tag + 'edr-aur' + 'sdr-imaging' + 'sdr-spectrograph' +inst_id + '' + 'high_res' + 'low_res' + +Warnings +-------- +- Currently no cleaning routine. + +Example +------- +:: + + import pysat + guvi = pysat.Instrument(platform='timed', name='guvi', + inst_id='sdr-imaging', tag='low_res') + guvi.download(dt.datetime(2005, 6, 28), dt.datetime(2005, 6, 29)) + guvi.load(date=dt.datetime(2005, 6, 28)) + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen + +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import jhuapl +from pysatNASA.instruments.methods import timed as mm_timed + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'timed' +name = 'guvi' +tags = {'edr-aur': 'Level 2 Auroral disk imaging mode', + 'sdr-imaging': 'Level 1C imaging data', + 'sdr-spectrograph': 'Level 1C spectrograph data'} +inst_ids = {'': ['edr-aur'], + 'high_res': ['sdr-imaging', 'sdr-spectrograph'], + 'low_res': ['sdr-imaging', 'sdr-spectrograph']} + +pandas_format = False +multi_file_day = True + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {iid: {tag: dt.datetime(2005, 6, 28) for tag in inst_ids[iid]} + for iid in inst_ids.keys()} +_test_load_opt = {iid: {tag: {'combine_times': True} + for tag in inst_ids[iid]} for iid in ['high_res', + 'low_res']} + +# ---------------------------------------------------------------------------- +# Instrument methods + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_timed, name=name) + +# No cleaning, use standard warning function instead +clean = mm_nasa.clean_warn + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +fname = ''.join(('TIMED_GUVI_{lvl:s}{mode:s}_{{year:04d}}{{day:03d}}', + '{{hour:02d}}{{minute:02d}}{{second:02d}}-?????????????_REV', + '??????_Av{{version:02d}}-??r{{revision:03d}}.nc')) +file_lvl = {'low_res': 'L1C-2-disk', 'high_res': 'L1C-disk', '': 'L2B'} +mode = {'sdr-imaging': '-IMG', 'sdr-spectrograph': '-SPECT', + 'edr-aur': '-edr-aur-IMG'} +supported_tags = {inst_id: {tag: fname.format(lvl=file_lvl[inst_id], + mode=mode[tag]) + for tag in tags.keys()} + for inst_id in inst_ids.keys()} +list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) + +# Set the download routine +url = ''.join(('/pub/data/timed/guvi/levels_v13/{lvl:s}/{mode:s}/', + '{{year:4d}}/{{day:03d}}/')) +url_lvl = {'sdr-imaging': 'level1c', 'sdr-spectrograph': 'level1c', + 'edr-aur': 'level2b'} +url_mode = {tag: 'imaging/edr-aur' if tag == 'edr-aur' else tag.split('-')[1] + for tag in tags.keys()} +download_tags = {iid: {tag: {'remote_dir': url.format(lvl=url_lvl[tag], + mode=url_mode[tag]), + 'fname': fname.format(lvl=file_lvl[iid], + mode=mode[tag])} + for tag in tags.keys()} for iid in inst_ids.keys()} +download = functools.partial(cdw.download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.list_remote_files, + supported_tags=download_tags) + + +# Set the load routine +def load(fnames, tag='', inst_id='', combine_times=False): + """Load TIMED GUVI data into `xarray.DataSet` and `pysat.Meta` objects. + + This routine is called as needed by pysat. It is not intended + for direct user interaction. + + Parameters + ---------- + fnames : array-like + iterable of filename strings, full path, to data files to be loaded. + This input is nominally provided by pysat itself. + tag : str + tag name used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. + inst_id : str + Satellite ID used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. + combine_times : bool + For SDR data, optionally combine the different datetime coordinates + into a single time coordinate (default=False) + + Returns + ------- + data : xr.DataSet + A xarray DataSet with data prepared for the pysat.Instrument + meta : pysat.Meta + Metadata formatted for a pysat.Instrument object. + + Raises + ------ + ValueError + If temporal dimensions are not consistent + + Note + ---- + Any additional keyword arguments passed to pysat.Instrument + upon instantiation are passed along to this routine. + + Examples + -------- + :: + + inst = pysat.Instrument('timed', 'guvi', + inst_id='high_res', tag='sdr-imaging') + inst.load(2005, 179) + + """ + if tag == 'edr-aur': + data, meta = jhuapl.load_edr_aurora(fnames, tag, inst_id, + pandas_format=pandas_format, + strict_dim_check=False) + else: + data, meta = jhuapl.load_sdr_aurora(fnames, tag, inst_id, + pandas_format=pandas_format, + strict_dim_check=False, + combine_times=combine_times) + + return data, meta diff --git a/pysatNASA/instruments/timed_saber.py b/pysatNASA/instruments/timed_saber.py index 38f82b91..e1e5086a 100644 --- a/pysatNASA/instruments/timed_saber.py +++ b/pysatNASA/instruments/timed_saber.py @@ -50,10 +50,10 @@ # CDAWeb methods prewritten for pysat from pysat.instruments.methods import general as mm_gen -from pysat import logger from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import timed as mm_timed # ---------------------------------------------------------------------------- # Instrument attributes @@ -68,7 +68,7 @@ # Set to False to specify using xarray (not using pandas) # Set to True if data will be returned via a pandas DataFrame -pandas_format = True +pandas_format = False # ---------------------------------------------------------------------------- # Instrument test attributes @@ -78,33 +78,18 @@ # ---------------------------------------------------------------------------- # Instrument methods - -def init(self): - """Initialize the Instrument object with instrument specific values. - - Runs once upon instantiation. - - """ - - rules_url = 'https://saber.gats-inc.com/data_services.php' - ackn_str = ' '.join(('Please see the Rules of the Road at', rules_url)) - - logger.info(ackn_str) - self.acknowledgements = ackn_str - self.references = '' - - return - +init = functools.partial(mm_nasa.init, module=mm_timed, name=name) # No cleaning, use standard warning function instead clean = mm_nasa.clean_warn - # ---------------------------------------------------------------------------- # Instrument functions # # Use the default CDAWeb and pysat methods +# TODO(#104): Switch to netCDF4 files once unzip (#103) is supported. + # Set the list_files routine fname = ''.join(('timed_l2a_saber_{year:04d}{month:02d}{day:02d}', '{hour:02d}{minute:02d}_v{version:02d}-{revision:02d}-', @@ -113,16 +98,17 @@ def init(self): list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) -# Set the load routine -load = cdw.load +# Set the load routine. Note that the time variable associated with +# tpaltitude is renamed to avoid conflict with renaming Epoch. +load = functools.partial(cdw.load, pandas_format=pandas_format, + drop_dims='record0', + var_translation={'time': 'tp_time'}, + use_cdflib=True) # Set the download routine -basic_tag = {'remote_dir': ''.join(('/pub/data/timed/saber/level2a_cdf', - '/{year:4d}/{month:02d}/')), - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'TIMED_L2A_SABER'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/instruments/timed_see.py b/pysatNASA/instruments/timed_see.py index 903058ab..02cc5d3c 100644 --- a/pysatNASA/instruments/timed_see.py +++ b/pysatNASA/instruments/timed_see.py @@ -17,19 +17,12 @@ None inst_id None supported -flatten_twod - If True, then two dimensional data is flattened across - columns. Name mangling is used to group data, first column - is 'name', last column is 'name_end'. In between numbers are - appended 'name_1', 'name_2', etc. All data for a given 2D array - may be accessed via, data.loc[:, 'item':'item_end'] - If False, then 2D data is stored as a series of DataFrames, - indexed by Epoch. data.loc[0, 'item'] - (default=True) Note ---- - no tag required +- cdflib load routine raises ISTP Compliance Warnings for several variables. + This is due to how the Epoch is listed in the original files. Warnings -------- @@ -42,10 +35,10 @@ import pandas as pds from pysat.instruments.methods import general as mm_gen -from pysat import logger from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import timed as mm_timed # ---------------------------------------------------------------------------- # Instrument attributes @@ -54,6 +47,7 @@ name = 'see' tags = {'': ''} inst_ids = {'': [tag for tag in tags.keys()]} +pandas_format = False # ---------------------------------------------------------------------------- # Instrument test attributes @@ -63,39 +57,18 @@ # ---------------------------------------------------------------------------- # Instrument methods - -def init(self): - """Initialize the Instrument object with instrument specific values. - - Runs once upon instantiation. - - """ - - rules_url = 'https://www.timed.jhuapl.edu/WWW/scripts/mdc_rules.pl' - ackn_str = ' '.join(('Please see the Rules of the Road at', rules_url)) - logger.info(ackn_str) - self.acknowledgements = ackn_str - self.references = ' '.join(('Woods, T. N., Eparvier, F. G., Bailey,', - 'S. M., Chamberlin, P. C., Lean, J.,', - 'Rottman, G. J., Solomon, S. C., Tobiska,', - 'W. K., and Woodraska, D. L. (2005),', - 'Solar EUV Experiment (SEE): Mission', - 'overview and first results, J. Geophys.', - 'Res., 110, A01312,', - 'doi:10.1029/2004JA010765.')) - - return - +init = functools.partial(mm_nasa.init, module=mm_timed, name=name) # No cleaning, use standard warning function instead clean = mm_nasa.clean_warn - # ---------------------------------------------------------------------------- # Instrument functions # # Use the default CDAWeb and pysat methods +# TODO(#104): Switch to netCDF4 files once unzip (#103) is supported. + # Set the list_files routine fname = 'timed_l3a_see_{year:04d}{month:02d}{day:02d}_v{version:02d}.cdf' supported_tags = {'': {'': fname}} @@ -104,15 +77,13 @@ def init(self): file_cadence=pds.DateOffset(months=1)) # Set the load routine -load = functools.partial(cdw.load, file_cadence=pds.DateOffset(months=1)) +load = functools.partial(cdw.load, file_cadence=pds.DateOffset(months=1), + pandas_format=pandas_format, use_cdflib=True) # Set the download routine -basic_tag = {'remote_dir': ''.join(('/pub/data/timed/see/data/level3a_cdf', - '/{year:4d}/{month:02d}/')), - 'fname': fname} -download_tags = {'': {'': basic_tag}} -download = functools.partial(cdw.download, supported_tags=download_tags) +download_tags = {'': {'': 'TIMED_L3A_SEE'}} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) # Set the list_remote_files routine -list_remote_files = functools.partial(cdw.list_remote_files, +list_remote_files = functools.partial(cdw.cdas_list_remote_files, supported_tags=download_tags) diff --git a/pysatNASA/tests/test_instruments.py b/pysatNASA/tests/test_instruments.py index 07e850f4..8a589938 100644 --- a/pysatNASA/tests/test_instruments.py +++ b/pysatNASA/tests/test_instruments.py @@ -8,6 +8,7 @@ import warnings +import pysat import pytest # Make sure to import your instrument library here @@ -15,6 +16,16 @@ # Import the test classes from pysat from pysat.tests.classes import cls_instrument_library as clslib +from pysat.utils import testing + +try: + import pysatCDF # noqa: F401 + # If this successfully imports, tests need to be run with both pysatCDF + # and cdflib + cdflib_only = False +except ImportError: + # pysatCDF is not present, standard tests default to cdflib. + cdflib_only = True # Tell the standard tests which instruments to run each test on. @@ -27,7 +38,9 @@ for inst in instruments['download']: fname = inst['inst_module'].supported_tags[inst['inst_id']][inst['tag']] if '.cdf' in fname: - instruments['cdf'].append(inst) + temp_inst, _ = clslib.initialize_test_inst_and_date(inst) + if temp_inst.pandas_format: + instruments['cdf'].append(inst) class TestInstruments(clslib.InstLibTests): @@ -42,6 +55,9 @@ class TestInstruments(clslib.InstLibTests): @pytest.mark.second @pytest.mark.parametrize("inst_dict", instruments['cdf']) + @pytest.mark.skipif(cdflib_only, + reason=" ".join(("Additional load tests not required", + "when pysatCDF not installed"))) def test_load_cdflib(self, inst_dict): """Test that instruments load at each cleaning level. @@ -71,7 +87,7 @@ def test_load_cdflib(self, inst_dict): assert UserWarning in categories else: # If error message does not match, raise error anyway - raise(verr) + raise ValueError(verr) # Make sure fake data is cleared assert target not in test_inst.data @@ -79,3 +95,77 @@ def test_load_cdflib(self, inst_dict): pytest.skip("Download data not available.") return + + # TODO(https://github.com/pysat/pysat/issues/1020): This test should be + # removed when header level data is tested in version 3.2.0+ of pysat + @pytest.mark.second + @pytest.mark.parametrize("inst_dict", instruments['cdf']) + def test_meta_header(self, inst_dict): + """Test that instruments have header level metadata attached. + + Parameters + ---------- + inst_dict : dict + Dictionary containing info to instnatiate a specific instrument. + """ + test_inst, date = clslib.initialize_test_inst_and_date(inst_dict) + try: + test_inst.load(date=date, use_header=True, use_cdflib=True) + except ValueError as verr: + # Check if instrument is failing due to strict time flag + if str(verr).find('Loaded data') > 0: + test_inst.strict_time_flag = False + with warnings.catch_warnings(record=True) as war: + test_inst.load(date=date, use_header=True, use_cdflib=True) + assert len(war) >= 1 + categories = [war[j].category for j in range(0, len(war))] + assert UserWarning in categories + else: + # If error message does not match, raise error anyway + raise (verr) + assert test_inst.meta.to_dict() != {} + + +class TestDeprecation(object): + """Unit test for deprecation warnings.""" + + def setup_method(self): + """Set up the unit test environment for each method.""" + + warnings.simplefilter("always", DeprecationWarning) + return + + def teardown_method(self): + """Clean up the unit test environment after each method.""" + + return + + @pytest.mark.parametrize("inst_module,tag", [('jpl_gps', 'roti')]) + def test_deprecated_instruments(self, inst_module, tag): + """Check that instantiating old instruments raises a DeprecationWarning. + + Parameters + ---------- + inst_module : str + name of deprecated module. + tag : str + tag of depracted instrument. + + """ + + with warnings.catch_warnings(record=True) as war: + pysat.Instrument(inst_module=getattr(pysatNASA.instruments, + inst_module), + tag=tag, use_header=True) + + warn_msgs = [" ".join(["The instrument module", + "`{:}`".format(inst_module), + "has been deprecated and will be removed", + "in 0.1.0+."])] + + # Ensure the minimum number of warnings were raised. + assert len(war) >= len(warn_msgs) + + # Test the warning messages, ensuring each attribute is present. + testing.eval_warnings(war, warn_msgs) + return diff --git a/pysatNASA/tests/test_methods_cdaweb.py b/pysatNASA/tests/test_methods_cdaweb.py index deb25417..dd7870e6 100644 --- a/pysatNASA/tests/test_methods_cdaweb.py +++ b/pysatNASA/tests/test_methods_cdaweb.py @@ -1,6 +1,7 @@ """Unit tests for the cdaweb instrument methods.""" import datetime as dt +import pandas as pds import requests import pytest @@ -16,8 +17,9 @@ class TestCDAWeb(object): def setup_method(self): """Set up the unit test environment for each method.""" - self.download_tags = pysatNASA.instruments.cnofs_plp.download_tags + self.download_tags = pysatNASA.instruments.timed_guvi.download_tags self.kwargs = {'tag': None, 'inst_id': None} + self.saved_path = pysat.params['data_dirs'] return def teardown_method(self): @@ -31,7 +33,7 @@ def test_remote_file_list_connection_error_append(self): with pytest.raises(Exception) as excinfo: # Giving a bad remote_site address yields similar ConnectionError - cdw.list_remote_files(tag='', inst_id='', + cdw.list_remote_files(tag='sdr-imaging', inst_id='high_res', supported_tags=self.download_tags, remote_url='https://bad/path') @@ -60,6 +62,7 @@ def test_bad_kwarg_download(self, bad_key, bad_val, err_msg): with pytest.raises(ValueError) as excinfo: cdw.download(supported_tags=self.download_tags, date_array=date_array, + data_path=self.saved_path, tag=self.kwargs['tag'], inst_id=self.kwargs['inst_id']) assert str(excinfo.value).find(err_msg) >= 0 @@ -80,11 +83,33 @@ def test_bad_kwarg_list_remote_files(self, bad_key, bad_val, err_msg): assert str(excinfo.value).find(err_msg) >= 0 return - def test_remote_file_list_all(self): - """Test that remote_file_list works if start/stop dates unspecified.""" + @pytest.mark.parametrize("start, stop", + [(None, None), + (dt.datetime(2009, 1, 1), None), + (dt.datetime(2009, 1, 1), + dt.datetime(2009, 1, 1)), + (pds.Timestamp(2009, 1, 1), + pds.Timestamp(2009, 1, 2))]) + def test_remote_file_list_all(self, start, stop): + """Test that remote_file_list works for all start and stop cases.""" self.module = pysatNASA.instruments.cnofs_plp self.test_inst = pysat.Instrument(inst_module=self.module) - files = self.test_inst.remote_file_list() + files = self.test_inst.remote_file_list(start, stop) assert len(files) > 0 return + + @pytest.mark.parametrize("series_out", [(True), (False)]) + def test_cdas_remote_files(self, series_out): + """Test that cdas_list_remote_files can return pandas series.""" + start = dt.datetime(2009, 1, 1) + stop = dt.datetime(2009, 1, 2) + self.module = pysatNASA.instruments.cnofs_plp + self.test_inst = pysat.Instrument(inst_module=self.module) + files = self.test_inst.remote_file_list(start, stop, + series_out=series_out) + if series_out is True: + assert isinstance(files, pds.Series) + else: + assert isinstance(files, list) + return diff --git a/pysatNASA/tests/test_methods_platform.py b/pysatNASA/tests/test_methods_platform.py new file mode 100644 index 00000000..a1cd6611 --- /dev/null +++ b/pysatNASA/tests/test_methods_platform.py @@ -0,0 +1,129 @@ +"""Unit tests for the common NASA platform method attributes.""" + + +from pysatNASA.instruments import methods + + +class TestTIMEDMethods(object): + """Unit tests for `pysat.instruments.methods.timed`.""" + + def setup_method(self): + """Set up the unit test environment for each method.""" + self.names = ['see', 'saber', 'guvi'] + self.module = methods.timed + self.platform_str = '(TIMED)' + return + + def teardown_method(self): + """Clean up the unit test environment after each method.""" + + del self.names, self.module, self.platform_str + return + + def test_ack(self): + """Test that the acknowledgements reference the correct platform.""" + + assert self.module.ackn_str.find(self.platform_str) >= 0 + return + + def test_rules(self): + """Test that the rules of the road exist for each instrument.""" + + if hasattr(self.module, "rules_url"): + for name in self.names: + assert name in self.module.rules_url.keys( + ), "No rules URL for {:}".format(name) + return + + def test_ref(self): + """Test that all instruments have references.""" + + for name in self.names: + assert name in self.module.refs.keys( + ), "No reference for {:}".format(name) + return + + +class TestDMSPMethods(TestTIMEDMethods): + """Unit tests for `pysat.instruments.methods.dmsp`.""" + + def setup_method(self): + """Set up the unit test environment for each method.""" + self.names = ['ssusi'] + self.module = methods.dmsp + self.platform_str = '(DMSP)' + return + + def teardown_method(self): + """Clean up the unit test environment after each method.""" + + del self.names, self.module, self.platform_str + return + + +class TestCNOFSMethods(TestTIMEDMethods): + """Unit tests for `pysat.instruments.methods.cnofs`.""" + + def setup_method(self): + """Set up the unit test environment for each method.""" + self.names = ['ivm', 'plp', 'vefi'] + self.module = methods.cnofs + self.platform_str = '(C/NOFS)' + return + + def teardown_method(self): + """Clean up the unit test environment after each method.""" + + del self.names, self.module, self.platform_str + return + + +class TestDE2Methods(TestTIMEDMethods): + """Unit tests for `pysat.instruments.methods.de2`.""" + + def setup_method(self): + """Set up the unit test environment for each method.""" + self.names = ['lang', 'nacs', 'rpa', 'wats'] + self.module = methods.de2 + self.platform_str = 'Dynamics Explorer 2' + return + + def teardown_method(self): + """Clean up the unit test environment after each method.""" + + del self.names, self.module, self.platform_str + return + + +class TestSES14Methods(TestTIMEDMethods): + """Unit tests for `pysat.instruments.methods.ses14`.""" + + def setup_method(self): + """Set up the unit test environment for each method.""" + self.names = ['gold'] + self.module = methods.ses14 + self.platform_str = 'Global-scale Observations of the Limb and Disk' + return + + def teardown_method(self): + """Clean up the unit test environment after each method.""" + + del self.names, self.module, self.platform_str + return + + +class TestGPSMethods(TestTIMEDMethods): + """Unit tests for `pysat.instruments.methods.gps`.""" + + def setup_method(self): + """Set up the unit test environment for each method.""" + self.names = ['roti15min_jpl'] + self.module = methods.gps + self.platform_str = 'GPS Total Electron Content' + return + + def teardown_method(self): + """Clean up the unit test environment after each method.""" + + del self.names, self.module, self.platform_str + return diff --git a/pysatNASA/version.txt b/pysatNASA/version.txt deleted file mode 100644 index 81340c7e..00000000 --- a/pysatNASA/version.txt +++ /dev/null @@ -1 +0,0 @@ -0.0.4 diff --git a/requirements.txt b/requirements.txt index 5bcb0ece..3684998a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,10 @@ -netCDF4 -requests beautifulsoup4 -lxml +cdasws cdflib>=0.4.4 +lxml +netCDF4 numpy pandas -pysat>=3.0.4 -xarray<2022.11 +pysat>=3.1.0 +requests +xarray diff --git a/setup.cfg b/setup.cfg index 49912451..08661e10 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,55 +1,8 @@ +# name and version must be maintained here as well for python 3.6 compatibility + [metadata] name = pysatNASA -version = file: pysatNASA/version.txt -url = https://github.com/pysat/pysatNASA -author = Jeff Klenzing -author_email = jeffrey.klenzing@nasa.gov -description = 'pysat support for NASA Instruments' -keywords = - pysat - ionosphere -classifiers = - Development Status :: 3 - Alpha - Topic :: Scientific/Engineering :: Physics - Topic :: Scientific/Engineering :: Atmospheric Science - Intended Audience :: Science/Research - License :: OSI Approved :: BSD License - Natural Language :: English - Programming Language :: Python :: 3.5 - Programming Language :: Python :: 3.6 - Programming Language :: Python :: 3.7 - Operating System :: MacOS :: MacOS X - Operating System :: POSIX :: Linux -license_file = LICENSE -long_description = file: README.md -long_description_content_type = text/markdown - -[options] -python_requires = >= 3.5 -setup_requires = - setuptools >= 38.6 - pip >= 10 -include_package_data = True -zip_safe = False -packages = find: -install_requires = - netCDF4 - requests - beautifulsoup4 - lxml - cdflib - numpy - pandas - xarray - pysat - -[options.extras_require] -all = - pysatCDF - -[coverage:report] -omit = - */instruments/templates/ +version = 0.0.5 [flake8] max-line-length = 80 @@ -57,12 +10,3 @@ ignore = D200 D202 W503 - -[tool:pytest] -markers = - all_inst: tests all instruments - download: tests for downloadable instruments - no_download: tests for instruments without download support - load_options: tests for instruments with additional options - first: first tests to run - second: second tests to run diff --git a/setup.py b/setup.py deleted file mode 100644 index 4c0bbd8e..00000000 --- a/setup.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (C) 2020, Authors -# Full license can be found in License.md and AUTHORS.md -# ----------------------------------------------------------------------------- -"""Setup routines for pysatNASA. - -Note ----- -Package metadata stored in setup.cfg - -""" - -from setuptools import setup - -# Run setup -setup() From 2c1e6aab1078518c5878b7aa55d948cd56e7096b Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 3 Aug 2023 14:29:13 -0400 Subject: [PATCH 03/82] BUG: combine single value list --- pysatNASA/instruments/methods/cdaweb.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index 235090eb..5a2154bc 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -386,9 +386,12 @@ def load_xarray(fnames, tag='', inst_id='', ldata.append(temp_data) # Combine individual files together, concat along epoch - if len(ldata) > 0: + if len(ldata) > 1: data = xr.combine_nested(ldata, epoch_name, combine_attrs='override') + else: + data = ldata[0] + all_vars = io.xarray_all_vars(data) From ffc4242d38bb50427c9915f1912e23bd4431c812 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 3 Aug 2023 14:38:21 -0400 Subject: [PATCH 04/82] ENH: use standard load --- pysatNASA/instruments/mvn_kp.py | 89 +++------------------------------ 1 file changed, 8 insertions(+), 81 deletions(-) diff --git a/pysatNASA/instruments/mvn_kp.py b/pysatNASA/instruments/mvn_kp.py index c8a63e9a..bd7bdc6e 100644 --- a/pysatNASA/instruments/mvn_kp.py +++ b/pysatNASA/instruments/mvn_kp.py @@ -2,12 +2,12 @@ """Module for the MAVEN kp instrument. Created by: Teresa Esman, NPP at GSFC Last editted: Jun 2, 2023 - May 12, 2023 + May 12, 2023 Supports the Key parameter (kp) data from multiple instruments onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. Accesses local data in CDF format. -Downlaods from CDAWeb. +Downlaods from CDAWeb. Properties ---------- @@ -31,8 +31,8 @@ import pysat from pysat.utils import registry registry.register_by_module(pysatNASA.instruments) - - + + kp = pysat.Instrument(platform='MAVEN', name='kp') kp.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) kp.load(2020, 1, use_header = True) @@ -72,22 +72,6 @@ init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) -def preprocess(self, keep_original_names=False): - """Adjust epoch timestamps to datetimes and remove variable preambles. - - Parameters - ---------- - keep_original_names : bool - if True then the names as given in the netCDF MAVEN file - will be used as is. If False, a preamble is removed. (default=False) - - """ - - if not keep_original_names: - mm_gen.remove_leading_text(self, target='MAVEN_') - return - - def clean(self): """Clean MAVEN kp data to the specified level. @@ -95,7 +79,7 @@ def clean(self): ---- Supports 'clean', 'dusty', 'dirty', 'none'. Method is not called by pysat if clean_level is None or 'none'. - + """ return @@ -340,63 +324,6 @@ def init(self): return -def load(fnames, tag='', inst_id='', keep_original_names=False): - """Load MAVEN kp data into `xarray.Dataset` object and `pysat.Meta` objects. - - This routine is called as needed by pysat. It is not intended - for direct user interaction. - - Parameters - ---------- - fnames : array-like - Iterable of filename strings, full path, to data files to be loaded. - This input is nominally provided by pysat itself. - tag : str - Tag name used to identify particular data set to be loaded. - This input is nominally provided by pysat itself. (default='') - inst_id : str - Instrument ID used to identify particular data set to be loaded. - This input is nominally provided by pysat itself. (default='') - keep_original_names : bool - If True then the names as given in the netCDF MAVEN file - will be used as is. If False, a preamble is removed. (default=False) - - Returns - ------- - data : xr.Dataset - An xarray Dataset with data prepared for the pysat.Instrument - meta : pysat.Meta - Metadata formatted for a pysat.Instrument object. - - Note - ---- - Any additional keyword arguments passed to pysat.Instrument - upon instantiation are passed along to this routine. - - The 'Altitude' dimension is renamed as 'Alt' to avoid confusion with the - 'Altitude' variable when performing xarray operations - - Examples - -------- - :: - - inst = pysat.Instrument('mvn', 'kp') - inst.load(2020, 1) - - """ - - - data = cdflib.cdf_to_xarray(fnames[0]) - - meta = [] - - xdata = mm_mvn.scrub_mvn_kp(data) - #this switches type to xarray - - # Add meta here - header_data = mm_mvn.generate_header_kp(data) - meta = mm_mvn.generate_metadata_kp(header_data,data) - - data = xdata - - return data,meta +# Set the load routine +load = functools.partial(cdw.load, epoch_name='epoch', + pandas_format=pandas_format, use_cdflib=True) From 0ef71dc67a4e5c0928009b2af8896f36febbf5dc Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Fri, 4 Aug 2023 09:49:45 -0400 Subject: [PATCH 05/82] Update mvn_kp.py --- pysatNASA/instruments/mvn_kp.py | 217 +------------------------------- 1 file changed, 4 insertions(+), 213 deletions(-) diff --git a/pysatNASA/instruments/mvn_kp.py b/pysatNASA/instruments/mvn_kp.py index bd7bdc6e..d8e6d1a3 100644 --- a/pysatNASA/instruments/mvn_kp.py +++ b/pysatNASA/instruments/mvn_kp.py @@ -12,9 +12,9 @@ Properties ---------- platform - 'mvn' + 'maven' name - 'kp' + 'insitu' tag None supported @@ -27,7 +27,6 @@ Examples -------- :: - import pysat from pysat.utils import registry registry.register_by_module(pysatNASA.instruments) @@ -51,8 +50,8 @@ # ---------------------------------------------------------------------------- # Instrument attributes -platform = 'mvn' -name = 'kp' +platform = 'maven' +name = 'insitu' tags = {'': ''} inst_ids = {'': ['']} @@ -67,11 +66,9 @@ # ---------------------------------------------------------------------------- # Instrument methods - # Use standard init routine init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) - def clean(self): """Clean MAVEN kp data to the specified level. @@ -79,8 +76,6 @@ def clean(self): ---- Supports 'clean', 'dusty', 'dirty', 'none'. Method is not called by pysat if clean_level is None or 'none'. - - """ return @@ -96,7 +91,6 @@ def clean(self): supported_tags = {'': {'': fname}} list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) - # Set the download routine basic_tag = {'remote_dir': '/pub/data/maven/insitu/kp-4sec/cdfs/{year:04d}/{month:02d}', 'fname': fname} @@ -106,209 +100,6 @@ def clean(self): # Set the list_remote_files routine list_remote_files = functools.partial(cdw.list_remote_files, supported_tags=download_tags) - - -def filter_metadata(meta_dict): - """Filter kp metadata to remove warnings during loading. - - Parameters - ---------- - meta_dict : dict - Dictionary of metadata from file - - Returns - ------- - meta_dict : dict - Filtered kp metadata - - """ - vars = ['LPW_Electron_density', - 'LPW_Electron_density_min', - 'LPW_Electron_density_max', - 'LPW_Electron_temperature', - 'LPW_Electron_temperature_min', - 'LPW_Electron_temperature_max', - 'LPW_Spacecraft_potential', - 'LPW_Spacecraft_potential_min', - 'LPW_Spacecraft_potential_max', - 'LPW_E_field_wave_power_2_100', - 'LPW_E_field_wave_power_2_100_data_quality', - 'LPW_E_field_wave_power_100_800', - 'LPW_E_field_wave_power_100_800_data_quality', - 'LPW_E_field_wave_power_800_1000', - 'LPW_E_field_wave_power_800_1000_data_quality', - 'LPW_EUV_irradiance_pt1_7', - 'LPW_EUV_irradiance_pt1_7_data_quality', - 'LPW_EUV_irradiance_17_22', - 'LPW_EUV_irradiance_17_22_data_quality', - 'LPW_EUV_irradiance_lyman_alpha', - 'LPW_EUV_irradiance_lyman_alpha_data_quality', - 'SWEA_Electron_density', - 'SWEA_Electron_density_quality', - 'SWEA_Electron_temperature', - 'SWEA_Electron_temperature_quality', - 'SWEA_Electron_parallel_flux_5_100', - 'SWEA_Electron_parallel_flux_5_100_data_quality', - 'SWEA_Electron_parallel_flux_100_500', - 'SWEA_Electron_parallel_flux_100_500_data_quality', - 'SWEA_Electron_parallel_flux_500_1000', - 'SWEA_Electron_parallel_flux_500_1000_data_quality', - 'SWEA_Electron_anti_parallel_flux_5_100', - 'SWEA_Electron_anti_parallel_flux_5_100_data_quality', - 'SWEA_Electron_anti_parallel_flux_100_500', - 'SWEA_Electron_anti_parallel_flux_100_500_data_quality', - 'SWEA_Electron_anti_parallel_flux_500_1000', - 'SWEA_Electron_anti_parallel_flux_500_1000_data_quality', - 'SWEA_Electron_spectrum_shape', - 'SWEA_Electron_spectrum_shape_data_quality', - 'SWIA_Hplus_density', - 'SWIA_Hplus_density_data_quality', - 'SWIA_Hplus_flow_velocity_MSO', - 'SWIA_Hplus_flow_velocity_MSO_data_quality', - 'SWIA_Hplus_temperature', - 'SWIA_Hplus_temperature_data_quality', - 'SWIA_dynamic_pressure', - 'SWIA_dynamic_pressure_data_quality', - 'STATIC_Quality', - 'STATIC_Hplus_density', - 'STATIC_Hplus_density_data_quality', - 'STATIC_Oplus_density', - 'STATIC_Oplus_density_data_quality', - 'STATIC_O2plus_density', - 'STATIC_O2plus_density_data_quality', - 'STATIC_Hplus_temperature', - 'STATIC_Hplus_temperature_data_quality', - 'STATIC_Oplus_temperature', - 'STATIC_Oplus_temperature_data_quality', - 'STATIC_O2plus_temperature', - 'STATIC_O2plus_temperature_data_quality', - 'STATIC_O2plus_flow_velocity_MAVEN_APP', - 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality', - 'STATIC_O2plus_flow_velocity_MSO', - 'STATIC_O2plus_flow_velocity_MSO_data_quality', - 'STATIC_Hplus_omni_directional_flux', - 'STATIC_Hplus_characteristic_energy', - 'STATIC_Hplus_characteristic_energy_DQ', - 'STATIC_HEplus_omni_directional_flux', - 'STATIC_HEplus_characteristic_energy', - 'STATIC_HEplus_characteristic_energy_DQ', - 'STATIC_Oplus_omni_directional_flux', - 'STATIC_Oplus_characteristic_energy', - 'STATIC_Oplus_characteristic_energy_DQ', - 'STATIC_O2plus_omni_directional_flux', - 'STATIC_O2plus_characteristic_energy', - 'STATIC_O2plus_characteristic_energy_DQ', - 'STATIC_Hplus_characteristic_direction_MSO', - 'STATIC_Hplus_characteristic_angular_width', - 'STATIC_Hplus_characteristic_angular_width_DQ', - 'STATIC_dominant_pickup_ion_characteristic_direction_MSO', - 'STATIC_dominant_pickup_ion_characteristic_angular_width', - 'STATIC_dominant_pickup_ion_characteristic_angular_width_DQ', - 'SEP_Ion_Energy_Flux_30_1000_FOV_1F', - 'SEP_Ion_Energy_Flux_30_1000_FOV_1F_data_quality', - 'SEP_Ion_Energy_Flux_30_1000_FOV_1R', - 'SEP_Ion_Energy_Flux_30_1000_FOV_1R_data_quality', - 'SEP_Ion_Energy_Flux_30_1000_FOV_2F', - 'SEP_Ion_Energy_Flux_30_1000_FOV_2F_data_quality', - 'SEP_Ion_Energy_Flux_30_1000_FOV_2R', - 'SEP_Ion_Energy_Flux_30_1000_FOV_2R_data_quality', - 'SEP_Electron_Energy_Flux_30_300_FOV_1F', - 'SEP_Electron_Energy_Flux_30_300_FOV_1F_data_quality', - 'SEP_Electron_Energy_Flux_30_300_FOV_1R', - 'SEP_Electron_Energy_Flux_30_300_FOV_1R_data_quality', - 'SEP_Electron_Energy_Flux_30_300_FOV_2F', - 'SEP_Electron_Energy_Flux_30_300_FOV_2F_data_quality', - 'SEP_Electron_Energy_Flux_30_300_FOV_2R', - 'SEP_Electron_Energy_Flux_30_300_FOV_2R_data_quality', - 'SEP_Look_direction_1F_MSO', - 'SEP_Look_direction_1R_MSO', - 'SEP_Look_direction_2F_MSO', - 'SEP_Look_direction_2R_MSO', - 'MAG_field_MSO', - 'MAG_field_MSO_data_quality', - 'MAG_field_GEO', - 'MAG_field_GEO_data_quality', - 'MAG_field_RMS_deviation', - 'MAG_field_RMS_deviation_data_quality', - 'NGIMS_He_density', - 'NGIMS_He_density_precision', - 'NGIMS_He_density_data_quality', - 'NGIMS_O_density', - 'NGIMS_O_density_precision', - 'NGIMS_O_density_data_quality', - 'NGIMS_CO_density', - 'NGIMS_CO_density_precision', - 'NGIMS_CO_density_data_quality', - 'NGIMS_N2_density', - 'NGIMS_N2_density_precision', - 'NGIMS_N2_density_data_quality', - 'NGIMS_NO_density', - 'NGIMS_NO_density_precision', - 'NGIMS_NO_density_data_quality', - 'NGIMS_Ar_density', - 'NGIMS_Ar_density_precision', - 'NGIMS_Ar_density_data_quality', - 'NGIMS_CO2_density', - 'NGIMS_CO2_density_precision', - 'NGIMS_CO2_density_data_quality', - 'NGIMS_Ion_density_32plus', - 'NGIMS_Ion_density_precision_32plus', - 'NGIMS_Ion_density_data_quality_32plus', - 'NGIMS_Ion_density_44plus', - 'NGIMS_Ion_density_precision_44plus', - 'NGIMS_Ion_density_data_quality_44plus', - 'NGIMS_Ion_density_30plus', - 'NGIMS_Ion_density_precision_30plus', - 'NGIMS_Ion_density_data_quality_30plus', - 'NGIMS_Ion_density_16plus', - 'NGIMS_Ion_density_precision_16plus', - 'NGIMS_Ion_density_data_quality_16plus', - 'NGIMS_Ion_density_28plus', - 'NGIMS_Ion_density_precision_28plus', - 'NGIMS_Ion_density_data_quality_28plus', - 'NGIMS_Ion_density_12plus', - 'NGIMS_Ion_density_precision_12plus', - 'NGIMS_Ion_density_data_quality_12plus', - 'NGIMS_Ion_density_17plus', - 'NGIMS_Ion_density_precision_17plus', - 'NGIMS_Ion_density_data_quality_17plus', - 'NGIMS_Ion_density_14plus', - 'NGIMS_Ion_density_precision_14plus', - 'NGIMS_Ion_density_data_quality_14plus', - 'SPICE_spacecraft_GEO', - 'SPICE_spacecraft_MSO', - 'SPICE_spacecraft_longitude_GEO', - 'SPICE_spacecraft_latitude_GEO', - 'SPICE_spacecraft_sza', - 'SPICE_spacecraft_local_time', - 'SPICE_spacecraft_altitude', - 'SPICE_spacecraft_attitude_GEO', - 'SPICE_spacecraft_attitude_MSO', - 'SPICE_app_attitude_GEO', - 'SPICE_app_attitude_MSO', - 'SPICE_Orbit_Number', - 'Inbound_Outbound_Flag', - 'SPICE_Mars_season', - 'SPICE_Mars_Sun_distance', - 'SPICE_Subsolar_Point_longitude_GEO', - 'SPICE_Subsolar_Point_latitude_GEO', - 'SPICE_Sub_Mars_Point_longitude', - 'SPICE_Sub_Mars_Point_latitude', - 'Rotation_matrix_IAU_MARS_MAVEN_MSO', - 'Rotation_matrix_SPACECRAFT_MAVEN_MSO'] - - for var in vars: - if var in meta_dict: - meta_dict[var]['FillVal'] = np.nan - - # Deal with string arrays - for var in meta_dict.keys(): - if 'Var_Notes' in meta_dict[var]: - meta_dict[var]['Var_Notes'] = ' '.join(pysat.utils.listify( - meta_dict[var]['Var_Notes'])) - - return meta_dict - def init(self): """Initialize the Instrument object with instrument specific values. Runs once upon instantiation. From df71e6715a8b87880e173f12ed60fa0c74f2371c Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Fri, 4 Aug 2023 09:58:24 -0400 Subject: [PATCH 06/82] TME: Formatting, file rename switching kp to insitu --- pysatNASA/instruments/{mvn_kp.py => mvn_insitu.py} | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) rename pysatNASA/instruments/{mvn_kp.py => mvn_insitu.py} (91%) diff --git a/pysatNASA/instruments/mvn_kp.py b/pysatNASA/instruments/mvn_insitu.py similarity index 91% rename from pysatNASA/instruments/mvn_kp.py rename to pysatNASA/instruments/mvn_insitu.py index d8e6d1a3..02e4ccd8 100644 --- a/pysatNASA/instruments/mvn_kp.py +++ b/pysatNASA/instruments/mvn_insitu.py @@ -1,10 +1,12 @@ # -*- coding: utf-8 -*- """Module for the MAVEN kp instrument. + Created by: Teresa Esman, NPP at GSFC Last editted: Jun 2, 2023 May 12, 2023 -Supports the Key parameter (kp) data from multiple instruments onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. +Supports the Key parameter (kp) data from multiple instruments +onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. Accesses local data in CDF format. Downlaods from CDAWeb. @@ -39,8 +41,6 @@ import datetime as dt import functools -import numpy as np -import cdflib import pysat from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw @@ -69,6 +69,7 @@ # Use standard init routine init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) + def clean(self): """Clean MAVEN kp data to the specified level. @@ -92,7 +93,8 @@ def clean(self): list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) # Set the download routine -basic_tag = {'remote_dir': '/pub/data/maven/insitu/kp-4sec/cdfs/{year:04d}/{month:02d}', +basic_tag = {'remote_dir': ''.join(('/pub/data/maven/insitu/kp-4sec/', + 'cdfs/{year:04d}/{month:02d}')), 'fname': fname} download_tags = {'': {'': basic_tag}} download = functools.partial(cdw.download, supported_tags=download_tags) From cbf0479da88882238afdc16e14f0cc46b37c36f7 Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Fri, 4 Aug 2023 12:35:26 -0400 Subject: [PATCH 07/82] TME: Additional formatting --- pysatNASA/instruments/__init__.py | 2 +- pysatNASA/instruments/methods/__init__.py | 1 + pysatNASA/instruments/methods/mvn.py | 2120 +-------------------- pysatNASA/instruments/mvn_insitu.py | 19 +- pysatNASA/instruments/mvn_mag.py | 138 +- test_requirements.txt | 2 +- 6 files changed, 57 insertions(+), 2225 deletions(-) diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index 60967d8a..7729829c 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -11,7 +11,7 @@ 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_vefi', 'de2_wats', 'dmsp_ssusi', 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', - 'igs_gps', 'iss_fpmu', 'jpl_gps', 'mvn_kp', 'mvn_mag', 'omni_hro', + 'igs_gps', 'iss_fpmu', 'jpl_gps', 'mvn_mag', 'mvn_insitu', 'omni_hro', 'ses14_gold', 'timed_guvi', 'timed_saber', 'timed_see'] for inst in __all__: diff --git a/pysatNASA/instruments/methods/__init__.py b/pysatNASA/instruments/methods/__init__.py index 8542fcbc..da8f7d9a 100644 --- a/pysatNASA/instruments/methods/__init__.py +++ b/pysatNASA/instruments/methods/__init__.py @@ -12,3 +12,4 @@ from pysatNASA.instruments.methods import omni # noqa F401 from pysatNASA.instruments.methods import ses14 # noqa F401 from pysatNASA.instruments.methods import timed # noqa F401 +from pysatNASA.instruments.methods import mvn # noga F401 diff --git a/pysatNASA/instruments/methods/mvn.py b/pysatNASA/instruments/methods/mvn.py index 02d28213..3d27d489 100644 --- a/pysatNASA/instruments/methods/mvn.py +++ b/pysatNASA/instruments/methods/mvn.py @@ -1,2101 +1,31 @@ -#!/usr/bin/env python3 # -*- coding: utf-8 -*- -""" +"""Provides non-instrument specific routines for MAVEN data. + Created on Thu Jul 13 11:21:01 2023 @author: tesman """ -import datetime as dt -import pysat -import xarray as xr -import pandas as pd - -ackn_str = ' '.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al. The Mars Atmosphere and Volatile Evolution', - '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015). https://doi.org/10.1007/s11214-015-0139-x')) -references = ' '.join(('Connerney, J., and P. Lawton, MAVEN MAG PDS Archive SIS - This document ', - 'describes the format and content of the MAVEN Magnetometer (MAG) Planetary', - 'Data System (PDS) data archive. It includes descriptions of the Standard', - 'Data Products and associated metadata, and the volume archive format,', - 'content, and generation pipeline.',' ', - 'Connerney, J.E.P.; Espley, J.; Lawton, P.; Murphy, S.; Odom, J.; Oliversen, R.;', - 'and Sheppard, D., The MAVEN Magnetic Field Investigation, Space Sci Rev,', - 'Vol 195, Iss 1-4, pp.257-291, 2015. doi:10.1007/s11214-015-0169-4', - 'Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al. The Mars Atmosphere and Volatile Evolution', - '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015). https://doi.org/10.1007/s11214-015-0139-x')) - -def scrub_mvn_mag(data): - """Make data labels and epoch compatible with SPASE and pysat. - Parameters - ---------- - data : pandas.Dataframe() - Metadata object containing the default metadata loaded from the sav files. - Returns - ------- - data : pandas.Dataframe() - Replacement data object with compatible variable names and epoch. - """ - - UTC = data['epoch'].values / 1e9 #UTC time from 01-Jan-2000 12:00:00.000, nanoseconds - unix_time = UTC + 946728000 - array_size = len(unix_time) - pdata = pd.DataFrame(index = unix_time) - for key in data.keys(): #For one dimensional arrays - try: - if len(data[key]) == array_size and key not in {'OB_B','POSN','OB_BDPL'}: - pdata[key] = data[key] - except TypeError: - pass - - for key in data.keys(): #For three-dimensional arrays - for coord in {'x','y','z'}: - try: - if len(data[key]) == array_size and key in {'OB_B','POSN','OB_BDPL'}: - if coord == 'x': ind = 0 - if coord == 'y': ind = 1 - if coord == 'z': ind = 2 - pdata[key+'_'+coord] = data[key].values[:,ind] - except TypeError: - pass - - xdata = xr.Dataset(pdata) #Switch to xarray type - data = xdata.rename(dim_0 = 'time') - return data - - -def generate_header(data): - """Generate the meta header info for mvn mag. - - Parameters - ---------- - inst_id : str - The VID of the associated dataset. - epoch : dt.datetime - The epoch of the datafile. Corresponds to the first data point. - Returns - ------- - header : dict - A dictionary compatible with the pysat.meta_header format. Top-level - metadata for the file. - - - Global attributes are used to provide information about the data set as an entity. Together with variables and variable attributes, the global attributes make the data correctly and independently usable by someone not connected with the instrument team, and hence, a good archive product. The global attributes are also used by the CDAWeb Display and Retrieval system. - -The required Global Attributes are listed here with example values. Note that CDF attributes are case-sensitive and must exactly follow what is shown here. Additional Global attributes can be defined but they must start with a letter and can otherwise contain letters, numbers and the unscore character (no other special characters allowed). See Global Attribute Definitions for the full set of defined Global Attributes. - - ATTRIBUTE EXAMPLE VALUE --------------------------------------------------------------------- - - "Project" { "ISTP>International " - - "Solar-Terrestrial Physics" }. - - This attribute identifies the name of the project and indicates ownership. - For ISTP missions and investigations, the value used is "ISTP>International - Solar-Terrestrial Physics". For the Cluster mission, the value is "STSP Cluster>Solar - Terrestrial Science Programmes, Cluster". - - - - "Source_name" { "GEOTAIL>Geomagnetic Tail" }. - - This attribute identifies the mission or investigation that contains the sensors. - For ISTP, this is the mission name for spacecraft missions or the investigation name for - ground-based or theory investigations. Both a long name and a short name are provided. - This attribute should be single valued. - - - "Discipline" { "Space Physics>Magnetospheric Science" }. - "Data_type" { "K0>Key Parameter" }. - "Descriptor" { "EPI>Energetic Particles" - - " and Ion Composition" }. - This attribute identifies the name of the instrument or sensor - that collected the data - - "Data_version" { "1" }. - "Logical_file_id" { "GE_K0_EPI_19920908_V01" }. - "PI_name" { "D. Williams" }. - "PI_affiliation" { "JHU/APL" }. - "TEXT" { "reference to journal article, URL address" }. - - This attribute is an NSSDC standard global attribute which is a - text description of the experiment whose data is included in the CDF. - A reference to a journal article(s) or to a World Wide Web page describing - the experiment is essential, and constitutes the minimum requirement. - A written description of the data set is also desirable. This attribute - can have as many entries as necessary to contain the desired information. - - "Instrument_type" { "Magnetic Fields (space)" }. - "Mission_group" { "Geotail" }. - "Logical_source" { "GE_K0_EPI" }. - "Logical_source_description" { "Geotail Magnetic Field Key Parameters" }. - --------------------------------------------------------------------- - - Medium Energy Proton and Electron Detector (MEPED) - """ - header = {'Project': data.Project, - 'Source_name': data.Source_name, - 'Discipline':data.Discipline, - 'Data_type': data.Data_type, - 'Descriptor': data.Descriptor, - 'Data_version': '', - 'Logical_file_id': data.Logical_file_id, - 'PI_name': data.PI_name, - 'PI_affiliation': data.PI_affiliation, - 'TEXT': data.TEXT, - 'Rules_of_use': data.Rules_of_use, - 'Instrument_type': data.Instrument_type, - 'Mission_group': data.Mission_group, - 'Logical_source': data.Logical_source, - 'Logical_source_description': data.Logical_source_description, - 'DOI':'10.17189/1414178', - 'File_naming_convention': data.File_naming_convention, - 'Time_resolution': data.Time_resolution, - 'Generated_by': data.Generated_by, - 'Generation_date': '', - 'Generation_datetime': dt.datetime.today().isoformat(), - 'Acknowledgement': ackn_str, - 'TITLE': data.TITLE, - 'spase_DatasetResourceID': {'spase://NASA/NumericalData', - '/MAVEN/MAG/SunState/Level2', - '/PT1S' }, - 'LINK_TEXT': data.LINK_TEXT, - 'LINK_TITLE': data.LINK_TITLE, - 'HTTP_LINK': data.HTTP_LINK} - - return header - - -def generate_metadata(header_data,data): - """Generate metadata object for mvn mag data compatible with SPASE and pysat. - Parameters - ---------- - header_data : dict - A dictionary compatible with the pysat.meta_header format. Required to - properly initialize metadata. - Returns - ------- - metadata : pandas.Dataframe() - Contains data compatible with SPASE standards to initialize pysat.Meta. - - Variables: - epoch, DDAY, OB_B, OB_B_range, POSN, OB_BDPL, OB_BDPL_range,compno_3, OB_B_labl, POSN_labl, OB_BDPL_labl - """ - meta = pysat.Meta(header_data=header_data) - - meta['time'] = {meta.labels.name: 'Unix time', - meta.labels.units: 'seconds', - meta.labels.min_val: float(data.epoch.VALIDMIN)/1e9 +946728000, - meta.labels.max_val: float(data.epoch.VALIDMAX)/1e9 +946728000, - meta.labels.desc: data.epoch.CATDESC, - meta.labels.fill_val: float(data.epoch.FILLVAL)} - - meta['DDAY'] ={meta.labels.name: data.DDAY.FIELDNAM, - meta.labels.units: data.DDAY.UNITS, - meta.labels.min_val: float(data.DDAY.VALIDMIN), - meta.labels.max_val: float(data.DDAY.VALIDMAX), - meta.labels.desc: data.DDAY.CATDESC, - meta.labels.fill_val: float(data.DDAY.FILLVAL)} - - meta['OB_B_x']={meta.labels.name: 'Outboard Magnetic Field x', - meta.labels.units: data.OB_B.UNITS, - meta.labels.desc: data.OB_B.CATDESC, - meta.labels.min_val: float(data.OB_B.VALIDMIN), - meta.labels.max_val: float(data.OB_B.VALIDMAX), - meta.labels.fill_val: float(data.OB_B.FILLVAL)} - meta['OB_B_y']={meta.labels.name: 'Outboard Magnetic Field y', - meta.labels.units: data.OB_B.UNITS, - meta.labels.desc: data.OB_B.CATDESC, - meta.labels.min_val: float(data.OB_B.VALIDMIN), - meta.labels.max_val: float(data.OB_B.VALIDMAX), - meta.labels.fill_val: float(data.OB_B.FILLVAL)} - meta['OB_B_z']={meta.labels.name: 'Outboard Magnetic Field z', - meta.labels.units: data.OB_B.UNITS, - meta.labels.desc: data.OB_B.CATDESC, - meta.labels.min_val: float(data.OB_B.VALIDMIN), - meta.labels.max_val: float(data.OB_B.VALIDMAX), - meta.labels.fill_val: float(data.OB_B.FILLVAL)} - - meta['OB_B_range']={meta.labels.name: data.OB_B_range.long_name, - meta.labels.units: data.OB_B_range.UNITS, - meta.labels.desc: data.OB_B_range.CATDESC, - meta.labels.min_val: float(data.OB_B_range.VALIDMIN), - meta.labels.max_val: float(data.OB_B_range.VALIDMAX), - meta.labels.fill_val: float(data.OB_B_range.FILLVAL)} - - meta['POSN_x']={meta.labels.name: 'Spacecraft Position x', - meta.labels.units: data.POSN.UNITS, - meta.labels.desc: 'Spacecraft position x', - meta.labels.min_val: float(data.POSN.VALIDMIN), - meta.labels.max_val: float(data.POSN.VALIDMAX), - meta.labels.fill_val:float(data.POSN.FILLVAL)} - meta['POSN_y']={meta.labels.name: 'Spacecraft Position y', - meta.labels.units: data.POSN.UNITS, - meta.labels.desc: 'Spacecraft position y', - meta.labels.min_val: float(data.POSN.VALIDMIN), - meta.labels.max_val: float(data.POSN.VALIDMAX), - meta.labels.fill_val:float(data.POSN.FILLVAL)} - meta['POSN_z']={meta.labels.name: 'Spacecraft Position z', - meta.labels.units: data.POSN.UNITS, - meta.labels.desc: 'Spacecraft position z', - meta.labels.min_val: float(data.POSN.VALIDMIN), - meta.labels.max_val: float(data.POSN.VALIDMAX), - meta.labels.fill_val:float(data.POSN.FILLVAL)} - - meta['OB_BDPL_x']={meta.labels.name: data.OB_BDPL_labl.values[0], - meta.labels.units: data.OB_BDPL.UNITS, - meta.labels.desc: data.OB_BDPL.CATDESC + ' x', - meta.labels.min_val: float(data.OB_BDPL.VALIDMIN), - meta.labels.max_val: float(data.OB_BDPL.VALIDMAX), - meta.labels.fill_val: float(data.OB_BDPL.FILLVAL)} - meta['OB_BDPL_y']={meta.labels.name: data.OB_BDPL_labl.values[1], - meta.labels.units: data.OB_BDPL.UNITS, - meta.labels.desc: data.OB_BDPL.CATDESC + ' y', - meta.labels.min_val: float(data.OB_BDPL.VALIDMIN), - meta.labels.max_val: float(data.OB_BDPL.VALIDMAX), - meta.labels.fill_val: float(data.OB_BDPL.FILLVAL)} - meta['OB_BDPL_z']={meta.labels.name: data.OB_BDPL_labl.values[2], - meta.labels.units: data.OB_BDPL.UNITS, - meta.labels.desc: data.OB_BDPL.CATDESC + ' z', - meta.labels.min_val: float(data.OB_BDPL.VALIDMIN), - meta.labels.max_val: float(data.OB_BDPL.VALIDMAX), - meta.labels.fill_val: float(data.OB_BDPL.FILLVAL)} - - meta['OB_BDPL_range']={meta.labels.name: data.OB_BDPL_range.FIELDNAM, - meta.labels.desc: data.OB_BDPL_range.CATDESC, - meta.labels.min_val: float(data.OB_BDPL.VALIDMIN), - meta.labels.max_val: float(data.OB_BDPL.VALIDMAX), - meta.labels.fill_val: float(data.OB_BDPL.FILLVAL), - meta.labels.units: data.OB_BDPL.UNITS} - - return meta - -"""Provides metadata specific routines for MGS KP data.""" -def scrub_mvn_kp(data): - """Make data labels and epoch compatible with SPASE and pysat. - Parameters - ---------- - data : pandas.Dataframe() - Metadata object containing the default metadata loaded from the sav files. - Returns - ------- - data : pandas.Datafram() - Replacement data object with compatible variable names and epoch. - """ - - # Now we make our Epoch variable - unix_time = data['epoch'].values/1e3 - 62167204800 #originally time from 0-0-0 0:00:00.000 ms - - #KP data from the MAVEN SDC is in the format yyyy-mm-ddThh:mm:ss - array_size = len(unix_time) - pdata = pd.DataFrame(index = unix_time) - p2data = pd.DataFrame(index = unix_time) - p3data = pd.DataFrame(index = unix_time) - for key in data.keys(): - try: - if len(data[key]) == array_size and key not in {'SWIA_Hplus_flow_velocity_MSO','SWIA_Hplus_flow_velocity_MSO_data_quality', - 'SWIA_Hplus_flow_velocity_MSO_dq_labl', 'STATIC_O2plus_flow_velocity_MAVEN_APP', - 'STATIC_O2plus_flow_velocity_MAVEN_APP_labl', 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality', - 'SPICE_spacecraft_GEO', - 'STATIC_O2plus_flow_velocity_MSO','MAG_field_GEO','MAG_field_MSO_data_quality', - 'STATIC_O2plus_flow_velocity_MSO_data_quality', - 'SPICE_app_attitude_MSO','SEP_Look_direction_1R_MSO', - 'STATIC_Hplus_characteristic_direction_MSO', - 'STATIC_dominant_pickup_ion_characteristic_direction_MSO', - 'MAG_field_MSO_dq_labl','MAG_field_MSO','MAG_field_GEO_labl', 'SEP_Look_direction_1F_MSO', - 'MAG_field_GEO_dq_labl','SEP_Look_direction_2F_MSO','MAG_field_GEO_data_quality', - 'SPICE_spacecraft_GEO_labl','SEP_Look_direction_2R_MSO', - 'SPICE_spacecraft_MSO_labl','SPICE_spacecraft_MSO','SPICE_spacecraft_attitude_MSO', - 'SPICE_spacecraft_attitude_GEO_labl','SPICE_spacecraft_attitude_GEO', - 'SPICE_spacecraft_attitude_MSO_labl','SPICE_app_attitude_GEO', - 'Rotation_matrix_SPACECRAFT_MAVEN_MSO','Rotation_matrix_IAU_MARS_MAVEN_MSO'}: - if pdata.shape[1] < 100: - pdata[key] = data[key] - else: - p2data[key] = data[key] - except TypeError: - pass - - for key in data.keys(): - for coord in {'x','y','z'}: - try: - if len(data[key]) == array_size and key in {'SWIA_Hplus_flow_velocity_MSO','SWIA_Hplus_flow_velocity_MSO_data_quality', - 'STATIC_O2plus_flow_velocity_MAVEN_APP','STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality', - 'SPICE_spacecraft_GEO','STATIC_O2plus_flow_velocity_MSO', - 'STATIC_O2plus_flow_velocity_MSO_dq_labl','MAG_field_GEO', - 'STATIC_Hplus_MSO_characteristic_direction_labl','MAG_field_GEO_data_quality', - 'MAG_field_MSO_data_quality','MAG_field_MSO', - 'STATIC_O2plus_flow_velocity_MSO_data_quality','SPICE_app_attitude_MSO', - 'SEP_Look_direction_1R_MSO', - 'STATIC_Hplus_characteristic_direction_MSO', - 'STATIC_dominant_pickup_ion_characteristic_direction_MSO', - 'SEP_Look_direction_1F_MSO','SEP_Look_direction_2F_MSO','SEP_Look_direction_2R_MSO', - 'SPICE_spacecraft_MSO','SPICE_spacecraft_attitude_MSO', - 'SPICE_spacecraft_attitude_GEO_labl','SPICE_spacecraft_attitude_GEO', - 'SPICE_spacecraft_attitude_MSO_labl','SPICE_app_attitude_GEO'}: - if coord == 'x': ind = 0 - if coord == 'y': ind = 1 - if coord == 'z': ind = 2 - p3data[key+'_'+coord] = data[key].values[:,ind] - except TypeError: - pass - xdata = xr.Dataset(pdata) - p2data = xr.Dataset(p2data) - p3data = xr.Dataset(p3data) - xdata = xdata.merge(p2data) - xdata = xdata.merge(p3data) - data = xdata.rename(dim_0 = 'time') - return data - -def generate_header_kp(data): - """Generate the meta header info for mvn kp data. - Parameters - ---------- - inst_id : str - The VID of the associated dataset. - epoch : dt.datetime - The epoch of the datafile. Corresponds to the first data point. - Returns - ------- - header : dict - A dictionary compatible with the pysat.meta_header format. Top-level - metadata for the file. - - Global attributes are used to provide information about the data set as an entity. - Together with variables and variable attributes, the global attributes make the data correctly and - independently usable by someone not connected with the instrument team, and hence, a good archive product. - The global attributes are also used by the CDAWeb Display and Retrieval system. - """ - header = {'Project': data.Project, - 'Source_name': data.Source_name, - 'Discipline':data.Discipline, - 'Data_type': data.Data_type, - 'Descriptor': data.Descriptor, - 'Data_version': '', - 'Logical_file_id': data.Logical_file_id, - 'PI_name': data.PI_name, - 'PI_affiliation': data.PI_affiliation, - 'TEXT': data.TEXT, - 'Rules_of_use': data.Rules_of_use, - 'Instrument_type': data.Instrument_type, - 'Mission_group': data.Mission_group, - 'Logical_source': data.Logical_source, - 'Logical_source_description': data.Logical_source_description, - 'DOI':'10.17189/1414178', - 'File_naming_convention': data.File_naming_convention, - 'Time_resolution': data.Time_resolution, - 'Generated_by': data.Generated_by, - 'Generation_date': '', - 'Generation_datetime': dt.datetime.today().isoformat(), - 'Acknowledgement': ackn_str, - 'TITLE': data.TITLE, - 'spase_DatasetResourceID': {'spase://NASA/NumericalData', - '/MAVEN/InSitu/KeyParameter/PT4S'}, - 'LINK_TEXT': data.LINK_TEXT, - 'LINK_TITLE': data.LINK_TITLE, - 'HTTP_LINK': data.HTTP_LINK} - - return header - - -def generate_metadata_kp(header_data,data): - """Generate metadata object for mvn kp data compatible with SPASE and pysat. - Parameters - ---------- - header_data : dict - A dictionary compatible with the pysat.meta_header format. Required to - properly initialize metadata. - Returns - ------- - metadata : pandas.Dataframe() - Contains data compatible with SPASE standards to initialize pysat.Meta. - - Variables: - - """ - meta = pysat.Meta(header_data=header_data) - meta['LPW_Electron_density'] = {meta.labels.name: 'LPW_Electron_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Derived from the LP sweep and when available from the plasma line', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron density (LPW) '} - - meta['LPW_Electron_density_min'] = {meta.labels.name: 'LPW_Electron_density_min', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron density min (LPW)'} - - meta['LPW_Electron_density_max'] = {meta.labels.name: 'LPW_Electron_density_max', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron density max (LPW)'} - - meta['LPW_Electron_temperature'] = {meta.labels.name: 'LPW_Electron_temperature', - meta.labels.units: 'K', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Derived from the LP sweep', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron temperature (LPW)'} - - meta['LPW_Electron_temperature_min'] = {meta.labels.name: 'LPW_Electron_temperature_min', - meta.labels.units: 'K', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron temperature min (LPW)'} - - meta['LPW_Electron_temperature_max'] = {meta.labels.name: 'LPW_Electron_temperature_max', - meta.labels.units: 'K', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron temperature max (LPW)'} - - meta['LPW_Spacecraft_potential'] = {meta.labels.name: 'LPW_Spacecraft_potential', - meta.labels.units: 'V', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Measured from the probe potentials', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Spacecraft potential (LPW)'} - - meta['LPW_Spacecraft_potential_min'] = {meta.labels.name: 'LPW_Spacecraft_potential_min', - meta.labels.units: 'V', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Spacecraft potential min (LPW)'} - - meta['LPW_Spacecraft_potential_max'] = {meta.labels.name: 'LPW_Spacecraft_potential_max', - meta.labels.units: 'V', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Spacecraft potential max (LPW)'} - - meta['LPW_E_field_wave_power_2_100'] = {meta.labels.name: 'LPW_E_field_wave_power_2_100', - meta.labels.units: '(V/m)^2/Hz', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Integrated wave power from the onboard calculated FFT, frequencies important for wave heating', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'E-field wave power 2-100 Hz (LPW)'} - - meta['LPW_E_field_wave_power_2_100_data_quality'] = {meta.labels.name: 'LPW_E_field_wave_power_2_100_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Range: 0-100, where 100 is the highest confidence level, use data with quality flag of 50 or above', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> E-field wave power 2-100 Hz data quality (LPW)'} - - meta['LPW_E_field_wave_power_100_800'] = {meta.labels.name: 'LPW_E_field_wave_power_100_800', - meta.labels.units: '(V/m)^2/Hz', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Integrated wave power from the onboard calculated FFT', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'E-field wave power 100-800 Hz (LPW)'} - - meta['LPW_E_field_wave_power_100_800_data_quality'] = {meta.labels.name: 'LPW_E_field_wave_power_100_800_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Range: 0-100, where 100 is the highest confidence level, use data with quality flag of 50 or above', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> E-field wave power 100-800 Hz data quality (LPW)'} - - meta['LPW_E_field_wave_power_800_1000'] = {meta.labels.name: 'LPW_E_field_wave_power_800_1000', - meta.labels.units: '(V/m)^2/Hz', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Integrated wave power from the onboard calculated FFT', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'E-field wave power 800-1000 Hz (LPW)'} - - meta['LPW_E_field_wave_power_800_1000_data_quality'] = {meta.labels.name: 'LPW_E_field_wave_power_800_1000_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Range: 0-100, where 100 is the highest confidence level, use data with quality flag of 50 or above', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> E-field wave power 800-1000 Hz data quality (LPW)'} - - meta['LPW_EUV_irradiance_pt1_7'] = {meta.labels.name: 'LPW_EUV_irradiance_pt1_7', - meta.labels.units: 'W/m^2', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'EUV irradiance wave power 0.1-7.0 nm bandpass (LPW-EUV)'} - - meta['LPW_EUV_irradiance_pt1_7_data_quality'] = {meta.labels.name: 'LPW_EUV_irradiance_pt1_7_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '0 = good solar, 1 = occultation, 2 = no pointing info, 3 = Sun NOT fully in FOV, 4 = Sun NOT in FOV, 5 = windowed, 6 = eclipse, 7 = spare', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> EUV irradiance wave power 0.1-7.0 nm data quality (LPW-EUV)'} - - meta['LPW_EUV_irradiance_17_22'] = {meta.labels.name: 'LPW_EUV_irradiance_17_22', - meta.labels.units: 'W/m^2', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'EUV irradiance wave power 17-22 nm bandpass (LPW-EUV)'} - - meta['LPW_EUV_irradiance_17_22_data_quality'] = {meta.labels.name: 'LPW_EUV_irradiance_17_22_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '0 = good solar, 1 = occultation, 2 = no pointing info, 3 = Sun NOT fully in FOV, 4 = Sun NOT in FOV, 5 = windowed, 6 = eclipse, 7 = spare', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> EUV irradiance wave power 17-22 nm data quality (LPW-EUV)'} - - meta['LPW_EUV_irradiance_lyman_alpha'] = {meta.labels.name: 'LPW_EUV_irradiance_lyman_alpha', - meta.labels.units: 'W/m^2', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'EUV irradiance wave power Lyman-alpha bandpass (LPW-EUV)'} - - meta['LPW_EUV_irradiance_lyman_alpha_data_quality'] = {meta.labels.name: 'LPW_EUV_irradiance_lyman_alpha_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '0 = good solar, 1 = occultation, 2 = no pointing info, 3 = Sun NOT fully in FOV, 4 = Sun NOT in FOV, 5 = windowed, 6 = eclipse, 7 = spare', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> EUV irradiance wave power Lyman-alpha data quality (LPW-EUV)'} - - meta['SWEA_Electron_density'] = {meta.labels.name: 'SWEA_Electron_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Density of solar wind or magnetosheath electrons based on moments of the electron distribution after correcting for the spacecraft potential', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Solar wind electron density (SWEA)'} - - meta['SWEA_Electron_density_quality'] = {meta.labels.name: 'SWEA_Electron_density_quality', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Statistical uncertainty, (1 sigma), not including systematic error', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Solar wind electron density data quality (SWEA)'} - - meta['SWEA_Electron_temperature'] = {meta.labels.name: 'SWEA_Electron_temperature', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Temperature of solar wind or magnetosheath electrons based on moments of the electron distribution after correcting for the spacecraft potential', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Solar wind electron temperature (SWEA)'} - - meta['SWEA_Electron_temperature_quality'] = {meta.labels.name: 'SWEA_Electron_temperature_quality', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Statistical uncertainty, (1 sigma), not including systematic error', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Solar wind electron temperature data quality (SWEA)'} - - meta['SWEA_Electron_parallel_flux_5_100'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_5_100', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Electron energy flux parallel to the magnetic field vector (0-90 degrees pitch angle)', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux parallel 5-100 eV (SWEA)'} - - meta['SWEA_Electron_parallel_flux_5_100_data_quality'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_5_100_data_quality', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux parallel 5-100 eV data quality (SWEA)'} - - meta['SWEA_Electron_parallel_flux_100_500'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_100_500', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Electron energy flux parallel to the magnetic field vector (0-90 degrees pitch angle)', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux parallel 100-500 eV (SWEA)'} - - meta['SWEA_Electron_parallel_flux_100_500_data_quality'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_100_500_data_quality', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux parallel 100-500 eV data quality (SWEA)'} - - meta['SWEA_Electron_parallel_flux_500_1000'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_500_1000', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Electron energy flux parallel to the magnetic field vector (0-90 degrees pitch angle)', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux parallel 500-1000 eV (SWEA)'} - - meta['SWEA_Electron_parallel_flux_500_1000_data_quality'] = {meta.labels.name: 'SWEA_Electron_parallel_flux_500_1000_data_quality', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux parallel 500-1000 eV data quality (SWEA)'} - - meta['SWEA_Electron_anti_parallel_flux_5_100'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_5_100', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Electron energy flux anti-parallel to the magnetic field vector (90-180 degrees pitch angle)', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux anti-parallel 5-100 eV (SWEA)'} - - meta['SWEA_Electron_anti_parallel_flux_5_100_data_quality'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_5_100_data_quality', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux anti-parallel 5-100 eV data quality (SWEA)'} - - meta['SWEA_Electron_anti_parallel_flux_100_500'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_100_500', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Electron energy flux anti-parallel to the magnetic field vector (90-180 degrees pitch angle)', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux anti-parallel 100-500 eV (SWEA)'} - - meta['SWEA_Electron_anti_parallel_flux_100_500_data_quality'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_100_500_data_quality', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux anti-parallel 100-500 eV data quality (SWEA)'} - - meta['SWEA_Electron_anti_parallel_flux_500_1000'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_500_1000', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Electron energy flux anti-parallel to the magnetic field vector (90-180 degrees pitch angle)', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux anti-parallel 500-1000 eV (SWEA)'} - - meta['SWEA_Electron_anti_parallel_flux_500_1000_data_quality'] = {meta.labels.name: 'SWEA_Electron_anti_parallel_flux_500_1000_data_quality', - meta.labels.units: 'eV/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux anti-parallel 500-1000 eV data quality (SWEA)'} - - meta['SWEA_Electron_spectrum_shape'] = {meta.labels.name: 'SWEA_Electron_spectrum_shape', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Energy spectrum shape parameter used to distingush between ionospheric photoelectrons and solar wind electrons', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron spectrum shape parameter (SWEA)'} - - meta['SWEA_Electron_spectrum_shape_data_quality'] = {meta.labels.name: 'SWEA_Electron_spectrum_shape_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron spectrum shape parameter data quality (SWEA)'} - - meta['SWIA_Hplus_density'] = {meta.labels.name: 'SWIA_Hplus_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Total ion density from onboard moment calculation, assuming 100% protons (SWIA)'} - - meta['SWIA_Hplus_density_data_quality'] = {meta.labels.name: 'SWIA_Hplus_density_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Total ion density data quality (SWIA)'} - - - - - - - meta['SWIA_Hplus_flow_velocity_MSO_x'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_x', - meta.labels.units: 'km_s', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Bulk ion flow velocity X component from onboard moment calculation, assuming 100% protons (SWIA)'} - - meta['SWIA_Hplus_flow_velocity_MSO_y'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_y', - meta.labels.units: 'km_s', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'Bulk ion flow velocity Y component from onboard moment calculation, assuming 100% protons (SWIA)'} - - meta['SWIA_Hplus_flow_velocity_MSO_z'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_z', - meta.labels.units: 'km_s', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'Bulk ion flow velocity Z component from onboard moment calculation, assuming 100% protons (SWIA)'} - - meta['SWIA_Hplus_flow_velocity_MSO_data_quality_x'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_data_quality_x', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', - meta.labels.desc: '---> Bulk ion flow velocity X data quality (SWIA)'} - - meta['SWIA_Hplus_flow_velocity_MSO_data_quality_y'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_data_quality_y', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', - meta.labels.desc: '---> Bulk ion flow velocity Y data quality (SWIA)'} - - meta['SWIA_Hplus_flow_velocity_MSO_data_quality_z'] = {meta.labels.name: 'SWIA_Hplus_flow_velocity_MSO_data_quality_z', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', - meta.labels.desc: '---> Bulk ion flow velocity Z data quality (SWIA)'} - - meta['SWIA_Hplus_temperature'] = {meta.labels.name: 'SWIA_Hplus_temperature', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Scalar ion temperature from onboard moment calculation, assuming 100% protons (SWIA)'} - - meta['SWIA_Hplus_temperature_data_quality'] = {meta.labels.name: 'SWIA_Hplus_temperature_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Scalar ion temperature data quality (SWIA)'} - - meta['SWIA_dynamic_pressure'] = {meta.labels.name: 'SWIA_dynamic_pressure', - meta.labels.units: 'nPa', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion dynamic pressure computed on ground from density and velocity moments, assuming 100% protons (SWIA)'} - - meta['SWIA_dynamic_pressure_data_quality'] = {meta.labels.name: 'SWIA_dynamic_pressure_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Quality flag (0 = bad, 1 = good) indicating whether the distribution is well-measured and decommutation parameters are definite', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion dynamic pressure data quality (SWIA)'} - - meta['STATIC_Quality'] = {meta.labels.name: 'STATIC_Quality', - meta.labels.units: ' ', - meta.labels.min_val: 0.0, - meta.labels.max_val: 999999999.0, - meta.labels.notes: 'Integer flag bits, Valid=0, Flag=1, See KP SIS for bit descriptions (formatted as a float in order to include NaN values for data gaps) ', - meta.labels.fill_val: -2147483648.0, - meta.labels.desc: 'STATIC Data quality'} - - meta['STATIC_Hplus_density'] = {meta.labels.name: 'STATIC_Hplus_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'H+ number density below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'H+ density (STATIC)'} - - meta['STATIC_Hplus_density_data_quality'] = {meta.labels.name: 'STATIC_Hplus_density_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> H+ density data quality (STATIC)'} - - meta['STATIC_Oplus_density'] = {meta.labels.name: 'STATIC_Oplus_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'O+ number density below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O+ density (STATIC)'} - - meta['STATIC_Oplus_density_data_quality'] = {meta.labels.name: 'STATIC_Oplus_density_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O+ density data quality (STATIC)'} - - meta['STATIC_O2plus_density'] = {meta.labels.name: 'STATIC_O2plus_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'O2+ number density below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ density (STATIC)'} - - meta['STATIC_O2plus_density_data_quality'] = {meta.labels.name: 'STATIC_O2plus_density_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O2+ density data quality (STATIC)'} - - meta['STATIC_Hplus_temperature'] = {meta.labels.name: 'STATIC_Hplus_temperature', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'H+ RAM temperature below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'H+ temperature (STATIC)'} - - meta['STATIC_Hplus_temperature_data_quality'] = {meta.labels.name: 'STATIC_Hplus_temperature_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> H+ temperature data quality (STATIC)'} - - meta['STATIC_Oplus_temperature'] = {meta.labels.name: 'STATIC_Oplus_temperature', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'O+ RAM temperature below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O+ temperature (STATIC)'} - - meta['STATIC_Oplus_temperature_data_quality'] = {meta.labels.name: 'STATIC_Oplus_temperature_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O+ temperature data quality (STATIC)'} - - meta['STATIC_O2plus_temperature'] = {meta.labels.name: 'STATIC_O2plus_temperature', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'O2+ RAM temperature below TBD altitude determined from APID c6 (32 energy x 64 mass) while in Ram or Conic modes', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ temperature (STATIC)'} - - meta['STATIC_O2plus_temperature_data_quality'] = {meta.labels.name: 'STATIC_O2plus_temperature_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O2+ temperature data quality (STATIC)'} - - - - meta['STATIC_O2plus_flow_velocity_MAVEN_APP_x'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_x', - meta.labels.units: 'km/s', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ MAVEN_APP X component of velocity below TBD altitude determined from APID c6 while in Ram or Conic mode (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MAVEN_APP_y'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_y', - meta.labels.units: 'km/s', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ MAVEN_APP Y component of velocity below TBD altitude determined from APID c6 while in Ram or Conic mode (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MAVEN_APP_z'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_z', - meta.labels.units: 'km/s', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ MAVEN_APP Z component of velocity below TBD altitude determined from APID c6 while in Ram or Conic mode (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_x'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_x', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.desc: '---> O2+ MAVEN_APP X component of velocity data quality (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_y'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_y', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O2+ MAVEN_APP Y component of velocity data quality (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_z'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MAVEN_APP_data_quality_z', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.desc: '---> O2+ MAVEN_APP Z component of velocity data quality (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MSO_x'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_x', - meta.labels.units: 'km/s', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ MSO X component of velocity below TBD altitude while in Ram or Conic mode (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MSO_y'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_y', - meta.labels.units: 'km/s', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ MSO Y component of velocity below TBD altitude while in Ram or Conic mode (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MSO_z'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_z', - meta.labels.units: 'km/s', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ MSO Y component of velocity below TBD altitude while in Ram or Conic mode (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MSO_data_quality_x'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_data_quality_x', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O2+ MSO X component of velocity data quality (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MSO_data_quality_y'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_data_quality_y', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O2+ MSO Y component of velocity data quality (STATIC)'} - - meta['STATIC_O2plus_flow_velocity_MSO_data_quality_z'] = {meta.labels.name: 'STATIC_O2plus_flow_velocity_MSO_data_quality_z', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O2+ MSO Z component of velocity data quality (STATIC)'} - - - - meta['STATIC_Hplus_omni_directional_flux'] = {meta.labels.name: 'STATIC_Hplus_omni_directional_flux', - meta.labels.units: '(cm^2 s)^-1', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'H+ omni-directional flux above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'H+ omni-directional flux (STATIC)'} - - meta['STATIC_Hplus_characteristic_energy'] = {meta.labels.name: 'STATIC_Hplus_characteristic_energy', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'H+ omni-directional characteristic energy above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'H+ characteristic energy (STATIC)'} - - meta['STATIC_Hplus_characteristic_energy_DQ'] = {meta.labels.name: 'STATIC_Hplus_characteristic_energy_DQ', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> H+ characteristic energy data quality (STATIC)'} - - meta['STATIC_HEplus_omni_directional_flux'] = {meta.labels.name: 'STATIC_HEplus_omni_directional_flux', - meta.labels.units: '(cm^2 s)^-1', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'HE+ omni-directional flux above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'He+ omni-directional flux (STATIC)'} - - meta['STATIC_HEplus_characteristic_energy'] = {meta.labels.name: 'STATIC_HEplus_characteristic_energy', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'HE+ omni-directional characteristic energy above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'He+ characteristic energy (STATIC)'} - - meta['STATIC_HEplus_characteristic_energy_DQ'] = {meta.labels.name: 'STATIC_HEplus_characteristic_energy_DQ', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> He+ characteristic energy data quality (STATIC)'} - - meta['STATIC_Oplus_omni_directional_flux'] = {meta.labels.name: 'STATIC_Oplus_omni_directional_flux', - meta.labels.units: '(cm^2 s)^-1', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'O+ omni-directional flux above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O+ omni-directional flux (STATIC)'} - - meta['STATIC_Oplus_characteristic_energy'] = {meta.labels.name: 'STATIC_Oplus_characteristic_energy', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'O+ omni-directional characteristic energy above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O+ characteristic energy (STATIC)'} - - meta['STATIC_Oplus_characteristic_energy_DQ'] = {meta.labels.name: 'STATIC_Oplus_characteristic_energy_DQ', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O+ characteristic energy data quality (STATIC)'} - - meta['STATIC_O2plus_omni_directional_flux'] = {meta.labels.name: 'STATIC_O2plus_omni_directional_flux', - meta.labels.units: '(cm^2 s)^-1', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'O2+ omni-directional flux above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ omni-directional flux (STATIC)'} - - meta['STATIC_O2plus_characteristic_energy'] = {meta.labels.name: 'STATIC_O2plus_characteristic_energy', - meta.labels.units: 'eV', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'O2+ omni-directional characteristic energy above TBD altitude determined from APID c6 while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O2+ characteristic energy (STATIC)'} - - meta['STATIC_O2plus_characteristic_energy_DQ'] = {meta.labels.name: 'STATIC_O2plus_characteristic_energy_DQ', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O2+ characteristic energy data quality (STATIC)'} - - - meta['STATIC_Hplus_characteristic_direction_MSO_x'] = {meta.labels.name: 'STATIC_Hplus_characteristic_direction_MSO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'H+ MSO X-direction of flux above TBD altitude determined from TBD APID while in Pickup and Scan mode (STATIC)'} - - meta['STATIC_Hplus_characteristic_direction_MSO_y'] = {meta.labels.name: 'STATIC_Hplus_characteristic_direction_MSO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'H+ MSO Y-direction of flux above TBD altitude determined from TBD APID while in Pickup and Scan mode (STATIC)'} - - meta['STATIC_Hplus_characteristic_direction_MSO_z'] = {meta.labels.name: 'STATIC_Hplus_characteristic_direction_MSO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'H+ MSO Z-direction of flux above TBD altitude determined from TBD APID while in Pickup and Scan mode (STATIC)'} - - - - - - - - meta['STATIC_Hplus_characteristic_angular_width'] = {meta.labels.name: 'STATIC_Hplus_characteristic_angular_width', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'H+ flux angular width above TBD altitude determined from TBD APID while in Pickup and Scan mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'H+ characteristic width (STATIC)'} - - meta['STATIC_Hplus_characteristic_angular_width_DQ'] = {meta.labels.name: 'STATIC_Hplus_characteristic_angular_width_DQ', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> H+ characteristic width data quality (STATIC)'} - - - meta['STATIC_dominant_pickup_ion_characteristic_direction_MSO_z'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_direction_MSO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Dominant pickup ion MSO Z direction of flux above TBD altitude determined from APID D0 and CE while in Pickup, Eclipse and Protect mode'} - - meta['STATIC_dominant_pickup_ion_characteristic_direction_MSO_x'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_direction_MSO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Dominant pickup ion MSO X direction of flux above TBD altitude determined from APID D0 and CE while in Pickup, Eclipse and Protect mode'} - - meta['STATIC_dominant_pickup_ion_characteristic_direction_MSO_y'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_direction_MSO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Dominant pickup ion MSO Y direction of flux above TBD altitude determined from APID D0 and CE while in Pickup, Eclipse and Protect mode'} - - - - - - meta['STATIC_dominant_pickup_ion_characteristic_angular_width'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_angular_width', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Dominant pickup ion flux angular width above TBD altitude determined from APID D0 and CE while in Pickup, Eclipse and Protect mode', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Dominant pickup ion characteristic angular width (STATIC)'} - - meta['STATIC_dominant_pickup_ion_characteristic_angular_width_DQ'] = {meta.labels.name: 'STATIC_dominant_pickup_ion_characteristic_angular_width_DQ', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number of counts in the measurement', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Dominant pickup ion characteristic angular width DQ (STATIC)'} - - meta['SEP_Ion_Energy_Flux_30_1000_FOV_1F'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_1F', - meta.labels.units: 'n/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number flux of ions, integrated over the energy range 0.03-1.0 MeV', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion energy flux (30-1000 keV), FOV 1-F (SEP)'} - - meta['SEP_Ion_Energy_Flux_30_1000_FOV_1F_data_quality'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_1F_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Standard uncertainty in total ion flux, based on Poisson statistics', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion energy flux (30-1000 keV), FOV 1-F data quality (SEP)'} - - meta['SEP_Ion_Energy_Flux_30_1000_FOV_1R'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_1R', - meta.labels.units: 'n/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number flux of ions, integrated over the energy range 0.03-1.0 MeV', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion energy flux (30-1000 keV), FOV 1-R (SEP)'} - - meta['SEP_Ion_Energy_Flux_30_1000_FOV_1R_data_quality'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_1R_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Standard uncertainty in total ion flux, based on Poisson statistics', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion energy flux (30-1000 keV), FOV 1-R data quality (SEP)'} - - meta['SEP_Ion_Energy_Flux_30_1000_FOV_2F'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_2F', - meta.labels.units: 'n/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number flux of ions, integrated over the energy range 0.03-1.0 MeV', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion energy flux (30-1000 keV), FOV 2-F (SEP)'} - - meta['SEP_Ion_Energy_Flux_30_1000_FOV_2F_data_quality'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_2F_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Standard uncertainty in total ion flux, based on Poisson statistics', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion energy flux (30-1000 keV), FOV 2-F data quality (SEP)'} - - meta['SEP_Ion_Energy_Flux_30_1000_FOV_2R'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_2R', - meta.labels.units: 'n/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number flux of ions, integrated over the energy range 0.03-1.0 MeV', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion energy flux (30-1000 keV), FOV 2-R (SEP)'} - - meta['SEP_Ion_Energy_Flux_30_1000_FOV_2R_data_quality'] = {meta.labels.name: 'SEP_Ion_Energy_Flux_30_1000_FOV_2R_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Standard uncertainty in total ion flux, based on Poisson statistics', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion energy flux (30-1000 keV), FOV 2-R data quality (SEP)'} - - meta['SEP_Electron_Energy_Flux_30_300_FOV_1F'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_1F', - meta.labels.units: 'n/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number flux of electrons, integrated over the energy range 30-300 keV', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux (30-300 keV), FOV 1-F (SEP)'} - - meta['SEP_Electron_Energy_Flux_30_300_FOV_1F_data_quality'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_1F_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Standard uncertainty in total electron flux, based on Poisson statistics', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux (30-300 keV), FOV 1-F data quality (SEP)'} - - meta['SEP_Electron_Energy_Flux_30_300_FOV_1R'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_1R', - meta.labels.units: 'n/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number flux of electrons, integrated over the energy range 30-300 keV', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux (30-300 keV), FOV 1-R (SEP)'} - - meta['SEP_Electron_Energy_Flux_30_300_FOV_1R_data_quality'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_1R_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Standard uncertainty in total electron flux, based on Poisson statistics', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux (30-300 keV), FOV 1-R data quality (SEP)'} - - meta['SEP_Electron_Energy_Flux_30_300_FOV_2F'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_2F', - meta.labels.units: 'n/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number flux of electrons, integrated over the energy range 30-300 keV', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux (30-300 keV), FOV 2-F (SEP)'} - - meta['SEP_Electron_Energy_Flux_30_300_FOV_2F_data_quality'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_2F_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Standard uncertainty in total electron flux, based on Poisson statistics', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux (30-300 keV), FOV 2-F data quality (SEP)'} - - meta['SEP_Electron_Energy_Flux_30_300_FOV_2R'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_2R', - meta.labels.units: 'n/(cm^2 s sr)', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Number flux of electrons, integrated over the energy range 30-300 keV', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Electron energy flux (30-300 keV), FOV 2-R (SEP)'} - - meta['SEP_Electron_Energy_Flux_30_300_FOV_2R_data_quality'] = {meta.labels.name: 'SEP_Electron_Energy_Flux_30_300_FOV_2R_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Standard uncertainty in total electron flux, based on Poisson statistics', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Electron energy flux (30-300 keV), FOV 2-R data quality (SEP)'} - - - - - - - - - - meta['SEP_Look_direction_1F_MSO_x'] = {meta.labels.name: 'SEP_Look_direction_1F_MSO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'SEP look direction 1-F MSO X'} - - meta['SEP_Look_direction_1F_MSO_y'] = {meta.labels.name: 'SEP_Look_direction_1F_MSO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'SEP look direction 1-F MSO Y'} - - meta['SEP_Look_direction_1F_MSO_z'] = {meta.labels.name: 'SEP_Look_direction_1F_MSO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 1-F MSO Z'} - - meta['SEP_Look_direction_1R_MSO_x'] = {meta.labels.name: 'SEP_Look_direction_1R_MSO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 1-R MSO X'} - - meta['SEP_Look_direction_1R_MSO_y'] = {meta.labels.name: 'SEP_Look_direction_1R_MSO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 1-R MSO Y'} - - meta['SEP_Look_direction_1R_MSO_z'] = {meta.labels.name: 'SEP_Look_direction_1R_MSO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 1-R MSO Z'} - - meta['SEP_Look_direction_2F_MSO_x'] = {meta.labels.name: 'SEP_Look_direction_2F_MSO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 2-F MSO X'} - - meta['SEP_Look_direction_2F_MSO_y'] = {meta.labels.name: 'SEP_Look_direction_2F_MSO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 2-F MSO Y'} - - meta['SEP_Look_direction_2F_MSO_z'] = {meta.labels.name: 'SEP_Look_direction_2F_MSO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 2-F MSO Z'} - - meta['SEP_Look_direction_2R_MSO_x'] = {meta.labels.name: 'SEP_Look_direction_2R_MSO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 2-R MSO X'} - - meta['SEP_Look_direction_2R_MSO_y'] = {meta.labels.name: 'SEP_Look_direction_2R_MSO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 2-R MSO Y'} - - meta['SEP_Look_direction_2R_MSO_z'] = {meta.labels.name: 'SEP_Look_direction_2R_MSO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'SEP look direction 2-R MSO Z'} - - meta['MAG_field_MSO_x'] = {meta.labels.name: 'MAG_field_MSO_x', - meta.labels.units: 'nT', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'Magnetic field vector component in the X direction in MSO coordinates (MAG)'} - - meta['MAG_field_MSO_y'] = {meta.labels.name: 'MAG_field_MSO_y', - meta.labels.units: 'nT', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'Magnetic field vector component in the Y direction in MSO coordinates (MAG)'} - - meta['MAG_field_MSO_z'] = {meta.labels.name: 'MAG_field_MSO_z', - meta.labels.units: 'nT', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'Magnetic field vector component in the Z direction in MSO coordinates (MAG)'} - - - meta['MAG_field_MSO_data_quality_x'] = {meta.labels.name: 'MAG_field_MSO_data_quality_x', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Unused column', - meta.labels.desc: '---> Magnetic field X vector component in MSO coordinates data quality (MAG)'} - - meta['MAG_field_MSO_data_quality_y'] = {meta.labels.name: 'MAG_field_MSO_data_quality_y', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'Unused column', - meta.labels.desc: '---> Magnetic field Y vector component in MSO coordinates data quality (MAG)'} - - meta['MAG_field_MSO_data_quality_z'] = {meta.labels.name: 'MAG_field_MSO_data_quality_z', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'Unused column', - meta.labels.desc: '---> Magnetic field Z vector component in MSO coordinates data quality (MAG)'} - - meta['MAG_field_GEO_x'] = {meta.labels.name: 'MAG_field_GEO_x', - meta.labels.units: 'nT', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'Magnetic field vector component in the X direction in GEO coordinates (MAG)'} - - meta['MAG_field_GEO_y'] = {meta.labels.name: 'MAG_field_GEO_y', - meta.labels.units: 'nT', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.desc: 'Magnetic field vector component in the Y direction in GEO coordinates (MAG)'} - - meta['MAG_field_GEO_z'] = {meta.labels.name: 'MAG_field_GEO_z', - meta.labels.units: 'nT', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Magnetic field vector component in the Z direction in GEO coordinates (MAG)'} - - meta['MAG_field_GEO_data_quality_x'] = {meta.labels.name: 'MAG_field_GEO_data_quality_x', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'Unused column', - meta.labels.desc: '---> Magnetic field X vector component in GEO coordinates data quality (MAG)'} - - meta['MAG_field_GEO_data_quality_y'] = {meta.labels.name: 'MAG_field_GEO_data_quality_y', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Unused column', - meta.labels.desc: '---> Magnetic field Y vector component in GEO coordinates data quality (MAG)'} - - meta['MAG_field_GEO_data_quality_z'] = {meta.labels.name: 'MAG_field_GEO_data_quality_z', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Unused column', - meta.labels.desc: '---> Magnetic field Z vector component in GEO coordinates data quality (MAG)'} - - - - meta['MAG_field_RMS_deviation'] = {meta.labels.name: 'MAG_field_RMS_deviation', - meta.labels.units: 'nT', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Deviations from the mean magnetic field magnitude (MAG)'} - - meta['MAG_field_RMS_deviation_data_quality'] = {meta.labels.name: 'MAG_field_RMS_deviation_data_quality', - meta.labels.units: ' ', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Unused column', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Deviations from the mean magnetic field magnitude data quality (MAG)'} - - meta['NGIMS_He_density'] = {meta.labels.name: 'NGIMS_He_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'He density (NGIMS)'} - - meta['NGIMS_He_density_precision'] = {meta.labels.name: 'NGIMS_He_density_precision', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> He density precision (NGIMS)'} - - meta['NGIMS_He_density_data_quality'] = {meta.labels.name: 'NGIMS_He_density_data_quality', - meta.labels.units: '-', - meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', - meta.labels.desc: '---> [DOES NOT PLOT] He density data quality (NGIMS)'} - - meta['NGIMS_O_density'] = {meta.labels.name: 'NGIMS_O_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'O density (NGIMS)'} - - meta['NGIMS_O_density_precision'] = {meta.labels.name: 'NGIMS_O_density_precision', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> O density precision (NGIMS)'} - - meta['NGIMS_O_density_data_quality'] = {meta.labels.name: 'NGIMS_O_density_data_quality', - meta.labels.units: '-', - meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', - meta.labels.desc: '---> [DOES NOT PLOT] O density data quality (NGIMS)'} - - meta['NGIMS_CO_density'] = {meta.labels.name: 'NGIMS_CO_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'CO density (NGIMS)'} - - meta['NGIMS_CO_density_precision'] = {meta.labels.name: 'NGIMS_CO_density_precision', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> CO density precision (NGIMS)'} - - meta['NGIMS_CO_density_data_quality'] = {meta.labels.name: 'NGIMS_CO_density_data_quality', - meta.labels.units: '-', - meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', - meta.labels.desc: '---> [DOES NOT PLOT] CO density data quality (NGIMS)'} - - meta['NGIMS_N2_density'] = {meta.labels.name: 'NGIMS_N2_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'N2 density (NGIMS)'} - - meta['NGIMS_N2_density_precision'] = {meta.labels.name: 'NGIMS_N2_density_precision', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> N2 density precision (NGIMS)'} - - meta['NGIMS_N2_density_data_quality'] = {meta.labels.name: 'NGIMS_N2_density_data_quality', - meta.labels.units: '-', - meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', - meta.labels.desc: '---> [DOES NOT PLOT] N2 density data quality (NGIMS)'} - - meta['NGIMS_NO_density'] = {meta.labels.name: 'NGIMS_NO_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'NO density (NGIMS)'} - - meta['NGIMS_NO_density_precision'] = {meta.labels.name: 'NGIMS_NO_density_precision', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> NO density precision (NGIMS)'} - - meta['NGIMS_NO_density_data_quality'] = {meta.labels.name: 'NGIMS_NO_density_data_quality', - meta.labels.units: '-', - meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', - meta.labels.desc: '---> [DOES NOT PLOT] NO density data quality (NGIMS)'} - - meta['NGIMS_Ar_density'] = {meta.labels.name: 'NGIMS_Ar_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ar density (NGIMS)'} - - meta['NGIMS_Ar_density_precision'] = {meta.labels.name: 'NGIMS_Ar_density_precision', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ar density precision (NGIMS)'} - - meta['NGIMS_Ar_density_data_quality'] = {meta.labels.name: 'NGIMS_Ar_density_data_quality', - meta.labels.units: '-', - meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', - meta.labels.desc: '---> [DOES NOT PLOT] Ar density data quality (NGIMS)'} - - meta['NGIMS_CO2_density'] = {meta.labels.name: 'NGIMS_CO2_density', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'CO2 density (NGIMS)'} - - meta['NGIMS_CO2_density_precision'] = {meta.labels.name: 'NGIMS_CO2_density_precision', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> CO2 density precision (NGIMS)'} - - meta['NGIMS_CO2_density_data_quality'] = {meta.labels.name: 'NGIMS_CO2_density_data_quality', - meta.labels.units: '-', - meta.labels.notes: 'NIV - Neutral Inbound Verified, NIU - Neutral Inbound Unverified, NOV - Neutral Outbound Verified, NOU - Neutral Outbound Unverified', - meta.labels.desc: '---> [DOES NOT PLOT] CO2 density data quality (NGIMS)'} - - meta['NGIMS_Ion_density_32plus'] = {meta.labels.name: 'NGIMS_Ion_density_32plus', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion density - amu 32+ (NGIMS)'} - - meta['NGIMS_Ion_density_precision_32plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_32plus', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion density precision - amu 32+ (NGIMS)'} - - meta['NGIMS_Ion_density_data_quality_32plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_32plus', - meta.labels.units: '-', - meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', - meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 32+ (NGIMS)'} - - meta['NGIMS_Ion_density_44plus'] = {meta.labels.name: 'NGIMS_Ion_density_44plus', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion density - amu 44+ (NGIMS)'} - - meta['NGIMS_Ion_density_precision_44plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_44plus', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion density precision - amu 44+ (NGIMS)'} - - meta['NGIMS_Ion_density_data_quality_44plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_44plus', - meta.labels.units: '-', - meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', - meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 44+ (NGIMS)'} - - meta['NGIMS_Ion_density_30plus'] = {meta.labels.name: 'NGIMS_Ion_density_30plus', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion density - amu 30+ (NGIMS)'} - - meta['NGIMS_Ion_density_precision_30plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_30plus', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion density precision - amu 30+ (NGIMS)'} - - meta['NGIMS_Ion_density_data_quality_30plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_30plus', - meta.labels.units: '-', - meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', - meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 30+ (NGIMS)'} - - meta['NGIMS_Ion_density_16plus'] = {meta.labels.name: 'NGIMS_Ion_density_16plus', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion density - amu 16+ (NGIMS)'} - - meta['NGIMS_Ion_density_precision_16plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_16plus', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion density precision - amu 16+ (NGIMS)'} - - meta['NGIMS_Ion_density_data_quality_16plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_16plus', - meta.labels.units: '-', - meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', - meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 16+ (NGIMS)'} - - meta['NGIMS_Ion_density_28plus'] = {meta.labels.name: 'NGIMS_Ion_density_28plus', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion density - amu 28+ (NGIMS)'} - - meta['NGIMS_Ion_density_precision_28plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_28plus', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion density precision - amu 28+ (NGIMS)'} - - meta['NGIMS_Ion_density_data_quality_28plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_28plus', - meta.labels.units: '-', - meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', - meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 28+ (NGIMS)'} - - meta['NGIMS_Ion_density_12plus'] = {meta.labels.name: 'NGIMS_Ion_density_12plus', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion density - amu 12+ (NGIMS)'} - - meta['NGIMS_Ion_density_precision_12plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_12plus', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion density precision - amu 12+ (NGIMS)'} - - meta['NGIMS_Ion_density_data_quality_12plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_12plus', - meta.labels.units: '-', - meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', - meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 12+ (NGIMS)'} - - meta['NGIMS_Ion_density_17plus'] = {meta.labels.name: 'NGIMS_Ion_density_17plus', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion density - amu 17+ (NGIMS)'} - - meta['NGIMS_Ion_density_precision_17plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_17plus', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion density precision - amu 17+ (NGIMS)'} - - meta['NGIMS_Ion_density_data_quality_17plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_17plus', - meta.labels.units: '-', - meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', - meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 17+ (NGIMS)'} - - meta['NGIMS_Ion_density_14plus'] = {meta.labels.name: 'NGIMS_Ion_density_14plus', - meta.labels.units: 'cm^-3', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Abundance or upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Ion density - amu 14+ (NGIMS)'} - - meta['NGIMS_Ion_density_precision_14plus'] = {meta.labels.name: 'NGIMS_Ion_density_precision_14plus', - meta.labels.units: '%', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: '% Error (1 sigma), if -1, the value is an upper limit', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: '---> Ion density precision - amu 14+ (NGIMS)'} - - meta['NGIMS_Ion_density_data_quality_14plus'] = {meta.labels.name: 'NGIMS_Ion_density_data_quality_14plus', - meta.labels.units: '-', - meta.labels.notes: 'SCP - SpaceCraft Potential available and used as computed by STATIC, SC0 - SpaceCraft potential not available', - meta.labels.desc: '---> [DOES NOT PLOT] Ion density data quality - amu 14+ (NGIMS)'} - - - - - - - meta['SPICE_spacecraft_GEO_x'] = {meta.labels.name: 'SPICE_spacecraft_GEO_x', - meta.labels.units: 'km', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'X-component of spacecraft position in Mars planetocentric (geographic) GEO coordinates'} - - meta['SPICE_spacecraft_GEO_y'] = {meta.labels.name: 'SPICE_spacecraft_GEO_y', - meta.labels.units: 'km', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Y-component of spacecraft position in Mars planetocentric (geographic) GEO coordinates'} - - meta['SPICE_spacecraft_GEO_z'] = {meta.labels.name: 'SPICE_spacecraft_GEO_z', - meta.labels.units: 'km', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Z-component of spacecraft position in Mars planetocentric (geographic) GEO coordinates'} - - meta['SPICE_spacecraft_MSO_x'] = {meta.labels.name: 'SPICE_spacecraft_MSO_x', - meta.labels.units: 'km', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'X-component of spacecraft position in MSO coordinates'} - - meta['SPICE_spacecraft_MSO_y'] = {meta.labels.name: 'SPICE_spacecraft_MSO_y', - meta.labels.units: 'km', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Y-component of spacecraft position in MSO coordinates'} - - meta['SPICE_spacecraft_MSO_z'] = {meta.labels.name: 'SPICE_spacecraft_MSO_z', - meta.labels.units: 'km', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Z-component of spacecraft position in MSO coordinates'} - - - - meta['SPICE_spacecraft_longitude_GEO'] = {meta.labels.name: 'SPICE_spacecraft_longitude_GEO', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Longitudinal component of MAVEN\'s location with respect to Mars', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Spacecraft longitude GEO (SPICE)'} - - meta['SPICE_spacecraft_latitude_GEO'] = {meta.labels.name: 'SPICE_spacecraft_latitude_GEO', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Latitudinal (areodetic) component of MAVEN\'s location with respect to IAU Mars ellipsoid, equatorial radius of 3396.2 km, polar radius of', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Spacecraft latitude GEO (SPICE)'} - - meta['SPICE_spacecraft_sza'] = {meta.labels.name: 'SPICE_spacecraft_sza', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Angle measured from MAVEN to the geometric center of the Sun\'s disc, as described using a horizontal coordinate system', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Spacecraft solar zenith angle (SPICE)'} - - meta['SPICE_spacecraft_local_time'] = {meta.labels.name: 'SPICE_spacecraft_local_time', - meta.labels.units: 'hours', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Angle measured from MAVEN to the geometric center of the Sun\'s disc, as described using a horizontal coordinate system', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Spacecraft local time (SPICE)'} - - meta['SPICE_spacecraft_altitude'] = {meta.labels.name: 'SPICE_spacecraft_altitude', - meta.labels.units: 'km', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Altitude (areodetic) with respect to IAU Mars ellipsoid, equatorial radius of 3396.2 km, ', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Spacecraft altitude w.r.t. aeroid (SPICE)'} - - - meta['SPICE_spacecraft_attitude_GEO_x'] = {meta.labels.name: 'SPICE_spacecraft_attitude_GEO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'X-component of spacecraft attitude in GEO coordinates'} - - meta['SPICE_spacecraft_attitude_GEO_y'] = {meta.labels.name: 'SPICE_spacecraft_attitude_GEO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Y-component of spacecraft attitude in GEO coordinates'} - - meta['SPICE_spacecraft_attitude_GEO_z'] = {meta.labels.name: 'SPICE_spacecraft_attitude_GEO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Z-component of spacecraft attitude in GEO coordinates'} - - meta['SPICE_spacecraft_attitude_MSO_x'] = {meta.labels.name: 'SPICE_spacecraft_attitude_MSO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'X-component of spacecraft attitude in MSO coordinates'} - - meta['SPICE_spacecraft_attitude_MSO_y'] = {meta.labels.name: 'SPICE_spacecraft_attitude_MSO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Y-component of spacecraft attitude in MSO coordinates'} - - meta['SPICE_spacecraft_attitude_MSO_z'] = {meta.labels.name: 'SPICE_spacecraft_attitude_MSO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Z-component of spacecraft attitude in MSO coordinates'} - - meta['SPICE_app_attitude_GEO_x'] = {meta.labels.name: 'SPICE_app_attitude_GEO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'X-component of pointing direction of Articulated Payload Platform (z-axis of MAVEN_APP_BP frame) in GEO coordinates', - meta.labels.desc: 'X-component of articulated payload platform (app) attitude in GEO coordinates'} - - meta['SPICE_app_attitude_GEO_y'] = {meta.labels.name: 'SPICE_app_attitude_GEO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'Y-component of pointing direction of Articulated Payload Platform (z-axis of MAVEN_APP_BP frame) in GEO coordinates', - meta.labels.desc: 'Y-component of articulated payload platform (app) attitude in GEO coordinates'} - - meta['SPICE_app_attitude_GEO_z'] = {meta.labels.name: 'SPICE_app_attitude_GEO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.notes: 'Z-component of pointing direction of Articulated Payload Platform (z-axis of MAVEN_APP_BP frame) in GEO coordinates', - meta.labels.desc: 'Z-component of articulated payload platform (app) attitude in GEO coordinates'} - - - meta['SPICE_app_attitude_MSO_x'] = {meta.labels.name: 'SPICE_app_attitude_MSO_x', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'X-component of articulated payload platform (app) attitude in MSO coordinates'} - - meta['SPICE_app_attitude_MSO_y'] = {meta.labels.name: 'SPICE_app_attitude_MSO_y', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Y-component of articulated payload platform (app) attitude in MSO coordinates'} - - meta['SPICE_app_attitude_MSO_z'] = {meta.labels.name: 'SPICE_app_attitude_MSO_z', - meta.labels.units: 'unit vector', - meta.labels.min_val: -999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'same as IAU_MARS in SPICE', - meta.labels.desc: 'Z-component of articulated payload platform (app) attitude in MSO coordinates'} - - meta['SPICE_Orbit_Number'] = {meta.labels.name: 'SPICE_Orbit_Number', - meta.labels.units: ' ', - meta.labels.min_val: 1.0, - meta.labels.max_val: 10000000.0, - meta.labels.notes: 'Orbit number increments each time MAVEN reaches geometric periapsis', - meta.labels.fill_val: -2147483648.0, - meta.labels.desc: 'Orbit number (SPICE)'} - - meta['Inbound_Outbound_Flag'] = {meta.labels.name: 'Inbound_Outbound_Flag', - meta.labels.units: ' ', - meta.labels.notes: 'Inbound (\'I\') is from geometric apoapsis to next geometric periapsis in time, outbound (\'O\') is the reverse', - meta.labels.desc: '---> [DOES NOT PLOT] Inbound/Outbound Flag (SPICE)'} - - meta['SPICE_Mars_season'] = {meta.labels.name: 'SPICE_Mars_season', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Martian solar longitude. Ls = 0 (northern spring equinox), Ls = 90 (northern summer solstice), etc.', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Mars Season (Ls) (SPICE)'} - - meta['SPICE_Mars_Sun_distance'] = {meta.labels.name: 'SPICE_Mars_Sun_distance', - meta.labels.units: 'AU', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Mars-Sun distance (SPICE)'} - - meta['SPICE_Subsolar_Point_longitude_GEO'] = {meta.labels.name: 'SPICE_Subsolar_Point_longitude_GEO', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'GEO longitude of the sub-solar point', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Subsolar Point longitude GEO (SPICE)'} - - meta['SPICE_Subsolar_Point_latitude_GEO'] = {meta.labels.name: 'SPICE_Subsolar_Point_latitude_GEO', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'GEO latitude of the sub-solar point', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Subsolar Point latitude GEO (SPICE)'} - - meta['SPICE_Sub_Mars_Point_longitude'] = {meta.labels.name: 'SPICE_Sub_Mars_Point_longitude', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Solar longitude of the center of the Sun as seen from Mars', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Sub-Mars Point on the Sun, Longitude (SPICE)'} - - meta['SPICE_Sub_Mars_Point_latitude'] = {meta.labels.name: 'SPICE_Sub_Mars_Point_latitude', - meta.labels.units: 'deg', - meta.labels.min_val: -999999995904.0, - meta.labels.max_val: 999999995904.0, - meta.labels.notes: 'Solar latitude of the center of the Sun as seen from Mars', - meta.labels.fill_val: -9.999999848243207e+30, - meta.labels.desc: 'Sub-Mars Point on the Sun, Latitude (SPICE)'} - - meta['Rotation_matrix_IAU_MARS_MAVEN_MSO'] = {meta.labels.name: 'Rotation_matrix_IAU_MARS_MAVEN_MSO', - meta.labels.units: ' ', - meta.labels.min_val: -1000000000000.0, - meta.labels.max_val: 1000000000000.0, - meta.labels.notes: 'From IAU_MARS frame to MAVEN_MSO frame', - meta.labels.fill_val: -1e+31, - meta.labels.desc: 'Rotation matrix (IAU_MARS -> MAVEN_MSO) (SPICE)'} - - meta['Rotation_matrix_SPACECRAFT_MAVEN_MSO'] = {meta.labels.name: 'Rotation_matrix_SPACECRAFT_MAVEN_MSO', - meta.labels.units: ' ', - meta.labels.min_val: -1000000000000.0, - meta.labels.max_val: 1000000000000.0, - meta.labels.notes: 'From MAVEN_SPACECRAFT frame to MAVEN_MSO frame', - meta.labels.fill_val: -1e+31, - meta.labels.desc: '---> Rotation matrix (MAVEN_SPACECRAFT -> MAVEN_MSO) (SPICE)'} - - - return meta +ackn_str = ''.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', + ' The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', + ' https://doi.org/10.1007/s11214-015-0139-x')) +references = ''.join(('Connerney, J., and P. Lawton, MAVEN MAG', + ' PDS Archive SIS - This document ', + 'describes the format and content of the MAVEN', + ' Magnetometer (MAG) Planetary Data System ', + '(PDS) data archive. ', + 'It includes descriptions of the Standard', + 'Data Products and associated metadata, ', + 'and the volume archive format,', + 'content, and generation pipeline. ', + 'Connerney, J.E.P.; Espley, J.; Lawton, P.;', + ' Murphy, S.; Odom, J.; Oliversen, R.;', + 'and Sheppard, D., The MAVEN Magnetic Field', + ' Investigation, Space Sci Rev,', + 'Vol 195, Iss 1-4, pp.257-291, 2015. ', + 'doi:10.1007/s11214-015-0169-4', + 'Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', + ' The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', + ' https://doi.org/10.1007/s11214-015-0139-x')) diff --git a/pysatNASA/instruments/mvn_insitu.py b/pysatNASA/instruments/mvn_insitu.py index 02e4ccd8..d37299e0 100644 --- a/pysatNASA/instruments/mvn_insitu.py +++ b/pysatNASA/instruments/mvn_insitu.py @@ -1,11 +1,9 @@ # -*- coding: utf-8 -*- -"""Module for the MAVEN kp instrument. +"""Module for the MAVEN insitu instrument. Created by: Teresa Esman, NPP at GSFC -Last editted: Jun 2, 2023 - May 12, 2023 -Supports the Key parameter (kp) data from multiple instruments +Supports the Key parameter (kp) data from multiple instruments onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. Accesses local data in CDF format. @@ -34,9 +32,9 @@ registry.register_by_module(pysatNASA.instruments) - kp = pysat.Instrument(platform='MAVEN', name='kp') - kp.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) - kp.load(2020, 1, use_header = True) + insitu = pysat.Instrument(platform='MAVEN', name='insitu') + insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) + insitu.load(2020, 1, use_header = True) """ import datetime as dt @@ -71,7 +69,7 @@ def clean(self): - """Clean MAVEN kp data to the specified level. + """Clean MAVEN insitu kp data to the specified level. Note ---- @@ -102,9 +100,13 @@ def clean(self): # Set the list_remote_files routine list_remote_files = functools.partial(cdw.list_remote_files, supported_tags=download_tags) + + def init(self): """Initialize the Instrument object with instrument specific values. + Runs once upon instantiation. + Parameters ----------- self : pysat.Instrument @@ -117,6 +119,7 @@ def init(self): return + # Set the load routine load = functools.partial(cdw.load, epoch_name='epoch', pandas_format=pandas_format, use_cdflib=True) diff --git a/pysatNASA/instruments/mvn_mag.py b/pysatNASA/instruments/mvn_mag.py index 14635c4f..0a7f8937 100644 --- a/pysatNASA/instruments/mvn_mag.py +++ b/pysatNASA/instruments/mvn_mag.py @@ -1,18 +1,17 @@ # -*- coding: utf-8 -*- """Module for the MAVEN mag instrument. + Created by: Teresa Esman, NPP at GSFC -Last editted: Jul 13, 2023 - May 24, 2023 - May 12, 2023 -Supports the Magnetometer (MAG) onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. +Supports the Magnetometer (MAG) onboard the Mars Atmosphere +and Volatile Evolution (MAVEN) satellite. Accesses local data in CDF format. -Downloads from CDAWeb. +Downloads from CDAWeb. Properties ---------- platform - 'mvn' + 'maven' name 'mag' tag @@ -23,7 +22,6 @@ - Only supports level-2 sunstate 1 second data. - Examples -------- :: @@ -31,17 +29,17 @@ import pysat from pysat.utils import registry registry.register_by_module(pysatNASA.instruments) - - + + mag = pysat.Instrument(platform='MAVEN', name='mag') mag.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) mag.load(2020, 1, use_header = True) + """ import datetime as dt import functools -import numpy as np -import cdflib + import pysat from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw @@ -51,43 +49,24 @@ # ---------------------------------------------------------------------------- # Instrument attributes -platform = 'mvn' +platform = 'maven' name = 'mag' tags = {'': 'l2'} inst_ids = {'': ['']} pandas_format = False - # ---------------------------------------------------------------------------- # Instrument test attributes _test_dates = {'': {'': dt.datetime(2020, 1, 1)}} _test_load_opt = {'': {'': {'keep_original_names': True}}} - # ---------------------------------------------------------------------------- # Instrument methods - # Use standard init routine init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) -def preprocess(self, keep_original_names=False): - """Adjust epoch timestamps to datetimes and remove variable preambles. - - Parameters - ---------- - keep_original_names : bool - if True then the names as given in the netCDF MAVEN file - will be used as is. If False, a preamble is removed. (default=False) - - """ - - if not keep_original_names: - mm_gen.remove_leading_text(self, target='MAVEN_') - return - - def clean(self): """Clean MAVEN mag data to the specified level. @@ -95,7 +74,7 @@ def clean(self): ---- Supports 'clean', 'dusty', 'dirty', 'none'. Method is not called by pysat if clean_level is None or 'none'. - + """ @@ -115,7 +94,8 @@ def clean(self): supported_tags=supported_tags) # Set the download routine -basic_tag = {'remote_dir': '/pub/data/maven/mag/l2/sunstate-1sec/cdfs/{year:04d}/{month:02d}', +basic_tag = {'remote_dir': ''.join(('/pub/data/maven/mag/l2/sunstate-1sec', + '/cdfs/{year:04d}/{month:02d}')), 'fname': fname} download_tags = {'': {'': basic_tag}} download = functools.partial(cdw.download, supported_tags=download_tags) @@ -125,39 +105,11 @@ def clean(self): supported_tags=download_tags) -def filter_metadata(meta_dict): - """Filter mag metadata to remove warnings during loading. - - Parameters - ---------- - meta_dict : dict - Dictionary of metadata from file - - Returns - ------- - meta_dict : dict - Filtered mag metadata - - """ - vars = ['time', 'DDAY', 'OB_B_x', 'OB_B_y','OB_B_z', 'OB_B_range', - 'POSN_x','POSN_y','POSN_z', 'OB_BDPL_x','OB_BDPL_y','OB_BDPL_z', - 'OB_BDPL_range'] - - for var in vars: - if var in meta_dict: - meta_dict[var]['FillVal'] = np.nan - - # Deal with string arrays - for var in meta_dict.keys(): - if 'Var_Notes' in meta_dict[var]: - meta_dict[var]['Var_Notes'] = ' '.join(pysat.utils.listify( - meta_dict[var]['Var_Notes'])) - - return meta_dict - def init(self): """Initialize the Instrument object with instrument specific values. + Runs once upon instantiation. + Parameters ----------- self : pysat.Instrument @@ -170,61 +122,7 @@ def init(self): return -def load(fnames, tag='', inst_id='', keep_original_names=False): - """Load MAVEN mag data into `xarray.Dataset` object and `pysat.Meta` objects. - - This routine is called as needed by pysat. It is not intended - for direct user interaction. - Parameters - ---------- - fnames : array-like - Iterable of filename strings, full path, to data files to be loaded. - This input is nominally provided by pysat itself. - tag : str - Tag name used to identify particular data set to be loaded. - This input is nominally provided by pysat itself. (default='') - inst_id : str - Instrument ID used to identify particular data set to be loaded. - This input is nominally provided by pysat itself. (default='') - keep_original_names : bool - If True then the names as given in the netCDF MAVEN file - will be used as is. If False, a preamble is removed. (default=False) - - Returns - ------- - data : xr.Dataset - An xarray Dataset with data prepared for the pysat.Instrument - meta : pysat.Meta - Metadata formatted for a pysat.Instrument object. - - Note - ---- - Any additional keyword arguments passed to pysat.Instrument - upon instantiation are passed along to this routine. - - - Examples - -------- - :: - - inst = pysat.Instrument('mvn', 'mag') - inst.load(2020, 1) - - """ - - - data = cdflib.cdf_to_xarray(fnames[0]) - - meta = [] - - xdata = mm_mvn.scrub_mvn_mag(data) - # mm_mvn.scrub_mvn_mag switches the type to xarray - - # Add meta here - header_data = mm_mvn.generate_header(data) - meta = mm_mvn.generate_metadata(header_data,data) - - data = xdata - - return data,meta +# Set the load routine +load = functools.partial(cdw.load, epoch_name='epoch', + pandas_format=pandas_format, use_cdflib=True) diff --git a/test_requirements.txt b/test_requirements.txt index 6c5e6eff..b0971689 100644 --- a/test_requirements.txt +++ b/test_requirements.txt @@ -10,4 +10,4 @@ pytest pytest-cov pytest-ordering sphinx -sphinx_rtd_theme +sphinx_rtd_theme>=1.2.2 From 5ced356418d0d7c802f73c7532eed6d70289898e Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Fri, 4 Aug 2023 12:46:54 -0400 Subject: [PATCH 08/82] STY: edit init --- pysatNASA/instruments/__init__.py | 3 ++- pysatNASA/instruments/methods/__init__.py | 1 - pysatNASA/instruments/methods/cdaweb.py | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index 7729829c..3b35ec45 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -11,7 +11,8 @@ 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_vefi', 'de2_wats', 'dmsp_ssusi', 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', - 'igs_gps', 'iss_fpmu', 'jpl_gps', 'mvn_mag', 'mvn_insitu', 'omni_hro', + 'igs_gps', 'iss_fpmu', 'jpl_gps', 'mvn_mag', + 'mvn_insitu', 'omni_hro', 'ses14_gold', 'timed_guvi', 'timed_saber', 'timed_see'] for inst in __all__: diff --git a/pysatNASA/instruments/methods/__init__.py b/pysatNASA/instruments/methods/__init__.py index da8f7d9a..8542fcbc 100644 --- a/pysatNASA/instruments/methods/__init__.py +++ b/pysatNASA/instruments/methods/__init__.py @@ -12,4 +12,3 @@ from pysatNASA.instruments.methods import omni # noqa F401 from pysatNASA.instruments.methods import ses14 # noqa F401 from pysatNASA.instruments.methods import timed # noqa F401 -from pysatNASA.instruments.methods import mvn # noga F401 diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index 5a2154bc..3e3340fb 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -392,7 +392,6 @@ def load_xarray(fnames, tag='', inst_id='', else: data = ldata[0] - all_vars = io.xarray_all_vars(data) meta = pysat.Meta(labels=labels) From 638c7d68075602dcd79f06f1a6ebe2b55dbe0bf6 Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Thu, 10 Aug 2023 11:54:17 -0400 Subject: [PATCH 09/82] ENH: add sep instrument --- pysatNASA/instruments/__init__.py | 4 +- .../{mvn_insitu.py => maven_insitu.py} | 10 +- .../instruments/{mvn_mag.py => maven_mag.py} | 5 +- pysatNASA/instruments/maven_sep.py | 139 ++++++++++++++++++ .../instruments/methods/{mvn.py => maven.py} | 0 5 files changed, 145 insertions(+), 13 deletions(-) rename pysatNASA/instruments/{mvn_insitu.py => maven_insitu.py} (92%) rename pysatNASA/instruments/{mvn_mag.py => maven_mag.py} (96%) create mode 100644 pysatNASA/instruments/maven_sep.py rename pysatNASA/instruments/methods/{mvn.py => maven.py} (100%) diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index 3b35ec45..87c5306b 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -11,8 +11,8 @@ 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_vefi', 'de2_wats', 'dmsp_ssusi', 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', - 'igs_gps', 'iss_fpmu', 'jpl_gps', 'mvn_mag', - 'mvn_insitu', 'omni_hro', + 'igs_gps', 'iss_fpmu', 'jpl_gps', 'maven_mag', + 'maven_insitu', 'omni_hro', 'ses14_gold', 'timed_guvi', 'timed_saber', 'timed_see'] for inst in __all__: diff --git a/pysatNASA/instruments/mvn_insitu.py b/pysatNASA/instruments/maven_insitu.py similarity index 92% rename from pysatNASA/instruments/mvn_insitu.py rename to pysatNASA/instruments/maven_insitu.py index d37299e0..f5642baf 100644 --- a/pysatNASA/instruments/mvn_insitu.py +++ b/pysatNASA/instruments/maven_insitu.py @@ -18,11 +18,6 @@ tag None supported -Warnings --------- - -- Only supports level-2 sunstate 1 second data. - Examples -------- @@ -43,7 +38,7 @@ from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import general as mm_nasa -from pysatNASA.instruments.methods import mvn as mm_mvn +from pysatNASA.instruments.methods import maven as mm_mvn # ---------------------------------------------------------------------------- # Instrument attributes @@ -59,7 +54,6 @@ # Instrument test attributes _test_dates = {'': {'': dt.datetime(2020, 1, 1)}} -_test_load_opt = {'': {'': {'keep_original_names': True}}} # ---------------------------------------------------------------------------- # Instrument methods @@ -73,7 +67,7 @@ def clean(self): Note ---- - Supports 'clean', 'dusty', 'dirty', 'none'. Method is + Supports 'none'. Method is not called by pysat if clean_level is None or 'none'. """ return diff --git a/pysatNASA/instruments/mvn_mag.py b/pysatNASA/instruments/maven_mag.py similarity index 96% rename from pysatNASA/instruments/mvn_mag.py rename to pysatNASA/instruments/maven_mag.py index 0a7f8937..2cf79d91 100644 --- a/pysatNASA/instruments/mvn_mag.py +++ b/pysatNASA/instruments/maven_mag.py @@ -44,7 +44,7 @@ from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import general as mm_nasa -from pysatNASA.instruments.methods import mvn as mm_mvn +from pysatNASA.instruments.methods import maven as mm_mvn # ---------------------------------------------------------------------------- # Instrument attributes @@ -59,7 +59,7 @@ # Instrument test attributes _test_dates = {'': {'': dt.datetime(2020, 1, 1)}} -_test_load_opt = {'': {'': {'keep_original_names': True}}} + # ---------------------------------------------------------------------------- # Instrument methods @@ -92,7 +92,6 @@ def clean(self): supported_tags = {'': {'': fname}} list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) - # Set the download routine basic_tag = {'remote_dir': ''.join(('/pub/data/maven/mag/l2/sunstate-1sec', '/cdfs/{year:04d}/{month:02d}')), diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py new file mode 100644 index 00000000..88d78529 --- /dev/null +++ b/pysatNASA/instruments/maven_sep.py @@ -0,0 +1,139 @@ +# -*- coding: utf-8 -*- +"""Module for the MAVEN insitu instrument. + +Created by: Teresa Esman, NPP at GSFC + +Supports the Solar Energetic Particle (SEP) data from +onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. + +Accesses local data in CDF format. +Downlaods from CDAWeb. + +Properties +---------- +platform + 'maven' +name + 'sep' +tag + 's1','s2' + + +Examples +-------- +:: + import pysat + from pysat.utils import registry + registry.register_by_module(pysatNASA.instruments) + + + insitu = pysat.Instrument(platform='MAVEN', name='insitu') + insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) + insitu.load(2020, 1, use_header = True) +""" + +import datetime as dt +import functools +import pysat +from pysat.instruments.methods import general as mm_gen +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import maven as mm_mvn + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'maven' +name = 'sep' +tags = {'': ''} +inst_ids = {'': ['', 's1', 's2']} + +pandas_format = False + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {'': {'': dt.datetime(2020, 1, 1)}} + +# ---------------------------------------------------------------------------- +# Instrument methods + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) + + +def clean(self): + """Clean MAVEN mag data to the specified level. + + Note + ---- + Supports 'clean', 'dusty', 'dirty', 'none'. Method is + not called by pysat if clean_level is None or 'none'. + + + """ + + return + + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the MAVEN and pysat methods + +# Set the list_files routine +fname = ''.join(('mvn_sep_l2_s1-cal-svy-full_{year:04d}{month:02d}{day:02d}_', + 'v{version:02d}_r{revision:02d}.cdf')) + +fname2 = ''.join(('mvn_sep_l2_s2-cal-svy-full_{year:04d}{month:02d}{day:02d}_', + 'v{version:02d}_r{revision:02d}.cdf')) + +supported_tags = {'': {'': fname, + 's1': fname, + 's2': fname2}} + +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + +# Set the download routine +basic_tag = {'remote_dir': ''.join(('/pub/data/maven/sep/l2/s1-cal-svy-full', + '/{year:04d}/{month:02d}')), + 'fname': fname} + +basic_tag2 = {'remote_dir': ''.join(('/pub/data/maven/sep/l2/s2-cal-svy-full', + '/{year:04d}/{month:02d}')), + 'fname': fname2} + +download_tags = {'': {'': basic_tag, + 's1': basic_tag, + 's2': basic_tag2}} + +# Set the download routine +download = functools.partial(cdw.download, supported_tags=download_tags) + +# Set the list_remote_files routine +list_remote_files = functools.partial(cdw.list_remote_files, + supported_tags=download_tags) + + +def init(self): + """Initialize the Instrument object with instrument specific values. + + Runs once upon instantiation. + + Parameters + ----------- + self : pysat.Instrument + Instrument class object + """ + + pysat.logger.info(mm_mvn.ackn_str) + self.acknowledgements = mm_mvn.ackn_str + self.references = mm_mvn.references + + return + + +# Set the load routine +load = functools.partial(cdw.load, epoch_name='epoch', + pandas_format=pandas_format, use_cdflib=True) diff --git a/pysatNASA/instruments/methods/mvn.py b/pysatNASA/instruments/methods/maven.py similarity index 100% rename from pysatNASA/instruments/methods/mvn.py rename to pysatNASA/instruments/methods/maven.py From 587c023648ef2b0dd8fad1378b842ea6213ebace Mon Sep 17 00:00:00 2001 From: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:49:34 -0400 Subject: [PATCH 10/82] Apply suggestions from code review --- pysatNASA/instruments/__init__.py | 4 ++-- pysatNASA/tests/test_instruments.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index 87c5306b..016efdfc 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -11,8 +11,8 @@ 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_vefi', 'de2_wats', 'dmsp_ssusi', 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', - 'igs_gps', 'iss_fpmu', 'jpl_gps', 'maven_mag', - 'maven_insitu', 'omni_hro', + 'igs_gps', 'iss_fpmu', 'jpl_gps', 'maven_insitu', + 'maven_mag', 'maven_sep', 'omni_hro', 'ses14_gold', 'timed_guvi', 'timed_saber', 'timed_see'] for inst in __all__: diff --git a/pysatNASA/tests/test_instruments.py b/pysatNASA/tests/test_instruments.py index a3fc7868..dea3dacb 100644 --- a/pysatNASA/tests/test_instruments.py +++ b/pysatNASA/tests/test_instruments.py @@ -8,7 +8,6 @@ import warnings -import pysat import pytest # Import the test classes from pysat From 37716dfa3e00f529956a9873157edc3983cb5390 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> Date: Tue, 5 Sep 2023 14:51:32 -0400 Subject: [PATCH 11/82] Update pysatNASA/instruments/__init__.py --- pysatNASA/instruments/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index 016efdfc..6f49e3ca 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -11,7 +11,7 @@ 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_vefi', 'de2_wats', 'dmsp_ssusi', 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', - 'igs_gps', 'iss_fpmu', 'jpl_gps', 'maven_insitu', + 'igs_gps', 'iss_fpmu', 'jpl_gps', 'maven_insitu', 'maven_mag', 'maven_sep', 'omni_hro', 'ses14_gold', 'timed_guvi', 'timed_saber', 'timed_see'] From d6ce40d95d13b596ab67afa75001de3a283e21cd Mon Sep 17 00:00:00 2001 From: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> Date: Wed, 6 Sep 2023 09:45:35 -0400 Subject: [PATCH 12/82] Fixing merge issues --- pysatNASA/instruments/de2_nacs.py | 1 - pysatNASA/instruments/de2_rpa.py | 1 - pysatNASA/instruments/de2_wats.py | 1 - 3 files changed, 3 deletions(-) diff --git a/pysatNASA/instruments/de2_nacs.py b/pysatNASA/instruments/de2_nacs.py index 2c2b33c1..ba949e95 100644 --- a/pysatNASA/instruments/de2_nacs.py +++ b/pysatNASA/instruments/de2_nacs.py @@ -62,7 +62,6 @@ None Supported - Warnings -------- - Currently no cleaning routine. diff --git a/pysatNASA/instruments/de2_rpa.py b/pysatNASA/instruments/de2_rpa.py index f1c7a2f7..aa97b66d 100644 --- a/pysatNASA/instruments/de2_rpa.py +++ b/pysatNASA/instruments/de2_rpa.py @@ -44,7 +44,6 @@ None Supported - Warnings -------- - Currently no cleaning routine. diff --git a/pysatNASA/instruments/de2_wats.py b/pysatNASA/instruments/de2_wats.py index 2266d4d6..5a784d24 100644 --- a/pysatNASA/instruments/de2_wats.py +++ b/pysatNASA/instruments/de2_wats.py @@ -59,7 +59,6 @@ None Supported - Warnings -------- - Currently no cleaning routine. From 30f375eb4728581f80e58e149fba31579bb978ae Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 6 Sep 2023 10:20:13 -0400 Subject: [PATCH 13/82] Update supported_instruments.rst --- docs/supported_instruments.rst | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/docs/supported_instruments.rst b/docs/supported_instruments.rst index 0980414e..aee5aa03 100644 --- a/docs/supported_instruments.rst +++ b/docs/supported_instruments.rst @@ -178,6 +178,30 @@ JPL GPS .. automodule:: pysatNASA.instruments.jpl_gps :members: +.. _maven_insitu: + +MAVEN INSITU +-------- + +.. automodule:: pysatNASA.instruments.maven_insitu + :members: + +.. _maven_mag: + +MAVEN MAG +-------- + +.. automodule:: pysatNASA.instruments.maven_mag + :members: + +.. _maven_sep: + +MAVEN SEP +-------- + +.. automodules:: pysatNASA.instruments.maven_sep + :members: + .. _omni_hro: OMNI HRO From ed505df77fe4f6eb1a70e486e78eacb634ea69d4 Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 6 Sep 2023 10:29:36 -0400 Subject: [PATCH 14/82] Update .zenodo.json --- .zenodo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index 21d65586..6d54b11f 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -21,7 +21,7 @@ "orcid": "0000-0002-8191-4765" }, { - "affilitation":"University of Colorado at Boulder", + "affiliation":"University of Colorado at Boulder", "name": "Navarro, Luis", "orcid": "0000-0002-6362-6575" }, @@ -34,9 +34,9 @@ "orcid": "0000-0001-8340-5625" }, { - "affilitation":"University of Colorado at Boulder", - "name": "Navarro, Luis", - "orcid": "0000-0002-6362-6575" + "affiliation": "NASA Postdoctoral Program, Goddard Space Flight Center", + "name": "Esman, Teresa", + "orcid": "0000-0003-0382-6281" } ] } From fb5c4f9e839d1e52f1e7f90cef8990768176bc6a Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 6 Sep 2023 10:58:53 -0400 Subject: [PATCH 15/82] Update maven_mag.py --- pysatNASA/instruments/maven_mag.py | 43 +++--------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/pysatNASA/instruments/maven_mag.py b/pysatNASA/instruments/maven_mag.py index 2cf79d91..d59f8c7e 100644 --- a/pysatNASA/instruments/maven_mag.py +++ b/pysatNASA/instruments/maven_mag.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Module for the MAVEN mag instrument. -Created by: Teresa Esman, NPP at GSFC - Supports the Magnetometer (MAG) onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. Accesses local data in CDF format. @@ -25,13 +23,7 @@ Examples -------- :: - - import pysat - from pysat.utils import registry - registry.register_by_module(pysatNASA.instruments) - - - mag = pysat.Instrument(platform='MAVEN', name='mag') + mag = pysat.Instrument(platform='maven', name='mag') mag.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) mag.load(2020, 1, use_header = True) @@ -67,18 +59,8 @@ init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) -def clean(self): - """Clean MAVEN mag data to the specified level. - - Note - ---- - Supports 'clean', 'dusty', 'dirty', 'none'. Method is - not called by pysat if clean_level is None or 'none'. - - - """ - - return +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- @@ -103,25 +85,6 @@ def clean(self): list_remote_files = functools.partial(cdw.list_remote_files, supported_tags=download_tags) - -def init(self): - """Initialize the Instrument object with instrument specific values. - - Runs once upon instantiation. - - Parameters - ----------- - self : pysat.Instrument - Instrument class object - """ - - pysat.logger.info(mm_mvn.ackn_str) - self.acknowledgements = mm_mvn.ackn_str - self.references = mm_mvn.references - - return - - # Set the load routine load = functools.partial(cdw.load, epoch_name='epoch', pandas_format=pandas_format, use_cdflib=True) From af0c6e8ae3dd66b1c95b51d8403c474ec21f9f50 Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 6 Sep 2023 11:08:28 -0400 Subject: [PATCH 16/82] Apply suggestions from code review Co-authored-by: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> --- pysatNASA/instruments/maven_insitu.py | 45 ++++++--------------------- pysatNASA/instruments/maven_sep.py | 39 ++++------------------- 2 files changed, 16 insertions(+), 68 deletions(-) diff --git a/pysatNASA/instruments/maven_insitu.py b/pysatNASA/instruments/maven_insitu.py index f5642baf..67caed7f 100644 --- a/pysatNASA/instruments/maven_insitu.py +++ b/pysatNASA/instruments/maven_insitu.py @@ -1,13 +1,11 @@ # -*- coding: utf-8 -*- """Module for the MAVEN insitu instrument. -Created by: Teresa Esman, NPP at GSFC - -Supports the Key parameter (kp) data from multiple instruments +Supports the in situ Key Parameter (kp) data from multiple instruments onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. Accesses local data in CDF format. -Downlaods from CDAWeb. +Downloads from CDAWeb. Properties ---------- @@ -17,23 +15,25 @@ 'insitu' tag None supported +inst_id + None supported Examples -------- :: import pysat - from pysat.utils import registry - registry.register_by_module(pysatNASA.instruments) - insitu = pysat.Instrument(platform='MAVEN', name='insitu') + insitu = pysat.Instrument(platform='maven', name='insitu') insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) - insitu.load(2020, 1, use_header = True) + insitu.load(2020, 1, use_header=True) + """ import datetime as dt import functools + import pysat from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw @@ -62,15 +62,8 @@ init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) -def clean(self): - """Clean MAVEN insitu kp data to the specified level. - - Note - ---- - Supports 'none'. Method is - not called by pysat if clean_level is None or 'none'. - """ - return +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- @@ -96,24 +89,6 @@ def clean(self): supported_tags=download_tags) -def init(self): - """Initialize the Instrument object with instrument specific values. - - Runs once upon instantiation. - - Parameters - ----------- - self : pysat.Instrument - Instrument class object - """ - - pysat.logger.info(mm_mvn.ackn_str) - self.acknowledgements = mm_mvn.ackn_str - self.references = mm_mvn.references - - return - - # Set the load routine load = functools.partial(cdw.load, epoch_name='epoch', pandas_format=pandas_format, use_cdflib=True) diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py index 88d78529..49b45f40 100644 --- a/pysatNASA/instruments/maven_sep.py +++ b/pysatNASA/instruments/maven_sep.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- """Module for the MAVEN insitu instrument. -Created by: Teresa Esman, NPP at GSFC - Supports the Solar Energetic Particle (SEP) data from onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. @@ -17,14 +15,14 @@ 'sep' tag 's1','s2' - +inst_id + None supported + Examples -------- :: import pysat - from pysat.utils import registry - registry.register_by_module(pysatNASA.instruments) insitu = pysat.Instrument(platform='MAVEN', name='insitu') @@ -34,6 +32,7 @@ import datetime as dt import functools + import pysat from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw @@ -62,18 +61,8 @@ init = functools.partial(mm_nasa.init, module=mm_mvn, name=name) -def clean(self): - """Clean MAVEN mag data to the specified level. - - Note - ---- - Supports 'clean', 'dusty', 'dirty', 'none'. Method is - not called by pysat if clean_level is None or 'none'. - - - """ - - return +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- @@ -116,22 +105,6 @@ def clean(self): supported_tags=download_tags) -def init(self): - """Initialize the Instrument object with instrument specific values. - - Runs once upon instantiation. - - Parameters - ----------- - self : pysat.Instrument - Instrument class object - """ - - pysat.logger.info(mm_mvn.ackn_str) - self.acknowledgements = mm_mvn.ackn_str - self.references = mm_mvn.references - - return # Set the load routine From 31399d753c99f1c63e6a1900d7e6ef6a31fb11eb Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 6 Sep 2023 11:47:12 -0400 Subject: [PATCH 17/82] Apply suggestions from code review --- pysatNASA/instruments/maven_insitu.py | 1 - pysatNASA/instruments/maven_mag.py | 4 +++- pysatNASA/instruments/maven_sep.py | 10 +++------- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/pysatNASA/instruments/maven_insitu.py b/pysatNASA/instruments/maven_insitu.py index 67caed7f..13b92506 100644 --- a/pysatNASA/instruments/maven_insitu.py +++ b/pysatNASA/instruments/maven_insitu.py @@ -34,7 +34,6 @@ import datetime as dt import functools -import pysat from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import general as mm_nasa diff --git a/pysatNASA/instruments/maven_mag.py b/pysatNASA/instruments/maven_mag.py index d59f8c7e..a18b034c 100644 --- a/pysatNASA/instruments/maven_mag.py +++ b/pysatNASA/instruments/maven_mag.py @@ -23,6 +23,9 @@ Examples -------- :: + import pysat + + mag = pysat.Instrument(platform='maven', name='mag') mag.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) mag.load(2020, 1, use_header = True) @@ -32,7 +35,6 @@ import datetime as dt import functools -import pysat from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import general as mm_nasa diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py index 49b45f40..3bd60b27 100644 --- a/pysatNASA/instruments/maven_sep.py +++ b/pysatNASA/instruments/maven_sep.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- -"""Module for the MAVEN insitu instrument. +"""Module for the MAVEN sep instrument. Supports the Solar Energetic Particle (SEP) data from onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. Accesses local data in CDF format. -Downlaods from CDAWeb. +Downloads from CDAWeb. Properties ---------- @@ -17,7 +17,6 @@ 's1','s2' inst_id None supported - Examples -------- @@ -28,12 +27,12 @@ insitu = pysat.Instrument(platform='MAVEN', name='insitu') insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) insitu.load(2020, 1, use_header = True) + """ import datetime as dt import functools -import pysat from pysat.instruments.methods import general as mm_gen from pysatNASA.instruments.methods import cdaweb as cdw from pysatNASA.instruments.methods import general as mm_nasa @@ -104,9 +103,6 @@ list_remote_files = functools.partial(cdw.list_remote_files, supported_tags=download_tags) - - - # Set the load routine load = functools.partial(cdw.load, epoch_name='epoch', pandas_format=pandas_format, use_cdflib=True) From 3fed9d49bfb1470ecdcac14776bbe3360959c51e Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 6 Sep 2023 11:52:44 -0400 Subject: [PATCH 18/82] Apply suggestions from code review White space, references --- pysatNASA/instruments/maven_mag.py | 4 +-- pysatNASA/instruments/maven_sep.py | 1 - pysatNASA/instruments/methods/maven.py | 50 ++++++++++++++++---------- 3 files changed, 33 insertions(+), 22 deletions(-) diff --git a/pysatNASA/instruments/maven_mag.py b/pysatNASA/instruments/maven_mag.py index a18b034c..e108c460 100644 --- a/pysatNASA/instruments/maven_mag.py +++ b/pysatNASA/instruments/maven_mag.py @@ -24,8 +24,8 @@ -------- :: import pysat - - + + mag = pysat.Instrument(platform='maven', name='mag') mag.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) mag.load(2020, 1, use_header = True) diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py index 3bd60b27..796db117 100644 --- a/pysatNASA/instruments/maven_sep.py +++ b/pysatNASA/instruments/maven_sep.py @@ -27,7 +27,6 @@ insitu = pysat.Instrument(platform='MAVEN', name='insitu') insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) insitu.load(2020, 1, use_header = True) - """ import datetime as dt diff --git a/pysatNASA/instruments/methods/maven.py b/pysatNASA/instruments/methods/maven.py index 3d27d489..e5ecb5e9 100644 --- a/pysatNASA/instruments/methods/maven.py +++ b/pysatNASA/instruments/methods/maven.py @@ -10,22 +10,34 @@ ' The Mars Atmosphere and Volatile Evolution', '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', ' https://doi.org/10.1007/s11214-015-0139-x')) -references = ''.join(('Connerney, J., and P. Lawton, MAVEN MAG', - ' PDS Archive SIS - This document ', - 'describes the format and content of the MAVEN', - ' Magnetometer (MAG) Planetary Data System ', - '(PDS) data archive. ', - 'It includes descriptions of the Standard', - 'Data Products and associated metadata, ', - 'and the volume archive format,', - 'content, and generation pipeline. ', - 'Connerney, J.E.P.; Espley, J.; Lawton, P.;', - ' Murphy, S.; Odom, J.; Oliversen, R.;', - 'and Sheppard, D., The MAVEN Magnetic Field', - ' Investigation, Space Sci Rev,', - 'Vol 195, Iss 1-4, pp.257-291, 2015. ', - 'doi:10.1007/s11214-015-0169-4', - 'Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', - ' The Mars Atmosphere and Volatile Evolution', - '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', - ' https://doi.org/10.1007/s11214-015-0139-x')) +refs = {'insitu': ''.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', + ' The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', + ' https://doi.org/10.1007/s11214-015-0139-x')), + 'mag': ''.join(('Connerney, J., and P. Lawton, MAVEN MAG', + ' PDS Archive SIS - This document ', + 'describes the format and content of the MAVEN', + ' Magnetometer (MAG) Planetary Data System ', + '(PDS) data archive. ', + 'It includes descriptions of the Standard', + 'Data Products and associated metadata, ', + 'and the volume archive format,', + 'content, and generation pipeline. ', + 'Connerney, J.E.P.; Espley, J.; Lawton, P.;', + ' Murphy, S.; Odom, J.; Oliversen, R.;', + 'and Sheppard, D., The MAVEN Magnetic Field', + ' Investigation, Space Sci Rev,', + 'Vol 195, Iss 1-4, pp.257-291, 2015. ', + 'doi:10.1007/s11214-015-0169-4', + 'Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', + ' The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', + ' https://doi.org/10.1007/s11214-015-0139-x')), + 'sep': ''.join(('Larson, D.E., Lillis, R.J., Lee, C.O. et al.', + 'The MAVEN Solar Energetic Particle Investigation.', + ' Space Sci Rev 195, 153–172 (2015).', + ' https://doi.org/10.1007/s11214-015-0218-z', + 'Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', + ' The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', + ' https://doi.org/10.1007/s11214-015-0139-x'))} From 86e2fd8c0d028d8b4a66a3f5bd7312825f49369c Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 6 Sep 2023 12:42:42 -0400 Subject: [PATCH 19/82] STY: reference indents fixed --- pysatNASA/instruments/methods/maven.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pysatNASA/instruments/methods/maven.py b/pysatNASA/instruments/methods/maven.py index e5ecb5e9..86ae78e0 100644 --- a/pysatNASA/instruments/methods/maven.py +++ b/pysatNASA/instruments/methods/maven.py @@ -11,10 +11,10 @@ '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', ' https://doi.org/10.1007/s11214-015-0139-x')) refs = {'insitu': ''.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', - ' The Mars Atmosphere and Volatile Evolution', - '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', - ' https://doi.org/10.1007/s11214-015-0139-x')), - 'mag': ''.join(('Connerney, J., and P. Lawton, MAVEN MAG', + ' The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', + ' https://doi.org/10.1007/s11214-015-0139-x')), + 'mag': ''.join(('Connerney, J., and P. Lawton, MAVEN MAG', ' PDS Archive SIS - This document ', 'describes the format and content of the MAVEN', ' Magnetometer (MAG) Planetary Data System ', @@ -33,7 +33,7 @@ ' The Mars Atmosphere and Volatile Evolution', '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', ' https://doi.org/10.1007/s11214-015-0139-x')), - 'sep': ''.join(('Larson, D.E., Lillis, R.J., Lee, C.O. et al.', + 'sep': ''.join(('Larson, D.E., Lillis, R.J., Lee, C.O. et al.', 'The MAVEN Solar Energetic Particle Investigation.', ' Space Sci Rev 195, 153–172 (2015).', ' https://doi.org/10.1007/s11214-015-0218-z', From c09bca9c76f0262a40e933d730a195e66791ae02 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 7 Sep 2023 11:02:14 -0400 Subject: [PATCH 20/82] BUG: don't clean symmetric matrices --- pysatNASA/instruments/methods/general.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/general.py b/pysatNASA/instruments/methods/general.py index 1d075c46..1bee292d 100644 --- a/pysatNASA/instruments/methods/general.py +++ b/pysatNASA/instruments/methods/general.py @@ -67,8 +67,10 @@ def clean(self): coords = [key for key in self.data.coords.keys()] for key in self.variables: + # Check for symmetric dims + unique_dims = len(self[key].dims) == len(np.unique(self[key].dims)) # Skip over the coordinates when cleaning - if key not in coords: + if key not in coords and unique_dims: fill = self.meta[key, self.meta.labels.fill_val] # Replace fill with nan From c1e0f885364a56705e7bf9a5fdb8e2991e155c16 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 7 Sep 2023 11:03:03 -0400 Subject: [PATCH 21/82] DOC: add rationale --- pysatNASA/instruments/methods/general.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pysatNASA/instruments/methods/general.py b/pysatNASA/instruments/methods/general.py index 1bee292d..f51c42b8 100644 --- a/pysatNASA/instruments/methods/general.py +++ b/pysatNASA/instruments/methods/general.py @@ -68,6 +68,7 @@ def clean(self): for key in self.variables: # Check for symmetric dims + # Indicates transformation matrix, xarray cannot broadcast unique_dims = len(self[key].dims) == len(np.unique(self[key].dims)) # Skip over the coordinates when cleaning if key not in coords and unique_dims: From f4630411bfb637d0c1c00729ea877634f115ea29 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 7 Sep 2023 11:03:59 -0400 Subject: [PATCH 22/82] DOC: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1a0e0e9..7de10b56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ This project adheres to [Semantic Versioning](https://semver.org/). * MAVEN mag * MAVEN SEP * MAVEN in situ +* Bug Fixes + * Fix general clean routine to skip transformation matrices * Maintenance * Implemented unit tests for cleaning warnings * Use pip install for readthedocs From 2f3d9b156f36655d222a89fad172c8afeadbe914 Mon Sep 17 00:00:00 2001 From: jklenzing Date: Thu, 7 Sep 2023 11:26:51 -0400 Subject: [PATCH 23/82] BUG: skip check for pandas --- pysatNASA/instruments/methods/general.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/general.py b/pysatNASA/instruments/methods/general.py index f51c42b8..a58d4001 100644 --- a/pysatNASA/instruments/methods/general.py +++ b/pysatNASA/instruments/methods/general.py @@ -69,7 +69,12 @@ def clean(self): for key in self.variables: # Check for symmetric dims # Indicates transformation matrix, xarray cannot broadcast - unique_dims = len(self[key].dims) == len(np.unique(self[key].dims)) + if self.pands_format: + # True by default + unique_dims = True + else: + # Check for multiple dims + unique_dims = len(self[key].dims) == len(np.unique(self[key].dims)) # Skip over the coordinates when cleaning if key not in coords and unique_dims: fill = self.meta[key, self.meta.labels.fill_val] From 0d0b60fa3e2cc0285eef49f1986fa1441d1c1f4e Mon Sep 17 00:00:00 2001 From: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> Date: Thu, 7 Sep 2023 12:01:45 -0400 Subject: [PATCH 24/82] Update pysatNASA/instruments/methods/general.py --- pysatNASA/instruments/methods/general.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/general.py b/pysatNASA/instruments/methods/general.py index a58d4001..8dee2bbe 100644 --- a/pysatNASA/instruments/methods/general.py +++ b/pysatNASA/instruments/methods/general.py @@ -69,7 +69,7 @@ def clean(self): for key in self.variables: # Check for symmetric dims # Indicates transformation matrix, xarray cannot broadcast - if self.pands_format: + if self.pandas_format: # True by default unique_dims = True else: From f61b74ce2a4997d4c3db0943062440d20547f581 Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 13 Sep 2023 08:54:41 -0400 Subject: [PATCH 25/82] Apply suggestions from code review STY Co-authored-by: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> --- docs/supported_instruments.rst | 6 +++--- pysatNASA/instruments/maven_insitu.py | 1 - pysatNASA/instruments/maven_mag.py | 3 ++- pysatNASA/instruments/maven_sep.py | 3 +-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/supported_instruments.rst b/docs/supported_instruments.rst index aee5aa03..65468a3a 100644 --- a/docs/supported_instruments.rst +++ b/docs/supported_instruments.rst @@ -181,7 +181,7 @@ JPL GPS .. _maven_insitu: MAVEN INSITU --------- +------------ .. automodule:: pysatNASA.instruments.maven_insitu :members: @@ -189,7 +189,7 @@ MAVEN INSITU .. _maven_mag: MAVEN MAG --------- +--------- .. automodule:: pysatNASA.instruments.maven_mag :members: @@ -197,7 +197,7 @@ MAVEN MAG .. _maven_sep: MAVEN SEP --------- +--------- .. automodules:: pysatNASA.instruments.maven_sep :members: diff --git a/pysatNASA/instruments/maven_insitu.py b/pysatNASA/instruments/maven_insitu.py index 13b92506..85b78446 100644 --- a/pysatNASA/instruments/maven_insitu.py +++ b/pysatNASA/instruments/maven_insitu.py @@ -24,7 +24,6 @@ :: import pysat - insitu = pysat.Instrument(platform='maven', name='insitu') insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) insitu.load(2020, 1, use_header=True) diff --git a/pysatNASA/instruments/maven_mag.py b/pysatNASA/instruments/maven_mag.py index e108c460..e1da225f 100644 --- a/pysatNASA/instruments/maven_mag.py +++ b/pysatNASA/instruments/maven_mag.py @@ -14,6 +14,8 @@ 'mag' tag None supported +inst_id + None supported Warnings -------- @@ -25,7 +27,6 @@ :: import pysat - mag = pysat.Instrument(platform='maven', name='mag') mag.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) mag.load(2020, 1, use_header = True) diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py index 796db117..cd0e39ed 100644 --- a/pysatNASA/instruments/maven_sep.py +++ b/pysatNASA/instruments/maven_sep.py @@ -14,7 +14,7 @@ name 'sep' tag - 's1','s2' + ['', 's1', 's2'] inst_id None supported @@ -23,7 +23,6 @@ :: import pysat - insitu = pysat.Instrument(platform='MAVEN', name='insitu') insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) insitu.load(2020, 1, use_header = True) From a67c42150d6898f79450a92c478d0584c853bda8 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Thu, 14 Sep 2023 17:41:28 -0400 Subject: [PATCH 26/82] ENH: add reach dosimeter --- pysatNASA/instruments/__init__.py | 4 +- pysatNASA/instruments/methods/__init__.py | 1 + pysatNASA/instruments/methods/reach.py | 7 ++ pysatNASA/instruments/reach_dosimeter.py | 142 ++++++++++++++++++++++ 4 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 pysatNASA/instruments/methods/reach.py create mode 100644 pysatNASA/instruments/reach_dosimeter.py diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index 5407b031..e914912a 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -11,8 +11,8 @@ 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_vefi', 'de2_wats', 'dmsp_ssusi', 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', - 'igs_gps', 'iss_fpmu', 'jpl_gps', 'omni_hro', 'ses14_gold', - 'timed_guvi', 'timed_saber', 'timed_see'] + 'igs_gps', 'iss_fpmu', 'jpl_gps', 'omni_hro', 'reach_dosimeter', + 'ses14_gold', 'timed_guvi', 'timed_saber', 'timed_see'] for inst in __all__: exec("from pysatNASA.instruments import {x}".format(x=inst)) diff --git a/pysatNASA/instruments/methods/__init__.py b/pysatNASA/instruments/methods/__init__.py index 4459d353..a1910352 100644 --- a/pysatNASA/instruments/methods/__init__.py +++ b/pysatNASA/instruments/methods/__init__.py @@ -12,5 +12,6 @@ from pysatNASA.instruments.methods import iss # noqa F401 from pysatNASA.instruments.methods import jhuapl # noqa F401 from pysatNASA.instruments.methods import omni # noqa F401 +from pysatNASA.instruments.methods import reach # noqa F401 from pysatNASA.instruments.methods import ses14 # noqa F401 from pysatNASA.instruments.methods import timed # noqa F401 diff --git a/pysatNASA/instruments/methods/reach.py b/pysatNASA/instruments/methods/reach.py new file mode 100644 index 00000000..caadb7f6 --- /dev/null +++ b/pysatNASA/instruments/methods/reach.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +"""Provides non-instrument specific routines for REACH data.""" + +ackn_str = ' '.join(("Insert ackn")) + +refs = {'dosimeter': ' '.join(('Insert ref')) + } diff --git a/pysatNASA/instruments/reach_dosimeter.py b/pysatNASA/instruments/reach_dosimeter.py new file mode 100644 index 00000000..de74ece0 --- /dev/null +++ b/pysatNASA/instruments/reach_dosimeter.py @@ -0,0 +1,142 @@ +# -*- coding: utf-8 -*- +"""The REACH dosimeter instrument. + +Supports the dosimeter instrument on the Responsive Environmental Assessment +Commercially Hosted (REACH) mission. + +The Responsive Environmental Assessment Commercially Hosted (REACH) +constellation is collection of 32 small sensors hosted on six orbital planes of +the Iridium-Next space vehicles in low earth orbit. Each sensor contains two +micro-dosimeters sensitive to the passage of charged particles from the Earth's +radiation belts. There are six distinct dosimeter types spread among the 64 +individual sensors, which are unique in shielding and electronic threshold. +When taken together, this effectively enables a high time-cadence measurement +of protons and electrons in six integral energy channels over the entire globe. + +Properties +---------- +platform + 'reach' +name + 'dosimeter' +tag + None Supported +inst_id + '101', '102', '105', '108', '113', '114', '115', '116', '133', '134', '135', + '136', '137', '138', '139', '140', '148', '149', '162', '163', '164', '165', + '166', '169', '170', '171', '172', '173', '175', '176', '180', '181' + + +""" + +import datetime as dt +import functools + +from pysat.instruments.methods import general as mm_gen +from pysat.utils.io import load_netcdf + +from pysatNASA.instruments.methods import cdaweb as cdw +from pysatNASA.instruments.methods import reach as mm_reach +from pysatNASA.instruments.methods import general as mm_nasa + +# ---------------------------------------------------------------------------- +# Instrument attributes + +platform = 'reach' +name = 'dosimeter' +tags = {'': 'Dosimeter data from the REACH mission'} +iids = ['101', '102', '105', '108', '113', '114', '115', '116', '133', '134', + '135', '136', '137', '138', '139', '140', '148', '149', '162', '163', + '164', '165', '166', '169', '170', '171', '172', '173', '175', '176', + '180', '181'] +inst_ids = {iid: [tag for tag in tags.keys()] for iid in iids} + +# ---------------------------------------------------------------------------- +# Instrument test attributes + +_test_dates = {iid: {tag: dt.datetime(2019, 12, 1) for tag in tags.keys()} + for iid in inst_ids.keys()} + +# ---------------------------------------------------------------------------- +# Instrument methods + + +# Use standard init routine +init = functools.partial(mm_nasa.init, module=mm_reach, name=name) + +# Use default clean +clean = mm_nasa.clean + +# ---------------------------------------------------------------------------- +# Instrument functions +# +# Use the default CDAWeb and pysat methods + +# Set the list_files routine +datestr = '{year:4d}{month:02d}{day:02d}' +fname = 'reach-vid-{inst_id}_dosimeter-l1c_{datestr}_v{{version:01d}}.nc' +supported_tags = {iid: {'': fname.format(inst_id=iid, datestr=datestr)} + for iid in inst_ids.keys()} +list_files = functools.partial(mm_gen.list_files, + supported_tags=supported_tags) + + +def load(fnames, tag=None, inst_id=None): + """Load REACH data into `pandas.DataFrame` and `pysat.Meta` objects. + + This routine is called as needed by pysat. It is not intended + for direct user interaction. + + Parameters + ---------- + fnames : array-like + iterable of filename strings, full path, to data files to be loaded. + This input is nominally provided by pysat itself. + tag : string + tag name used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. + inst_id : string + Satellite ID used to identify particular data set to be loaded. + This input is nominally provided by pysat itself. + + Returns + ------- + data : pds.DataFrame + A pandas DataFrame with data prepared for the pysat.Instrument + meta : pysat.Meta + Metadata formatted for a pysat.Instrument object. + + Note + ---- + Any additional keyword arguments passed to pysat.Instrument + upon instantiation are passed along to this routine. + + Examples + -------- + :: + + inst = pysat.Instrument('icon', 'ivm', inst_id='a', tag='') + inst.load(2020, 1) + + """ + + # Use standard netcdf interface + labels = {'units': ('UNITS', str), 'name': ('LONG_NAME', str), + 'notes': ('VAR_NOTES', str), 'desc': ('CATDESC', str), + 'min_val': ('VALIDMIN', (int, float)), + 'max_val': ('VALIDMAX', (int, float)), + 'fill_val': ('_FillValue', (int, float))} + data, meta = load_netcdf(fnames, epoch_name='Epoch', + meta_kwargs={'labels': labels}) + + return data, meta + + +# Support download routine +download_tags = {iid: {'': 'REACH-VID-{iid}_DOSIMETER-L1C'.format(iid=iid)} + for iid in inst_ids.keys()} +download = functools.partial(cdw.cdas_download, supported_tags=download_tags) + +# Support listing files currently on CDAWeb +list_remote_files = functools.partial(cdw.cdas_list_remote_files, + supported_tags=download_tags) From 5fd49151e2e65dded617c8e846fd7c5baebbdbec Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Thu, 14 Sep 2023 17:41:42 -0400 Subject: [PATCH 27/82] BUG: fix docstrings --- pysatNASA/instruments/methods/formosat.py | 2 +- pysatNASA/instruments/methods/igs.py | 2 +- pysatNASA/instruments/methods/iss.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pysatNASA/instruments/methods/formosat.py b/pysatNASA/instruments/methods/formosat.py index 41ee0f22..840acd12 100644 --- a/pysatNASA/instruments/methods/formosat.py +++ b/pysatNASA/instruments/methods/formosat.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -"""Provides non-instrument specific routines for C/NOFS data.""" +"""Provides non-instrument specific routines for FORMOSAT data.""" ackn_str = ' '.join(('Data provided through NASA CDAWeb Key Parameters -', 'Shin-Yi Su (Institute of Space Science, National Central', diff --git a/pysatNASA/instruments/methods/igs.py b/pysatNASA/instruments/methods/igs.py index 63ad4a5d..c050e447 100644 --- a/pysatNASA/instruments/methods/igs.py +++ b/pysatNASA/instruments/methods/igs.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -"""Provides non-instrument specific routines for JPL ROTI data.""" +"""Provides non-instrument specific routines for IGS GPS data.""" ackn_str = ' '.join(("The GPS Total Electron Content (TEC) data", "produced by the International Global Navigation", diff --git a/pysatNASA/instruments/methods/iss.py b/pysatNASA/instruments/methods/iss.py index 24ed41ce..dd7553e4 100644 --- a/pysatNASA/instruments/methods/iss.py +++ b/pysatNASA/instruments/methods/iss.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -"""Provides non-instrument specific routines for C/NOFS data.""" +"""Provides non-instrument specific routines for ISS data.""" ackn_str = ' '.join(("R.M. Suggs, S.L. Koontz, NASA Johnson Space Center", "Contact Rob Suggs for support and use.", From 3e4ee5e25a7e130cd98bf7eb35f1cb9d31a9b6c3 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Thu, 14 Sep 2023 17:42:15 -0400 Subject: [PATCH 28/82] DOC: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5776df1..ad7e0fdd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). ## [0.X.X] - 2023-XX-XX +* New Instruments + * REACH Dosimeter * Bug Fix * New window needs to be integer for calculate_imf_steadiness * Documentation From 69750090da49aa5c0ec624c4df55762cd47f002a Mon Sep 17 00:00:00 2001 From: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> Date: Fri, 15 Sep 2023 09:37:48 -0400 Subject: [PATCH 29/82] Update reach_dosimeter.py --- pysatNASA/instruments/reach_dosimeter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatNASA/instruments/reach_dosimeter.py b/pysatNASA/instruments/reach_dosimeter.py index de74ece0..6dc6a33c 100644 --- a/pysatNASA/instruments/reach_dosimeter.py +++ b/pysatNASA/instruments/reach_dosimeter.py @@ -36,8 +36,8 @@ from pysat.utils.io import load_netcdf from pysatNASA.instruments.methods import cdaweb as cdw -from pysatNASA.instruments.methods import reach as mm_reach from pysatNASA.instruments.methods import general as mm_nasa +from pysatNASA.instruments.methods import reach as mm_reach # ---------------------------------------------------------------------------- # Instrument attributes From d3f6a351e49631377682a8516fe2bbf576cfe300 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 18 Sep 2023 13:15:35 -0400 Subject: [PATCH 30/82] DOC: update supported instruments --- docs/supported_instruments.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/supported_instruments.rst b/docs/supported_instruments.rst index 0980414e..deee1932 100644 --- a/docs/supported_instruments.rst +++ b/docs/supported_instruments.rst @@ -186,6 +186,14 @@ OMNI HRO .. automodule:: pysatNASA.instruments.omni_hro :members: calculate_clock_angle, calculate_imf_steadiness, time_shift_to_magnetic_poles +.. _reach_dosimeter: + +REACH DOSIMETER +---------- + +.. automodule:: pysatNASA.instruments.reach_dosimeter + :members: + .. _ses14_gold: SES14 GOLD From 8474d74566ba3ec5bad2a8b4d77af19f3cf8da4b Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Mon, 25 Sep 2023 10:28:35 -0400 Subject: [PATCH 31/82] Apply suggestions from code review Co-authored-by: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> --- pysatNASA/instruments/maven_insitu.py | 4 ++-- pysatNASA/instruments/maven_sep.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pysatNASA/instruments/maven_insitu.py b/pysatNASA/instruments/maven_insitu.py index 85b78446..dda55d99 100644 --- a/pysatNASA/instruments/maven_insitu.py +++ b/pysatNASA/instruments/maven_insitu.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -"""Module for the MAVEN insitu instrument. +"""Module for the MAVEN insitu instruments. Supports the in situ Key Parameter (kp) data from multiple instruments onboard the Mars Atmosphere and Volatile Evolution (MAVEN) satellite. @@ -12,7 +12,7 @@ platform 'maven' name - 'insitu' + 'insitu_kp' tag None supported inst_id diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py index cd0e39ed..cf269cdd 100644 --- a/pysatNASA/instruments/maven_sep.py +++ b/pysatNASA/instruments/maven_sep.py @@ -14,9 +14,9 @@ name 'sep' tag - ['', 's1', 's2'] -inst_id None supported +inst_id + ['s1', 's2'] Examples -------- From 106aeb4c3d2d62c6bb67d86f8104edb23eabfe3a Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Thu, 28 Sep 2023 11:02:34 -0400 Subject: [PATCH 32/82] Apply suggestions from code review Removal of the sep tag ''. Change of insitu to insitu_kp. Resulting necessary STY changes for flake. --- pysatNASA/instruments/__init__.py | 2 +- .../{maven_insitu.py => maven_insitu_kp.py} | 4 ++-- pysatNASA/instruments/maven_sep.py | 14 ++++++-------- pysatNASA/instruments/methods/maven.py | 9 +++++---- 4 files changed, 14 insertions(+), 15 deletions(-) rename pysatNASA/instruments/{maven_insitu.py => maven_insitu_kp.py} (96%) diff --git a/pysatNASA/instruments/__init__.py b/pysatNASA/instruments/__init__.py index 6f49e3ca..4ffef724 100644 --- a/pysatNASA/instruments/__init__.py +++ b/pysatNASA/instruments/__init__.py @@ -11,7 +11,7 @@ 'de2_lang', 'de2_nacs', 'de2_rpa', 'de2_vefi', 'de2_wats', 'dmsp_ssusi', 'formosat1_ivm', 'icon_euv', 'icon_fuv', 'icon_ivm', 'icon_mighti', - 'igs_gps', 'iss_fpmu', 'jpl_gps', 'maven_insitu', + 'igs_gps', 'iss_fpmu', 'jpl_gps', 'maven_insitu_kp', 'maven_mag', 'maven_sep', 'omni_hro', 'ses14_gold', 'timed_guvi', 'timed_saber', 'timed_see'] diff --git a/pysatNASA/instruments/maven_insitu.py b/pysatNASA/instruments/maven_insitu_kp.py similarity index 96% rename from pysatNASA/instruments/maven_insitu.py rename to pysatNASA/instruments/maven_insitu_kp.py index dda55d99..0a529e6b 100644 --- a/pysatNASA/instruments/maven_insitu.py +++ b/pysatNASA/instruments/maven_insitu_kp.py @@ -24,7 +24,7 @@ :: import pysat - insitu = pysat.Instrument(platform='maven', name='insitu') + insitu = pysat.Instrument(platform='maven', name='insitu_kp') insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) insitu.load(2020, 1, use_header=True) @@ -42,7 +42,7 @@ # Instrument attributes platform = 'maven' -name = 'insitu' +name = 'insitu_kp' tags = {'': ''} inst_ids = {'': ['']} diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py index cf269cdd..3ce0ca4b 100644 --- a/pysatNASA/instruments/maven_sep.py +++ b/pysatNASA/instruments/maven_sep.py @@ -23,7 +23,7 @@ :: import pysat - insitu = pysat.Instrument(platform='MAVEN', name='insitu') + insitu = pysat.Instrument(platform='maven', name='sep', inst_id = 's1') insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) insitu.load(2020, 1, use_header = True) """ @@ -42,7 +42,7 @@ platform = 'maven' name = 'sep' tags = {'': ''} -inst_ids = {'': ['', 's1', 's2']} +inst_ids = {'s1': [''], 's2': ['']} pandas_format = False @@ -74,9 +74,8 @@ fname2 = ''.join(('mvn_sep_l2_s2-cal-svy-full_{year:04d}{month:02d}{day:02d}_', 'v{version:02d}_r{revision:02d}.cdf')) -supported_tags = {'': {'': fname, - 's1': fname, - 's2': fname2}} +supported_tags = {'s1': {'': fname}, + 's2': {'': fname2}} list_files = functools.partial(mm_gen.list_files, supported_tags=supported_tags) @@ -90,9 +89,8 @@ '/{year:04d}/{month:02d}')), 'fname': fname2} -download_tags = {'': {'': basic_tag, - 's1': basic_tag, - 's2': basic_tag2}} +download_tags = {'s1': {'': basic_tag}, + 's2': {'': basic_tag2}} # Set the download routine download = functools.partial(cdw.download, supported_tags=download_tags) diff --git a/pysatNASA/instruments/methods/maven.py b/pysatNASA/instruments/methods/maven.py index 86ae78e0..69cec2ae 100644 --- a/pysatNASA/instruments/methods/maven.py +++ b/pysatNASA/instruments/methods/maven.py @@ -10,10 +10,11 @@ ' The Mars Atmosphere and Volatile Evolution', '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', ' https://doi.org/10.1007/s11214-015-0139-x')) -refs = {'insitu': ''.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', - ' The Mars Atmosphere and Volatile Evolution', - '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', - ' https://doi.org/10.1007/s11214-015-0139-x')), +refs = {'insitu_kp': ''.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et', + ' al. The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev', + ' 195, 3–48 (2015).', + ' https://doi.org/10.1007/s11214-015-0139-x')), 'mag': ''.join(('Connerney, J., and P. Lawton, MAVEN MAG', ' PDS Archive SIS - This document ', 'describes the format and content of the MAVEN', From a5a46720bd65ccf35792a3d0223bd30f2a3adc63 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 2 Oct 2023 11:37:30 -0400 Subject: [PATCH 33/82] STY: update clean routine --- pysatNASA/instruments/methods/general.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pysatNASA/instruments/methods/general.py b/pysatNASA/instruments/methods/general.py index 8dee2bbe..26dc293f 100644 --- a/pysatNASA/instruments/methods/general.py +++ b/pysatNASA/instruments/methods/general.py @@ -51,9 +51,14 @@ def init(self, module, name): return -def clean(self): +def clean(self, skip_names=None): """Clean data to the specified level. + Parameters + ---------- + skip_names : list of str + List of names to skip for cleaning. (default=None) + Note ---- Basic cleaning to replace fill values with NaN @@ -62,21 +67,20 @@ def clean(self): # Get a list of coords for the data if self.pandas_format: - coords = [self.data.index.name] + skip_key = [self.data.index.name] else: - coords = [key for key in self.data.coords.keys()] + skip_key = [key for key in self.data.coords.keys()] + + if skip_names: + # Add additional variable names to skip + for key in skip_names: + skip_key.append(key) for key in self.variables: # Check for symmetric dims # Indicates transformation matrix, xarray cannot broadcast - if self.pandas_format: - # True by default - unique_dims = True - else: - # Check for multiple dims - unique_dims = len(self[key].dims) == len(np.unique(self[key].dims)) # Skip over the coordinates when cleaning - if key not in coords and unique_dims: + if key not in skip_key: fill = self.meta[key, self.meta.labels.fill_val] # Replace fill with nan From c8a27a6226e3f39b1c17cca3e2643a27c59769c2 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 2 Oct 2023 11:42:31 -0400 Subject: [PATCH 34/82] STY: apply to insitu kp --- pysatNASA/instruments/maven_insitu.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pysatNASA/instruments/maven_insitu.py b/pysatNASA/instruments/maven_insitu.py index dda55d99..229bdf78 100644 --- a/pysatNASA/instruments/maven_insitu.py +++ b/pysatNASA/instruments/maven_insitu.py @@ -61,7 +61,9 @@ # Use default clean -clean = mm_nasa.clean +clean = functools.partial(mm_nasa.clean, + skip_names=['Rotation_matrix_IAU_MARS_MAVEN_MSO', + 'Rotation_matrix_SPACECRAFT_MAVEN_MSO']) # ---------------------------------------------------------------------------- From 857d8483bc6f40a1c86386c8853895f7e2700085 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 2 Oct 2023 13:08:36 -0400 Subject: [PATCH 35/82] DOC: update comments --- pysatNASA/instruments/methods/general.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/general.py b/pysatNASA/instruments/methods/general.py index 26dc293f..16326279 100644 --- a/pysatNASA/instruments/methods/general.py +++ b/pysatNASA/instruments/methods/general.py @@ -65,7 +65,7 @@ def clean(self, skip_names=None): """ - # Get a list of coords for the data + # Get a list of coords for the data. These should be skipped for cleaning. if self.pandas_format: skip_key = [self.data.index.name] else: From 7ba9ffbdf8202da1b70ac932cbf9980f22c42a02 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 2 Oct 2023 13:11:11 -0400 Subject: [PATCH 36/82] BUG: fix test dates --- pysatNASA/instruments/maven_sep.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py index 3ce0ca4b..53deca1a 100644 --- a/pysatNASA/instruments/maven_sep.py +++ b/pysatNASA/instruments/maven_sep.py @@ -23,9 +23,10 @@ :: import pysat - insitu = pysat.Instrument(platform='maven', name='sep', inst_id = 's1') + insitu = pysat.Instrument(platform='maven', name='sep', inst_id='s1') insitu.download(dt.datetime(2020, 1, 1), dt.datetime(2020, 1, 31)) - insitu.load(2020, 1, use_header = True) + insitu.load(2020, 1, use_header=True) + """ import datetime as dt @@ -49,7 +50,7 @@ # ---------------------------------------------------------------------------- # Instrument test attributes -_test_dates = {'': {'': dt.datetime(2020, 1, 1)}} +_test_dates = {id: {'': dt.datetime(2020, 1, 1)} for id in inst_ids.keys()} # ---------------------------------------------------------------------------- # Instrument methods From 19bc1329f9610ab10ed8143284aba9a9e8ef50f1 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 2 Oct 2023 13:31:12 -0400 Subject: [PATCH 37/82] DOC: add refs and acknowledgements --- pysatNASA/instruments/methods/reach.py | 18 +++++++++++++++--- pysatNASA/instruments/reach_dosimeter.py | 11 ++++++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/pysatNASA/instruments/methods/reach.py b/pysatNASA/instruments/methods/reach.py index caadb7f6..17329378 100644 --- a/pysatNASA/instruments/methods/reach.py +++ b/pysatNASA/instruments/methods/reach.py @@ -1,7 +1,19 @@ # -*- coding: utf-8 -*- """Provides non-instrument specific routines for REACH data.""" -ackn_str = ' '.join(("Insert ackn")) +ackn_str = "Please load a file for full acknowledgments." -refs = {'dosimeter': ' '.join(('Insert ref')) - } +refs = {'dosimeter': + '\n'.join((' '.join(("Guild, T., O'Brien, T.P., Boyd,", + "A.J., Mazur, J.E., Halford, A.J., (2019)", + "Intra-calibration of REACH Dosimeters,", + "AEROSPACE REPORT NO. TOR-2019-02361")), + ' '.join(("Halford, A.J., Guild, T., O'Brien, T.P., Boyd,", + "A.J., Mazur, J.E. (2019)", + "REACH Maps and Indices for UDL: Version 1,", + "AEROSPACE REPORT NO. TOR-2019-02650")), + ' '.join(("Guild, T., O'Brien, T.P., Boyd, A.J., Mazur,", + "J.E. (2021)", + "REACH Maps and Indices for UDL: Version 1", + "AEROSPACE REPORT NO. TOR-2021-01076")) + ))} diff --git a/pysatNASA/instruments/reach_dosimeter.py b/pysatNASA/instruments/reach_dosimeter.py index 6dc6a33c..64e83943 100644 --- a/pysatNASA/instruments/reach_dosimeter.py +++ b/pysatNASA/instruments/reach_dosimeter.py @@ -67,13 +67,22 @@ # Use default clean clean = mm_nasa.clean + +def preprocess(self): + """Update acknowledgement with info from file.""" + + self.acknowledgements = self.meta.header.Acknowledgement + + return + + # ---------------------------------------------------------------------------- # Instrument functions # # Use the default CDAWeb and pysat methods # Set the list_files routine -datestr = '{year:4d}{month:02d}{day:02d}' +datestr = '{year:04d}{month:02d}{day:02d}' fname = 'reach-vid-{inst_id}_dosimeter-l1c_{datestr}_v{{version:01d}}.nc' supported_tags = {iid: {'': fname.format(inst_id=iid, datestr=datestr)} for iid in inst_ids.keys()} From 27ebf392be4b63425d5ef9194bbad5e33b976f42 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> Date: Mon, 2 Oct 2023 15:02:02 -0400 Subject: [PATCH 38/82] Apply suggestions from code review Co-authored-by: Angeline Burrell --- pysatNASA/instruments/methods/reach.py | 3 +-- pysatNASA/instruments/reach_dosimeter.py | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pysatNASA/instruments/methods/reach.py b/pysatNASA/instruments/methods/reach.py index 17329378..cc9b11e1 100644 --- a/pysatNASA/instruments/methods/reach.py +++ b/pysatNASA/instruments/methods/reach.py @@ -15,5 +15,4 @@ ' '.join(("Guild, T., O'Brien, T.P., Boyd, A.J., Mazur,", "J.E. (2021)", "REACH Maps and Indices for UDL: Version 1", - "AEROSPACE REPORT NO. TOR-2021-01076")) - ))} + "AEROSPACE REPORT NO. TOR-2021-01076"))))} diff --git a/pysatNASA/instruments/reach_dosimeter.py b/pysatNASA/instruments/reach_dosimeter.py index 64e83943..8400a755 100644 --- a/pysatNASA/instruments/reach_dosimeter.py +++ b/pysatNASA/instruments/reach_dosimeter.py @@ -101,10 +101,10 @@ def load(fnames, tag=None, inst_id=None): fnames : array-like iterable of filename strings, full path, to data files to be loaded. This input is nominally provided by pysat itself. - tag : string + tag : str tag name used to identify particular data set to be loaded. This input is nominally provided by pysat itself. - inst_id : string + inst_id : str Satellite ID used to identify particular data set to be loaded. This input is nominally provided by pysat itself. @@ -124,7 +124,7 @@ def load(fnames, tag=None, inst_id=None): -------- :: - inst = pysat.Instrument('icon', 'ivm', inst_id='a', tag='') + inst = pysat.Instrument('reach', 'dosimeter', inst_id='101', tag='') inst.load(2020, 1) """ From d65734b0b8d0e74cf1379d198a662837f8cf4a63 Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Tue, 3 Oct 2023 09:25:13 -0400 Subject: [PATCH 39/82] Apply suggestions from code review Co-authored-by: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> --- pysatNASA/instruments/maven_insitu_kp.py | 2 +- pysatNASA/instruments/maven_mag.py | 2 +- pysatNASA/instruments/maven_sep.py | 4 ++-- pysatNASA/instruments/methods/maven.py | 23 ++++++++--------------- 4 files changed, 12 insertions(+), 19 deletions(-) diff --git a/pysatNASA/instruments/maven_insitu_kp.py b/pysatNASA/instruments/maven_insitu_kp.py index 0a529e6b..cace6a75 100644 --- a/pysatNASA/instruments/maven_insitu_kp.py +++ b/pysatNASA/instruments/maven_insitu_kp.py @@ -43,7 +43,7 @@ platform = 'maven' name = 'insitu_kp' -tags = {'': ''} +tags = {'': 'in situ Key Parameter data'} inst_ids = {'': ['']} pandas_format = False diff --git a/pysatNASA/instruments/maven_mag.py b/pysatNASA/instruments/maven_mag.py index e1da225f..c1125bd7 100644 --- a/pysatNASA/instruments/maven_mag.py +++ b/pysatNASA/instruments/maven_mag.py @@ -46,7 +46,7 @@ platform = 'maven' name = 'mag' -tags = {'': 'l2'} +tags = {'': 'Level 2 magnetometer data'} inst_ids = {'': ['']} pandas_format = False diff --git a/pysatNASA/instruments/maven_sep.py b/pysatNASA/instruments/maven_sep.py index 3ce0ca4b..7454961c 100644 --- a/pysatNASA/instruments/maven_sep.py +++ b/pysatNASA/instruments/maven_sep.py @@ -41,7 +41,7 @@ platform = 'maven' name = 'sep' -tags = {'': ''} +tags = {'': 'Level 2 Solar Energetic Particle data'} inst_ids = {'s1': [''], 's2': ['']} pandas_format = False @@ -49,7 +49,7 @@ # ---------------------------------------------------------------------------- # Instrument test attributes -_test_dates = {'': {'': dt.datetime(2020, 1, 1)}} +_test_dates = {id: {'': dt.datetime(2020, 1, 1)} for id in inst_ids.keys()} # ---------------------------------------------------------------------------- # Instrument methods diff --git a/pysatNASA/instruments/methods/maven.py b/pysatNASA/instruments/methods/maven.py index 69cec2ae..d6a5aa6f 100644 --- a/pysatNASA/instruments/methods/maven.py +++ b/pysatNASA/instruments/methods/maven.py @@ -10,11 +10,12 @@ ' The Mars Atmosphere and Volatile Evolution', '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', ' https://doi.org/10.1007/s11214-015-0139-x')) -refs = {'insitu_kp': ''.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et', - ' al. The Mars Atmosphere and Volatile Evolution', - '(MAVEN) Mission. Space Sci Rev', - ' 195, 3–48 (2015).', - ' https://doi.org/10.1007/s11214-015-0139-x')), +refs = {'mission': ''.join(('Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et', + ' al. The Mars Atmosphere and Volatile Evolution', + '(MAVEN) Mission. Space Sci Rev', + ' 195, 3–48 (2015).', + ' https://doi.org/10.1007/s11214-015-0139-x')), + 'insitu_kp': '', 'mag': ''.join(('Connerney, J., and P. Lawton, MAVEN MAG', ' PDS Archive SIS - This document ', 'describes the format and content of the MAVEN', @@ -29,16 +30,8 @@ 'and Sheppard, D., The MAVEN Magnetic Field', ' Investigation, Space Sci Rev,', 'Vol 195, Iss 1-4, pp.257-291, 2015. ', - 'doi:10.1007/s11214-015-0169-4', - 'Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', - ' The Mars Atmosphere and Volatile Evolution', - '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', - ' https://doi.org/10.1007/s11214-015-0139-x')), + 'doi:10.1007/s11214-015-0169-4')), 'sep': ''.join(('Larson, D.E., Lillis, R.J., Lee, C.O. et al.', 'The MAVEN Solar Energetic Particle Investigation.', ' Space Sci Rev 195, 153–172 (2015).', - ' https://doi.org/10.1007/s11214-015-0218-z', - 'Jakosky, B.M., Lin, R.P., Grebowsky, J.M. et al.', - ' The Mars Atmosphere and Volatile Evolution', - '(MAVEN) Mission. Space Sci Rev 195, 3–48 (2015).', - ' https://doi.org/10.1007/s11214-015-0139-x'))} + ' https://doi.org/10.1007/s11214-015-0218-z'))} From 7e213e8310bd0b4dbf27775f930a5f022d347661 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 4 Oct 2023 14:07:53 -0400 Subject: [PATCH 40/82] ENH: update meta header values --- pysatNASA/instruments/reach_dosimeter.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pysatNASA/instruments/reach_dosimeter.py b/pysatNASA/instruments/reach_dosimeter.py index 8400a755..3ff9debe 100644 --- a/pysatNASA/instruments/reach_dosimeter.py +++ b/pysatNASA/instruments/reach_dosimeter.py @@ -32,6 +32,7 @@ import datetime as dt import functools +from pysat._meta import MetaHeader from pysat.instruments.methods import general as mm_gen from pysat.utils.io import load_netcdf @@ -138,6 +139,17 @@ def load(fnames, tag=None, inst_id=None): data, meta = load_netcdf(fnames, epoch_name='Epoch', meta_kwargs={'labels': labels}) + # Update header variables + header = meta.header.to_dict() + new_header = {} + for key in header.keys(): + new_key = key.replace('-', '_to_') + new_header[new_key] = header[key] + if np.isnan(new_header['Notes']): + new_header['Notes'] = '' + + meta.header = MetaHeader(new_header) + return data, meta From 1819e04d69d29b4939ad0ae817501da7e371d405 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> Date: Wed, 4 Oct 2023 15:56:02 -0400 Subject: [PATCH 41/82] Update pysatNASA/instruments/reach_dosimeter.py --- pysatNASA/instruments/reach_dosimeter.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pysatNASA/instruments/reach_dosimeter.py b/pysatNASA/instruments/reach_dosimeter.py index 3ff9debe..c7cebdcb 100644 --- a/pysatNASA/instruments/reach_dosimeter.py +++ b/pysatNASA/instruments/reach_dosimeter.py @@ -31,6 +31,7 @@ import datetime as dt import functools +import numpy as np from pysat._meta import MetaHeader from pysat.instruments.methods import general as mm_gen From 5e49f93c6926612b59f643ffd379c198614c5d18 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 4 Oct 2023 16:17:57 -0400 Subject: [PATCH 42/82] ENH: allow files to be unzipped after download --- pysatNASA/instruments/methods/cdaweb.py | 75 +++++++++++++++++++++++-- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index 235090eb..f0df0e0d 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -8,12 +8,15 @@ """ import datetime as dt +import gzip import numpy as np import os import pandas as pds import requests +import tempfile from time import sleep import xarray as xr +import zipfile from bs4 import BeautifulSoup from cdasws import CdasWs @@ -524,6 +527,13 @@ def download(date_array, data_path, tag='', inst_id='', supported_tags=None, start=date_array[0], stop=date_array[-1]) + # Create temproary directory if files need to be unzipped. + if 'zip_method' in inst_dict.keys(): + zip_method = inst_dict['zip_method'] + temp_dir = tempfile.TemporaryDirectory() + else: + zip_method = None + # Download only requested files that exist remotely for date, fname in remote_files.items(): # Format files for specific dates and download location @@ -546,18 +556,19 @@ def download(date_array, data_path, tag='', inst_id='', supported_tags=None, formatted_remote_dir.strip('/'), fname)) - saved_local_fname = os.path.join(data_path, fname) - # Perform download logger.info(' '.join(('Attempting to download file for', date.strftime('%d %B %Y')))) try: with requests.get(remote_path) as req: if req.status_code != 404: - with open(saved_local_fname, 'wb') as open_f: - open_f.write(req.content) - logger.info('Successfully downloaded {:}.'.format( - saved_local_fname)) + if zip_method: + get_file(req.content, data_path, fname, + temp_path=temp_dir.name, zip_method=zip_method) + else: + get_file(req.content, data_path, fname) + logger.info(''.join(('Successfully downloaded ', + fname, '.'))) else: logger.info(' '.join(('File not available for', date.strftime('%d %B %Y')))) @@ -566,6 +577,58 @@ def download(date_array, data_path, tag='', inst_id='', supported_tags=None, date.strftime('%d %B %Y')))) # Pause to avoid excessive pings to server sleep(0.2) + + if zip_method: + # Cleanup temporary directory + temp_dir.cleanup() + + return + + +def get_file(remote_file, data_path, fname, temp_path=None, zip_method=None): + """Retrieve a file, unzipping if necessary. + + Parameters + ---------- + remote_file : file content + File content retireved via requests. + data_path : str + Path to pysat archival directory. + fname : str + Name of file on the remote server. + temp_path : str + Path to temporary directory. (Default=None) + zip_method : str + The method used to zip the file. Supports 'gzip', 'zip', and None. + If None, downloads files directly. (default=None) + + """ + + if zip_method: + # Use a temporary location. + dl_fname = os.path.join(temp_path, fname) + else: + # Use the pysat data directory. + dl_fname = os.path.join(data_path, fname) + + # Download the file to desired destination. + with open(dl_fname, 'wb') as open_f: + open_f.write(remote_file) + + # Unzip and move the files from the temporary directory. + if zip_method == 'gzip': + local_fname = os.path.join(data_path, fname).replace('.gz', '') + with gzip.open(dl_fname) as open_zip: + with open(local_fname, 'wb') as open_f: + open_f.write(open_zip.read()) + + elif zip_method == 'zip': + with zipfile.ZipFile(dl_fname, 'r') as open_zip: + open_zip.extractall(data_path) + + elif zip_method is not None: + logger.warning('{:} is not a recognized zip method'.format(zip_method)) + return From c9e7f6f5e907cf01c666c29a8fc757b59a24e7bd Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 4 Oct 2023 16:49:26 -0400 Subject: [PATCH 43/82] STY: update comments --- pysatNASA/instruments/methods/cdaweb.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index f0df0e0d..21ceed70 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -472,7 +472,6 @@ def load_xarray(fnames, tag='', inst_id='', return data, meta -# TODO(#103): Include support to unzip / untar files after download. def download(date_array, data_path, tag='', inst_id='', supported_tags=None, remote_url='https://cdaweb.gsfc.nasa.gov'): """Download NASA CDAWeb data. @@ -579,7 +578,7 @@ def download(date_array, data_path, tag='', inst_id='', supported_tags=None, sleep(0.2) if zip_method: - # Cleanup temporary directory + # Cleanup temporary directory temp_dir.cleanup() return From bf3e2767f9434858cd7734b53e7e080445d776ed Mon Sep 17 00:00:00 2001 From: Tracy Esman <21086818+t-esman@users.noreply.github.com> Date: Wed, 4 Oct 2023 20:55:10 -0400 Subject: [PATCH 44/82] Apply suggestions from code review Co-authored-by: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> --- CHANGELOG.md | 2 +- docs/supported_instruments.rst | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7de10b56..98b59f4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). * New Instruments * MAVEN mag * MAVEN SEP - * MAVEN in situ + * MAVEN in situ key parameters * Bug Fixes * Fix general clean routine to skip transformation matrices * Maintenance diff --git a/docs/supported_instruments.rst b/docs/supported_instruments.rst index 65468a3a..0ab3a7b4 100644 --- a/docs/supported_instruments.rst +++ b/docs/supported_instruments.rst @@ -178,12 +178,12 @@ JPL GPS .. automodule:: pysatNASA.instruments.jpl_gps :members: -.. _maven_insitu: +.. _maven_insitu_kp: -MAVEN INSITU ------------- +MAVEN INSITU KP +--------------- -.. automodule:: pysatNASA.instruments.maven_insitu +.. automodule:: pysatNASA.instruments.maven_insitu_kp :members: .. _maven_mag: From 1148c1e6821018fb412c663978978158fa6bd197 Mon Sep 17 00:00:00 2001 From: "Angeline G. Burrell" Date: Thu, 5 Oct 2023 10:49:15 -0400 Subject: [PATCH 45/82] BUG: fixed init metadata Fixed init metadata by: - moving all imports to top, and - robustly importing metadata submodule. --- pysatNASA/__init__.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pysatNASA/__init__.py b/pysatNASA/__init__.py index ea9f8ff2..2d3bc1c3 100644 --- a/pysatNASA/__init__.py +++ b/pysatNASA/__init__.py @@ -6,15 +6,12 @@ """ -import importlib -import importlib_metadata +try: + from importlib import metadata +except ImportError: + import importlib_metadata as metadata from pysatNASA import constellations # noqa F401 from pysatNASA import instruments # noqa F401 -# set version -try: - __version__ = importlib.metadata.version('pysatNASA') -except AttributeError: - # Python 3.6 requires a different version - __version__ = importlib_metadata.version('pysatNASA') +__version__ = metadata.version('pysatNASA') From 4044864cc9e3710cb4a6b31faa18ebb7de89dfb2 Mon Sep 17 00:00:00 2001 From: "Angeline G. Burrell" Date: Thu, 5 Oct 2023 10:55:49 -0400 Subject: [PATCH 46/82] DOC: updated changelog Added the changes to the log. --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5776df1..8d3776d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). ## [0.X.X] - 2023-XX-XX * Bug Fix * New window needs to be integer for calculate_imf_steadiness + * Fixed version import * Documentation * Added example of how to export data for archival * Maintenance From fa6ab023221b471827ab6a0ecc883fafb7e657f6 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 6 Oct 2023 10:18:10 -0400 Subject: [PATCH 47/82] DOC: update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index afdb541d..2c6403f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ This project adheres to [Semantic Versioning](https://semver.org/). * MAVEN SEP * MAVEN in situ key parameters * REACH Dosimeter +* New Features + * All files to be unzipped after download * Bug Fixes * Fix general clean routine to skip transformation matrices * New window needs to be integer for calculate_imf_steadiness From bdfd14869e840d1e3bce22fb8a6e0b7112101830 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 18 Oct 2023 11:48:10 -0400 Subject: [PATCH 48/82] BUG: always return empty objects if no data --- pysatNASA/instruments/methods/cdaweb.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index 3e3340fb..0bd0d1c1 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -218,7 +218,7 @@ def load_pandas(fnames, tag='', inst_id='', file_cadence=dt.timedelta(days=1), # Load data from any files provided if len(fnames) <= 0: - return pds.DataFrame(None), None + return pds.DataFrame(None), pysat.Meta() else: if use_cdflib is not None: if use_cdflib: @@ -268,6 +268,8 @@ def load_pandas(fnames, tag='', inst_id='', file_cadence=dt.timedelta(days=1), # Combine individual files together if len(ldata) > 0: data = pds.concat(ldata) + else: + data, meta = pds.DataFrame(None), pysat.Meta() return data, meta From 168a574a45764fdd17b43dc93bbab292ee6e6d59 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 18 Oct 2023 11:49:04 -0400 Subject: [PATCH 49/82] DOC: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index afdb541d..06ee6a79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). * Fix general clean routine to skip transformation matrices * New window needs to be integer for calculate_imf_steadiness * Fixed version import + * Fixed a bug when data fails to load for cdf pandas objects * Documentation * Added example of how to export data for archival * Maintenance From cedd92cab6349bee815fd3910f07b80c14592b25 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Wed, 18 Oct 2023 12:15:37 -0400 Subject: [PATCH 50/82] BUG: update test --- pysatNASA/tests/test_methods_cdaweb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatNASA/tests/test_methods_cdaweb.py b/pysatNASA/tests/test_methods_cdaweb.py index dd7870e6..fe24fe34 100644 --- a/pysatNASA/tests/test_methods_cdaweb.py +++ b/pysatNASA/tests/test_methods_cdaweb.py @@ -47,7 +47,7 @@ def test_load_with_empty_file_list(self): data, meta = cdw.load(fnames=[]) assert len(data) == 0 - assert meta is None + assert meta.empty return @pytest.mark.parametrize("bad_key,bad_val,err_msg", From 37096e3d64304f0f37db9ff1efc80749e194c03b Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 23 Oct 2023 10:23:52 -0400 Subject: [PATCH 51/82] ENH: add test data --- .../de2_ion2s_rpa_19830101_v01.tar.gz | Bin 0 -> 225191 bytes .../test_data/de2_ion2s_rpa_19830101_v01.zip | Bin 0 -> 293146 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.tar.gz create mode 100644 pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.zip diff --git a/pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.tar.gz b/pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..bc6d4d8576aac07df76c79d869fb4f98614612ac GIT binary patch literal 225191 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%0D4Ta07UHQWdZiBGL#alB6p#<$s< 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 literal 0 HcmV?d00001 diff --git a/pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.zip b/pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.zip new file mode 100644 index 0000000000000000000000000000000000000000..a9a54a7f94b0e63b4956501b4b2a5078dbfd4d9a GIT binary patch literal 293146 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

Ll@KMln%z3^M8(H;qWF;Oc_;)2O)V~PrxssyIV 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 Date: Mon, 23 Oct 2023 10:48:39 -0400 Subject: [PATCH 52/82] STY: use year for dir --- .../{ => 1983}/de2_ion2s_rpa_19830101_v01.tar.gz | Bin .../{ => 1983}/de2_ion2s_rpa_19830101_v01.zip | Bin 2 files changed, 0 insertions(+), 0 deletions(-) rename pysatNASA/tests/test_data/{ => 1983}/de2_ion2s_rpa_19830101_v01.tar.gz (100%) rename pysatNASA/tests/test_data/{ => 1983}/de2_ion2s_rpa_19830101_v01.zip (100%) diff --git a/pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.tar.gz b/pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.tar.gz similarity index 100% rename from pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.tar.gz rename to pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.tar.gz diff --git a/pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.zip b/pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.zip similarity index 100% rename from pysatNASA/tests/test_data/de2_ion2s_rpa_19830101_v01.zip rename to pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.zip From ebe4d538d19997ac7002ef0edaa1271ce7fdce9f Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 30 Oct 2023 16:21:08 -0400 Subject: [PATCH 53/82] Remove test data --- .../1983/de2_ion2s_rpa_19830101_v01.tar.gz | Bin 225191 -> 0 bytes .../1983/de2_ion2s_rpa_19830101_v01.zip | Bin 293146 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.tar.gz delete mode 100644 pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.zip diff --git a/pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.tar.gz b/pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.tar.gz deleted file mode 100644 index bc6d4d8576aac07df76c79d869fb4f98614612ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225191 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%0D4Ta07UHQWdZiBGL#alB6p#<$s< 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 diff --git a/pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.zip b/pysatNASA/tests/test_data/1983/de2_ion2s_rpa_19830101_v01.zip deleted file mode 100644 index a9a54a7f94b0e63b4956501b4b2a5078dbfd4d9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293146 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

Ll@KMln%z3^M8(H;qWF;Oc_;)2O)V~PrxssyIV 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 Date: Mon, 30 Oct 2023 16:27:02 -0400 Subject: [PATCH 54/82] STY: remove gzip --- pysatNASA/instruments/methods/cdaweb.py | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index 47321cdb..2564fa24 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -8,7 +8,6 @@ """ import datetime as dt -import gzip import numpy as np import os import pandas as pds @@ -600,7 +599,7 @@ def get_file(remote_file, data_path, fname, temp_path=None, zip_method=None): temp_path : str Path to temporary directory. (Default=None) zip_method : str - The method used to zip the file. Supports 'gzip', 'zip', and None. + The method used to zip the file. Supports 'zip' and None. If None, downloads files directly. (default=None) """ @@ -617,13 +616,7 @@ def get_file(remote_file, data_path, fname, temp_path=None, zip_method=None): open_f.write(remote_file) # Unzip and move the files from the temporary directory. - if zip_method == 'gzip': - local_fname = os.path.join(data_path, fname).replace('.gz', '') - with gzip.open(dl_fname) as open_zip: - with open(local_fname, 'wb') as open_f: - open_f.write(open_zip.read()) - - elif zip_method == 'zip': + if zip_method == 'zip': with zipfile.ZipFile(dl_fname, 'r') as open_zip: open_zip.extractall(data_path) From 8c9ff67358a4b31b46b8daf0dc38bb0c779541a6 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 30 Oct 2023 16:27:41 -0400 Subject: [PATCH 55/82] DOC: update changelog --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c6403f7..f4a311cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,14 +2,14 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). -## [0.X.X] - 2023-XX-XX +## [0.0.6] - 2023-XX-XX * New Instruments * MAVEN mag * MAVEN SEP * MAVEN in situ key parameters * REACH Dosimeter * New Features - * All files to be unzipped after download + * Allow files to be unzipped after download * Bug Fixes * Fix general clean routine to skip transformation matrices * New window needs to be integer for calculate_imf_steadiness From 6825a0d15326bcaea35a0a6a9ae4754b893ed1cf Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 31 Oct 2023 10:52:27 -0400 Subject: [PATCH 56/82] DOC: add comment --- pysatNASA/instruments/methods/cdaweb.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index 2564fa24..37db9ce0 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -515,6 +515,7 @@ def download(date_array, data_path, tag='', inst_id='', supported_tags=None, """ + # Get information about remote data product location inst_dict = try_inst_dict(inst_id, tag, supported_tags) # Naming scheme for files on the CDAWeb server From 058ab05b77b651fd1a6d2bb92437f5a365bd6925 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 31 Oct 2023 13:32:28 -0400 Subject: [PATCH 57/82] TST: add warning test --- pysatNASA/tests/test_methods_cdaweb.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/pysatNASA/tests/test_methods_cdaweb.py b/pysatNASA/tests/test_methods_cdaweb.py index dd7870e6..6bd8c407 100644 --- a/pysatNASA/tests/test_methods_cdaweb.py +++ b/pysatNASA/tests/test_methods_cdaweb.py @@ -1,8 +1,10 @@ """Unit tests for the cdaweb instrument methods.""" import datetime as dt +import logging import pandas as pds import requests +import tempfile import pytest @@ -50,6 +52,28 @@ def test_load_with_empty_file_list(self): assert meta is None return + def test_bad_zip_warning_get_files(self, caplog): + """Test that warning is raised for unsupported zip method.""" + + # Specifiy small file to get + url = 'https://cdaweb.gsfc.nasa.gov/pub/000_readme.txt' + req = requests.get(url) + + # Download to temporary location + temp_dir = tempfile.TemporaryDirectory() + + with caplog.at_level(logging.WARNING, logger='pysat'): + cdw.get_file(req.content, '.', 'test.txt', temp_path=temp_dir.name, + zip_method='badzip') + captured = caplog.text + + # Check for appropriate warning + warn_msg = "not a recognized zip method" + assert warn_msg in captured + + return + + @pytest.mark.parametrize("bad_key,bad_val,err_msg", [("tag", "badval", "inst_id / tag combo unknown."), ("inst_id", "badval", From 756b952177c042fc952ef46b289d71ca00093382 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 31 Oct 2023 13:45:33 -0400 Subject: [PATCH 58/82] STY: pep8 --- pysatNASA/tests/test_methods_cdaweb.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pysatNASA/tests/test_methods_cdaweb.py b/pysatNASA/tests/test_methods_cdaweb.py index 6bd8c407..c42e0e00 100644 --- a/pysatNASA/tests/test_methods_cdaweb.py +++ b/pysatNASA/tests/test_methods_cdaweb.py @@ -73,7 +73,6 @@ def test_bad_zip_warning_get_files(self, caplog): return - @pytest.mark.parametrize("bad_key,bad_val,err_msg", [("tag", "badval", "inst_id / tag combo unknown."), ("inst_id", "badval", From af404d0d51a8cbbebb39b187d506299ed88eecb9 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 21 Nov 2023 10:17:23 -0500 Subject: [PATCH 59/82] MAINT: update clean routine --- pysatNASA/instruments/cnofs_vefi.py | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/pysatNASA/instruments/cnofs_vefi.py b/pysatNASA/instruments/cnofs_vefi.py index f2e4bf24..16cdc3b3 100644 --- a/pysatNASA/instruments/cnofs_vefi.py +++ b/pysatNASA/instruments/cnofs_vefi.py @@ -62,7 +62,6 @@ import datetime as dt import functools -import numpy as np from pysat.instruments.methods import general as mm_gen @@ -91,21 +90,8 @@ init = functools.partial(mm_nasa.init, module=mm_cnofs, name=name) -def clean(self): - """Clean VEFI data to the specified level. - - Note - ---- - 'dusty' or 'clean' removes data when interpolation flag is set to 1 - 'dirty' is the same as 'none' - - """ - - if (self.clean_level == 'dusty') | (self.clean_level == 'clean'): - idx, = np.where(self['B_flag'] == 0) - self.data = self[idx, :] - - return +# Use default clean +clean = mm_nasa.clean # ---------------------------------------------------------------------------- From fb9c9ff2757212e8edc09dc4d91758927d1bb478 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 21 Nov 2023 10:45:00 -0500 Subject: [PATCH 60/82] DOC: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4a311cb..9911e853 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). * Use pip install for readthedocs * Moved references and acknowledgements to methods files * Added tests for OMNI HRO routines + * Use standard clean routine for C/NOFS VEFI mag data ## [0.0.5] - 2023-06-27 * New Instruments From b1ed7ef154cdf8cc6baf4e345c3cc7bdb71ff4d1 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 21 Nov 2023 13:21:14 -0500 Subject: [PATCH 61/82] MAINT: allow old clean routine if needed --- pysatNASA/instruments/cnofs_vefi.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/pysatNASA/instruments/cnofs_vefi.py b/pysatNASA/instruments/cnofs_vefi.py index 16cdc3b3..b7344a5a 100644 --- a/pysatNASA/instruments/cnofs_vefi.py +++ b/pysatNASA/instruments/cnofs_vefi.py @@ -62,6 +62,7 @@ import datetime as dt import functools +import numpy as np from pysat.instruments.methods import general as mm_gen @@ -90,8 +91,24 @@ init = functools.partial(mm_nasa.init, module=mm_cnofs, name=name) -# Use default clean -clean = mm_nasa.clean +def clean(self): + """Clean VEFI data to the specified level. + + Note + ---- + 'dusty' or 'clean' removes data when interpolation flag is set to 1 + 'dirty' is the same as 'none' + + """ + + if 'B_flag' in self.variables: + if (self.clean_level == 'dusty') | (self.clean_level == 'clean'): + idx, = np.where(self['B_flag'] == 0) + self.data = self[idx, :] + else: + mm_nasa.clean(self) + + return # ---------------------------------------------------------------------------- From e0f82fa9afba5bf418cd72397bf40ae717006caf Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 21 Nov 2023 13:22:21 -0500 Subject: [PATCH 62/82] STY: improve style --- pysatNASA/instruments/cnofs_vefi.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pysatNASA/instruments/cnofs_vefi.py b/pysatNASA/instruments/cnofs_vefi.py index b7344a5a..334b7565 100644 --- a/pysatNASA/instruments/cnofs_vefi.py +++ b/pysatNASA/instruments/cnofs_vefi.py @@ -101,12 +101,13 @@ def clean(self): """ + mm_nasa.clean(self) + + # Apply legacy clean routine for version 5 data if 'B_flag' in self.variables: if (self.clean_level == 'dusty') | (self.clean_level == 'clean'): idx, = np.where(self['B_flag'] == 0) self.data = self[idx, :] - else: - mm_nasa.clean(self) return From 6489d8542639e174d326d6751028634b3e45a3d7 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 21 Nov 2023 15:28:07 -0500 Subject: [PATCH 63/82] MAINT: github token --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 61125636..1eb249ce 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -73,5 +73,5 @@ jobs: - name: Publish results to coveralls env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + github-token: ${{ secrets.GITHUB_TOKEN }} run: coveralls --rcfile=pyproject.toml --service=github From 343925540e708054a4af932ce4cb6efb9660fab6 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 21 Nov 2023 15:31:54 -0500 Subject: [PATCH 64/82] MAINT: github run id --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1eb249ce..59e5bcd7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -73,5 +73,6 @@ jobs: - name: Publish results to coveralls env: - github-token: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COVERALLS_SERVICE_JOB_ID: ${{ github.run_id }} run: coveralls --rcfile=pyproject.toml --service=github From 1d372147bd81583093f3571b5e6ea3cb17909530 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 21 Nov 2023 15:54:28 -0500 Subject: [PATCH 65/82] BUG: github job --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 59e5bcd7..7e7ce255 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -74,5 +74,5 @@ jobs: - name: Publish results to coveralls env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - COVERALLS_SERVICE_JOB_ID: ${{ github.run_id }} + COVERALLS_SERVICE_JOB_ID: ${{ github.job }} run: coveralls --rcfile=pyproject.toml --service=github From f0c356e0ba6b517412bb81b82b1a940078a04610 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing <19592220+jklenzing@users.noreply.github.com> Date: Wed, 22 Nov 2023 16:24:43 -0500 Subject: [PATCH 66/82] Update CHANGELOG.md Co-authored-by: Angeline Burrell --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06ee6a79..d4eebd34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). * Fix general clean routine to skip transformation matrices * New window needs to be integer for calculate_imf_steadiness * Fixed version import - * Fixed a bug when data fails to load for cdf pandas objects + * Fixed a bug when data fails to load for CDF pandas objects * Documentation * Added example of how to export data for archival * Maintenance From 4143b40c210a65544cd631fcfab93fc6f57ccee4 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 24 Nov 2023 10:45:00 -0500 Subject: [PATCH 67/82] BUG: coveralls --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7e7ce255..15da7366 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -75,4 +75,5 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COVERALLS_SERVICE_JOB_ID: ${{ github.job }} + COVERALLS_SERVICE_NUMBER: $ {{ github.run_id}} run: coveralls --rcfile=pyproject.toml --service=github From 3a824a1fe8b5247051c6abd93a580b63d73f701d Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 24 Nov 2023 11:08:20 -0500 Subject: [PATCH 68/82] MAINT: remove coveralls cap --- .github/workflows/main.yml | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 15da7366..989ababb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -75,5 +75,5 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} COVERALLS_SERVICE_JOB_ID: ${{ github.job }} - COVERALLS_SERVICE_NUMBER: $ {{ github.run_id}} + COVERALLS_SERVICE_NUMBER: $ {{ github.run_id }} run: coveralls --rcfile=pyproject.toml --service=github diff --git a/pyproject.toml b/pyproject.toml index a2f0fc20..5650c952 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,7 @@ dependencies = [ [project.optional-dependencies] pysatcdf = ["pysatCDF"] test = [ - "coveralls < 3.3", + "coveralls", "flake8", "flake8-docstrings", "hacking >= 1.0", From 6105bb0fdcc1836678863a517780299f2542e06b Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Fri, 24 Nov 2023 17:21:53 -0500 Subject: [PATCH 69/82] TST: use coveralls app --- .github/workflows/main.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 989ababb..bea599b3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -72,8 +72,9 @@ jobs: run: pytest - name: Publish results to coveralls + if: ${{ matrix.os != 'macos-latest'}} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - COVERALLS_SERVICE_JOB_ID: ${{ github.job }} - COVERALLS_SERVICE_NUMBER: $ {{ github.run_id }} - run: coveralls --rcfile=pyproject.toml --service=github + uses: coverallsapp/github-action@v2 + with: + parallel: true From 8a37ed666dc248c51727b626dc677fd94f8f975e Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 27 Nov 2023 10:21:40 -0500 Subject: [PATCH 70/82] MAINT: add finished to coveralls --- .github/workflows/main.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index bea599b3..2ed73af0 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -78,3 +78,12 @@ jobs: uses: coverallsapp/github-action@v2 with: parallel: true + + finish: + needs: build + runs-on: ubuntu-latest + steps: + - name: Coveralls Finished + uses: coverallsapp/github-action@v2 + with: + parallel-finished: true From c032ba8d0de37f2a61d597e144e6d83c5cf00929 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 27 Nov 2023 11:08:18 -0500 Subject: [PATCH 71/82] MAINT: use command line coveralls --- .github/workflows/main.yml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2ed73af0..41919d60 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -75,15 +75,13 @@ jobs: if: ${{ matrix.os != 'macos-latest'}} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: coverallsapp/github-action@v2 - with: - parallel: true + run: coveralls --rcfile=pyproject.toml --service=github --parallel finish: needs: build runs-on: ubuntu-latest steps: - name: Coveralls Finished - uses: coverallsapp/github-action@v2 - with: - parallel-finished: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: coveralls --service=github --finish From ad961dbaedabd4192b27851dd1ed99abede90886 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 27 Nov 2023 11:26:08 -0500 Subject: [PATCH 72/82] BUG: adjust env --- .github/workflows/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 41919d60..69a61cc6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -72,10 +72,10 @@ jobs: run: pytest - name: Publish results to coveralls - if: ${{ matrix.os != 'macos-latest'}} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: coveralls --rcfile=pyproject.toml --service=github --parallel + COVERALLS_PARALLEL: true + run: coveralls --rcfile=pyproject.toml --service=github finish: needs: build From a0671244b17274e5e57ab7043bf2c4a8ffe20899 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 27 Nov 2023 12:00:11 -0500 Subject: [PATCH 73/82] STY: update workflow syntax --- .github/workflows/main.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 69a61cc6..b10f2e1c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,6 +7,7 @@ on: [push, pull_request] jobs: build: + name: Build and Test strategy: fail-fast: false matrix: @@ -78,10 +79,13 @@ jobs: run: coveralls --rcfile=pyproject.toml --service=github finish: + name: Finish Coverage Analysis needs: build runs-on: ubuntu-latest steps: - name: Coveralls Finished env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: coveralls --service=github --finish + run: | + pip install --upgrade coveralls + coveralls --service=github --finish From 197e7b601d0a797d602184b82f54b40d00771caf Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 27 Nov 2023 12:01:18 -0500 Subject: [PATCH 74/82] BUG: name --- .github/workflows/main.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b10f2e1c..aeccb359 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -7,7 +7,6 @@ on: [push, pull_request] jobs: build: - name: Build and Test strategy: fail-fast: false matrix: From 4395ba7d7c277c66ebf6f687aee489163adc9db5 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 27 Nov 2023 14:03:28 -0500 Subject: [PATCH 75/82] BUG: empty meta in xarray --- pysatNASA/instruments/methods/cdaweb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/cdaweb.py b/pysatNASA/instruments/methods/cdaweb.py index d6f839ee..d3a63e84 100644 --- a/pysatNASA/instruments/methods/cdaweb.py +++ b/pysatNASA/instruments/methods/cdaweb.py @@ -366,7 +366,7 @@ def load_xarray(fnames, tag='', inst_id='', # Load data from any files provided if len(fnames) <= 0: - return xr.Dataset() + return xr.Dataset(), pysat.Meta() else: # Using cdflib wrapper to load the CDF and format data and # metadata for pysat using some assumptions. Depending upon your needs From e3d417e965b048c8d4c082055065e65d138e1abf Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 27 Nov 2023 14:03:41 -0500 Subject: [PATCH 76/82] TST: expand test options --- pysatNASA/tests/test_methods_cdaweb.py | 27 +++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/pysatNASA/tests/test_methods_cdaweb.py b/pysatNASA/tests/test_methods_cdaweb.py index 9c36d098..01c71682 100644 --- a/pysatNASA/tests/test_methods_cdaweb.py +++ b/pysatNASA/tests/test_methods_cdaweb.py @@ -44,14 +44,35 @@ def test_remote_file_list_connection_error_append(self): assert str(excinfo.value).find('pysat -> Request potentially') > 0 return - def test_load_with_empty_file_list(self): - """Test that empty data is returned if no files are requested.""" + @pytest.mark.parametrize("pandas_format", [True, False]) + def test_load_with_empty_file_list(self, pandas_format): + """Test that empty data is returned if no files are requested. - data, meta = cdw.load(fnames=[]) + Parameters + ---------- + pandas_format : bool + If True, pandas. If False, xarray + """ + + data, meta = cdw.load(fnames=[], pandas_format=pandas_format) assert len(data) == 0 assert meta.empty return + def test_bad_xarray_kwarg_warning(sefl, caplog): + """Test that warning is raised when xarray is used outside of cdflib.""" + + with caplog.at_level(logging.WARNING, logger='pysat'): + data, meta = cdw.load(fnames=[], pandas_format=False, + use_cdflib=False) + captured = caplog.text + + # Check for appropriate warning + warn_msg = "`use_cdflib` option is not currently enabled" + assert warn_msg in captured + + return + def test_bad_zip_warning_get_files(self, caplog): """Test that warning is raised for unsupported zip method.""" From 04bf86b95d943cbc03bb490e6c8a8916a4cc7ebf Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Mon, 27 Nov 2023 14:13:32 -0500 Subject: [PATCH 77/82] TST: add test for bad files --- pysatNASA/__init__.py | 6 ++++++ pysatNASA/tests/test_data/empty.cdf | Bin 0 -> 404 bytes pysatNASA/tests/test_methods_cdaweb.py | 18 +++++++++++++++++- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 pysatNASA/tests/test_data/empty.cdf diff --git a/pysatNASA/__init__.py b/pysatNASA/__init__.py index 2d3bc1c3..650c6162 100644 --- a/pysatNASA/__init__.py +++ b/pysatNASA/__init__.py @@ -11,7 +11,13 @@ except ImportError: import importlib_metadata as metadata +import os + from pysatNASA import constellations # noqa F401 from pysatNASA import instruments # noqa F401 __version__ = metadata.version('pysatNASA') + +# Set directory for test data +here = os.path.abspath(os.path.dirname(__file__)) +test_data_path = os.path.join(here, 'tests', 'test_data') diff --git a/pysatNASA/tests/test_data/empty.cdf b/pysatNASA/tests/test_data/empty.cdf new file mode 100644 index 0000000000000000000000000000000000000000..a14b4157538b86b95a539d48f89f69dabc34348c GIT binary patch literal 404 zcmbtQOHRWu5RHojl20+qR-y@?MNwCcQl%>pQrZIyv71a}UOMonwzZDdFw|X!2A1Q^Mk`N#>SV#E bVg4!hA%FJwAMEWMANF?EznR^?pN7~Mk8e|d literal 0 HcmV?d00001 diff --git a/pysatNASA/tests/test_methods_cdaweb.py b/pysatNASA/tests/test_methods_cdaweb.py index 01c71682..640c2b46 100644 --- a/pysatNASA/tests/test_methods_cdaweb.py +++ b/pysatNASA/tests/test_methods_cdaweb.py @@ -2,6 +2,7 @@ import datetime as dt import logging +import os import pandas as pds import requests import tempfile @@ -59,7 +60,22 @@ def test_load_with_empty_file_list(self, pandas_format): assert meta.empty return - def test_bad_xarray_kwarg_warning(sefl, caplog): + def test_bad_load_cdf_warning(self, caplog): + """Test that warning when cdf file does not have expected params.""" + + fpath = os.path.join(pysatNASA.test_data_path, 'empty.cdf') + with caplog.at_level(logging.WARNING, logger='pysat'): + data, meta = cdw.load(fnames=[fpath], pandas_format=True) + + captured = caplog.text + + # Check for appropriate warning + warn_msg = "unable to load" + assert warn_msg in captured + + return + + def test_bad_xarray_kwarg_warning(self, caplog): """Test that warning is raised when xarray is used outside of cdflib.""" with caplog.at_level(logging.WARNING, logger='pysat'): From 3550d61bc0eef21b2d7042dea883ec683e51ef19 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 28 Nov 2023 11:21:08 -0500 Subject: [PATCH 78/82] DOC: add saber ref --- pysatNASA/instruments/methods/timed.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/timed.py b/pysatNASA/instruments/methods/timed.py index e6d4e2fa..c1f910c1 100644 --- a/pysatNASA/instruments/methods/timed.py +++ b/pysatNASA/instruments/methods/timed.py @@ -23,7 +23,13 @@ 'and Instrumentation for Atmospheric and Space ', 'Research III, (20 October 1999); ', 'doi:10.1117/12.366380']), - 'saber': '', + 'saber': ' '.join(['Esplin, R., Mlynczak, M. G., Russell, J., Gordley,', + 'L., & The SABER Team. (2023). Sounding of the', + 'Atmosphere using Broadband Emission Radiometry', + '(SABER): Instrument and science measurement', + 'description. Earth and Space Science, 10,', + 'e2023EA002999.', + 'https://doi.org/10.1029/2023EA002999.']), 'see': ' '.join(('Woods, T. N., Eparvier, F. G., Bailey,', 'S. M., Chamberlin, P. C., Lean, J.,', 'Rottman, G. J., Solomon, S. C., Tobiska,', From cc4cef522c02b3a29364d90121df3b9c56652707 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 28 Nov 2023 11:21:33 -0500 Subject: [PATCH 79/82] DOC: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9547f306..0af3abc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). * Fixed a bug when data fails to load for CDF pandas objects * Documentation * Added example of how to export data for archival + * Updated documentation refs * Maintenance * Implemented unit tests for cleaning warnings * Use pip install for readthedocs From ab5f86739103ebd1422dbe8e8088efcb62ba35cf Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 28 Nov 2023 11:22:11 -0500 Subject: [PATCH 80/82] MAINT: sphinx rtd theme cap --- pyproject.toml | 2 +- test_requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 5650c952..ae7cbd36 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,7 @@ doc = [ "m2r2", "numpydoc", "sphinx", - "sphinx_rtd_theme >= 1.2.2" + "sphinx_rtd_theme >= 1.2.2, < 2.0.0" ] [project.urls] diff --git a/test_requirements.txt b/test_requirements.txt index b0971689..2d727ddf 100644 --- a/test_requirements.txt +++ b/test_requirements.txt @@ -10,4 +10,4 @@ pytest pytest-cov pytest-ordering sphinx -sphinx_rtd_theme>=1.2.2 +sphinx_rtd_theme>=1.2.2,<2.0.0 From 095ba3c39c0b3f0b95172e4751964ec9d17fde26 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 28 Nov 2023 11:23:48 -0500 Subject: [PATCH 81/82] DOC: add saber ref --- pysatNASA/instruments/methods/timed.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pysatNASA/instruments/methods/timed.py b/pysatNASA/instruments/methods/timed.py index c1f910c1..726dc800 100644 --- a/pysatNASA/instruments/methods/timed.py +++ b/pysatNASA/instruments/methods/timed.py @@ -29,7 +29,12 @@ '(SABER): Instrument and science measurement', 'description. Earth and Space Science, 10,', 'e2023EA002999.', - 'https://doi.org/10.1029/2023EA002999.']), + 'https://doi.org/10.1029/2023EA002999.\n', + 'Overview of the SABER experiment and preliminary', + 'calibration results (1999). J. M. Russell III, M.', + 'G. Mlynczak, L. L. Gordley, J. J. Tansock, Jr.,', + 'and R. W. Esplin, Proc. SPIE 3756, 277,', + 'DOI:10.1117/12.366382']), 'see': ' '.join(('Woods, T. N., Eparvier, F. G., Bailey,', 'S. M., Chamberlin, P. C., Lean, J.,', 'Rottman, G. J., Solomon, S. C., Tobiska,', From f9ac0cf5a6c8192ed12819ae1d9927ee069a5357 Mon Sep 17 00:00:00 2001 From: Jeff Klenzing Date: Tue, 28 Nov 2023 16:25:56 -0500 Subject: [PATCH 82/82] DOC: update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0af3abc6..3cefb5e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ This project adheres to [Semantic Versioning](https://semver.org/). * Moved references and acknowledgements to methods files * Added tests for OMNI HRO routines * Use standard clean routine for C/NOFS VEFI mag data + * Added version cap for sphinx_rtd_theme ## [0.0.5] - 2023-06-27 * New Instruments