Data format

Output columns, file formats, coordinate system and propagation targets. Vector quantities are stored in GSM (Geocentric Solar Magnetospheric) coordinates; GSE and SM are available through the coordinate-system selector on the download page (rotated in your browser) and via the Python client.

Columns

ColumnUnitsDescription
BxnTIMF x-component (GSM native; GSE/SM via selector)
BynTIMF y-component (GSM native; GSE/SM via selector)
BznTIMF z-component (GSM native; GSE/SM via selector)
Uxkm/sSolar wind bulk velocity, x-component (radial, negative = Earthward)
Uykm/sSolar wind bulk velocity, y-component (Earth orbital motion restored by default at download)
Uzkm/sSolar wind bulk velocity, z-component (Earth orbital motion restored by default at download)
rhocm−3Proton number density
TKProton temperature

Extra columns in L1 files

ColumnDescription
XXGSM distance of reference satellite in RE: propagation metadata, always GSM regardless of the selected coordinate system (never rotated)
B_sourceSource satellite for Bx, By, Bz (coupled)
Ux_sourceSource satellite for Ux
Uyz_sourceSource satellite for Uy, Uz (coupled)
rho_sourceSource satellite for ρ
T_sourceSource satellite for T

Source codes: 1 ACE, 2 DSCOVR, 3 WIND, 4 SOLAR-1. When multiple satellites contribute, codes are concatenated in sorted order: 14 = ACE + SOLAR-1, 134 = ACE + WIND + SOLAR-1, 1234 = all four.

Interpolation flags in L1 and ballistic files

Each variable group carries an integer provenance flag recording whether the value at that minute is a direct observation or was produced by gap interpolation. Flag columns are present in L1 and ballistic files (14 RE, 32 RE and custom distances); MHD files do not carry them.

ColumnDescription
B_interpInterpolation flag for Bx, By, Bz (coupled)
Ux_interpInterpolation flag for Ux
Uyz_interpInterpolation flag for Uy, Uz (coupled)
rho_interpInterpolation flag for ρ
T_interpInterpolation flag for T
0all contributing values direct 1mixed (interpolated + direct) 2all contributing values interpolated

Flags 0 and 1 mark minutes where at least one contributing satellite value is a direct observation; flag 2 marks minutes whose value is entirely the product of interpolation. The flag is blank wherever the data value itself is missing.

File formats

TEXT

Space-delimited text file, directly compatible with SWMF input readers. Header includes a title line with date range and units, a #COORDINATES command naming the frame the file was exported in (GSM, or GSE/SM when selected) with the Earth orbital-motion state on the same line, a column-name line with five time columns, and a #START marker.

MIDL Ballistic 32Re, 2024-05-01 to 2024-05-31 (nT, km/s, cm^-3, K)

#COORDINATES
GSM                     Earth orbital motion EXCLUDED

year month day hour minute Bx By Bz Ux Uy Uz rho T B_interp Ux_interp Uyz_interp rho_interp T_interp
#START
2024 05 01 00 00    -7.10     1.19    -9.69   -407.90     -3.13    -20.15   13.0870    28235.0    0    1    1    1    1
2024 05 01 00 01    -7.08     1.23    -9.66   -406.90      1.00    -13.91   13.3750    30180.0    0    0    0    0    0

Merged data files at L1 include additional columns for satellite position and source attribution:

MIDL L1 (Merged at Closest Satellite Location) L1, 2024-05-01 to 2024-05-31 (nT, km/s, cm^-3, K, Re)

#COORDINATES
GSM                     Earth orbital motion EXCLUDED

year month day hour minute Bx By Bz Ux Uy Uz rho T X B_source Ux_source Uyz_source rho_source T_source B_interp Ux_interp Uyz_interp rho_interp T_interp
#START
2024 05 01 00 00     5.32    2.14   -8.91   -450.20    15.30    -8.50    2.3400   85142.0 235.41 2 13 13 13 13    0    0    1    0    0

CSV

Standard comma-separated values with a single header row. Timestamps in ISO 8601.

timestamp,Bx,By,Bz,Ux,Uy,Uz,rho,T,B_interp,Ux_interp,Uyz_interp,rho_interp,T_interp
2024-05-01T00:00:00,5.32,2.14,-8.91,-450.2,15.3,-8.5,2.34,85000.0,0,1,1,1,1

CSV files for L1 include the same additional columns:

timestamp,Bx,By,Bz,Ux,Uy,Uz,rho,T,X,B_source,Ux_source,Uyz_source,rho_source,T_source,B_interp,Ux_interp,Uyz_interp,rho_interp,T_interp
2024-05-01T00:00:00,5.32,2.14,-8.91,-450.2,15.3,-8.5,2.34,85000.0,235.41,2,13,13,13,13,0,0,1,0,0

Missing values

nan in TEXT format. Empty string (between commas) in CSV format.

Coordinate system

Vectors are stored in GSM. x points Earth → Sun, z is the projection of the magnetic dipole perpendicular to x, y completes the right-handed system. GSE (z perpendicular to the ecliptic) and SM (z along the dipole axis) are available through the download-page selector and the Python client.

GSE / SM rotation

GSM is the native frame of every published file. Selecting GSE or SM rotates Bx, By, Bz, Ux, Uy, Uz in your browser using per-minute angle files published alongside the data (data/{YYYY}/{MM}/{YYYYMM}_angles.csv with columns gsm_gse_angle_deg ψ and dipole_tilt_deg μ, IGRF-based). GSE and GSM share the sunward x axis; GSM and SM share the y axis:

GSM → GSE (angle ψ):                 GSM → SM (angle μ):
  Bx_gse = Bx_gsm                        By_sm = By_gsm
  By_gse = cosψ·By_gsm − sinψ·Bz_gsm     Bx_sm = cosμ·Bx_gsm − sinμ·Bz_gsm
  Bz_gse = sinψ·By_gsm + cosψ·Bz_gsm     Bz_sm = sinμ·Bx_gsm + cosμ·Bz_gsm

The same rotation is applied to U. Each 1-minute sample is rotated with that minute's instantaneous frame orientation, so a time series in GSE/SM reflects the slowly turning frame, not a single fixed rotation. Scalars (ρ, T), the source and interpolation-flag columns, and the L1 X column (GSM propagation metadata by definition) are never rotated. Directly fetched monthly CSVs are always GSM.

Earth orbital motion

The underlying MIDL archive has Earth's orbital motion around the Sun removed from its velocities, following the convention of the underlying data providers (CDAWeb, NOAA) that is shared by OMNI and most L1 solar wind products: the axes are GSE/GSM, but the frame origin does not co-move with Earth. As a result Uy,GSE averages to ~0 rather than the ~+29.78 km/s aberration that appears in Earth's actual rest frame.

For most applications, including Earth-centered magnetosphere models such as SWMF, the solar wind velocity as seen from Earth is the physically correct input, so MIDL restores the orbital motion by default on the download page and in the Python client: Earth's tangential orbital velocity is 29.78 km/s on average, ranging seasonally from 29.29 km/s at aphelion (early July) to 30.29 km/s at perihelion (early January), and is added along +yGSE. In GSM it lands in both Uy and Uz through the per-minute ψ rotation: ΔUy = cosψ·VE, ΔUz = −sinψ·VE. Ux is left as-is: the convention is only known to remove the tangential component, so Earth's ±0.50 km/s radial speed is not re-added. Untick the option (or pass orbital_motion=False) for convention-frame velocities, e.g. for direct comparison with OMNI or CDAWeb products.

The download page's “Include Earth’s orbital motion” checkbox applies the seasonally exact correction in your browser, and the Python client (v1.1.1+, on by default) does the same in any output frame:

midl.load("2024-05-10", "2024-05-11", "L1", coords="GSE")  # orbital_motion=True is the default

The choice is stamped in ds.attrs["orbital_motion"] and stated on every exported .dat header's #COORDINATES line as Earth orbital motion included or Earth orbital motion EXCLUDED. The monthly archive CSVs hosted on this site and the real-time tier keep the convention (motion removed); the correction is applied at download/load time.

Propagation targets

TargetUse case
L1Merged data at the satellite closest to Earth (smallest X)
14 REBow shock nose
32 REStandard SWMF upstream boundary
CustomUser-specified location along the Sun–Earth line. Any integer in [−70, 70] RE.

Real-Time tier (MIDL-RT)

The Real-Time page serves a preliminary tier built from NOAA/SWPC's real-time solar wind stream, refreshed every minute under realtime/. It differs from the monthly definitive dataset: sources are currently SOLAR-1, ACE and IMAP (no WIND, which has no real-time broadcast; IMAP appears here before it joins the archival product), telemetry is not cross-calibrated, and only SOLAR-1 provides vector plasma; ACE and IMAP contribute scalar speed, density and temperature. Real-time intervals are superseded by the definitive product as monthly processing catches up; the two tiers are never mixed silently.

FileContentsRefresh
realtime_manifest.jsonEntry point: names the current generation-stamped payload files below, plus per-source data ages, coverage boundaries (settled_through, definitive_through) and feed status. Fetch this first, uncached.1 min
last_24h.<gen>.jsonColumnar JSON for plotting: implicit 1-min time axis (start + step_s × n), arrays for Bx…T, per-group source provenance, missing values as null.1 min
sources_24h.<gen>.jsonPer-spacecraft raw RTSW on the same implicit time axis (minute-binned, sentinel-cleaned only; no despike/interpolation/time shift). Drives the raw-source column of the Real-Time quicklook; the 7 d/35 d variants back the longer windows.1 min
sources_{7d,35d}.<gen>.json10–15 min
last_7d.<gen>.csvMerged product at the reference satellite, same columns as the monthly L1 CSVs (timestamp, Bx…T, X, source columns; no interpolation-flag columns in this tier).1 min
last_35d.<gen>.csv10–15 min
IMF_32Re.<gen>.datSWMF #SOLARWINDFILE-ready rolling window, ballistically shifted to +32 RE. During vector-plasma outages, rows may carry an operational fill (Ux = −speed, Uy = Uz = 0), counted and flagged in the header.1 min

Rows younger than 3 hours are live (look-ahead filtering still open; values may change), rows 3–27 hours old are settled but still preliminary, and older rows are sealed. Payload filenames change every generation; always resolve them through realtime_manifest.json rather than hard-coding.