ClimateTools.jl

A collection of commonly-used tools in climate science. Basics of climate field analysis are covered, with some forays into exploratory techniques associated with climate scenarios design.
https://github.com/juliaclimate/climatetools.jl

Category: Climate Change
Sub Category: Climate Data Processing and Analysis

Keywords

bias-correction climate-analysis climate-indices climate-science julia multiple-threads netcdf-files parallel-computing timeseries

Keywords from Contributors

climate climate-change julialang oceanography geo energy-system data-assimilation automatic-differentiation spatiotemporal ecology

Last synced: about 4 hours ago
JSON representation

Repository metadata

Climate science package for Julia

README.md

ClimateTools.jl

Project Status: Active - The project has reached a stable, usable state and is being actively developed.
CI
codecov
Documentation
Documentation
GitHub release (latest SemVer)
MIT license
DOI
chat

ClimateTools.jl is a climate-analysis toolkit built on top of YAXArrays.jl for gridded observations, reanalyses, and climate-model simulations.

The package focuses on the typical climate-services workflow:

  1. Read CF-style gridded datasets as YAXArray or Cube objects.
  2. Subset them in time and space.
  3. Regrid simulations and observations onto a common domain.
  4. Bias-correct simulations with quantile mapping, extreme-value correction, or time-variability correction.
  5. Compute indicators, aggregations, and diagnostics.

ClimateTools switched to YAXArrays xmap and mapCube pattern for whole-dimension transforms and reductions instead of the custom ClimGrid.

Status

  • Active development
  • Julia 1.10+
  • Data model: YAXArray / Cube
  • YAXArrays compatibility: 0.7

Installation

using Pkg
Pkg.add("ClimateTools")

For local development:

using Pkg
Pkg.develop(path="/path/to/ClimateTools")

Quick Start

using ClimateTools
using YAXArrays

obs = Cube(open_dataset("obs.nc"))
ref = Cube(open_dataset("ref.nc"))
fut = Cube(open_dataset("fut.nc"))

qq = qqmap(obs, ref, fut; method="additive", detrend=true)
ann = annualmax(qq)

That small example already illustrates the main ClimateTools workflow: open data, bias-correct, then compute a climate summary.

For quantile mapping, qqmap is the seasonally varying method: it removes leap days, groups samples by day of year using a moving +/- window, and applies an additive or multiplicative correction that changes through the annual cycle. Use qqmap_bulk only when one full-sample correction is acceptable and seasonal variation in the bias is not important.

Main Capabilities

  • Dataset opening and subsetting with YAXArrays and DimensionalData selectors
  • Regridding on regular, curvilinear, and rotated-pole grids
  • Bias correction with qqmap, qqmap_bulk, biascorrect_extremes, and tvc
  • Aggregations such as daymean, daysum, annualmax, annualmean, and annualsum
  • A large catalog of temperature, precipitation, threshold, and spell-duration indices
  • Ensemble summaries and time-series diagnostics
  • Thermodynamic helper functions and return-level estimation

Documentation Map

The stable documentation is organized around workflows first and reference second.

  • Quick start: open data, inspect dimensions, compute a first result
  • Data and subsetting: time ranges, polygons, coordinate conventions
  • Interpolation and regridding: regular, rotated, and curvilinear workflows
  • Bias correction: method selection, assumptions, and validation
  • Building climate scenarios: observations plus simulations, interpolation, correction, diagnostics, and derived indicators
  • Indices and aggregations: grouped by climate-analysis task
  • API overview: exported functions by category

Climate Scenarios

One of the primary use cases for ClimateTools is climate-scenario construction. A typical scenario workflow is:

  1. Choose a reference observation or reanalysis dataset.
  2. Open one or more model simulations for a historical and future period.
  3. Align calendars, time windows, and grids.
  4. Interpolate observations and simulations to a common grid if necessary.
  5. Bias-correct the model series using a method suited to the variable and objective.
  6. Validate the corrected fields and compute indicators, maps, or summary tables.

The documentation includes a dedicated guide for this workflow.

Documentation

See the built documentation at:


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 4 months ago

Total Commits: 1,280
Total Committers: 20
Avg Commits per committer: 64.0
Development Distribution Score (DDS): 0.103

Commits in past year: 2
Committers in past year: 1
Avg Commits per committer in past year: 2.0
Development Distribution Score (DDS) in past year: 0.0

Name Email Commits
Philippe Roy b****r@y****a 1148
DominiqueCaron d****1@u****a 69
github-actions[bot] 4****] 17
Trevor James Smith t****h@l****m 11
CompatHelper Julia c****y@j****g 9
DL2594 r****4@h****a 3
Philippe p****y@p****n 3
Pietro Monticone 3****e 3
Roy, Philippe [4] R****4@h****m 3
Tony Kelman t****y@k****t 2
femtocleaner[bot] f****] 2
Éloïse Nolet-Gravel e****l@p****a 2
Elliot Saba s****t@g****m 1
Trevor James Smith t****s@m****l 1
Philippe Roy r****e@o****a 1
Gabriel Gobeil h****9@i****a 1
Fidel Thomet me@f****m 1
Julia TagBot 5****t 1
Miles Lubin m****n@g****m 1
gaelforget g****t@m****u 1

Committer domains:


Issue and Pull Request metadata

Last synced: 5 months ago

Total issues: 49
Total pull requests: 195
Average time to close issues: 7 months
Average time to close pull requests: 5 months
Total issue authors: 17
Total pull request authors: 14
Average comments per issue: 5.84
Average comments per pull request: 0.75
Merged pull request: 126
Bot issues: 0
Bot pull requests: 91

Past year issues: 0
Past year pull requests: 3
Past year average time to close issues: N/A
Past year average time to close pull requests: about 8 hours
Past year issue authors: 0
Past year pull request authors: 1
Past year average comments per issue: 0
Past year average comments per pull request: 0.0
Past year merged pull request: 2
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/juliaclimate/climatetools.jl

Top Issue Authors

  • Balinus (27)
  • Zeitsperre (5)
  • gaelforget (3)
  • juliohm (1)
  • njdepsky (1)
  • JuliaTagBot (1)
  • joa-quim (1)
  • cvitolo (1)
  • ghost (1)
  • rfourquet (1)
  • dmetivie (1)
  • attobot (1)
  • dk-zen (1)
  • natgeo-wong (1)
  • Datseris (1)

Top Pull Request Authors

  • github-actions[bot] (89)
  • Balinus (80)
  • DominiqueCaron (11)
  • Zeitsperre (3)
  • pitmonticone (2)
  • femtocleaner[bot] (2)
  • tkelman (2)
  • gaelforget (2)
  • houton199 (1)
  • mlubin (1)
  • staticfloat (1)
  • fidelthomet (1)
  • elnol (1)
  • JuliaTagBot (1)

Top Issue Labels

  • enhancement (27)
  • help wanted (7)
  • bug (4)
  • deprecate (3)
  • good first issue (2)
  • Polls (1)
  • question (1)
  • upstream (1)

Top Pull Request Labels

  • bug (1)
  • enhancement (1)

Package metadata

juliahub.com: ClimateTools

Climate science package for Julia

  • Homepage: https://juliaclimate.github.io/ClimateTools.jl/stable/
  • Documentation: https://docs.juliahub.com/General/ClimateTools/stable/
  • Licenses: ISC
  • Latest release: 0.24.1 (published almost 3 years ago)
  • Last Synced: 2026-01-11T04:36:02.940Z (4 months ago)
  • Versions: 31
  • Dependent Packages: 1
  • Dependent Repositories: 0
  • Downloads: 0 Total
  • Rankings:
    • Stargazers count: 6.707%
    • Forks count: 9.348%
    • Dependent repos count: 9.94%
    • Average: 12.241%
    • Dependent packages count: 22.97%

Dependencies

REQUIRE julia
  • ArgCheck 1.0.0
  • AxisArrays 0.3.0
  • BinDeps 0.4
  • CondaBinDeps *
  • Images 0.17.3
  • Interpolations 0.8.0
  • IterTools 1.1.0
  • NCDatasets 0.9.2
  • NaNMath 0.3.2
  • NetCDF 0.7.1
  • Polynomials 0.5.1
  • ProgressMeter 0.6.0
  • PyCall 1.90.0
  • PyPlot 2.6.3
  • Reexport 0.2.0
  • Shapefile 0.4.0
  • julia 0.7
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/ci-nightly.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/ci.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/docs.yml actions
  • actions/checkout v2 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-docdeploy releases/v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/CompatHelper.yml actions

Score: 7.855544677915663