A simple GUI to associate an in-situ ICME to its likely solar CME source by back-propagating the event via the Drag-Based Model (DBM) and propagating uncertainties to obtain:
- a departure time window at 20 R☉
- an initial speed window at 20 R☉
- a LASCO catalogue candidate list consistent with those windows
This implementation follows the method described in (in preparation).
-
Loads in-situ time series (PSP/WIND/SOLO/ACE):
- Magnetic field components and |B|
- Proton density
n - Flow speed
v(radial/bulk) - Proton temperature
T(when available) - Plasma beta
β(computed)
-
User-defined event boundaries (manual, in UTC):
- Sheath start
- Magnetic Obstacle (MO) narrow interval (start/end)
- Magnetic Obstacle (MO) wide interval (start/end)
-
Computes DBM inputs from the MO and pre-sheath solar wind:
- MO duration
Δtand uncertaintyσΔtfrom wide vs narrow windows - MO speed
vand uncertaintyσvfrom averages in both windows - MO length
L = v Δtand uncertaintyσL - MO density
ρand uncertaintyσρ - Solar-wind speed
wand densityρ_swfrom a pre-sheath interval (default: 24 h)
- MO duration
-
Solves the DBM back in time to produce:
v0window (initial speed at 20 R☉)Twindow (propagation time)- departure-time window at 20 R☉
-
Searches the LASCO CDAW CME catalogue using the derived windows and (when available)
.yhtheight–time fits to estimate when each CME reaches 20 R☉.
python -m venv .venv
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activatepip install -r requirements.txtNote:
pytplotcurrently relies on Bokeh 2.x APIs. If you seeModuleNotFoundError: No module named 'bokeh.plotting.figure', runpip install "bokeh<3"and then reinstall dependencies.
- Select Mission (PSP / SOLO / WIND / ACE).
- Set Trange start/end (UTC) in format:
YYYY-MM-DD HH:MM:SS - Click Load Data.
The plots will populate and the boundary input fields will be auto-filled if empty.
Enter the following timestamps (UTC):
- Sheath start
- MO narrow start/end
- MO wide start/end
Then click Update Boundaries to redraw vertical markers:
- red = sheath start
- blue = MO narrow boundaries
- green = MO wide boundaries
Click Compute Parameters.
This fills labels for:
dt,v,Lρ(MO density)ρ_swandw(pre-sheath solar wind)γ(drag parameter)
If the pre-sheath histograms are clearly multi-modal, click Fit SW Histograms….
- Choose number of Gaussians for density and speed
- Click Apply & Close
This updates
ρ_sw,w, and recomputesγ.
Click Solve DBM.
The GUI reports:
v0 windowat 20 R☉T_i window(propagation time range)20 R☉ departure window(UTC)
Click Search LASCO Catalogue (only after solving DBM).
The tool:
- downloads the CDAW LASCO universal catalogue text file
- filters by time and speed windows
- attempts to compute the time at 20 R☉ using CDAW
.yhtfiles - shows matching candidates in a results dialog
Click Save All Plots as Image… to save the 5 stacked panels as a PNG.
The CME/ICME propagation is modeled from 20 R☉ outward using the drag-based model (DBM):
-
position and speed evolve as
r(t)andv(t)under an aerodynamic-like drag term controlled byγ -
the drag parameter is approximated by
γ = C_D / ( L (ρ/ρ_sw + 1/2) )whereLis the CME radial size from the in-situ MO duration, andρ/ρ_sware CME and ambient densities
Uncertainties are estimated from:
- the difference between wide and narrow MO boundary choices
- error propagation into
Land then intoγ - propagation of
σγintoσr(t)andσv(t) - building 8 combinations (±) for the uncertain DBM system, solving each, then taking min/max to obtain time and speed windows
The output is a time window at 20 R☉ where one should look for the corresponding CME in coronagraph observations/catalogues.
- The method has been primarily tested at distances within and up to 1 AU. Performance at larger heliocentric distances can yield wider windows.
- LASCO catalogue matching is a candidate filter, not a final association. There are typically various candidates, and narrowing down further requires validation with coronagraph/EUV context (direction, morphology, GCS, etc.).
If you find this tool/method useful, please cite the associated paper.
(IN PREPARATION)
- Current version: 1.1.1 (
dbm_associator/version.py). - First stable baseline: v1.0.
- Change history is tracked in
CHANGELOG.md.
DBM_AssociatorGUI_v1.0.py: backward-compatible launcher.dbm_associator/main.py: application entrypoint.dbm_associator/gui.py: main Qt GUI logic.dbm_associator/data_loader.py: mission-specific pySPEDAS data loaders.dbm_associator/sw_fit.py: solar-wind histogram fitting dialog.dbm_associator/plotting.py: reusable Matplotlib Qt widgets/dialogs.dbm_associator/utils.py: shared parsing/time/network helper functions.