EFIx_LP_1B (Langmuir probe 2Hz)#

Abstract: Access to the electric field instrument langmuir probe data (2Hz) (level 1b product).

%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.14.1
pandas     : 2.1.3
xarray     : 2023.12.0
matplotlib : 3.8.2
import datetime as dt

import matplotlib.pyplot as plt
from viresclient import SwarmRequest

request = SwarmRequest()

EFIx_LP_1B product information#

Measurements from the Langmuir Probe (LP) of the Electric Field Instrument (EFI) at 2Hz, for each Swarm spacecraft.

Documentation:

Check what “EFI” data variables are available#

request.available_collections("EFI", details=False)
{'EFI': ['SW_OPER_EFIA_LP_1B', 'SW_OPER_EFIB_LP_1B', 'SW_OPER_EFIC_LP_1B']}
request.available_measurements("EFI")
['U_orbit',
 'N_ion',
 'dN_ion',
 'N_ion_error',
 'N_elec',
 'N_elec_error',
 'T_elec',
 'dT_elec',
 'T_elec_error',
 'Vs',
 'Vs_error',
 'Flags_N_elec',
 'Flags_N_ion',
 'Flags_T_elec',
 'Flags_Vs',
 'Flagbits1',
 'Flagbits2',
 'Gamma1',
 'Gamma2']

Fetch one day of EFI data#

request.set_collection("SW_OPER_EFIA_LP_1B")
request.set_products(
    measurements=[
        "U_orbit",
        "N_ion",
        "dN_ion",
        "T_elec",
        "dT_elec",
        "Vs",
        "Vs_error",
        "Flags_N_ion",
        "Flags_T_elec",
        "Flags_Vs",
    ]
)
data = request.get_between(dt.datetime(2016, 1, 1), dt.datetime(2016, 1, 2))
data.sources
['SW_OPER_EFIA_LP_1B_20160101T000000_20160101T235959_0701_MDR_EFI_LP']

Load and plot using pandas/matplotlib#

df = data.as_dataframe()
df.head()
Flags_Vs N_ion Longitude Spacecraft U_orbit dN_ion dT_elec T_elec Vs_error Latitude Radius Vs Flags_N_ion Flags_T_elec
Timestamp
2016-01-01 00:00:00.196999936 20 126188.350497 92.799630 A 7604.407 28365.234486 -245.895850 2945.204213 NaN -72.511716 6833853.41 -2.201 20 20
2016-01-01 00:00:00.696000000 20 127792.945177 92.813943 A 7604.397 28725.923124 -259.711123 2891.969742 NaN -72.543238 6833854.00 -2.193 20 20
2016-01-01 00:00:01.196999936 20 132515.280154 92.828370 A 7604.388 29787.432673 -247.826218 2921.955198 NaN -72.574886 6833854.59 -2.200 20 20
2016-01-01 00:00:01.696000000 20 137932.951397 92.842799 A 7604.379 31005.243307 -239.714158 2936.736557 NaN -72.606406 6833855.18 -2.194 20 20
2016-01-01 00:00:02.196999936 20 138913.780654 92.857342 A 7604.370 31225.718904 -257.759606 2870.090847 NaN -72.638051 6833855.77 -2.190 20 20
df.plot(y=["N_ion", "T_elec", "Vs"], subplots=True, figsize=(20,5));
../_images/c39c8f9382eb760cb3b2d342a99d66f71247cc92582e3c6e2bed0614290129c8.png
df.plot(x="Latitude", y="N_ion");
../_images/cb79e0383366a548bbf2f08cfb61d0814254fbda3fafc763e2b35bcc44aa97a3.png

Load as xarray#

ds = data.as_xarray()
ds
<xarray.Dataset>
Dimensions:       (Timestamp: 172776)
Coordinates:
  * Timestamp     (Timestamp) datetime64[ns] 2016-01-01T00:00:00.196999936 .....
Data variables: (12/14)
    Spacecraft    (Timestamp) object 'A' 'A' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A' 'A'
    Flags_Vs      (Timestamp) uint8 20 20 20 20 20 20 20 ... 20 20 20 20 20 20
    N_ion         (Timestamp) float64 1.262e+05 1.278e+05 ... 6.485e+04 6.43e+04
    Longitude     (Timestamp) float64 92.8 92.81 92.83 ... -95.37 -95.37 -95.37
    U_orbit       (Timestamp) float64 7.604e+03 7.604e+03 ... 7.634e+03
    dN_ion        (Timestamp) float64 2.837e+04 2.873e+04 ... 1.445e+04
    ...            ...
    Vs_error      (Timestamp) float64 nan nan nan nan nan ... nan nan nan nan
    Latitude      (Timestamp) float64 -72.51 -72.54 -72.57 ... 31.65 31.69 31.72
    Radius        (Timestamp) float64 6.834e+06 6.834e+06 ... 6.823e+06
    Vs            (Timestamp) float64 -2.201 -2.193 -2.2 ... -2.239 -2.243
    Flags_N_ion   (Timestamp) uint8 20 20 20 20 20 20 20 ... 20 20 20 20 20 20
    Flags_T_elec  (Timestamp) uint8 20 20 20 20 20 20 20 ... 20 20 20 20 20 20
Attributes:
    Sources:         ['SW_OPER_EFIA_LP_1B_20160101T000000_20160101T235959_070...
    MagneticModels:  []
    AppliedFilters:  []
fig, (ax1, ax2) = plt.subplots(figsize=(10, 5), nrows=2, sharex=True)
def subplot(_ax, da):
    """Plot a given DataArray on a given axes"""
    _ax.plot(da)
    _ax.set_ylabel(f"{da.name} [{da.units}]")
for var, ax in zip(("N_ion", "T_elec"), (ax1, ax2)):
    subplot(ax, ds[var])
../_images/4647183904d4f4ee80b4c1b811577fe28d07ba5f8ec3207989a2f0996f44d04d.png