Changelog¶
Unreleased¶
Added¶
xrtoolz.metrics.array— Tier A array kernels (D11) for the canonical pixel metrics:mse,rmse,mae,bias,nrmse,correlation,r2_score. Tier B (xrtoolz.metrics._src.pixel) now delegates viaxr.apply_ufuncrather than reimplementing the math.xrtoolz.transforms.array— Tier A array kernels (D11) for the canonical Fourier entry points:fft,ifft,power_spectrum. Numpy-only computational core; Tier B (xrft-backed) is unchanged.xrtoolz.calc.array— Tier A array kernels (D11) for the canonical finite-difference primitives:partial,gradient(2nd-order central, uniform spacing). Numpy-only core complementing thefinitediffx-backed Tier B.xrtoolz.interpolate.refine_2d— scikit-image-backed 2-D resize for bicubic/biquintic refinement;Refine(order=...)opts into this path.tests/test_tier_contract.py— three-tier contract harness (Tier A reachable, Tier B numerically agrees with Tier A, Tier C numerically agrees with Tier B) for the metrics/transforms/calc pilots.xrtoolz.transforms.operators— Tier C wrappers for the encoder primitives:CyclicalEncode,FourierFeatures,RandomFourierFeatures,PositionalEncoding,EncodeTimeCyclical,EncodeTimeOrdinal,TimeRescale,TimeUnrescale(#95).xrtoolz.interpolatetemporal helpers —resample_time(..., method="interpolate")for time upsampling andfillnan_climatology/FillNaNClimatologyfor climatological gap fill.
Removed¶
- Value-resampling primitives moved out of
xrtoolz.geointo the newxrtoolz.interpolatepackage (D8/D12, Epic F3). No deprecation shim — the package is pre-1.0 and has no external users. xrtoolz.geo.{fillnan_spatial, fillnan_temporal, fillnan_rbf, resample_time, coarsen, refine, bin_2d, histogram_2d, points_to_grid, Grid, Period, SpaceTimeGrid}→xrtoolz.interpolate.<same-name>xrtoolz.geo.operators.{FillNaNSpatial, FillNaNTemporal, ResampleTime}→xrtoolz.interpolate.operators.<same-name>
Added¶
xrtoolz.interpolate— value-resampling package, sub-organized by source/target structure (gap_fill,grid_to_grid,resample,binning,points_to_grid) with placeholder submodules (coord_remap,smooth,downscale,grid_to_points) for upcoming work.xrtoolz.interpolate.operators—Bin2D,Coarsen,FillNaNRBF,FillNaNSpatial,FillNaNTemporal,Histogram2D,PointsToGrid,Refine,ResampleTime.xrtoolz.inference— Layer-1 wrappers for trained ML models (D4, Epic F4):ModelOp(framework-agnostic, duck-typed dispatch on a configurable method, xarray↔array marshalling, leading non-feature dims supported by flattening into a single(N, F)model call), plusSklearnModelOpandJaxModelOpthin subclasses.sklearn,jax,equinox, andtorchare never imported at top level — backend imports are lazy. Not auto-exported fromxrtoolz; opt-in viafrom xrtoolz.inference import ModelOp.
Deprecated¶
xrtoolz.geo.{cyclical_encode, fourier_features, positional_encoding, random_fourier_features, lat_90_to_180, lat_180_to_90, lon_180_to_360, lon_360_to_180, encode_time_cyclical, encode_time_ordinal, time_rescale, time_unrescale}— moved toxrtoolz.transforms.encoders(D8). The legacy paths still resolve via PEP-562 with aDeprecationWarningfor one release; removal scheduled for the next minor.
0.4.0 (2026-10-30)¶
⚠ BREAKING CHANGES¶
- the xrtoolz-grad (xrgrad) distribution is gone, with no shim (PL-Q5): use from xrops import grad.
- xrops: the xrtoolz-core distribution and the xrcore import are gone, with no shim (PL-Q5): use from xrops import Operator and from pipekit import Signature.
Code Refactoring¶
- delete xrtoolz-grad; xrops.grad is the calculus (#382) (82f6fa7)
- xrops: fold xrcore into xrops._src and delete xrtoolz-core (#380) (756fc30)
0.3.0 (2026-10-29)¶
⚠ BREAKING CHANGES¶
- xrops: knn regridding, kde_to_grid, xrops.learn and the decomposition presets need pip install 'xrtoolz-ops[sklearn]'.
- the xrtoolz-einx (xreinx) and xrtoolz-sklearn (xrsklearn) distributions are gone, with no shim (PL-Q5).
Code Refactoring¶
- delete xrtoolz-einx and xrtoolz-sklearn (#376) (6b51221)
- xrops: a light base install without einx or scikit-learn (#377) (2b9bd37)
0.2.0 (2026-10-29)¶
⚠ BREAKING CHANGES¶
- products: install xrtoolz-products and import xrproducts; xrreader no longer exists, and the cache env var is XRPRODUCTS_CACHE.
Code Refactoring¶
0.1.0 (2026-10-29)¶
⚠ BREAKING CHANGES¶
- xrops: import the operators from xrops (pip install xrtoolz-ops); xrtoolz.* paths, xrtoolz.Operator/Signature/Sequential and the calc, einx, signature and geo metric/encoder shims are gone.
Code Refactoring¶
0.0.6 (2026-10-27)¶
Bug Fixes¶
0.0.5 (2026-10-05)¶
Features¶
- metrics: Cartesian + explicit-Coriolis physical-balance metrics (#339) (c14280b), closes #323
- ocn: thread dims / geometry / explicit Coriolis through kinematics (#338) (c8429bd), closes #322
- viz: HovmollerPanel — time × spatial-axis section (#344) (802f59e), closes #120
- viz: projection-free CartesianMapPanel + EnergyTimeSeriesPanel (#341) (57dc910), closes #325
- viz: SpatialDiffPanel — (pred, ref, pred - ref) snapshot triptych (#342) (b19e725), closes #117
- viz: TimeSeriesErrorPanel — multi-method skill scores over time (#343) (5eb4bb4), closes #118
0.0.4 (2026-09-24)¶
Features¶
0.0.3 (2026-09-18)¶
Features¶
- atm: met diagnostics and atm.gas.ch4 column primitives (#306) (f3f35d4)
- atm: open_wrfout — WRF-ARW NetCDF to CF Dataset (#307) (7a37aa8)
- geo: utm_crs_for + local_frame — UTM zone from an origin and a metric local frame (#302) (1588dd3)
- interpolate: regrid_conservative — area-weighted regrid onto an arbitrary rectilinear target (#305) (201230b)
- interpolate: remap_axis with per-column source coordinates and extrapolation policy (#304) (4a47b6f)
- reader: add LocalL2Source with TROPOMI / EMIT / GHGSat methane L2 openers (#303) (d04768e)
0.0.2 (2026-08-17)¶
Features¶
- fold xrreader into the workspace as xrtoolz-reader (#259) (aa0859b)
- geo,interpolate: add spatial_mosaic, reproject_match and Delaunay swath gridding (#260) (e80663c)
- grad,ocn: mixed geometry, time derivatives, periodic boundaries, 3-D advection (#282) (afef8a3)
0.0.1 (2026-08-13)¶
Features¶
0.1.0 (2026-06-10)¶
⚠ BREAKING CHANGES¶
- xrtoolz.data and xrtoolz.types are removed; import the readers and the typed request/Variable API from xrreader / xrreader.types.
- flip basis encoders + dm_test to DataArray-native (PR δ) (#217)
- remove public array tier, collapse to two-tier contract (#215)
- flip transforms + geo single-field primitives to DataArray-positional (PR γ) (#209)
- flip metrics + interpolate primitives to DataArray-positional (PR β) (#208)
Features¶
- cds: pin insitu land profile to dataset version 3_0_0 (370bb1d)
- core: xarray-aware Operator with DataTree dispatch (PR α) (#206) (f16ddaa)
- einx: implement xrtoolz.einx labeled named-tensor bridge (PR 1/3) (#218) (c2340a7)
- flip basis encoders + dm_test to DataArray-native (PR δ) (#217) (7bcbbdd)
- flip metrics + interpolate primitives to DataArray-positional (PR β) (#208) (90d4173)
- flip transforms + geo single-field primitives to DataArray-positional (PR γ) (#209) (9fab49f)
- metrics,geo: nrmse_score + get_dataset_resolution (OB-1.5, closes #136) (#210) (16b322d)
- metrics: instance-segmentation matching + AP / F1 (#216) (bad16a3)
Code Refactoring¶
- move data + types to xrreader (P0 xrtoolz side) (#225) (8384e25)
- remove public array tier, collapse to two-tier contract (#215) (0c39b88)
0.0.8 (2026-05-22)¶
⚠ BREAKING CHANGES¶
- rename xr_toolz → xrtoolz, depend on pipekit for composition core (#203)
Features¶
- geo: add 1-D wavelet analysis (Torrence-Compo + Liu rectified power) (#197) (4aeabfe)
- rename xr_toolz → xrtoolz, depend on pipekit for composition core (#203) (3e3d8a4)
Bug Fixes¶
0.0.7 (2026-05-09)¶
Features¶
- geo: add 2-D Morlet wavelet wavenumber spectra (#176) (834ecfc)
- geo: add RegionSpec registry and regionmask-backed regional subsetting (#173) (8aab417)
- geo: add rename_to_cf_standard_names / rename_from_cf_standard_names + operators (#172) (49f03e9)
- interpolate: add biharmonic NaN inpainting (#189) (4f10dbb)
- interpolate: add cosine-latitude conservative coarsen (#186) (cf01cfc)
- interpolate: add grid-to-points sampling (#191) (cafeea5)
- interpolate: add kNN IDW interpolation (#183) (6752c97)
- interpolate: add mask morphology cleanup operations (#188) (b6e4674)
- interpolate: add NaN-aware Gaussian smoothing (#190) (0d0c596)
- interpolate: add skimage-backed 2D refine (#187) (09b00cb)
- interpolate: add sklearn-backed KDE points-to-grid (#184) (62961b6)
- interpolate: add temporal interpolation and climatology gap fill (#185) (8c6fcdf)
- metrics: add composite RMSE/PSD helpers and 2-D resolved-scale summary (#175) (95ddab0)
- transforms, viz: add rotary spectrum + RegionScoreBarPanel + RotaryPolarizationPanel (#174) (aa3bd75)
- transforms: add KE/enstrophy spectral flux + integral scale, slope fit, compensated spectrum (#171) (e8135f8)
0.0.6 (2026-05-08)¶
Features¶
- core: signature protocol + sequential.summary / graph.summary (#140) (b6d1996)
- geo: add decode_cf_time, validate_time, check_dataset_coords + operators (#169) (8307ee8)
- interpolate: add FIR filters and along-track wavelength bandpass (#166) (507355e)
- interpolate: add Laplacian NaN gap fill primitive (#170) (7e298ae)
- metrics: add gap-tolerant segmented along-track PSD score (#165) (e6e82ba)
- metrics: add ODC-1.4 residual binning, regional scoring, and DM test (#168) (db8e6c0)
- ocn: make
lweoptional incalculate_ssh_alongtrack+ document MDT-regrid pattern (#167) (852e1b7) - transforms: sklearn integration (SklearnOp, accessor, nan-mask) (#139) (690363f)
0.0.5 (2026-05-05)¶
Features¶
- foundations bundle — operators, viz utilities, metric helpers (#131) (79c24fc)
- viz: v1.5 PSD plot panels + savefig/show on all panels (#129) (1b34e1d)
0.0.4 (2026-05-05)¶
Features¶
- core: operator combinators + ocean tutorial notebooks (#115) (b1e4cb3)
- metrics: add V1.3 FrequencyBandSkill + V1.4 demo + pipeline ops (#112) (0d6f3f3)
0.0.3 (2026-05-04)¶
Features¶
- interpolate: coord_remap submodule (F3.2) (#110) (9a5ab15)
- interpolate: smooth submodule (F3.3) (#109) (d331b4c)
- metrics: add v1.1 SkillByLeadTime + v1.2 EvaluateByRegion (#103) (19741d2)
- metrics: add v4 process-evaluation (physical metrics + budgets) (#106) (b46582a)
- metrics: land V2 data-representation metrics (structural / probabilistic / distributional / masked) (#104) (b64ac6f)
- viz: add v6 validation panels (viz.validation) (#107) (263fbdf)
0.0.2 (2026-04-30)¶
Features¶
- inference: modelop + Sklearn/Jax wrappers (Epic F4) (#100) (e00db49)
- transforms: tier c encoder operators (#95) (#99) (a28f15f)
0.0.1 (2026-04-30)¶
Features¶
- add xrtoolz.types primitives and xrtoolz.data downloaders (#8) (06d2e7b)
- data: aemet OpenData adapter + Station type + GeoParquet archive (#11) (b3db90f)
- data: cds in-situ surface-land / surface-marine adapter + archive (#12) (fc80abb)
- seed xrtoolz with core, geo primitives, ocn physics, and L1 operators (#7) (424ec89)
- transforms: xrtoolz.transforms + utils.XarrayEstimator (#15) (fd92ccd)
- xrtoolz.calc finite-diff primitives + ocn.kinematics refactor (#14) (a828788)
Changelog¶
All notable changes to this project will be documented in this file.
See Conventional Commits for commit guidelines.