Skip to content

terrastackai/terratorch-surya

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is an adapted version of the original Surya source code to work with TerraTorch

☀️ Surya: Foundation Model for Heliophysics ☀️

HuggingFace arXiv License

The first foundation model for heliophysics trained on full-resolution Solar Dynamics Observatory data

Oryx Prithvi-EO-2.0

📖 Overview

Surya (Sanskrit for "Sun") is a 366M-parameter foundation model for heliophysics, trained on full-resolution multi-instrument SDO observations (AIA & HMI). It learns general-purpose solar representations through spatiotemporal transformers, enabling state-of-the-art performance in solar flare forecasting, active region segmentation, solar wind prediction, and EUV spectra modeling.

Key Features

  • Multi-instrument Learning: Trained on 13 channels from SDO's AIA (8 channels) and HMI (5 channels) instruments
  • Full Resolution: Native 4096×4096 pixel resolution with 12-minute cadence
  • Novel Architecture: Spatiotemporal transformer with spectral gating and long-short range attention
  • Zero-shot Capabilities: Forecasts solar dynamics and flare events without additional training
  • Versatile Fine-tuning: Parameter-efficient LoRA adaptation for diverse downstream tasks

What Makes Surya Special?

Unlike traditional task-specific models, Surya learns physics-aware representations that generalize across multiple solar phenomena:

  • Solar Flare Forecasting
  • Active Region Segmentation
  • Solar Wind Prediction
  • EUV Spectra Modeling

🚀 Quick Start

Prerequisites

🛠️ Installation

  1. Clone the repository
git clone https://github.com/NASA-IMPACT/Surya.git
cd Surya
  1. Install uv package manager (optional)
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
  1. Set up the environment
uv sync
source .venv/bin/activate

🧪 Verify Installation

Run the end-to-end test to ensure everything is working:

python -m pytest -s -o log_cli=true tests/test_surya.py

This will:

  • Download the pretrained model and test data
  • Generate 2-hour ahead forecasts for 2014-01-07
  • Create a validation visualization (surya_model_validation.png)
  • Verify model inference

Expected output:

============================= test session starts ==============================
INFO     test_surya:test_surya.py:188 GPU detected. Running the test on device 0.
INFO     test_surya:test_surya.py:195 Surya FM: 366.19 M total parameters.
INFO     test_surya:test_surya.py:199 Loaded weights.
INFO     test_surya:test_surya.py:201 Starting inference run.
INFO     test_surya:test_surya.py:215 Completed validation run. Local loss 0.31665.
PASSED                                                    [100%]

Sample output of Surya for 2014-01-07

🎯 Downstream Applications

To download the Surya model and a sample dataset for downstream tasks, please follow these steps:

# Step 1: Run pytest to download the model and verify dependencies
python -m pytest -s -o log_cli=true tests/test_surya.py  

# Step 2: Navigate to the downstream examples
cd downstream_examples/

# Step 3: Download the sample dataset
python download_data.py

1. Solar Flare Forecasting

Predict M-class and X-class solar flares up to 24 hours in advance.

cd downstream_examples/solar_flare_forcasting
python3 download_data.sh
torchrun --nnodes=1 --nproc_per_node=1 --standalone finetune.py

2. Active Region Segmentation

Segment solar active regions and polarity inversion lines from magnetograms.

cd downstream_examples/ar_segmentation  
python3 download_data.sh
torchrun --nnodes=1 --nproc_per_node=1 --standalone finetune.py

3. Solar Wind Forecasting

Predict solar wind speed at L1 point with 4-day lead time.

cd downstream_examples/solar_wind_forcasting
python3 download_data.sh
torchrun --nnodes=1 --nproc_per_node=1 --standalone finetune.py

4. EUV Spectra Modeling

Model extreme ultraviolet irradiance across 1343 spectral bands (5-35 nm).

cd downstream_examples/euv_spectra_prediction
python3 download_data.sh
torchrun --nnodes=1 --nproc_per_node=1 --standalone finetune.py

📥 Data and Model Access

Pretrained Models

The Surya foundation model and datasets are available on HuggingFace 🤗 :

SDO Data Download

For downstream applications, download the preprocessed SDO data:

cd downstream_examples
python download_data.py

This will:

  1. Download data from HuggingFace repository
  2. Extract and organize validation/test datasets
  3. Generate CSV index files for each downstream task
  4. Set up data in the expected directory structure

📊 Model Architecture

Surya employs a novel spatiotemporal transformer architecture optimized for solar dynamics:

Core Components

  1. Spectral Gating Blocks (2 layers)

    • Frequency-domain filtering with learnable complex weights
    • Adaptive re-weighting of spectral components
    • Noise suppression and feature enhancement
  2. Long-Short Attention Blocks (8 layers)

    • Local attention: Fine-scale dependencies within spatial windows
    • Global attention: Long-range correlations via dynamic projection
    • Multi-scale representation learning
  3. Decoder Block

    • Lightweight projection back to physical domain
    • Maintains spatial structure and channel relationships

Training Strategy

  • Phase 1: One-step ahead forecasting (160k steps, 128 GPUs)
  • Phase 2: Autoregressive rollout tuning (2-5 hour horizons)
  • Objective: Mean Squared Error with signum-log normalization
  • Data: 2011-2019 SDO observations (~257TB processed)

Data Processing Pipeline

Our preprocessing ensures ML-ready, physics-consistent data:

  • Temporal alignment: 12-minute cadence across all instruments
  • Spatial registration: Uniform 0.6"/pixel grid, solar north alignment
  • Calibration: Instrument degradation correction, exposure normalization
  • Quality control: Automated flagging and filtering

🏆 Performance Benchmarks

Task Metric Surya Baseline Improvement
Solar Flare Forecasting TSS 0.436 0.358 (AlexNet) 22%
Active Region Segmentation IoU 0.768 0.688 (UNet) 12%
Solar Wind Prediction RMSE 75.92 93.76 (ResNet50) 19%
EUV Spectra Modeling MAPE 1.48% 1.68% (AlexNet) 12%

📄 Citation

If you use Surya in your research, please cite our paper:

@article{roy2025surya,
  title={Surya: Foundation Model for Heliophysics},
  author={Roy, Sujit and Schmude, Johannes and Lal, Rohit and Gaur, Vishal and Freitag, Marcus and Kuehnert, Julian and van Kessel, Theodore and Hegde, Dinesha V and Mu{\~n}oz-Jaramillo, Andr{\'e}s and Jakubik, Johannes and others},
  journal={arXiv preprint arXiv:2508.14112},
  year={2025}
}

📜 License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

🤝 Contributing

We welcome contributions to the Surya repository! Please see our contribution guidelines and feel free to:

  • 🐛 Report bugs and issues
  • 💡 Suggest new features or applications
  • 🔧 Submit pull requests for improvements
  • 📖 Improve documentation and examples

About

Implementation of the Surya Foundation Model and Downstream Tasks for Heliophysics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Jupyter Notebook 86.9%
  • Python 12.8%
  • Shell 0.3%