diff --git a/docs/available_parameters.rst b/docs/available_parameters.rst index a5dd013..44dc27d 100644 --- a/docs/available_parameters.rst +++ b/docs/available_parameters.rst @@ -113,6 +113,17 @@ MM_CON_SPH_2\_:crossover Conjunction information (times w MM_CON_SPH_2\_:plane_alignment Conjunction information (times when orbital planes align) ============================== ================ =================================================================================================== +The `TIRO project `_ provides products for TEC and Ne derived from CHAMP, GRACE, and GRACE-FO: +============================== ================ +Collection full name Collection type +============================== ================ +CH_OPER_TEC_TMS_2F TEC_TIRO +GR_OPER_TECxTMS_2F TEC_TIRO +GF_OPER_TECxTMS_2F TEC_TIRO +GR_OPER_NE__KBR_2F NE_TIRO +GF_OPER_NE__KBR_2F NE_TIRO +============================== ================ + `ULF wave products `_ are provided as: ================================= =================== diff --git a/src/viresclient/_client_swarm.py b/src/viresclient/_client_swarm.py index 7f4ee4d..8484e29 100644 --- a/src/viresclient/_client_swarm.py +++ b/src/viresclient/_client_swarm.py @@ -216,6 +216,15 @@ "WND_ACC_GRACE": ("https://swarmhandbook.earth.esa.int/catalogue/GR_WNDxACC_2_",), "WND_ACC_GFO": ("https://swarmhandbook.earth.esa.int/catalogue/GF_WNDxACC_2_",), "MM_CON_EPH_2_": ("https://swarmhandbook.earth.esa.int/catalogue/MM_CON_EPH_2_",), + "TEC_TIRO": ( + "https://swarmhandbook.earth.esa.int/catalogue/CH_TEC_TMS_2F", + "https://swarmhandbook.earth.esa.int/catalogue/GR_TECxTMS_2F", + "https://swarmhandbook.earth.esa.int/catalogue/GR_TECxTMS_2F", + ), + "NE_TIRO": ( + "https://swarmhandbook.earth.esa.int/catalogue/GR_NE__KBR_2F", + "https://swarmhandbook.earth.esa.int/catalogue/GF_NE__KBR_2F", + ), "ULF_MAG": ("https://swarmhandbook.earth.esa.int/catalogue/SW_ULFxMAG_2F",), "PC1_MAG": ("https://swarmhandbook.earth.esa.int/catalogue/SW_PC1xMAG_2F",), } @@ -630,6 +639,18 @@ class SwarmRequest(ClientRequest): "MAG_GFO_ML": ["GF1_MAG_ACAL_CORR_ML", "GF2_MAG_ACAL_CORR_ML"], "MAG_GOCE": ["GO_MAG_ACAL_CORR"], "MAG_GOCE_ML": ["GO_MAG_ACAL_CORR_ML"], + # Multi-mission TEC and NE products + "TEC_TIRO": [ + "CH_OPER_TEC_TMS_2F", + "GR_OPER_TEC1TMS_2F", + "GR_OPER_TEC2TMS_2F", + "GF_OPER_TEC1TMS_2F", + "GF_OPER_TEC2TMS_2F", + ], + "NE_TIRO": [ + "GR_OPER_NE__KBR_2F", + "GF_OPER_NE__KBR_2F", + ], # Swarm spacecraft positions "MOD_SC": [ *(f"SW_OPER_MOD{x}_SC_1B" for x in "ABC"), @@ -707,7 +728,7 @@ class SwarmRequest(ClientRequest): "EFI_TCT02": "PT0.5S", "EFI_TCT16": "PT0.0625S", "IBI": "PT1S", - "TEC": "PT1S", # Actually more complicated + "TEC": "PT1S", # Actually more complicated - non-unique samples "FAC": "PT1S", "EEF": "PT90M", "IPD": "PT1S", @@ -752,6 +773,8 @@ class SwarmRequest(ClientRequest): "WND_ACC_GFO": "PT10S", "MM_CON_EPH_2_:crossover": "PT20M", "MM_CON_EPH_2_:plane_alignment": "P1D", + "TEC_TIRO": "PT1S", # Actually more complicated - non-unique samples + "NE_TIRO": "PT5S", "ULF_MAG": "PT1M", "ULF_MAG:event": "PT1S", # irregular sampling "ULF_MAG:event_mean": "PT1M", # irregular sampling @@ -929,6 +952,31 @@ class SwarmRequest(ClientRequest): "DCB", "DCB_Error", ], + "TEC_TIRO": [ + "GPS_Position", + "LEO_Position", + "PRN", + "L1", + "L2", + "P1", + "P2", + "S1_C_N0", + "S2_C_N0", + "Elevation_Angle", + "Absolute_VTEC", + "Absolute_STEC", + "Relative_STEC", + "Relative_STEC_RMS", + "DCB", + "DCB_Error", + ], + "NE_TIRO": [ + "LEO_Position", + "Distance", + "Relative_Hor_TEC", + "Relative_Ne", + "Absolute_Ne", + ], "FAC": [ "IRC", "IRC_Error", diff --git a/src/viresclient/_data_handling.py b/src/viresclient/_data_handling.py index 1e06b55..525ee17 100644 --- a/src/viresclient/_data_handling.py +++ b/src/viresclient/_data_handling.py @@ -164,7 +164,9 @@ def get_variable(self, var): return data def get_variable_units(self, var): - return self._varatts[var].get("UNITS", "") + units = self._varatts[var].get("UNITS", "") + unit = self._varatts[var].get("UNIT", "") + return unit or units def get_variable_description(self, var): desc = self._varatts[var].get("DESCRIPTION", "")