Skip to main content

SolarViewer - A comprehensive tool for visualizing and analyzing solar radio images

Project description

๐ŸŒž SolarViewer

A comprehensive Python toolkit for visualizing and analyzing solar radio images

Python 3.10+ PyPI version License: MIT GitHub stars

Features โ€ข Installation โ€ข Quick Start โ€ข CLI โ€ข Documentation โ€ข Contributing


โœจ Features

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.

๐Ÿ“Š Analysis & Visualization

  • 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)

๐ŸŒ Data Access & Downloads

  • 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

๐ŸŽฌ Video Creation

  • 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

๐Ÿ”ง Advanced Tools

  • 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

๐Ÿ“ฆ Installation

๐Ÿ’ก Facing issues? See the Troubleshooting Guide.

Prerequisites

  • Python 3.10 or higher
  • pip package manager
  • CASA data directory: The ~/.casa/data folder 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.

Recommended: Virtual Environment

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 ~/.sv

Once 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!

Install from PyPI

pip install solarviewer

# Using uv
# uv pip install solarviewer

Install from Source

git clone https://github.com/dey-soham/solarviewer.git
cd solarviewer
pip install -e .

Desktop Integration

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 --install

To remove the desktop integration later:

solarviewer --uninstall

๐Ÿ’ก Optimal CASA Configuration

To 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

Dependencies

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

๐Ÿš€ Quick Start

Launch SolarViewer

solarviewer
# or
sv

# Open a specific file
solarviewer path/to/image.fits

LOFAR Tools

viewcaltable       # Calibration table visualizer
viewlogs           # Pipeline log viewer

Other Tools

viewsolaractivity  # Solar events browser
heliobrowser       # Helioviewer browser
viewds             # Dynamic spectra viewer

๐Ÿ’ป Command Line Interface

Command Line Interface (solarviewer / sv)

solarviewer [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 message

๐Ÿ“š Documentation

User Interface Overview

SolarViewer Controls

File 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

Display Controls

  • Colormap โ€” Choose visualization colormap
  • Stretch โ€” Linear, log, sqrt, power-law options
  • Gamma โ€” Adjust power-law exponent
  • Min/Max โ€” Manual or auto display range

Region Tools

  • Rectangle/Ellipse Selection โ€” Select regions for analysis
  • Export Region โ€” Save as CASA region file
  • Export Sub-image โ€” Extract region as new image

Analysis Tools

  • Fit 2D Gaussian โ€” Gaussian source fitting
  • Fit Elliptical Ring โ€” Ring model fitting
  • Image Statistics โ€” Full image statistics
  • Region Statistics โ€” Selected region statistics

๐Ÿ—๏ธ Project Structure

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

๐Ÿค Contributing

Contributions are welcome! Whether you're fixing bugs, adding features, or improving documentation, we appreciate your help.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License โ€” see the LICENSE file for details.


๐Ÿ™ Acknowledgments

This project builds on the excellent work of the solar physics and radio astronomy communities:

Core Libraries

  • SunPy โ€” Solar physics data analysis in Python
  • Astropy โ€” Core astronomy library for FITS, coordinates, and units
  • CASA โ€” Common Astronomy Software Applications for radio astronomy

GUI & Visualization

  • PyQt5 โ€” Python bindings for Qt GUI framework
  • Matplotlib โ€” Publication-quality plotting
  • NumPy โ€” Fundamental package for scientific computing
  • SciPy โ€” Scientific algorithms and mathematics

Data Sources & APIs

  • 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

Community

  • 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

๐Ÿ‘จโ€๐Ÿ’ป Author

Soham Dey โ€” sohamd943@gmail.com โ€” @dey-soham


Built with โค๏ธ for solar physics research

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

solarviewer-1.2.4.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

solarviewer-1.2.4-py3-none-any.whl (2.3 MB view details)

Uploaded Python 3

File details

Details for the file solarviewer-1.2.4.tar.gz.

File metadata

  • Download URL: solarviewer-1.2.4.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for solarviewer-1.2.4.tar.gz
Algorithm Hash digest
SHA256 cdb1ae2db2f481bdf176a3a3d3822da584edcc8f723f7e8471e435896f3684ce
MD5 e09e73dca00e43991d3bc0b525769856
BLAKE2b-256 019cfb9e621dbd3f2fd9d52bf0503cd6e17eb976ac3cedbb9f6c36ca3d04e81c

See more details on using hashes here.

File details

Details for the file solarviewer-1.2.4-py3-none-any.whl.

File metadata

  • Download URL: solarviewer-1.2.4-py3-none-any.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for solarviewer-1.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 27ca9d445a0851065931e348f583e48cfa274c4a1a19d4cc2aca67208e4f2fc6
MD5 2b952d0c4c813ccddd58d4fa46fbb423
BLAKE2b-256 cc94b2d410e25be841f437491375f9d6115e1c33fdeec96e9a6c8cf1d321be1b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page