Skip to content

Professional Python toolkit for analyzing NASA POWER satellite-derived solar irradiance data with multi-language support, document export capabilities, and comprehensive statistical analysis features

License

Notifications You must be signed in to change notification settings

SantiYami/SolarIrradianceAnalysis

Repository files navigation

Solar Irradiance Analysis - Professional Edition

A comprehensive Python toolkit for analyzing NASA POWER satellite-derived solar irradiance data with professional statistical methods and visualization capabilities. This project provides scientific-grade analysis tools for solar resource assessment, climate research, and renewable energy applications.

Originally developed from Google Colab research code, now restructured as a professional, modular Python package with advanced features including multi-language support, document export, and comparative analysis capabilities.

πŸ—οΈ Project Structure

Solar Irradiance Analysis/
β”œβ”€β”€ main.py                      # πŸš€ Main interactive application
β”œβ”€β”€ README.md                    # πŸ“– This documentation
β”œβ”€β”€ requirements.txt             # πŸ“¦ Python dependencies
β”œβ”€β”€ backup/                      # πŸ—„οΈ Original code backup
β”‚   └── original_colab_code.py   # Original Google Colab code
β”‚
β”œβ”€β”€ src/                         # πŸ“ Source code modules
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ core/                    # βš™οΈ Core configuration
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── config.py           # Configuration settings
β”‚   β”œβ”€β”€ data/                    # πŸ“Š Data management
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── data_sets.py        # Dataset definitions and utilities
β”‚   β”œβ”€β”€ analysis/                # πŸ”¬ Statistical analysis
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── analysis_functions.py # Analysis algorithms
β”‚   β”œβ”€β”€ visualization/           # πŸ“ˆ Data visualization
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── plotting_functions.py # Interactive plotting
β”‚   β”œβ”€β”€ export/                  # πŸ“„ Document generation
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   └── document_exporter.py # DOCX/PDF export system
β”‚   └── utils/                   # πŸ› οΈ Utilities
β”‚       β”œβ”€β”€ __init__.py
β”‚       └── i18n.py             # Internationalization system
β”‚
β”œβ”€β”€ docs/                        # πŸ“š Documentation
β”œβ”€β”€ tests/                       # πŸ§ͺ Test files
β”œβ”€β”€ reports/                     # πŸ“‹ Generated reports
β”œβ”€β”€ .venv/                       # 🐍 Virtual environment
└── __pycache__/                # πŸ—‚οΈ Python cache

πŸš€ Quick Start

1. Environment Setup

# Activate virtual environment
.\.venv\Scripts\activate

# Install dependencies (if needed)
pip install -r requirements.txt

# Set execution policy (PowerShell)
Set-ExecutionPolicy Unrestricted -Scope Process

2. Run Interactive Application

python main.py

This launches an interactive menu with options:

  • πŸ–₯️ Console Analysis: Complete analysis with interactive plots
  • πŸ“„ Individual Export: Export specific dataset to documents
  • πŸ“š Comprehensive Export: All datasets in one document
  • πŸ”„ Console + Export: Analysis + automatic document generation
  • βš™οΈ Configuration: Language and display settings

πŸ“Š Analysis Features

1. Statistical Analysis

  • Basic statistics (mean, std, min, max)
  • Linear trend analysis
  • Anomaly detection
  • Seasonal analysis
  • Interannual variability

2. Visualizations

  • Monthly time series
  • Annual mean evolution
  • Monthly climatology
  • Relative anomalies
  • Decade analysis
  • Comparative analysis between datasets

3. Professional Features

  • 🌍 Multi-language support (English/Spanish)
  • πŸ“Š Dynamic scaling for all datasets
  • 🎨 Professional formatting with proper titles
  • πŸ“ˆ High-quality plots (300 DPI)
  • πŸ“„ Document export to DOCX and PDF
  • πŸ”§ Interactive menu system

πŸ›°οΈ Data Source: NASA POWER

About NASA POWER

This project analyzes solar irradiance data from NASA's POWER (Prediction of Worldwide Energy Resources) project, accessed through the NASA POWER Data Access Viewer.

Why NASA POWER?

  • 🌍 Global Coverage: Satellite-based data covering the entire Earth
  • πŸ“Š High Quality: NASA's rigorous data validation and processing
  • πŸ•°οΈ Long-term Records: Historical data spanning multiple decades
  • πŸ”¬ Scientific Standards: Peer-reviewed methodologies and algorithms
  • πŸ†“ Open Access: Free, publicly available data for research and analysis

Data Characteristics

  • Parameter: Solar Irradiance (kWh/mΒ²/day)
  • Temporal Resolution: Monthly averages
  • Spatial Resolution: 0.5Β° x 0.625Β° (approximately 50km x 50km)
  • Coverage Period: Multi-decade historical records
  • Source: MERRA-2 reanalysis and satellite observations
  • Quality: Validated against ground-based measurements worldwide

Scientific Context

Solar irradiance analysis is crucial for:

  • β˜€οΈ Solar Energy Planning: Site assessment and energy potential
  • 🌱 Climate Research: Understanding long-term climate patterns
  • πŸ“ˆ Trend Analysis: Detecting changes in solar resource availability
  • ⚑ Renewable Energy: Supporting sustainable energy transitions
  • 🌍 Environmental Studies: Climate change impact assessment

πŸ“ Data Structure

The project handles multiple datasets with data organized as:

  • Keys: Years (dynamically calculated from datasets)
  • Values: Monthly arrays with 12 irradiance values
  • Metadata: Location information and descriptions
  • Source: NASA POWER satellite-derived data

🌍 Internationalization (i18n)

Language Configuration

Configure languages independently in src/core/config.py:

LANGUAGE_CONFIG = {
    'print_language': 'en',  # Console output: 'en' or 'es'
    'plot_language': 'en'    # Plot labels: 'en' or 'es'
}

Available Combinations

  1. English (both): print: 'en', plot: 'en'
  2. Spanish (both): print: 'es', plot: 'es'
  3. Mixed EN/ES: print: 'en', plot: 'es'
  4. Mixed ES/EN: print: 'es', plot: 'en'

πŸ“„ Document Export

Automatic Export Features

  • Professional formatting with tables and statistics
  • Complete analysis information (matching console output)
  • High-quality plots automatically generated and embedded
  • Comparative summary plot for multiple datasets
  • Multilingual support (follows i18n configuration)
  • Automatic timestamping for file organization
  • Organized directory structure

Export Options

Interactive Menu (Recommended)

python main.py
# Select option 2, 3, or 4 from the menu

Alternative: Direct Module Usage

# For advanced users - direct module usage
python -c "
from src.export.document_exporter import create_reports
from src.data.data_sets import dataset_1, DATASET_METADATA
from src.analysis.analysis_functions import analyze_dataset
# ... custom analysis code
"

πŸ”§ Configuration

Display Settings

  • Plot styles: Professional formatting with dynamic scales
  • Figure sizes: Optimized for both screen and document display
  • Colors: Consistent color schemes across all visualizations
  • Titles: Multi-line formatting with proper spacing

Analysis Parameters

  • Dynamic periods: Automatically calculated from data
  • Trend analysis: Linear regression with confidence intervals
  • Anomaly detection: Based on climatological means
  • Seasonal analysis: Monthly climatology with statistics

πŸ“¦ Dependencies

  • pandas: Data manipulation and analysis
  • numpy: Numerical calculations
  • matplotlib: Interactive and exportable visualizations
  • python-docx: Professional DOCX document generation
  • reportlab: Advanced PDF document creation

🎯 Key Improvements

From Original Version

  • βœ… Organized structure with proper Python packages
  • βœ… Interactive menu system instead of multiple scripts
  • βœ… Professional document export with embedded plots
  • βœ… Multi-language support with independent configuration
  • βœ… Dynamic scaling that works with all datasets
  • βœ… Complete information preservation from console to documents
  • βœ… Comparative analysis visualization
  • βœ… Error-free execution with proper dependency management

Technical Enhancements

  • πŸ”§ Modular architecture for maintainability
  • 🎨 Professional plot formatting with proper titles
  • πŸ“Š Dynamic period calculation (no hardcoded dates)
  • 🌍 Centralized internationalization system
  • πŸ“„ Advanced document generation with images and tables
  • ⚑ Reliable data processing with pandas
  • πŸ”§ Stable and mature data processing ecosystem

πŸ§ͺ Development Tools & Quality Assurance

Code Quality Tools

This project includes comprehensive code quality and formatting tools:

🎨 Code Formatting

  • Black: Python code formatter (equivalent to Prettier for Python)
  • isort: Import statement organizer
  • Prettier: Markdown, JSON, and YAML formatter

πŸ” Linting & Analysis

  • Flake8: Python linting (equivalent to ESLint for Python)
  • MyPy: Static type checking
  • Bandit: Security vulnerability scanner

πŸ”— Pre-commit Hooks

Automated quality checks before each commit:

  • Code formatting validation
  • Import organization
  • Linting checks
  • Type checking
  • Security scanning

Development Setup

# Windows setup
.\scripts\setup-dev.ps1

# Linux/macOS setup
./scripts/setup-dev.sh

# Manual setup
pip install -r requirements-dev.txt
pre-commit install

Available Commands

# Development workflow
make setup-dev          # Complete development environment setup
make format              # Format all code automatically
make lint                # Run all linting checks
make test                # Run tests with coverage
make clean               # Clean cache and build files
make run                 # Run the main application

# Individual tools
black src/ main.py       # Format Python code
isort src/ main.py       # Sort imports
flake8 src/ main.py      # Lint Python code
mypy src/ main.py        # Type checking

# Documentation formatting
npm run format           # Format all Markdown, JSON, YAML files
npm run format:check     # Check formatting without changing files
prettier --write "**/*.md" "**/*.json"  # Direct prettier usage

Configuration Files

  • pyproject.toml: Centralized Python tool configuration
  • .flake8: Linting rules and exclusions
  • .prettierrc: Formatting rules for documentation
  • .pre-commit-config.yaml: Automated quality checks
  • requirements-dev.txt: Development dependencies
  • package.json: Node.js dependencies and npm scripts
  • .gitignore: Files and directories to ignore in version control

πŸ§ͺ Testing

# Test individual components
python -c "from src.data.data_sets import dataset_1; print('βœ… Data import OK')"
python -c "from src.utils.i18n import i18n; print('βœ… i18n system OK')"

# Run full test suite
make test                # With coverage report
pytest tests/ -v         # Verbose output

πŸ“š Scientific Methodology

Statistical Analysis Methods

  • πŸ“Š Descriptive Statistics: Mean, standard deviation, min/max analysis
  • πŸ“ˆ Trend Analysis: Linear regression with least squares fitting
  • 🌑️ Anomaly Detection: Deviation from climatological means
  • πŸ“… Seasonal Analysis: Monthly climatology and variability
  • πŸ“Š Comparative Analysis: Multi-dataset statistical comparison

Visualization Techniques

  • πŸ“Š Time Series Analysis: Temporal evolution visualization
  • πŸ“ˆ Trend Visualization: Linear trend representation with confidence intervals
  • 🌑️ Anomaly Mapping: Relative deviation from normal patterns
  • πŸ“… Climatological Patterns: Monthly and seasonal cycle analysis
  • πŸ“Š Multi-Dataset Comparison: Comparative statistical visualization

Quality Assurance

  • βœ… Data Validation: Automated checks for data integrity
  • πŸ“Š Statistical Consistency: Cross-validation with climatological norms
  • πŸ” Outlier Detection: Identification and handling of extreme values
  • πŸ“ˆ Trend Significance: Statistical evaluation of temporal changes

πŸ“– References & Citations

Primary Data Source

Data Sources and Technical Background

  • CERES Project: NASA Clouds and the Earth's Radiant Energy System (CERES) - provides solar irradiance and cloud property data
  • MERRA-2 Reanalysis: NASA Global Modeling and Assimilation Office (GMAO) Modern-Era Retrospective analysis for Research and Applications, Version 2
  • Surface Radiation Budget (SRB): NASA project providing surface radiation flux estimates

Scientific Applications

  • Solar Resource Assessment: NASA POWER data is widely used for renewable energy planning and solar resource evaluation
  • Climate Research: Long-term solar irradiance analysis for climate change studies and trend detection
  • Agricultural Applications: Solar radiation data for crop modeling and agricultural decision-making

How to Cite NASA POWER Data

When using NASA POWER data in publications or projects, use the following citation format:

NASA POWER Project. Prediction Of Worldwide Energy Resources (POWER) Data Access Viewer.
NASA Langley Research Center. Available at: https://power.larc.nasa.gov/data-access-viewer/

Additional Resources

🀝 Contributing

  1. Follow the established package structure
  2. Update imports when moving files
  3. Maintain i18n compatibility
  4. Test with multiple datasets
  5. Ensure document export functionality
  6. Cite data sources appropriately when using NASA POWER data
  7. Follow scientific best practices for data analysis and visualization

πŸ“ˆ Future Enhancements

πŸ“Š Advanced Statistical Analysis

  • Statistical Tests:
    • Normality tests (Shapiro-Wilk, Kolmogorov-Smirnov)
    • Trend tests (Mann-Kendall, Sen's slope)
    • Cross-correlation analysis between datasets
    • Statistical significance testing
    • Temporal autocorrelation analysis
  • Advanced Metrics:
    • Extreme value analysis (GEV, GPD)
    • Return period calculations
    • Drought/excess indices
    • Climate change detection indices

🌐 Interactive Web Dashboard

  • Web Interface:
    • Flask/Django/Streamlit implementation
    • Interactive plots with Plotly/Bokeh
    • Real-time data visualization
    • Responsive design for mobile/desktop
  • User Features:
    • Dynamic dataset selection
    • Interactive temporal filters
    • Custom analysis parameters
    • Export options from web interface

πŸ—„οΈ Database Integration

  • Database Support:
    • PostgreSQL/MySQL connectivity
    • Dataset storage and versioning
    • Analysis history tracking
    • Metadata management
  • Data Management:
    • Automated data ingestion
    • Data quality checks
    • Backup and recovery systems
    • Optimized SQL queries

πŸ”Œ API Endpoints

  • REST API:
    • FastAPI/Flask implementation
    • Automated analysis endpoints
    • Authentication and authorization
    • Rate limiting and caching
  • Documentation:
    • Automatic API documentation (Swagger)
    • Client libraries (Python, R, JavaScript)
    • Usage examples and tutorials

πŸ€– Machine Learning & Predictions

  • Predictive Models:
    • Solar irradiance forecasting (ARIMA, LSTM)
    • Trend prediction algorithms
    • Seasonal decomposition with ML
    • Anomaly detection with unsupervised learning
  • Advanced Analytics:
    • Pattern recognition in temporal data
    • Classification of climate patterns
    • Principal Component Analysis (PCA)
    • Clustering analysis for similar periods

πŸ“Š Enhanced Comparative Analysis

  • Advanced Comparisons:
    • Multi-dimensional cluster analysis
    • Temporal heatmaps and correlation matrices
    • Cross-spectral analysis (FFT)
    • Wavelet analysis for frequency decomposition
  • Visualization Improvements:
    • 3D surface plots for temporal-spatial data
    • Interactive correlation networks
    • Animated time series evolution
    • Geographic mapping integration

πŸ§ͺ Testing & Quality Assurance

  • Test Coverage:
    • Unit tests for all modules
    • Integration tests for workflows
    • Performance benchmarking
    • Data validation tests
  • Code Quality:
    • Automated code formatting (Black, isort)
    • Linting with pylint/flake8
    • Type hints with mypy
    • Documentation generation (Sphinx)

πŸ”§ Performance & Scalability

  • High-Performance Backend
  • Advanced Optimization:
    • Parallel processing for large datasets
    • Advanced caching mechanisms
    • Streaming data processing
    • GPU acceleration with cuPolars
  • Deployment:
    • Docker containerization
    • Cloud deployment (AWS, GCP, Azure)
    • CI/CD pipelines
    • Monitoring and logging systems

πŸ“š Documentation & Tutorials

  • Enhanced Documentation:
    • Scientific methodology documentation
    • API reference documentation
    • User guides and tutorials
    • Video tutorials and demos
  • Educational Content:
    • Jupyter notebook examples
    • Case studies with real data
    • Best practices guide
    • Troubleshooting documentation

Version: 1.0.0
Architecture: Modular Python Package
Compatibility: Windows/Linux/macOS
Python: 3.8+

About

Professional Python toolkit for analyzing NASA POWER satellite-derived solar irradiance data with multi-language support, document export capabilities, and comprehensive statistical analysis features

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages