Changelog#
Version 0.4.1 (Current)#
Bug Fixes
Spharm Recursion Stability: Hardened the spherical-harmonic recursion coefficient handling to remove a small numerical instability observed in recent spharm workflows.
Gaussian Vector Initialization Robustness: Fixed a Gaussian vector initialization edge case that could surface as NaNs on larger grids.
Regression Coverage: Added tests around repeated Gaussian initialization and spharm validation paths to guard against regressions.
Version 0.4.0#
New Features
Atmospheric Diagnostics Expansion: Added new compiled diagnostics and Python bindings for atmospheric-column workflows, including DCAPE and the updated tropical-cyclone / growth-rate calculation paths.
Hybrid and Sigma Interpolation Modernization: Expanded the vinth2p family with clearer column-major and C-order entry points, improved ECMWF handling, and updated hybrid / sigma remapping helpers.
Improvements
Spharm and Wind Analysis Refactoring: Refined spherical-harmonic and reduced-vector-wind internals to reduce wrapper overhead, improve caching, and make the public flow clearer.
Plotting Pipeline Acceleration: Moved more scatter and curly-vector validation / sampling work into native helpers to reduce Python-side overhead and temporary-array churn.
Build and Documentation Cleanup: Continued Meson build modernization and refreshed documentation and tests around the reorganized interfaces.
Cleanup
Legacy API Removal: Removed the old Iris interface and other unused legacy paths, and tightened the wind-analysis / spectral-helper APIs.
Regression Coverage: Added focused tests for the updated interpolation, plotting, spectral-helper, and wind-analysis paths.
Version 0.3.22#
Improvements
Tropical Cyclone Potential Intensity Diagnostics Modernization: Updated the tropical cyclone potential intensity workflow to align with recent upstream validation data and decomposition conventions, while simplifying the Python interface and keeping the compiled backend as the primary execution path
spharm Internal Optimization: Improved the internal spherical harmonic helper flow so repeated potential-field reconstruction can reuse intermediate spectral results more efficiently and avoid unnecessary wrapper overhead
windspharm Performance Improvements: Reduced the Python-side overhead in the tested wind-decomposition workflow family while keeping the established public numerical conventions unchanged
Growth-rate and Pressure-Interpolation Additions: Added compiled atmospheric-column growth diagnostics and pressure-coordinate interpolation support for Chemke-style workflows, including latitude-band dynamics, native spectral smoothing, direct batch evaluation, a new high-resolution / low-resolution zonal-wavenumber mode switch for the baroclinic solver, and supporting documentation
Bug Fixes
Tropical Cyclone Potential Intensity Parity And Robustness: Fixed remaining pressure, outflow, and missing-column handling issues in the tropical cyclone potential intensity workflow, improved agreement with the current upstream reference implementation, and restored full focused Python coverage for the maintained wrapper layer
spharm and windspharm Regression Coverage: Added focused tests for the updated internal spectral-helper and wind-analysis paths, including shape-validation coverage for the new optimized flow
Version 0.3.21#
Improvements
Scatter Placement Acceleration: Moved the cell-interior candidate generation path in
skyborn.plot.scatterinto the native C helper so projected stippling workflows spend less time in Python loops and temporary array constructionCurly-Vector Display-Space Sampling Optimization: Moved
_NCLDisplaySamplerdisplay-cell validation and batch display-grid sampling into the native plotting helper, reducing intermediate-array overhead and lowering memory use for projectedcurly_vectorworkflows on larger gridsDisplay-Curve Validation Fast Path: Extended the native curly-vector tracer so it can return both data-space and display-space curves in one pass and run the display-curve quality screening in C while preserving the previous plotted geometry
Cleanup
Plot Internal Simplification: Removed unused internal helper aliases from
skyborn.plot.vectorand kept the low-level plotting tests importing their implementation modules directly
Version 0.3.20#
New Features
Expanded Mann-Kendall Trend Analysis: Aligned the supported core test families with
pymannkendallwhile extending them to multidimensional NumPy and xarray workflowsAdded public support for grouped multivariate, regional, correlated multivariate, seasonal, correlated seasonal, pre-whitening, trend-free pre-whitening, Hamed-Rao, Yue-Wang, and partial Mann-Kendall workflows
Added standalone partial-Mann-Kendall APIs for one-dimensional, multidimensional, and xarray inputs
Accelerated dense clean-series hot paths with private compiled kernels while preserving validated reference-compatible results
Hybrid-Pressure Diagnostics and Interpolation Kernels: Added new compiled interpolation support in
skyborn.interpAdded modern Fortran kernels for
interp_hybrid_to_pressureandinterp_sigma_to_hybridAdded public diagnostics
skyborn.interp.pressure_at_hybrid_levelsandskyborn.interp.delta_pressure_hybrid
Improvements
Interpolation Kernel Modernization: Modernized the compiled
rcm2rgrid,rcm2points,triple2grid,grid2triple, and sharedlinint2sources to free-form Fortran.f90while keeping the public entry points unchangedInterpolation Performance and Build Cleanup: Reduced eager wrapper overhead, trimmed temporary-array use, split duplicated support-library compilation in
src/skyborn/interp/meson.build, and renamed the internalvinth2pacceleration module fromvinth2p_backendtovinth2p_kernelsScatter Stippling Enhancements: Improved
skyborn.plot.scatterso cell-interior stippling now works better for masked rectilinear grids and also supports inferred curvilinear cell geometry
Bug Fixes
Troposphere Cross-Section Support: Extended
skyborn.calc.troposphereWMO tropopause workflows to handle time-varying single-axis isobaric cross-sections such as(time, level, lat)and(time, level, lon)while preserving the correct output dimensionsrcm2rgrid xarray Coordinate Handling: Dropped incompatible 2D auxiliary source-grid coordinates such as
TLATandTLONGafter remapping instead of raising coordinate-size conflictsLegacy Missing-Value Compatibility: Restored legacy exact-hit missing-value behavior in
rcm2pointsandrgrid2rcmso unresolved fields can still fall through to the historical interpolation logic when appropriateRegression Coverage: Added focused tests for the updated Mann-Kendall, troposphere, and interpolation dispatch and wrapper paths
Version 0.3.19#
New Features
Scatter Stippling API: Added
skyborn.plot.scatterfor gridded map and profile stippling with NCL-style display-space thinning
Improvements
Unified Plotting Facade: Added
skyborn.plot.vectoras the module-oriented public facade for the curly-vector feature familyskyborn.plot.vector.curly_vectorskyborn.plot.vector.curly_vector_keyskyborn.plot.vector.CurlyVectorPlotSetskyborn.plot.vector.CurlyVectorKey
Plot Module Consolidation: Consolidated the curly-vector implementation into
skyborn.plot.vectorand narrowed theskyborn.plotpackage-root export surface to the common public function-first entry pointsDocumentation and Test Updates: Added focused plotting tests, examples, and documentation for the new scatter-stippling and
skyborn.plot.vectorworkflows
Cleanup
Removed the separate top-level implementation files
ncl_vector.py,vector_key.py, andvector_plot.pyfromskyborn.plotRemoved the temporary package-level compatibility aliases for those deleted historical modules while keeping the intended public imports unchanged
Version 0.3.18#
New Features
Renamed Curly-Vector Public API: Renamed the NCL-like vector plotting public API to:
skyborn.plot.curly_vectorskyborn.plot.curly_vector_keyskyborn.plot.CurlyVectorPlotSetskyborn.plot.CurlyVectorKey
Cleanup
Removed Legacy Plotting Names: Removed the historical public names
velovect,velovect_vertical_profile,dataset_curly_vector,curved_quiver,add_curved_quiverkey,CurvedQuiverplotSet, andCurvedQuiverLegendSplit Plotting Implementation: Split the plotting implementation into clearer modules for the core renderer, the xarray / Cartopy dataset wrapper, and the reference-vector key artist
Improvements
Replaced wildcard plotting exports with an explicit
skyborn.plotpublic APIAdded type annotations to the renamed public plotting entry points and key artist class
Updated plotting tests, examples, and documentation for the renamed
curly_vectorpublic API
Version 0.3.17#
🚀 New Features
Optional CDO Integration Through ``skyborn.cdo``: Added a compatibility namespace so users can access the standalone
skyborn-cdopackage from the main Skyborn APIImport path:
from skyborn.cdo import CdoInstall path on supported platforms:
pip install "skyborn[cdo]"Keeps
skyborn-cdoas a separate binary-distribution package instead of forcing bundled CDO dependencies onto every Skyborn installTargets the currently supported
skyborn-cdowheel platforms: Windows x86_64, Linux x86_64, and macOS arm64
Python 3.14 Support: Added official support for Python 3.14 across all platforms (Linux, macOS, Windows)
manylinux2014 Wheels: Added
manylinux2014(glibc 2.17) wheel builds for compatibility with older Linux serversSupports systems with glibc >= 2.17 (e.g., CentOS 7, RHEL 7 and equivalent)
Resolves installation failures on HPC clusters and older server environments
Wheel tag:
manylinux_2_17_x86_64/manylinux2014_x86_64
🧹 Cleanup
Removed conversion module: Deleted the
skyborn.conversionGRIB-to-NetCDF conversion module and its related tests and documentation
🐛 Bug Fixes
Aligned Modern spharm Fortran With Legacy SPHEREPACK Behavior: Fixed the remaining numerical drift between the modernized
.f90implementation and the legacy.fsources used bywindspharmGaussian Stored Vector Synthesis Fix: Corrected the
vhsgs.f90vhgsi1coefficient index layout sogridtype='gaussian'withlegfunc='stored'now matches the legacy implementationPrecision Alignment: Preserved the earlier modern Fortran fixes in
vhaec.f90andvhsec.f90to keep transform precision aligned with the legacy sourcesRegression Coverage: Added a dedicated
spharmregression test to verify Gaussian stored vector analysis/synthesis matcheslegfunc='computed'Integration Validation: Rebuilt both modern
.f90and legacy.f_spherepackextensions and verifiedspharmandwindspharmworkflows on synthetic cases and bundled example wind datasets
windspharm Performance Improvement: Improved the modern
spharmbackend used bywindspharmso common tested workflows are now roughly 15-55% faster than the legacy SPHEREPACK-backed path while keeping engineering-equivalent results.
Version 0.3.16#
🐛 Bug Fixes
Fixed Mann-Kendall xarray Dimension Handling: Resolved critical dimension processing issues in
mann_kendall_xarrayfunctionScalar Dimension Filtering: Fixed error when using
sel()orisel()operations that create scalar dimensions (size=1)Dimension Order Preservation: Corrected dimension ordering to preserve original array dimension sequence
Root Cause: Previous implementation didn’t filter scalar dimensions and relied on unstable dictionary key ordering
Solution: Added
data.sizes[d] > 1check and switched todata.dimsiteration for stable orderingImpact: Users can now safely use selective indexing (e.g.,
data.sel(lat=0)) without dimension mismatch errors
CI/CD Infrastructure Updates:
Removed macOS Intel Support: Dropped deprecated macos-13 (Intel) builds following GitHub’s architecture policy changes
Apple Silicon Focus: Now exclusively building for macos-14 (Apple Silicon) for better performance and compatibility
Simplified Deployment: Streamlined macOS build configuration by removing conditional logic
Academic Metadata Enhancement:
Enhanced .zenodo.json: Comprehensive package description now accurately covers all major features
Better Citations: Improved metadata for DOI generation including windspharm, gridfill, geostrophic wind, GPI/PI, trend analysis, and tropopause calculations
Academic Impact: More accurate representation for citation tracking and research attribution
📦 Dependencies
Bump pypa/cibuildwheel from 3.2.1 to 3.3.0
Bump actions/checkout from 5 to 6
🧪 Testing
Added comprehensive dimension handling test suite with 5 test scenarios
All 105 tests passing with 97% code coverage maintained
Validated scalar dimension filtering and dimension order preservation
Version 0.3.15#
New Features in the interp Submodule: Enhanced Interpolation and Regridding Capabilities
Added rcm2points: Nearest neighbor interpolation from curvilinear grids to arbitrary point sets
Added rcm2rgrid: Regridding from curvilinear grids to regular latitude-longitude grids
Added rgrid2rcm: Reverse regridding from regular latitude-longitude grids to curvilinear grids
Added grid_to_triple: Convert regular grids to irregular triplet representation (x, y, value)
Added triple_to_grid: Map irregular triplets to regular grids (nearest neighbor, supports search radius/spherical distance)
Version 0.3.14#
🌀 New Genesis Potential Index (GPI) Module
Tropical Cyclone Potential Intensity Calculations: Complete implementation of Emanuel’s potential intensity theory
19-25x Performance Acceleration: Achieves 19-25 times speedup compared to pure Python implementations
Multi-Dimensional Support: Handles single profiles, 3D gridded, and 4D time series data
Comprehensive Unit Handling: Automatic unit detection and conversion for temperature, pressure, and humidity
xarray Native Interface: Full integration with xarray data structures and metadata preservation
Key Features:
Potential Intensity Calculation: Maximum sustained wind speed and minimum central pressure
Smart Dimension Detection: Automatically identifies time, level, lat, and lon dimensions
Extensive Unit Support: Handles various unit formats (K/°C/°F, Pa/hPa/mb/atm, kg/kg/g/kg/%)
Usage Examples:
from skyborn.calc.GPI.xarray import potential_intensity # Automatic dimension detection and unit conversion result = potential_intensity(sst, psl, pressure_levels, temperature, mixing_ratio) # Returns Dataset with min_pressure and pi (potential intensity)
Version 0.3.13#
GPI Synchronization
Expanded tcpyPI-style diagnostics in the active PI backend:
kept
D:\Skyborn\src\skyborn\calc\GPI\fortran\tropical_cyclone_potential_intensity.f90as the sole active Fortran sourceadded bulk Fortran diagnostics for 3D and 4D fields:
t0,otl,lnpi,lneff,lndiseq, andlnCKCDremoved redundant Python compatibility helpers and restored explicit public decomposition entry points:
log_decompose_pi(...)andpi_log_decomposition(...)restored inline parameter comments/docstrings in the PI backend and refreshed the package exports
Validation against local ``tcpyPI`` sample data:
benchmark artifact:
D:\Skyborn\.codex_tmp\gpi_tcpyPI_full_diagnostics_compare.jsonscatter plot artifact:
D:\Skyborn\.codex_tmp\gpi_tcpyPI_full_diagnostics_scatter.pngfull-diagnostics benchmark: Skyborn
3.21 svstcpyPI 22.33 s(6.96xfaster)lnCKCDnow matches stably instead of degrading toNaNon failed columns
🔧 Breaking Changes
Removed Iris Support: Removed
fill_cubefunction and iris dependencies from gridfill moduleUse
skyborn.gridfill.xarray.fillfor xarray DataArrays insteadIris 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 profiles2D 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 neededSmart 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, pressureparameter orderBetter Documentation: Comprehensive examples for all supported data formats
Removed Unused Code: Cleaned up
_detect_cyclic_longitudefunction
🌊 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_windZero 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 --inplacebuilds all extensionsCross-Platform Optimization: Automatic compiler detection and platform-specific optimization flags
Smart Extension Discovery:
setup.pyautomatically finds and compiles all submodules withmeson.buildfilesBackwards 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.pymodifications required for new modulesParallel 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_correlationfunction for analyzing spatial patterns of correlation between gridded data and time seriesEnhanced Linear Regression: Improved
linear_regressionfunction with robust NaN value handling for climate data with missing observationsMulti-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
Version 0.3.12.post1#
🔧 Critical Bug Fixes
Fixed spharm Module Wheel Packaging: Resolved critical issue where compiled Fortran extensions (
_spherepack*.pydfiles) were missing from wheel distributions built via GitHub CIRoot Cause: Meson build system was installing to system paths instead of setuptools build directory
Solution: Configured meson to install directly to setuptools build directory using
--python.purelibdirand--python.platlibdirparametersImpact: Users can now install pre-compiled wheels with full spharm functionality
Improved Build System Integration: Streamlined meson-setuptools integration for better maintainability
Enhanced setup.py: Added auto-discovery of meson modules for future extensibility
Simplified Logic: Removed complex file copying mechanisms in favor of native meson installation
Better Error Handling: Improved build process reliability across platforms
Fixed macOS Wheel Building: Resolved OpenMP dependency compatibility issues
Issue:
libgomp.1.dylibrequired minimum macOS 14.0 target versionSolution: Set
MACOSX_DEPLOYMENT_TARGET=14.0in GitHub Actions workflowNote: macOS 13 users can still install from source using
pip install --no-binary=skyborn skyborn
Technical Improvements
Enhanced Meson Configuration:
Changed from
install: falsetoinstall: truewith properinstall_dirconfigurationMaintained smart copying logic for
--inplacebuildsEnhanced cross-platform compatibility
Streamlined GitHub Actions:
Updated wheel building workflow for better OpenMP library handling
Ensures compatibility with modern macOS development environments
Improved build reliability and error reporting
Validation
Successfully tested wheel building and installation across all supported platforms
Confirmed
_spherepack*.pydfiles are correctly included in wheel distributionsVerified functionality through comprehensive installation tests
Version 0.3.12#
🚀 Major Performance Enhancements
Modernized Spherical Harmonics (spharm) Submodule: Complete Fortran code modernization for significantly improved windspharm performance:
Modern Fortran Standards: Updated legacy Fortran code to modern standards with improved memory management and vectorization
~25% Performance Boost: Windspharm calculations now run approximately 25% faster across all operations
Optimized Algorithms: Enhanced spherical harmonic transformations with better numerical efficiency
Memory Optimization: Improved memory layout and access patterns for better cache performance
Cross-Platform Compatibility: Better compiler optimization support across different platforms and architectures
Maintained Accuracy: All numerical results remain identical while achieving significant speed improvements
Enhanced Build System: Streamlined compilation process for the modernized Fortran components
Python 3.13 Support: Added full compatibility with Python 3.13:
Wheel Distribution: Pre-compiled wheels now available for Python 3.13 across all supported platforms
Build System Compatibility: Updated build configuration to support Python 3.13’s new features and requirements
Cross-Platform Testing: Comprehensive testing on Linux x86_64, macOS (Intel & Apple Silicon), and Windows x64
Future-Ready: Ensures Skyborn stays current with the latest Python ecosystem developments
🔧 Technical Improvements
Fortran Modernization: - Replaced obsolete Fortran constructs with modern equivalents - Improved array bounds checking and memory safety - Enhanced numerical stability in edge cases - Better integration with F2PY for Python bindings
Performance Optimizations: - Vectorized mathematical operations in spherical harmonic calculations - Optimized Legendre polynomial computations - Reduced function call overhead in critical computation paths - Enhanced caching strategies for frequently used calculations
Platform and Build Improvements: - Extended Python Support: Now supports Python 3.9, 3.10, 3.11, 3.12, and 3.13 - Multi-Platform Wheels: Automated wheel building for Linux x86_64, macOS Intel/Apple Silicon, and Windows x64 - CI/CD Enhancements: Improved build matrix with comprehensive testing across all supported Python versions - Future ARM64 Linux Preparation: Infrastructure ready for ARM64 Linux support when Python wheel ecosystem matures
📊 Performance Benchmarks
Windspharm operation speedups compared to previous version: * Vorticity Calculation: ~25% faster execution time * Divergence Calculation: ~25% faster execution time * Helmholtz Decomposition: ~25% faster execution time * Streamfunction/Velocity Potential: ~25% faster execution time * Combined Operations: ~25% faster execution time
Version 0.3.11#
🚀 Major Performance Improvements
Optimized Mann-Kendall Trend Analysis: Completely rewritten for significantly improved performance:
Vectorized Implementation: True vectorization of Mann-Kendall S-score calculation using advanced NumPy operations
15-30x Performance Boost: Processing speeds increased from ~19 to ~1,853 grid points per second for large climate datasets
Climate Data Optimized: Specifically tuned for typical climate data dimensions (40×192×288) with ~30-second processing time
Memory Efficient: Intelligent chunking strategy with only ~25MB memory usage for full climate grids
Batch Processing: Vectorized statistical calculations for clean data series, individual handling for series with missing values
Enhanced Dask Support: Improved map_blocks implementation for distributed computing workflows
Method Parameter Updates: Replaced deprecated method=”auto” with method=”theilslopes” throughout the codebase for consistency
🔧 Technical Improvements
Simplified Import Structure: Removed conditional/backup import logic in favor of direct scipy.stats imports for improved maintainability
Code Quality Enhancements: Eliminated unused backup functions (_mk_score_backup, _theil_sen_backup) that were reducing test coverage
Consolidated Test Suite: Merged supplementary test files into main test suite for better organization and reduced maintenance overhead
Documentation Fixes: Corrected parameter names in API documentation examples (time_axis -> axis)
Advanced Vectorization: New _vectorized_mk_score() function using upper triangular indices for O(n²) to O(1) complexity reduction
Smart Memory Management: Automatic chunk size estimation based on available memory and data dimensions
Robust Error Handling: Graceful handling of edge cases and problematic time series
Comprehensive Testing: Full test suite validation with 85% code coverage maintained
🎨 UI/UX Improvements
Dark Mode Compatibility: Fixed notification color gradients for better visibility in dark themes:
Updated notification system to use deep blue to light blue gradient for improved contrast
Enhanced table responsiveness styling for better dark mode support
Documentation Accuracy: Corrected function documentation to match actual codebase:
Fixed plot module function listings to reflect actual available functions
Removed non-existent functions from documentation (plot_field, plot_vector_field, plot_streamlines, plot_contour)
Added proper documentation for actual functions (add_equal_axes, createFigure, curved_quiver, add_curved_quiverkey)
Updated windspharm interface references for accurate Sphinx linking
Standardized “XArray” to “Xarray” throughout documentation
📊 Performance Benchmarks
For typical climate data analysis scenarios:
Small datasets (50x20x30): 6.3x speedup (251 -> 1,578 points/sec)
Medium datasets (100x30x40): 14.8x speedup (74 -> 1,093 points/sec)
Large datasets (200x40x50): 31.3x speedup (19 -> 595 points/sec)
Climate grids (40×192×288): ~30 seconds total processing time
Version 0.3.10#
🚀 New Features
Advanced GridFill Module: Major expansion of grid filling capabilities for atmospheric data interpolation:
New XArray Interface: Modern skyborn.gridfill.xarray module with automatic coordinate detection
Comprehensive Tutorial: Interactive Jupyter notebook demonstrating wind field gap filling techniques
Multiple Interpolation Methods: Basic Poisson, high-precision, zonal initialization, and relaxation parameter tuning
Physical Validation: Component-wise vs direct speed filling comparison for vector wind fields
Quality Assessment: Grid coverage validation and interpolation accuracy metrics
Rossby Wave Source Analysis: Added comprehensive Rossby wave source calculation capabilities to the windspharm module:
New
rossbywavesource()method in both standard and xarray interfacesImplements the Sardeshmukh & Hoskins (1988) formulation: S = -ζₐ∇·v - v_χ·∇ζₐ
Support for custom truncation levels and Earth’s angular velocity parameters
CF-compliant metadata for xarray output with proper units and standard names
🔧 Improvements
Test File Consolidation: Merged duplicate gridfill test files for better maintainability
Better Grid Handling: Improved spherical harmonic truncation validation for different grid sizes
Documentation Updates: Enhanced gallery with new Rossby wave source visualization examples
📚 Documentation
New GridFill Tutorial: Complete interactive demonstration including:
Advanced data interpolation techniques with real atmospheric wind data
Missing data simulation and quality assessment methodologies
Component-wise vs direct approach comparison for vector fields
Publication-quality visualizations with integer colorbar formatting
Performance analysis and best practices for atmospheric applications
New Tutorial Notebooks: Added comprehensive examples for:
Rossby wave source analysis and visualization
Grid filling techniques with atmospheric data
Longitude coordinate system transformations
Enhanced Gallery: Updated with new visualization examples including:
windspharm_rossby_wave_source_truncations.pngshowing truncation effectsgridfill_missing_data_overview.pngdemonstrating gap filling scenariosgridfill_component_vs_direct_comparison.pngshowing physical constraint preservationImproved figure captions and mathematical formulations
Better integration of notebook examples
🧪 Testing
Expanded Test Coverage: Added comprehensive tests for new Rossby wave source functionality
Grid Size Validation: Enhanced parameter validation for different grid resolutions
Cross-interface Testing: Verified consistency between standard and xarray interfaces
Technical Notes
All existing functionality remains backward compatible
Enhanced error handling for grid size limitations in spherical harmonic calculations
Improved memory efficiency for large-scale atmospheric analysis
Version 0.3.9#
New Features
Enhanced Spherical Harmonics Module: Improved performance and stability for atmospheric data analysis
New Windspharm Submodule: Added comprehensive wind field analysis capabilities including:
Vector wind analysis and spherical harmonic transforms
Vorticity and divergence calculations
Stream function and velocity potential computations
Compatible with various grid types and coordinate systems
Optimized Build System: Streamlined compilation process for better cross-platform compatibility
🔧 Improvements
Better Error Handling: Enhanced error messages and debugging information
Performance Optimizations: Faster execution for large-scale atmospheric calculations
Code Quality: Improved type hints and documentation coverage
🐛 Bug Fixes
Fixed Dimension Handling in Regridding: Resolved dimension change issues in interp.regridding.py module that were causing inconsistent array shapes during interpolation operations
Fixed interpolation edge cases in atmospheric data processing
Resolved compilation issues on various platforms
Improved numerical stability in spherical harmonic transforms
📚 Documentation
Windspharm Module Documentation: Complete documentation and examples for wind field analysis functions
Added comprehensive examples and tutorials
Enhanced API reference with mathematical formulations
Improved installation and usage guides
🔧 Technical Details
Dependencies: Updated NumPy compatibility, enhanced F2PY integration, improved Fortran compiler support
Platform Support: Linux x86_64 (manylinux2014), macOS (Intel and Apple Silicon), Windows x64
Windspharm Dependencies: Added support for spherical harmonic wind analysis libraries
Version 0.3.8#
🔧 Bug Fixes
fix: remove obsolete Fortran wrapper file spherepack-f2pywrappers.f
Improved build system stability and cross-platform compatibility
Enhanced error handling and debugging information
📚 Documentation
Updated API documentation
Improved code examples and installation guides
Enhanced cross-reference documentation
Version 0.3.7#
New Features
Emergent Constraints Method: Added new emergent constraints analysis method for climate data analysis
Enhanced Documentation: Interactive particle effects entrance page
🔧 Improvements
Optimized documentation structure and user interface
Updated interactive documentation entry page with particle effects
Improved cross-platform compatibility
Enhanced code quality and test coverage
📚 Documentation
New particle effects documentation entrance page
Updated API documentation
Improved code examples and usage guides
Enhanced Sphinx Book Theme with blue color scheme
🐛 Bug Fixes
Fixed minor issues and improved code quality
Resolved documentation build issues
Enhanced error handling
Version 0.3.6#
Added emergent constraint analysis functionality
Improved GRIB to NetCDF conversion
Added comprehensive documentation with Jupyter notebooks
Enhanced statistical analysis functions