DEV Community

masoomjethwa
masoomjethwa

Posted on

Exploring Venus’ Ionopause with MPI-Powered Python Analysis

Introduction

Venus, our mysterious sister planet, has a dynamic ionosphere shaped by the solar wind and planetary magnetic environment. One of the most intriguing features in Venus’ plasma environment is the ionopause — a boundary where the planet's ionosphere meets the solar wind.

Analyzing decades of Pioneer Venus Orbiter (PVO) data can reveal long-term trends in ionopause altitude, latitude, and dynamics. This project leverages Python, MPI (mpi4py), and publication-quality plotting to extract, visualize, and understand ionopause behavior.


Data Overview

The dataset comes from the PVO-V-OETP-5-IONOPAUSELOCATION-V1.0 volume from the NASA Planetary Data System (PDS). It contains orbit-by-orbit ionopause crossings:

  • File formats: .TAB (ASCII table) and .LBL (metadata)
  • Time span: 1978–1992
  • Parameters:

    • Orbit number, date (YYDOY), periapsis time
    • Inbound/outbound time, latitude, altitude
    • Local solar time, solar zenith angle

The raw data resides in:

DATA/
├─ OETP_IONOPAUSE_LOC.TAB
├─ OETP_IONOPAUSE_LOC.LBL
Enter fullscreen mode Exit fullscreen mode

Folder Structure & Metadata Logging

The project is organized as a Git-ready folder:

PVO-V-OETP-5-IONOPAUSELOCATION-V1.0/
│
├─ DATA/                  # Raw data files
├─ plots/                 # 2D EDA plots (Plot1_name.png & Plot1_name.csv)
├─ plots_3d/              # 3D plots (Plot1_name.png & Plot1_name.csv)
├─ try7.py                # MPI-enabled analysis script
├─ README.md
├─ requirements.txt
├─ dataset-metadata.json   # Kaggle-ready metadata
├─ .gitignore
└─ LICENSE
Enter fullscreen mode Exit fullscreen mode

Each generated plot is logged automatically with a timestamp in:

plots/log_plot_outputs.csv
plots_3d/log_plot_outputs.csv
Enter fullscreen mode Exit fullscreen mode

This ensures reproducibility and tracking during long MPI runs.


Python & MPI Workflow

The analysis script, try7.py, is fully parallelized with mpi4py:

  1. Data loading: Reads .TAB files into Pandas, converts YYDOY + periapsis time into UTC datetime.
  2. Parallel processing:
  • Ranks 0–3 share the work for EDA plots and 3D visualization
  • Automatically splits 25+ plots among cores for faster execution

    1. EDA & Trend Analysis:
  • Histograms, KDEs, boxplots for inbound/outbound altitudes and latitudes

  • Time-series plots with smoothed rolling means and LOWESS trend lines

  • Scatter plots and density plots for relationships among solar zenith angle, local time, and altitude

    1. 3D & Interactive Plots:
  • Venus centered at the origin

  • Ionopause crossings in 3D spherical coordinates

  • Colored by inbound/outbound and local solar time for intuitive analysis

Example: Converting YYDOY + periapsis to UTC

df['UTC'] = df.apply(lambda row: datetime.strptime(f"{int(row['DATE']):05}{row['PERIAPSIS_TIME']}", "%y%j%H:%M:%S"), axis=1)
Enter fullscreen mode Exit fullscreen mode

Example: MPI parallel plotting

for rank, plot_func in enumerate(plot_functions):
    if rank % size == comm.rank:
        fig, data_to_save = plot_func()
        fig.savefig(plot_path)
        pd.DataFrame(data_to_save).to_csv(data_path, index=False)
Enter fullscreen mode Exit fullscreen mode

25+ Automated Plots

The script automatically generates:

  • 20 EDA plots: inbound/outbound histograms, KDEs, boxplots, altitude vs time, latitude vs time
  • 5 Insightful plots: smoothed trends, altitude vs solar zenith, differences over time
  • 3D visualizations: interactive and publication-ready spherical plots around Venus

All plots are numbered and logged:

Plot1_inbound_altitude_hist.png / Plot1_inbound_altitude_hist.csv
...
Plot26_venus_ionopause_3d.png / Plot26_venus_ionopause_3d.csv
Enter fullscreen mode Exit fullscreen mode

Applications

  • Planetary science: Quantify long-term ionopause behavior, compare with models of Venus’ ionosphere.
  • Solar wind interaction studies: Correlate solar zenith angle and local time with altitude variations.
  • Publication-ready figures: 2D and 3D plots suitable for journals or conference presentations.
  • Kaggle dataset: JSON metadata prepared for machine learning or data-sharing workflows.

How to Run

# Activate conda environment
conda activate ml_env

# Run MPI Python script with 4 cores
mpiexec -n 4 python try7.py
Enter fullscreen mode Exit fullscreen mode

Plots will be saved automatically in plots/ and plots_3d/, with CSV logs.


GitHub Repository

You can explore and clone the full project here:

https://github.com/masoomjethwa/PVO-V-OETP-5-IONOPAUSELOCATION-V1


Summary

This project demonstrates how parallel Python analysis can process planetary data efficiently and produce publication-grade visualizations. It combines:

  • Space physics expertise
  • Python data science stack (Pandas, Matplotlib, Seaborn, Plotly)
  • MPI parallelization for speed and reproducibility
  • Automated logging for traceability

By the end of this workflow, you get fully reproducible plots, a rigorous dataset for ionopause studies, and ready-to-share interactive 3D visualizations.


Top comments (0)