Available data and models#

Abstract: Different Swarm datasets are available through each “collection” on the VirES server. Choosing a collection determines the subset of “measurement”-type products available, while “auxiliary”-type are always available. Geomagnetic “model”-type are available in connection with the MAG collections. These can be seen at https://viresclient.readthedocs.io/en/latest/available_parameters.html

%load_ext watermark
%watermark -i -v -p viresclient,pandas,xarray,matplotlib
Python implementation: CPython
Python version       : 3.11.6
IPython version      : 8.18.0

viresclient: 0.12.0
pandas     : 2.1.3
xarray     : 2023.12.0
matplotlib : 3.8.2
from viresclient import SwarmRequest

Querying available variables#

viresclient has some tools to help you find out what data and models are available. First instantiate a request object, then use it to call methods:

request.available_collections()
request.available_measurements()
request.available_auxiliaries()
request.available_models()
request = SwarmRequest()

Data are organised into “collections”#

To see a list of them with references:

request.available_collections()
General References:
 Swarm Data Handbook, https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook 
 The Swarm Satellite Constellation Application and Research Facility (SCARF) and Swarm data products, https://doi.org/10.5047/eps.2013.07.001 
 Swarm Science Data Processing and Products (2013), https://link.springer.com/journal/40623/65/11/page/1 
 Special issue “Swarm science results after 2 years in space (2016), https://www.springeropen.com/collections/swsr 
 Earth's Magnetic Field: Understanding Geomagnetic Sources from the Earth's Interior and its Environment (2017), https://link.springer.com/journal/11214/206/1/page/1 

MAG
   SW_OPER_MAGA_LR_1B
   SW_OPER_MAGB_LR_1B
   SW_OPER_MAGC_LR_1B
   SW_FAST_MAGA_LR_1B
   SW_FAST_MAGB_LR_1B
   SW_FAST_MAGC_LR_1B
 https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-1b-product-definitions#MAGX_LR_1B_Product 

MAG_HR
   SW_OPER_MAGA_HR_1B
   SW_OPER_MAGB_HR_1B
   SW_OPER_MAGC_HR_1B
   SW_FAST_MAGA_HR_1B
   SW_FAST_MAGB_HR_1B
   SW_FAST_MAGC_HR_1B
https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-1b-product-definitions#MAGX_HR_1B_Product 

EFI
   SW_OPER_EFIA_LP_1B
   SW_OPER_EFIB_LP_1B
   SW_OPER_EFIC_LP_1B
   SW_FAST_EFIA_LP_1B
   SW_FAST_EFIB_LP_1B
   SW_FAST_EFIC_LP_1B
 https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-1b-product-definitions#EFIX_LP_1B_Product 

EFI_IDM
   SW_PREL_EFIAIDM_2_
   SW_PREL_EFIBIDM_2_
   SW_PREL_EFICIDM_2_
https://earth.esa.int/eogateway/documents/20142/2860886/SLIDEM_Product_Definition.pdf

EFI_TIE
   SW_OPER_EFIATIE_2_
   SW_OPER_EFIBTIE_2_
   SW_OPER_EFICTIE_2_
https://earth.esa.int/eogateway/activities/swarm-ion-temperature-estimation

EFI_TCT02
   SW_EXPT_EFIA_TCT02
   SW_EXPT_EFIB_TCT02
   SW_EXPT_EFIC_TCT02
https://earth.esa.int/eogateway/documents/20142/37627/swarm-EFI-TII-cross-track-flow-dataset-release-notes.pdf

EFI_TCT16
   SW_EXPT_EFIA_TCT16
   SW_EXPT_EFIB_TCT16
   SW_EXPT_EFIC_TCT16
https://earth.esa.int/eogateway/documents/20142/37627/swarm-EFI-TII-cross-track-flow-dataset-release-notes.pdf

IBI
   SW_OPER_IBIATMS_2F
   SW_OPER_IBIBTMS_2F
   SW_OPER_IBICTMS_2F
 https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-2-product-definitions#IBIxTMS_2F 
 https://earth.esa.int/documents/10174/1514862/Swarm_L2_IBI_product_description 

TEC
   SW_OPER_TECATMS_2F
   SW_OPER_TECBTMS_2F
   SW_OPER_TECCTMS_2F
 https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-2-product-definitions#TECxTMS_2F 
 https://earth.esa.int/documents/10174/1514862/Swarm_Level-2_TEC_Product_Description 

FAC
   SW_OPER_FACATMS_2F
   SW_OPER_FACBTMS_2F
   SW_OPER_FACCTMS_2F
   SW_OPER_FAC_TMS_2F
   SW_FAST_FACATMS_2F
   SW_FAST_FACBTMS_2F
   SW_FAST_FACCTMS_2F
 https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-2-product-definitions#FAC_TMS_2F 
 https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-2-product-definitions#FACxTMS_2F 
 https://earth.esa.int/documents/10174/1514862/Swarm_L2_FAC_single_product_description 
 https://earth.esa.int/documents/10174/1514862/Swarm-L2-FAC-Dual-Product-Description 

EEF
   SW_OPER_EEFATMS_2F
   SW_OPER_EEFBTMS_2F
   SW_OPER_EEFCTMS_2F
 https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-2-product-definitions#EEFxTMS_2F 
 https://earth.esa.int/documents/10174/1514862/Swarm-Level-2-EEF-Product-Description 

IPD
   SW_OPER_IPDAIRR_2F
   SW_OPER_IPDBIRR_2F
   SW_OPER_IPDCIRR_2F
 https://earth.esa.int/web/guest/missions/esa-eo-missions/swarm/data-handbook/level-2-product-definitions#IPDxIPR_2F 

AEJ_LPL
   SW_OPER_AEJALPL_2F
   SW_OPER_AEJBLPL_2F
   SW_OPER_AEJCLPL_2F
https://earth.esa.int/eogateway/activities/swarm-aebs

AEJ_LPL:Quality
   SW_OPER_AEJALPL_2F:Quality
   SW_OPER_AEJBLPL_2F:Quality
   SW_OPER_AEJCLPL_2F:Quality
No reference...

AEJ_LPS
   SW_OPER_AEJALPS_2F
   SW_OPER_AEJBLPS_2F
   SW_OPER_AEJCLPS_2F
https://earth.esa.int/eogateway/activities/swarm-aebs

AEJ_LPS:Quality
   SW_OPER_AEJALPS_2F:Quality
   SW_OPER_AEJBLPS_2F:Quality
   SW_OPER_AEJCLPS_2F:Quality
No reference...

AEJ_PBL
   SW_OPER_AEJAPBL_2F
   SW_OPER_AEJBPBL_2F
   SW_OPER_AEJCPBL_2F
https://earth.esa.int/eogateway/activities/swarm-aebs

AEJ_PBS
   SW_OPER_AEJAPBS_2F
   SW_OPER_AEJBPBS_2F
   SW_OPER_AEJCPBS_2F
https://earth.esa.int/eogateway/activities/swarm-aebs

AEJ_PBS:GroundMagneticDisturbance
   SW_OPER_AEJAPBS_2F:GroundMagneticDisturbance
   SW_OPER_AEJBPBS_2F:GroundMagneticDisturbance
   SW_OPER_AEJCPBS_2F:GroundMagneticDisturbance
No reference...

AOB_FAC
   SW_OPER_AOBAFAC_2F
   SW_OPER_AOBBFAC_2F
   SW_OPER_AOBCFAC_2F
https://earth.esa.int/eogateway/activities/swarm-aebs

AUX_OBSH
   SW_OPER_AUX_OBSH2_
https://doi.org/10.5047/eps.2013.07.011

AUX_OBSM
   SW_OPER_AUX_OBSM2_
https://doi.org/10.5047/eps.2013.07.011

AUX_OBSS
   SW_OPER_AUX_OBSS2_
https://doi.org/10.5047/eps.2013.07.011

VOBS_SW_1M
   SW_OPER_VOBS_1M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_SW_4M
   SW_OPER_VOBS_4M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_CH_1M
   CH_OPER_VOBS_1M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_CR_1M
   CR_OPER_VOBS_1M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_OR_1M
   OR_OPER_VOBS_1M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_CO_1M
   CO_OPER_VOBS_1M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_OR_4M
   OR_OPER_VOBS_4M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_CH_4M
   CH_OPER_VOBS_4M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_CR_4M
   CR_OPER_VOBS_4M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_CO_4M
   CO_OPER_VOBS_4M_2_
https://earth.esa.int/eogateway/activities/gvo

VOBS_SW_1M:SecularVariation
   SW_OPER_VOBS_1M_2_:SecularVariation
No reference...

VOBS_SW_4M:SecularVariation
   SW_OPER_VOBS_4M_2_:SecularVariation
No reference...

VOBS_CH_1M:SecularVariation
   CH_OPER_VOBS_1M_2_:SecularVariation
No reference...

VOBS_CR_1M:SecularVariation
   CR_OPER_VOBS_1M_2_:SecularVariation
No reference...

VOBS_OR_1M:SecularVariation
   OR_OPER_VOBS_1M_2_:SecularVariation
No reference...

VOBS_CO_1M:SecularVariation
   CO_OPER_VOBS_1M_2_:SecularVariation
No reference...

VOBS_OR_4M:SecularVariation
   OR_OPER_VOBS_4M_2_:SecularVariation
No reference...

VOBS_CH_4M:SecularVariation
   CH_OPER_VOBS_4M_2_:SecularVariation
No reference...

VOBS_CR_4M:SecularVariation
   CR_OPER_VOBS_4M_2_:SecularVariation
No reference...

VOBS_CO_4M:SecularVariation
   CO_OPER_VOBS_4M_2_:SecularVariation
No reference...

MIT_LP
   SW_OPER_MITA_LP_2F
   SW_OPER_MITB_LP_2F
   SW_OPER_MITC_LP_2F
https://earth.esa.int/eogateway/activities/plasmapause-related-boundaries-in-the-topside-ionosphere-as-derived-from-swarm-measurements

MIT_LP:ID
   SW_OPER_MITA_LP_2F:ID
   SW_OPER_MITB_LP_2F:ID
   SW_OPER_MITC_LP_2F:ID
No reference...

MIT_TEC
   SW_OPER_MITATEC_2F
   SW_OPER_MITBTEC_2F
   SW_OPER_MITCTEC_2F
https://earth.esa.int/eogateway/activities/plasmapause-related-boundaries-in-the-topside-ionosphere-as-derived-from-swarm-measurements

MIT_TEC:ID
   SW_OPER_MITATEC_2F:ID
   SW_OPER_MITBTEC_2F:ID
   SW_OPER_MITCTEC_2F:ID
No reference...

PPI_FAC
   SW_OPER_PPIAFAC_2F
   SW_OPER_PPIBFAC_2F
   SW_OPER_PPICFAC_2F
https://earth.esa.int/eogateway/activities/plasmapause-related-boundaries-in-the-topside-ionosphere-as-derived-from-swarm-measurements

PPI_FAC:ID
   SW_OPER_PPIAFAC_2F:ID
   SW_OPER_PPIBFAC_2F:ID
   SW_OPER_PPICFAC_2F:ID
No reference...

MAG_CHAMP
   CH_ME_MAG_LR_3
https://doi.org/10.5880/GFZ.2.3.2019.004

MAG_CS
   CS_OPER_MAG
https://doi.org/10.1186/s40623-020-01171-9

MAG_GRACE
   GRACE_A_MAG
   GRACE_B_MAG
https://doi.org/10.1186/s40623-021-01373-9

MAG_GFO
   GF1_OPER_FGM_ACAL_CORR
   GF2_OPER_FGM_ACAL_CORR
https://doi.org/10.1186/s40623-021-01364-w

MAG_GFO_ML
   GF1_MAG_ACAL_CORR_ML
   GF2_MAG_ACAL_CORR_ML
https://doi.org/10.5880/GFZ.2.3.2023.001

MAG_GOCE
   GO_MAG_ACAL_CORR
https://doi.org/10.5880/GFZ.2.3.2022.001

MAG_GOCE_ML
   GO_MAG_ACAL_CORR_ML
https://doi.org/10.5880/GFZ.2.3.2022.002

MOD_SC
   SW_OPER_MODA_SC_1B
   SW_OPER_MODB_SC_1B
   SW_OPER_MODC_SC_1B
   SW_FAST_MODA_SC_1B
   SW_FAST_MODB_SC_1B
   SW_FAST_MODC_SC_1B
No reference...

DNS_POD
   SW_OPER_DNSAPOD_2_
   SW_OPER_DNSBPOD_2_
   SW_OPER_DNSCPOD_2_
https://swarmhandbook.earth.esa.int/catalogue/SW_DNSxPOD_2_

DNS_ACC
   SW_OPER_DNSAACC_2_
   SW_OPER_DNSBACC_2_
   SW_OPER_DNSCACC_2_
https://swarmhandbook.earth.esa.int/catalogue/SW_DNSxACC_2_

DNS_ACC_CHAMP
   CH_OPER_DNS_ACC_2_
https://swarmhandbook.earth.esa.int/catalogue/CH_DNS_ACC_2_

DNS_ACC_GRACE
   GR_OPER_DNS1ACC_2_
   GR_OPER_DNS2ACC_2_
https://swarmhandbook.earth.esa.int/catalogue/GR_DNSxACC_2_

DNS_ACC_GFO
   GF_OPER_DNS1ACC_2_
https://swarmhandbook.earth.esa.int/catalogue/GF_DNSxACC_2_

WND_ACC_CHAMP
   CH_OPER_WND_ACC_2_
https://swarmhandbook.earth.esa.int/catalogue/CH_WND_ACC_2_

WND_ACC_GRACE
   GR_OPER_WND1ACC_2_
   GR_OPER_WND2ACC_2_
https://swarmhandbook.earth.esa.int/catalogue/GR_WNDxACC_2_

WND_ACC_GFO
   GF_OPER_WND1ACC_2_
https://swarmhandbook.earth.esa.int/catalogue/GF_WNDxACC_2_

MM_CON_EPH_2_:crossover
   MM_OPER_CON_EPH_2_:crossover
No reference...

MM_CON_EPH_2_:plane_alignment
   MM_OPER_CON_EPH_2_:plane_alignment
No reference...

Just the names of the collections:

request.available_collections(details=False)
{'MAG': ['SW_OPER_MAGA_LR_1B',
  'SW_OPER_MAGB_LR_1B',
  'SW_OPER_MAGC_LR_1B',
  'SW_FAST_MAGA_LR_1B',
  'SW_FAST_MAGB_LR_1B',
  'SW_FAST_MAGC_LR_1B'],
 'MAG_HR': ['SW_OPER_MAGA_HR_1B',
  'SW_OPER_MAGB_HR_1B',
  'SW_OPER_MAGC_HR_1B',
  'SW_FAST_MAGA_HR_1B',
  'SW_FAST_MAGB_HR_1B',
  'SW_FAST_MAGC_HR_1B'],
 'EFI': ['SW_OPER_EFIA_LP_1B',
  'SW_OPER_EFIB_LP_1B',
  'SW_OPER_EFIC_LP_1B',
  'SW_FAST_EFIA_LP_1B',
  'SW_FAST_EFIB_LP_1B',
  'SW_FAST_EFIC_LP_1B'],
 'EFI_IDM': ['SW_PREL_EFIAIDM_2_', 'SW_PREL_EFIBIDM_2_', 'SW_PREL_EFICIDM_2_'],
 'EFI_TIE': ['SW_OPER_EFIATIE_2_', 'SW_OPER_EFIBTIE_2_', 'SW_OPER_EFICTIE_2_'],
 'EFI_TCT02': ['SW_EXPT_EFIA_TCT02',
  'SW_EXPT_EFIB_TCT02',
  'SW_EXPT_EFIC_TCT02'],
 'EFI_TCT16': ['SW_EXPT_EFIA_TCT16',
  'SW_EXPT_EFIB_TCT16',
  'SW_EXPT_EFIC_TCT16'],
 'IBI': ['SW_OPER_IBIATMS_2F', 'SW_OPER_IBIBTMS_2F', 'SW_OPER_IBICTMS_2F'],
 'TEC': ['SW_OPER_TECATMS_2F', 'SW_OPER_TECBTMS_2F', 'SW_OPER_TECCTMS_2F'],
 'FAC': ['SW_OPER_FACATMS_2F',
  'SW_OPER_FACBTMS_2F',
  'SW_OPER_FACCTMS_2F',
  'SW_OPER_FAC_TMS_2F',
  'SW_FAST_FACATMS_2F',
  'SW_FAST_FACBTMS_2F',
  'SW_FAST_FACCTMS_2F'],
 'EEF': ['SW_OPER_EEFATMS_2F', 'SW_OPER_EEFBTMS_2F', 'SW_OPER_EEFCTMS_2F'],
 'IPD': ['SW_OPER_IPDAIRR_2F', 'SW_OPER_IPDBIRR_2F', 'SW_OPER_IPDCIRR_2F'],
 'AEJ_LPL': ['SW_OPER_AEJALPL_2F', 'SW_OPER_AEJBLPL_2F', 'SW_OPER_AEJCLPL_2F'],
 'AEJ_LPL:Quality': ['SW_OPER_AEJALPL_2F:Quality',
  'SW_OPER_AEJBLPL_2F:Quality',
  'SW_OPER_AEJCLPL_2F:Quality'],
 'AEJ_LPS': ['SW_OPER_AEJALPS_2F', 'SW_OPER_AEJBLPS_2F', 'SW_OPER_AEJCLPS_2F'],
 'AEJ_LPS:Quality': ['SW_OPER_AEJALPS_2F:Quality',
  'SW_OPER_AEJBLPS_2F:Quality',
  'SW_OPER_AEJCLPS_2F:Quality'],
 'AEJ_PBL': ['SW_OPER_AEJAPBL_2F', 'SW_OPER_AEJBPBL_2F', 'SW_OPER_AEJCPBL_2F'],
 'AEJ_PBS': ['SW_OPER_AEJAPBS_2F', 'SW_OPER_AEJBPBS_2F', 'SW_OPER_AEJCPBS_2F'],
 'AEJ_PBS:GroundMagneticDisturbance': ['SW_OPER_AEJAPBS_2F:GroundMagneticDisturbance',
  'SW_OPER_AEJBPBS_2F:GroundMagneticDisturbance',
  'SW_OPER_AEJCPBS_2F:GroundMagneticDisturbance'],
 'AOB_FAC': ['SW_OPER_AOBAFAC_2F', 'SW_OPER_AOBBFAC_2F', 'SW_OPER_AOBCFAC_2F'],
 'AUX_OBSH': ['SW_OPER_AUX_OBSH2_'],
 'AUX_OBSM': ['SW_OPER_AUX_OBSM2_'],
 'AUX_OBSS': ['SW_OPER_AUX_OBSS2_'],
 'VOBS_SW_1M': ['SW_OPER_VOBS_1M_2_'],
 'VOBS_SW_4M': ['SW_OPER_VOBS_4M_2_'],
 'VOBS_CH_1M': ['CH_OPER_VOBS_1M_2_'],
 'VOBS_CR_1M': ['CR_OPER_VOBS_1M_2_'],
 'VOBS_OR_1M': ['OR_OPER_VOBS_1M_2_'],
 'VOBS_CO_1M': ['CO_OPER_VOBS_1M_2_'],
 'VOBS_OR_4M': ['OR_OPER_VOBS_4M_2_'],
 'VOBS_CH_4M': ['CH_OPER_VOBS_4M_2_'],
 'VOBS_CR_4M': ['CR_OPER_VOBS_4M_2_'],
 'VOBS_CO_4M': ['CO_OPER_VOBS_4M_2_'],
 'VOBS_SW_1M:SecularVariation': ['SW_OPER_VOBS_1M_2_:SecularVariation'],
 'VOBS_SW_4M:SecularVariation': ['SW_OPER_VOBS_4M_2_:SecularVariation'],
 'VOBS_CH_1M:SecularVariation': ['CH_OPER_VOBS_1M_2_:SecularVariation'],
 'VOBS_CR_1M:SecularVariation': ['CR_OPER_VOBS_1M_2_:SecularVariation'],
 'VOBS_OR_1M:SecularVariation': ['OR_OPER_VOBS_1M_2_:SecularVariation'],
 'VOBS_CO_1M:SecularVariation': ['CO_OPER_VOBS_1M_2_:SecularVariation'],
 'VOBS_OR_4M:SecularVariation': ['OR_OPER_VOBS_4M_2_:SecularVariation'],
 'VOBS_CH_4M:SecularVariation': ['CH_OPER_VOBS_4M_2_:SecularVariation'],
 'VOBS_CR_4M:SecularVariation': ['CR_OPER_VOBS_4M_2_:SecularVariation'],
 'VOBS_CO_4M:SecularVariation': ['CO_OPER_VOBS_4M_2_:SecularVariation'],
 'MIT_LP': ['SW_OPER_MITA_LP_2F', 'SW_OPER_MITB_LP_2F', 'SW_OPER_MITC_LP_2F'],
 'MIT_LP:ID': ['SW_OPER_MITA_LP_2F:ID',
  'SW_OPER_MITB_LP_2F:ID',
  'SW_OPER_MITC_LP_2F:ID'],
 'MIT_TEC': ['SW_OPER_MITATEC_2F', 'SW_OPER_MITBTEC_2F', 'SW_OPER_MITCTEC_2F'],
 'MIT_TEC:ID': ['SW_OPER_MITATEC_2F:ID',
  'SW_OPER_MITBTEC_2F:ID',
  'SW_OPER_MITCTEC_2F:ID'],
 'PPI_FAC': ['SW_OPER_PPIAFAC_2F', 'SW_OPER_PPIBFAC_2F', 'SW_OPER_PPICFAC_2F'],
 'PPI_FAC:ID': ['SW_OPER_PPIAFAC_2F:ID',
  'SW_OPER_PPIBFAC_2F:ID',
  'SW_OPER_PPICFAC_2F:ID'],
 'MAG_CHAMP': ['CH_ME_MAG_LR_3'],
 'MAG_CS': ['CS_OPER_MAG'],
 'MAG_GRACE': ['GRACE_A_MAG', 'GRACE_B_MAG'],
 'MAG_GFO': ['GF1_OPER_FGM_ACAL_CORR', 'GF2_OPER_FGM_ACAL_CORR'],
 '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'],
 'MOD_SC': ['SW_OPER_MODA_SC_1B',
  'SW_OPER_MODB_SC_1B',
  'SW_OPER_MODC_SC_1B',
  'SW_FAST_MODA_SC_1B',
  'SW_FAST_MODB_SC_1B',
  'SW_FAST_MODC_SC_1B'],
 'DNS_POD': ['SW_OPER_DNSAPOD_2_', 'SW_OPER_DNSBPOD_2_', 'SW_OPER_DNSCPOD_2_'],
 'DNS_ACC': ['SW_OPER_DNSAACC_2_', 'SW_OPER_DNSBACC_2_', 'SW_OPER_DNSCACC_2_'],
 'DNS_ACC_CHAMP': ['CH_OPER_DNS_ACC_2_'],
 'DNS_ACC_GRACE': ['GR_OPER_DNS1ACC_2_', 'GR_OPER_DNS2ACC_2_'],
 'DNS_ACC_GFO': ['GF_OPER_DNS1ACC_2_'],
 'WND_ACC_CHAMP': ['CH_OPER_WND_ACC_2_'],
 'WND_ACC_GRACE': ['GR_OPER_WND1ACC_2_', 'GR_OPER_WND2ACC_2_'],
 'WND_ACC_GFO': ['GF_OPER_WND1ACC_2_'],
 'MM_CON_EPH_2_:crossover': ['MM_OPER_CON_EPH_2_:crossover'],
 'MM_CON_EPH_2_:plane_alignment': ['MM_OPER_CON_EPH_2_:plane_alignment']}

The collections are grouped according to those containing identical variable names, e.g.
'MAG': ['SW_OPER_MAGA_LR_1B', 'SW_OPER_MAGB_LR_1B', 'SW_OPER_MAGC_LR_1B']
indicates that these three are all of “MAG” type, while the actual collection names such as SW_OPER_MAGA_LR_1B point to the specific dataset - in this case, from Swarm Alpha (A), while the others are from Bravo (B) and Charlie (C).

Available “measurements”#

To query the variable names possible from a given collection type:

request.available_measurements("MAG")
['F',
 'dF_Sun',
 'dF_AOCS',
 'dF_other',
 'F_error',
 'B_VFM',
 'B_NEC',
 'dB_Sun',
 'dB_AOCS',
 'dB_other',
 'B_error',
 'q_NEC_CRF',
 'Att_error',
 'Flags_F',
 'Flags_B',
 'Flags_q',
 'Flags_Platform',
 'ASM_Freq_Dev']
request.available_measurements("EFI")
['U_orbit',
 'Ne',
 'Ne_error',
 'Te',
 'Te_error',
 'Vs',
 'Vs_error',
 'Flags_LP',
 'Flags_Ne',
 'Flags_Te',
 'Flags_Vs']
request.available_measurements("IBI")
['Bubble_Index',
 'Bubble_Probability',
 'Flags_Bubble',
 'Flags_F',
 'Flags_B',
 'Flags_q']
request.available_measurements("TEC")
['GPS_Position',
 'LEO_Position',
 'PRN',
 'L1',
 'L2',
 'P1',
 'P2',
 'S1',
 'S2',
 'Elevation_Angle',
 'Absolute_VTEC',
 'Absolute_STEC',
 'Relative_STEC',
 'Relative_STEC_RMS',
 'DCB',
 'DCB_Error']
request.available_measurements("FAC")
['IRC',
 'IRC_Error',
 'FAC',
 'FAC_Error',
 'Flags',
 'Flags_F',
 'Flags_B',
 'Flags_q']
request.available_measurements("EEF")
['EEF', 'EEJ', 'RelErr', 'Flags']
request.available_measurements("IPD")
['Ne',
 'Te',
 'Background_Ne',
 'Foreground_Ne',
 'PCP_flag',
 'Grad_Ne_at_100km',
 'Grad_Ne_at_50km',
 'Grad_Ne_at_20km',
 'Grad_Ne_at_PCP_edge',
 'ROD',
 'RODI10s',
 'RODI20s',
 'delta_Ne10s',
 'delta_Ne20s',
 'delta_Ne40s',
 'Num_GPS_satellites',
 'mVTEC',
 'mROT',
 'mROTI10s',
 'mROTI20s',
 'IBI_flag',
 'Ionosphere_region_flag',
 'IPIR_index',
 'Ne_quality_flag',
 'TEC_STD']

Available “auxiliaries”#

These can be requested together with any collection

request.available_auxiliaries()
['Timestamp',
 'Latitude',
 'Longitude',
 'Radius',
 'Spacecraft',
 'OrbitDirection',
 'QDOrbitDirection',
 'SyncStatus',
 'Kp10',
 'Kp',
 'Dst',
 'F107',
 'F107_avg81d',
 'F107_avg81d_count',
 'IMF_BY_GSM',
 'IMF_BZ_GSM',
 'IMF_V',
 'F10_INDEX',
 'OrbitSource',
 'OrbitNumber',
 'AscendingNodeTime',
 'AscendingNodeLongitude',
 'QDLat',
 'QDLon',
 'QDBasis',
 'MLT',
 'SunDeclination',
 'SunHourAngle',
 'SunRightAscension',
 'SunAzimuthAngle',
 'SunZenithAngle',
 'SunLongitude',
 'SunVector',
 'DipoleAxisVector',
 'NGPLatitude',
 'NGPLongitude',
 'DipoleTiltAngle',
 'dDst']

Available “models”#

(and custom ones can be supplied as .shc files)

request.available_models(details=False)
['IGRF',
 'LCS-1',
 'MF7',
 'CHAOS-Core',
 'CHAOS-Static',
 'CHAOS-MMA-Primary',
 'CHAOS-MMA-Secondary',
 'MCO_SHA_2C',
 'MCO_SHA_2D',
 'MLI_SHA_2C',
 'MLI_SHA_2D',
 'MLI_SHA_2E',
 'MMA_SHA_2C-Primary',
 'MMA_SHA_2C-Secondary',
 'MMA_SHA_2F-Primary',
 'MMA_SHA_2F-Secondary',
 'MIO_SHA_2C-Primary',
 'MIO_SHA_2C-Secondary',
 'MIO_SHA_2D-Primary',
 'MIO_SHA_2D-Secondary',
 'AMPS',
 'MCO_SHA_2X',
 'CHAOS',
 'CHAOS-MMA',
 'MMA_SHA_2C',
 'MMA_SHA_2F',
 'MIO_SHA_2C',
 'MIO_SHA_2D',
 'SwarmCI']

The Swarm models are named with a prefix indicating the source field (e.g. MCO for “Model of the Core field) and suffix indicating the processing chain (e.g. 2D for “Level 2 product, Comprehensive Inversion chain”).

C: Comprehensive; D: Dedicated; F: Fast-track

C

D

F

MCO - Core

x

x

-

MMA - Magnetosphere

x

-

x

MIO - Ionosphere

x

x

-

MLI - Lithosphere

x

x

-

MIO and MMA are divided into Primary and Secondary parts - primary for the external (to the Earth) ionospheric / magnetospheric field source, and secondary for the internally induced part in the upper mantle.

Check models of a certain type#

e.g. the CI models:

request.available_models("C", details=False)
['MCO_SHA_2C',
 'MLI_SHA_2C',
 'MMA_SHA_2C-Primary',
 'MMA_SHA_2C-Secondary',
 'MIO_SHA_2C-Primary',
 'MIO_SHA_2C-Secondary',
 'MMA_SHA_2C',
 'MIO_SHA_2C']

… or MCO (core) models:

request.available_models("MCO", details=True)
MCO_SHA_2C = MCO_SHA_2C(max_degree=18,min_degree=1)
  START: 2013-11-24T18:34:03.360004Z
  END:   2023-12-01T00:16:33.599998Z
DESCRIPTION:
[Comprehensive Inversion]: Core field of CIY4
 A comprehensive model of Earth’s magnetic field determined from 4 years of Swarm satellite observations, https://doi.org/10.1186/s40623-018-0896-3 
Validation: ftp://swarm-diss.eo.esa.int/Level2longterm/MCO/SW_OPER_MCO_VAL_2C_20131201T000000_20180101T000000_0401.ZIP 
SOURCES:
  SW_OPER_MCO_SHA_2C_20131125T000000_20231201T000000_1001

MCO_SHA_2D = MCO_SHA_2D(max_degree=20,min_degree=1)
  START: 2013-11-25T12:00:00.000003Z
  END:   2018-01-01T00:00:00Z
DESCRIPTION:
[Dedicated Chain]: Core field
An algorithm for deriving core magnetic field models from the Swarm data set, https://doi.org/10.5047/eps.2013.07.005 
Validation: ftp://swarm-diss.eo.esa.int/Level2longterm/MCO/SW_OPER_MCO_VAL_2D_20131126T000000_20180101T000000_0401.ZIP 
SOURCES:
  SW_OPER_MCO_SHA_2D_20131126T000000_20180101T000000_0401

MCO_SHA_2X = 'CHAOS-Core'(max_degree=20,min_degree=1)
  START: 1997-02-07T05:23:17.067838Z
  END:   2025-02-01T17:28:42.303362Z
DESCRIPTION:
Alias for 'CHAOS-Core'
SOURCES:
  SW_OPER_MCO_SHA_2X_19970101T000000_20240807T235959_0718
  SW_OPER_MCO_SHA_2X_20240808T000000_20250131T235959_0718

Manipulation of models#

Models can be manipulated: combining different models, limiting spherical harmonic (SH) series summation to a smaller range of SH degree. These composed models can be provided within the models kwarg in request.set_products(), e.g.

from viresclient import SwarmRequest
request = SwarmRequest()
request.set_collection("SW_OPER_MAGA_LR_1B")
request.set_products(
    measurements=["F"],
    models=["MCO_MMA = 'MCO_SHA_2C' + 'MMA_SHA_2C-Primary' + 'MMA_SHA_2C-Secondary'"],
)

Model details can be found with request.get_model_info(models=...) which handles the same models input as set_products(). This information is returned as a dictionary.

  1. The models should be provided as a list of strings, where each string defines a particular model.

request.get_model_info(
    models=["MCO_SHA_2D", "MCO_SHA_2C"]
)
{'MCO_SHA_2D': {'expression': 'MCO_SHA_2D(max_degree=20,min_degree=1)',
  'validity': {'start': '2013-11-25T12:00:00.000003Z',
   'end': '2018-01-01T00:00:00Z'},
  'sources': ['SW_OPER_MCO_SHA_2D_20131126T000000_20180101T000000_0401']},
 'MCO_SHA_2C': {'expression': 'MCO_SHA_2C(max_degree=18,min_degree=1)',
  'validity': {'start': '2013-11-24T18:34:03.360004Z',
   'end': '2023-12-01T00:16:33.599998Z'},
  'sources': ['SW_OPER_MCO_SHA_2C_20131125T000000_20231201T000000_1001']}}

2.. Models can be combined to form a new model like:

"New_model = 'Model_1' + 'Model_2'"
request.get_model_info(
    models=["MCO_MMA = 'MCO_SHA_2C' + 'MMA_SHA_2C-Primary' + 'MMA_SHA_2C-Secondary'"]
)
{'MCO_MMA': {'expression': "MCO_SHA_2C(max_degree=18,min_degree=1) + 'MMA_SHA_2C-Primary'(max_degree=3,min_degree=1) + 'MMA_SHA_2C-Secondary'(max_degree=3,min_degree=1)",
  'validity': {'start': '2013-11-25T03:00:00Z', 'end': '2023-11-30T21:00:00Z'},
  'sources': ['SW_OPER_MCO_SHA_2C_20131125T000000_20231201T000000_1001',
   'SW_OPER_MMA_SHA_2C_20131125T000000_20231130T235959_1001']}}
  1. Limiting the SH degree range can be done with:

Model_name(min_degree=x, max_degree=y)
  1. Your own .shc format model can be provided as a file, the model for which is then accessible within VirES under the name "Custom_Model". NB: in this case you will also need to provide the custom_model kwarg in request.set_products() - the model is not persistently stored on the server.

  2. New models can be defined successively in the list, using names that have been defined earlier in the list.

# Fetch an example file to use
url = "http://www.spacecenter.dk/files/magnetic-models/LCS-1/LCS-1.shc"
file_name = "LCS-1.shc"
import urllib.request
urllib.request.urlretrieve(url, file_name);
# Demonstrates:
#  limiting SH degree
#  providing your own model file
#  referring to defined models
request.get_model_info(
    models=[
        "MLI_SHA_2D = MLI_SHA_2D(min_degree=1, max_degree=80)",
        "LCS = Custom_Model(min_degree=1, max_degree=80)",
        "LCS-SwarmMLI = LCS - MLI_SHA_2D"
    ],
    custom_model=file_name,
)
{'MLI_SHA_2D': {'expression': 'MLI_SHA_2D(max_degree=80,min_degree=16)',
  'validity': {'start': '0001-01-01T00:00:00Z', 'end': '4000-01-01T00:00:00Z'},
  'sources': ['SW_OPER_MLI_SHA_2D_00000000T000000_99999999T999999_0501']},
 'LCS': {'expression': 'Custom_Model(max_degree=80,min_degree=1)',
  'validity': {'start': '0001-01-01T00:00:00Z', 'end': '4000-01-01T00:00:00Z'},
  'sources': []},
 'LCS-SwarmMLI': {'expression': 'Custom_Model(max_degree=80,min_degree=1) - MLI_SHA_2D(max_degree=80,min_degree=16)',
  'validity': {'start': '0001-01-01T00:00:00Z', 'end': '4000-01-01T00:00:00Z'},
  'sources': ['SW_OPER_MLI_SHA_2D_00000000T000000_99999999T999999_0501']}}

It is also possible to provide the models as a dictionary instead of a list.

request.get_model_info(
    models={
        "MLI_SHA_2D": "MLI_SHA_2D(min_degree=1, max_degree=80)",
        "LCS": "Custom_Model(min_degree=1, max_degree=80)",
        "LCS-SwarmMLI": "LCS - MLI_SHA_2D"
    },
    custom_model="LCS-1.shc"
)
{'MLI_SHA_2D': {'expression': 'MLI_SHA_2D(max_degree=80,min_degree=16)',
  'validity': {'start': '0001-01-01T00:00:00Z', 'end': '4000-01-01T00:00:00Z'},
  'sources': ['SW_OPER_MLI_SHA_2D_00000000T000000_99999999T999999_0501']},
 'LCS': {'expression': 'Custom_Model(max_degree=80,min_degree=1)',
  'validity': {'start': '0001-01-01T00:00:00Z', 'end': '4000-01-01T00:00:00Z'},
  'sources': []},
 'LCS-SwarmMLI': {'expression': 'Custom_Model(max_degree=80,min_degree=1) - MLI_SHA_2D(max_degree=80,min_degree=16)',
  'validity': {'start': '0001-01-01T00:00:00Z', 'end': '4000-01-01T00:00:00Z'},
  'sources': ['SW_OPER_MLI_SHA_2D_00000000T000000_99999999T999999_0501']}}