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));
df.plot(x="Latitude", y="N_ion");
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])