A comprehensive Python toolkit for visualizing and analyzing solar radio images
Features β’ Installation β’ Quick Start β’ CLI β’ Documentation β’ Contributing
SolarViewer is a feature-rich desktop application designed for solar physics research. It provides a full-featured multi-tab interface with comprehensive analysis tools, including helioprojective coordinate support for FITS and CASA image formats with specialized tools for radio astronomy.
- Statistical Analysis β Detailed statistics for images and selected regions
- 2D Gaussian Fitting β Fit Gaussian profiles to radio sources
- Elliptical Ring Fitting β Model ring-shaped emission features
- Region Selection β Rectangle and ellipse tools for region-of-interest analysis
- Multiple Colormaps β Choose from scientific colormaps with linear, log, sqrt, and custom stretches
- Contour Overlays β Overlay multi-wavelength contours (e.g., radio on EUV) with automatic coordinate reprojection
- Stokes Parameters β Full polarization support (I, Q, U, V, L, Lfrac, Vfrac, PANG)
- Remote Access (SSH/SFTP) β Browse and open files directly from remote servers with local caching
- Helioviewer Browser β Browse and download images from NASA's Helioviewer API with time-series playback
- Solar Data Downloader β Download data from SDO/AIA, IRIS, SOHO, GOES SUVI, STEREO, and GONG
- Radio Data Downloader β Access solar radio observation archives
- Solar Activity Viewer β Browse solar events (flares, CMEs, active regions), view context images and radio spectra, and plot GOES X-ray light curves
- Time-lapse Videos β Create MP4 videos from image sequences
- Contour Overlays β Overlay radio contours on EUV/optical base images
- Custom Annotations β Add timestamps, colorbars, and min/max plots
- Preview Mode β Real-time preview before rendering
- Log Console β Internal console to view application logs and debugging information
- Dynamic Spectra Viewer β Advanced viewer for radio spectra with RFI masking (ROI/Global), bandpass normalization, and cross-section analysis
- LOFAR/SIMPL Support β Calibration table visualizer and pipeline log viewer
- Coordinate Transformations β Convert between RA/Dec and helioprojective coordinates
- Phase Center Tool β Shift image phase centers for radio interferometry data
- Export Options β Export to FITS, CASA image, PNG, and region files
π‘ Facing issues? See the Troubleshooting Guide.
- Python 3.10 or higher
- pip package manager
- CASA data directory: The
~/.casa/datafolder must exist for CASA to work properly. Create it with:mkdir -p ~/.casa/data
Note: No other manual installation is required β all dependencies are installed automatically via pip.
It is highly recommended to install SolarViewer in a virtual environment to avoid conflicts with system packages.
# Create a virtual environment
python3 -m venv ~/.sv
# Using uv
# uv venv ~/.sv -p 3.13
# Using conda
# conda create -p ~/.sv python=3.13# Activate the environment
source ~/.sv/bin/activate
# Using conda:
# conda activate ~/.svOnce the virtual environment is active, proceed with the installation below.
π‘ After running sv --install (see Desktop Integration below), you won't need to manually activate the environment to launch the application!
pip install solarviewer
# Using uv
# uv pip install solarviewergit clone https://github.com/dey-soham/solarviewer.git
cd solarviewer
pip install -e .After installation, you can create a desktop entry and icon (Linux) or an application bundle (macOS) to launch SolarViewer from your application menu:
# Install desktop shortcuts and icons
solarviewer --install
# or
sv --installTo remove the desktop integration later:
solarviewer --uninstallTo prevent CASA from auto-updating and to disable telemetry, we recommend adding these configurations:
Click to view recommended settings
~/.casa/config.py
datapath=["~/.casa/data"]
measurespath="~/.casa/data"
measures_auto_update=False
data_auto_update=False
nologfile=True
telemetry_enabled = False
crashreporter_enabled = False~/.casa/casainit.py
# CASA Initialization script to bypass updates
try:
from casatasks.private.testmodes import bypass_casa_updates
bypass_casa_updates(True)
print("CASA auto-updates have been disabled via casainit.py")
except:
pass~/.casarc
logfile: /dev/null
EnableTelemetry: False
View core dependencies
| Package | Version | Purpose |
|---|---|---|
| PyQt5 | β₯5.15.0 | GUI framework |
| matplotlib | β₯3.5.0 | Plotting and visualization |
| numpy | β₯1.20.0 | Numerical operations |
| astropy | β₯5.0.0 | FITS handling, coordinates |
| scipy | β₯1.7.0 | Scientific computing |
| sunpy | β₯5.0.0 | Solar physics tools |
| casatools | β₯6.4.0 | CASA image support |
| casatasks | β₯6.4.0 | CASA tasks |
solarviewer
# or
sv
# Open a specific file
solarviewer path/to/image.fitsviewcaltable # Calibration table visualizer
viewlogs # Pipeline log viewerviewsolaractivity # Solar events browser
heliobrowser # Helioviewer browser
viewds # Dynamic spectra viewersolarviewer [OPTIONS] [IMAGEFILE]
Options:
--install Install desktop integration
--uninstall Uninstall desktop integration
--light Start with light theme
-v, --version Show version and exit
-h, --help Show help messageSolarViewer Controls
- Open Directory β Load a folder of solar radio images
- Open FITS File β Load a single FITS file
- Export Figure β Save current view as image
- Export as FITS β Export data as FITS file
- Colormap β Choose visualization colormap
- Stretch β Linear, log, sqrt, power-law options
- Gamma β Adjust power-law exponent
- Min/Max β Manual or auto display range
- Rectangle/Ellipse Selection β Select regions for analysis
- Export Region β Save as CASA region file
- Export Sub-image β Extract region as new image
- Fit 2D Gaussian β Gaussian source fitting
- Fit Elliptical Ring β Ring model fitting
- Image Statistics β Full image statistics
- Region Statistics β Selected region statistics
solarviewer/
βββ solar_radio_image_viewer/
β βββ main.py # Entry point
β βββ install_utils.py # Desktop integration (install/uninstall)
β βββ viewer.py # Standard viewer
β βββ assets/ # Icons and resources
β βββ helioprojective.py # Coordinate conversions
β βββ helioprojective_viewer.py
β βββ helioviewer_browser.py # Helioviewer API browser
β βββ video_dialog.py # Video creation UI
β βββ create_video.py # Video rendering
β βββ video_utils.py # Video utilities
β βββ noaa_events/ # Solar events browser
β βββ solar_data_downloader/ # SDO/AIA, IRIS, etc.
β βββ radio_data_downloader/ # Radio data archives
β βββ solar_context/ # Real-time solar data
β βββ remote/ # Remote file access (SSH/SFTP)
β βββ from_simpl/ # LOFAR/SIMPL tools
β βββ learmonth-py/ # Learmonth data downloader
β βββ move_phasecenter.py # Phase center correction tool
β βββ tutorial.py # Tutorial
β βββ dialogs.py # Application dialogs
β βββ splash.py # Splash screen
β βββ log_console.py # Internal log viewer
β βββ searchable_combobox.py # Custom combobox widget
β βββ norms.py # Image normalization
β βββ utils.py # Utility functions
β βββ utils/ # Additional utilities (updater, limiter)
β βββ version.py # Version information
β βββ styles.py # UI themes (light/dark)
βββ resources/ # Desktop integration resources
βββ setup.py
βββ requirements.txt
βββ README.md
βββ LICENSE
βββ RELEASE_NOTES.md
Contributions are welcome! Whether you're fixing bugs, adding features, or improving documentation, we appreciate your help.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License β see the LICENSE file for details.
This project builds on the excellent work of the solar physics and radio astronomy communities:
- SunPy β Solar physics data analysis in Python
- Astropy β Core astronomy library for FITS, coordinates, and units
- CASA β Common Astronomy Software Applications for radio astronomy
- PyQt5 β Python bindings for Qt GUI framework
- Matplotlib β Publication-quality plotting
- NumPy β Fundamental package for scientific computing
- SciPy β Scientific algorithms and mathematics
- Helioviewer β NASA/ESA solar image browser and API
- SolarMonitor β Real-time solar activity monitoring
- NOAA SWPC β Space Weather Prediction Center solar event data
- SDO/AIA β Solar Dynamics Observatory
- JSOC β Joint Science Operations Center for SDO data
- VSO β Virtual Solar Observatory
- The solar physics group at the National Centre for Radio Astrophysics for feedback and testing
- Deepan Patra for designing app icon and logo
- Atul Mohan for contributing to the download codebase and providing helpful feedback
Soham Dey β sohamd943@gmail.com β @dey-soham
Built with β€οΈ for solar physics research