Skip to content

v0.3.13 (Aug 31, 2025)

Choose a tag to compare

@QianyeSu QianyeSu released this 31 Aug 04:22
· 1957 commits to main since this release

πŸ”§ Breaking Changes

  • Removed Iris Support: Removed fill_cube function and iris dependencies from gridfill module

    • Use skyborn.gridfill.xarray.fill for xarray DataArrays instead
    • Iris cube support was causing package conflicts and installation difficulties
    • Focus shifted to xarray-based workflows which are more common in the scientific Python ecosystem

🎯 Tropopause Calculation Enhancements

  • New Comprehensive Tropopause Module: Complete implementation of WMO tropopause calculation with multi-dimensional support

    • 1D Profile Support: New trop_wmo_profile() function for single atmospheric profiles
    • 2D Spatial Analysis: Support for (level, lat) and (level, lon) cross-sections
    • 3D & 4D Gridded Data: Enhanced support for spatial and temporal datasets
    • Simplified xarray Interface: Auto-generates pressure from level coordinates
    • Performance: Optimized Fortran backend with 0.38ms per profile processing
  • Enhanced xarray Integration:

    • Automatic Pressure Generation: trop_wmo(temperature) - no pressure array needed
    • Smart Dimension Detection: Automatically detects lat, lon, level, and time dimensions
    • Metadata Preservation: Maintains coordinate information and CF-compliant attributes
    • Flexible Input Formats: Works with any dimension ordering and coordinate names
  • Improved Code Quality:

    • Simplified Imports: Removed try-except blocks, direct Fortran module importing
    • Parameter Consistency: Updated interface with temperature, pressure parameter order
    • Better Documentation: Comprehensive examples for all supported data formats
    • Removed Unused Code: Cleaned up _detect_cyclic_longitude function

🌊 New Geostrophic Wind Module

  • Complete Geostrophic Wind Implementation: New high-performance module for calculating geostrophic wind components from geopotential height fields

    • SIMD-Optimized Fortran Backend: Vectorized calculations with OpenMP parallelization for optimal performance
    • Multi-Dimensional Support: Handles 2D, 3D, and 4D data arrays with automatic dimension handling
    • Automatic Parameter Detection: Smart longitude cyclicity detection and south-to-north latitude ordering
    • Dual Interface Design: Both NumPy arrays and xarray DataArrays supported
  • xarray Integration: Seamless integration following established patterns

    • Auto-Coordinate Detection: from skyborn.calc.geostrophic.xarray import geostrophic_wind
    • Zero Manual Parameters: result = geostrophic_wind(z) - that's it!
    • CF-Compliant Output: Standard metadata with eastward/northward wind components
    • Multi-Resolution Support: Adaptive algorithms work with 0.25Β° to 10Β° grids
  • Optimized Algorithms: Production-ready implementation

    • Finite Difference Method: Uses geostrophic balance equations with proper boundary conditions
    • Coriolis Parameter Handling: Accurate f-plane approximation with pole region handling
    • Memory Efficient: Single precision (float32) processing with minimal memory footprint
    • Flexible Grid Support: Works with both cyclic and regional domains

πŸ”§ Technical Improvements

  • Hybrid Build System: Implemented innovative meson-setuptools hybrid architecture for seamless extension development

    • Zero-Configuration Module Addition: New Cython/C/Fortran modules automatically discovered and built
    • Unified Workflow: Single command python setup.py build_ext --inplace builds all extensions
    • Cross-Platform Optimization: Automatic compiler detection and platform-specific optimization flags
    • Smart Extension Discovery: setup.py automatically finds and compiles all submodules with meson.build files
    • Backwards Compatible: Maintains existing CI/CD workflows while enabling modern build features
    • Developer Friendly: Copy template meson.build, modify module name, and it's ready to build
  • Enhanced Extension Building: Streamlined process for adding compiled extensions

    • Template-Based: Simple copy and modify approach for new extensions
    • Automatic Integration: No manual setup.py modifications required for new modules
    • Parallel Builds: Meson enables efficient parallel compilation
    • Incremental Updates: Only rebuilds changed modules for faster development cycles
  • Fortran Extensions: Added 2D and 1D specific interfaces (prepared for future compilation)

  • Enhanced Error Handling: Better validation for different data dimensionalities

  • Memory Optimization: Efficient processing of large multi-dimensional arrays

  • CF Compliance: Output follows Climate and Forecast metadata conventions

πŸ“Š New Functionality

  • Spatial Correlation Analysis: Added skyborn.calc.spatial_correlation function for analyzing spatial patterns of correlation between gridded data and time series
  • Enhanced Linear Regression: Improved linear_regression function with robust NaN value handling for climate data with missing observations
  • Multi-Scale Analysis: Seamlessly analyze from single profiles to global climate datasets
  • Time Series Support: Process multi-year datasets with preserved temporal coordinates
  • Cross-Section Analysis: Dedicated support for meridional and zonal cross-sections
  • Automatic Sorting: Intelligent pressure level ordering with user override options

πŸ§ͺ Validation & Testing

  • Successfully tested on realistic atmospheric data (CESM2 model output)
  • Verified accuracy: 99.96% success rate on 663,552 grid points
  • Performance validated: 100 profiles processed in 38ms
  • Cross-validated against standard atmospheric profiles