MITx (Mid-lat ionospheric trough)

Abstract: Access to the MITx_LP and MITxTEC products from the PRISM project. These give information about the boundaries and minima of the midlatitude ionospheric trough derived from the Langmuir Probe (LP) measurements and Total Electron Content (TEC) respectively.

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

viresclient: 0.10.1
pandas     : 1.4.1
xarray     : 0.21.1
matplotlib : 3.5.1
from viresclient import SwarmRequest

PRISM product information

The PRISM project (Plasmapause Related boundaries in the topside Ionosphere as derived from Swarm Measurements) has two data product outputs derived from Swarm which provide the minima of the mid-latitude ionospheric trough (MIT):
MITx_LP: derived from the Langmuir Probe (LP)
MITxTEC: derived from the GPS Total Electron Content (TEC)

These are implemented in VirES as four collection types:
SW_OPER_MITx_LP_2F
SW_OPER_MITx_LP_2F:ID
SW_OPER_MITxTEC_2F
SW_OPER_MITxTEC_2F:ID
where x = A/B/C for each spacecraft.

The base collections (SW_OPER_MITx_LP_2F and SW_OPER_MITxTEC_2F) contain information on the positions of the MIT minima. The sub-collections with :ID appended contain information on the boundaries.

Similarly, the midnight plasmapause index (PPI) is provided in the collections:
SW_OPER_PPIxFAC_2F
SW_OPER_PPIxFAC_2F:ID

For further details about the implementation in VirES, see:

MIT_LP example

request = SwarmRequest()
request.set_collection("SW_OPER_MITA_LP_2F")
request.set_products(
    measurements=[
        "Counter", "Latitude_QD", "Longitude_QD", "MLT_QD", "L_value", "SZA",
        "Ne", "Te", "Depth", "DR", "Width", "dL", "PW_Gradient", "EW_Gradient",
        "Quality"
    ],
)

data = request.get_between(
    start_time="2016-01-02T00:00:00Z",
    end_time="2016-01-03T00:00:00Z",
    asynchronous=False, show_progress=False
)
ds = data.as_xarray()
ds
<xarray.Dataset>
Dimensions:       (Timestamp: 26, Quality_dim1: 8, Counter_dim1: 2)
Coordinates:
  * Timestamp     (Timestamp) datetime64[ns] 2016-01-02T01:55:43.196999936 .....
Dimensions without coordinates: Quality_dim1, Counter_dim1
Data variables: (12/19)
    Spacecraft    (Timestamp) object 'A' 'A' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A' 'A'
    SZA           (Timestamp) float64 115.9 110.0 116.0 ... 115.7 107.9 115.5
    Longitude_QD  (Timestamp) float64 124.8 -85.74 103.9 ... -159.2 -13.53 154.7
    DR            (Timestamp) float64 22.8 61.76 22.73 ... 22.84 22.67 42.02
    L_value       (Timestamp) float64 4.054 6.672 4.327 ... 2.792 8.536 2.718
    PW_Gradient   (Timestamp) float64 0.1788 0.1281 0.2573 ... 0.1277 0.08771
    ...            ...
    Counter       (Timestamp, Counter_dim1) uint32 11820 2 11821 1 ... 1 11834 2
    Latitude      (Timestamp) float64 62.78 64.77 63.47 ... 57.11 60.2 55.09
    EW_Gradient   (Timestamp) float64 0.09388 0.05572 0.1658 ... 0.2769 0.1235
    Ne            (Timestamp) float64 6.839e+03 1.713e+04 ... 1.004e+04
    Width         (Timestamp) float64 13.3 10.26 28.44 ... 19.59 8.05 10.66
    Radius        (Timestamp) float64 6.818e+06 6.817e+06 ... 6.818e+06
Attributes:
    Sources:         ['SW_OPER_MITA_LP_2F_20160101T000000_20161231T235959_0103']
    MagneticModels:  []
    RangeFilters:    []
request = SwarmRequest()
request.set_collection("SW_OPER_MITA_LP_2F:ID")
request.set_products(
    measurements=SwarmRequest.PRODUCT_VARIABLES["MIT_LP:ID"], # request all dataset variables
    auxiliaries=['QDLat', 'QDLon', 'MLT'], # QD coordinates and MLT calculated by VirES
)

data = request.get_between(
    start_time="2016-01-02T00:00:00Z",
    end_time="2016-01-03T00:00:00Z",
    asynchronous=False, show_progress=False
)
ds_id = data.as_xarray()
ds_id
<xarray.Dataset>
Dimensions:           (Timestamp: 146, Counter_dim1: 2)
Coordinates:
  * Timestamp         (Timestamp) datetime64[ns] 2016-01-02T01:55:10.19699993...
Dimensions without coordinates: Counter_dim1
Data variables: (12/17)
    Spacecraft        (Timestamp) object 'A' 'A' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A'
    SZA               (Timestamp) float64 116.1 116.1 115.9 ... 114.2 113.8
    QDLat             (Timestamp) float64 61.19 61.0 59.4 ... 51.04 43.8 41.87
    Longitude_QD      (Timestamp) float64 125.1 125.0 124.8 ... 154.8 154.8
    L_value           (Timestamp) float64 4.607 4.552 4.131 ... 2.707 2.055 1.93
    MLT               (Timestamp) float64 5.126 5.125 5.115 ... 4.964 4.973
    ...                ...
    PointType         (Timestamp) uint8 5 3 2 1 6 4 0 0 1 ... 0 0 1 2 3 3 2 1 0
    Latitude_QD       (Timestamp) float64 61.19 61.0 59.4 ... 51.04 43.8 41.87
    Counter           (Timestamp, Counter_dim1) uint32 11820 2 11820 ... 11834 2
    Latitude          (Timestamp) float64 64.89 64.7 63.1 ... 54.99 47.94 46.09
    Ne                (Timestamp) float64 1.368e+04 1.345e+04 ... 3.418e+04
    Radius            (Timestamp) float64 6.817e+06 6.817e+06 ... 6.82e+06
Attributes:
    Sources:         ['SW_OPER_MITA_LP_2F_20160101T000000_20161231T235959_0103']
    MagneticModels:  []
    RangeFilters:    []

MIT_TEC example

request = SwarmRequest()
request.set_collection("SW_OPER_MITATEC_2F")
request.set_products(
    measurements=[
        "Counter", "Latitude_QD", "Longitude_QD", "MLT_QD", "L_value", "SZA",
        "TEC", "Depth", "DR", "Width", "dL", "PW_Gradient", "EW_Gradient",
        "Quality",
    ],
)

data = request.get_between(
    start_time="2016-01-02T00:00:00Z",
    end_time="2016-01-03T00:00:00Z",
    asynchronous=False, show_progress=False
)
ds = data.as_xarray()
ds
<xarray.Dataset>
Dimensions:       (Timestamp: 15, Quality_dim1: 8, Counter_dim1: 2)
Coordinates:
  * Timestamp     (Timestamp) datetime64[ns] 2016-01-02T06:24:35 ... 2016-01-...
Dimensions without coordinates: Quality_dim1, Counter_dim1
Data variables: (12/18)
    Spacecraft    (Timestamp) object 'A' 'A' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A' 'A'
    SZA           (Timestamp) float64 111.8 111.5 111.2 ... 116.4 108.1 116.4
    Longitude_QD  (Timestamp) float64 -126.6 -143.7 -162.4 ... -13.46 154.4
    DR            (Timestamp) float64 87.17 82.74 69.45 ... 84.17 81.56 77.3
    L_value       (Timestamp) float64 7.023 6.087 5.634 ... 3.827 8.94 4.142
    PW_Gradient   (Timestamp) float64 0.09949 0.1164 0.1653 ... 0.3494 0.2213
    ...            ...
    Counter       (Timestamp, Counter_dim1) uint32 11823 1 11824 1 ... 1 11834 2
    Latitude      (Timestamp) float64 71.06 70.22 69.19 ... 63.61 60.73 63.39
    EW_Gradient   (Timestamp) float64 0.05158 0.1142 0.1856 ... 0.1983 0.07255
    TEC           (Timestamp) float64 0.9301 0.7394 0.7053 ... 1.113 0.6152
    Width         (Timestamp) float64 20.91 17.7 30.75 ... 22.55 9.013 27.06
    Radius        (Timestamp) float64 6.817e+06 6.817e+06 ... 6.817e+06
Attributes:
    Sources:         ['SW_OPER_MITATEC_2F_20160101T000000_20161231T235959_0103']
    MagneticModels:  []
    RangeFilters:    []

PPI_FAC example

request = SwarmRequest()
request.set_collection("SW_OPER_PPIAFAC_2F")
request.set_products(
    measurements=[
        "Counter", "Latitude_QD", "Longitude_QD", "MLT_QD", "L_value", "SZA", "Sigma", "PPI", "dL", "Quality"
    ],
)
data = request.get_between(
    start_time="2016-01-02T00:00:00Z",
    end_time="2016-01-03T00:00:00Z",
    asynchronous=False, show_progress=False
)
ds = data.as_xarray()
ds
<xarray.Dataset>
Dimensions:       (Timestamp: 25, Counter_dim1: 2, Quality_dim1: 7)
Coordinates:
  * Timestamp     (Timestamp) datetime64[ns] 2016-01-02T00:05:50.500000 ... 2...
Dimensions without coordinates: Counter_dim1, Quality_dim1
Data variables: (12/14)
    Spacecraft    (Timestamp) object 'A' 'A' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A' 'A'
    Counter       (Timestamp, Counter_dim1) uint32 11819 1 11819 2 ... 2 11834 2
    Latitude      (Timestamp) float64 54.2 69.51 37.46 ... 54.51 64.04 68.72
    SZA           (Timestamp) float64 106.6 116.4 99.95 ... 105.9 116.5 116.7
    Sigma         (Timestamp) float64 0.4301 0.3153 0.2562 ... 0.1527 0.4721
    Latitude_QD   (Timestamp) float64 63.36 65.41 43.44 ... 61.67 59.61 64.55
    ...            ...
    dL            (Timestamp) float64 1.075 2.876 0.138 ... 2.777 1.342 2.166
    PPI           (Timestamp) float64 5.022 5.931 1.881 ... 4.526 4.04 5.571
    Longitude     (Timestamp) float64 -94.79 70.74 -118.8 ... -63.55 103.3 78.72
    MLT_QD        (Timestamp) float64 17.21 4.956 16.88 ... 18.07 4.848 4.823
    Radius        (Timestamp) float64 6.819e+06 6.817e+06 ... 6.817e+06
    Quality       (Timestamp, Quality_dim1) int8 3 3 -1 0 -1 1 ... -1 -1 0 1 1 3
Attributes:
    Sources:         ['SW_OPER_PPIAFAC_2F_20160101T000000_20161231T235959_0103']
    MagneticModels:  []
    RangeFilters:    []
request = SwarmRequest()
request.set_collection("SW_OPER_PPIAFAC_2F:ID")
request.set_products(
    measurements=[
        "Counter", "Latitude_QD", "Longitude_QD", "MLT_QD", "L_value", "SZA", "Position_Quality", "PointType"
    ],
)
data = request.get_between(
    start_time="2016-01-02T00:00:00Z",
    end_time="2016-01-03T00:00:00Z",
    asynchronous=False, show_progress=False
)
ds = data.as_xarray()
ds
<xarray.Dataset>
Dimensions:           (Timestamp: 50, Counter_dim1: 2)
Coordinates:
  * Timestamp         (Timestamp) datetime64[ns] 2016-01-02T00:05:07.500000 ....
Dimensions without coordinates: Counter_dim1
Data variables:
    Spacecraft        (Timestamp) object 'A' 'A' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A'
    Counter           (Timestamp, Counter_dim1) uint32 11819 1 11819 ... 11834 2
    Latitude          (Timestamp) float64 51.45 54.97 72.12 ... 72.41 67.63
    SZA               (Timestamp) float64 105.6 106.9 116.5 ... 116.8 116.7
    Position_Quality  (Timestamp) int8 2 2 2 2 2 2 2 2 2 2 ... 2 1 1 2 2 3 3 2 2
    MLT_QD            (Timestamp) float64 17.2 17.21 4.941 ... 4.902 4.781 4.834
    Longitude_QD      (Timestamp) float64 -25.52 -25.58 146.9 ... 153.7 154.2
    L_value           (Timestamp) float64 4.253 5.328 7.181 ... 7.279 5.113
    Longitude         (Timestamp) float64 -94.96 -94.74 69.78 ... 77.39 79.02
    PointType         (Timestamp) uint8 0 1 1 0 0 1 1 0 1 ... 1 1 0 0 1 1 0 1 0
    Radius            (Timestamp) float64 6.819e+06 6.819e+06 ... 6.817e+06
    Latitude_QD       (Timestamp) float64 60.72 64.09 67.89 ... 68.05 63.51
Attributes:
    Sources:         ['SW_OPER_PPIAFAC_2F_20160101T000000_20161231T235959_0103']
    MagneticModels:  []
    RangeFilters:    []