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
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
Each generated plot is logged automatically with a timestamp in:
plots/log_plot_outputs.csv
plots_3d/log_plot_outputs.csv
This ensures reproducibility and tracking during long MPI runs.
Python & MPI Workflow
The analysis script, try7.py
, is fully parallelized with mpi4py:
-
Data loading: Reads
.TAB
files into Pandas, converts YYDOY + periapsis time into UTC datetime. - Parallel processing:
- Ranks 0–3 share the work for EDA plots and 3D visualization
-
Automatically splits 25+ plots among cores for faster execution
- 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
- 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)
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)
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
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
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)