Skip to main content

Pre-compiled CDO (Climate Data Operators) binary distributed as a Python package — backend for Skyborn

Project description

skyborn-cdo

Pre-compiled CDO (Climate Data Operators) distributed as a pip-installable Python package.

This is a backend module for Skyborn — an atmospheric science research toolkit.

About CDO 2.6.0

This package bundles CDO 2.6.0 with all required dependencies. For detailed CDO documentation and release information, see:

Installation

pip install skyborn-cdo

This installs a pre-compiled CDO binary along with all required libraries (NetCDF, HDF5, ecCodes, FFTW3, PROJ, UDUNITS2). No system-level CDO installation needed.

Optional dependencies

# xarray support (returnXArray)
pip install skyborn-cdo[xarray]

# Test dependencies
pip install skyborn-cdo[test]

Supported platforms

Platform Architecture Status
Linux x86_64 ✅ Supported
macOS arm64 (Apple Silicon) ✅ Supported
Windows x86_64 ✅ Supported

Quick Start

from skyborn_cdo import Cdo

cdo = Cdo()
print(cdo.version())  # CDO 2.6.0

Usage

skyborn-cdo provides two API styles — command-line style and method-call style — both covering all 900+ CDO operators.

1. Command-line Style — cdo()

Pass a full CDO command string, just like typing in a terminal. The leading cdo prefix is optional.

from skyborn_cdo import Cdo

cdo = Cdo()

# With 'cdo' prefix (copy/paste from terminal)
cdo("cdo -O mergetime in1.nc in2.nc out.nc")

# Without 'cdo' prefix (also valid)
cdo("mergetime in1.nc in2.nc out.nc")

# Complex command with options
cdo("-O -f nc4 sellonlatbox,0,30,0,30 input.nc output.nc")

# Chained operators (CDO pipe syntax)
cdo("-O -f nc4 -fldmean -sellonlatbox,70,140,10,55 input.nc output.nc")
cdo("-O -f nc4 -sp2gpl -setgridtype,regular input.nc output.nc")

2. Method-call Style — cdo.operator()

Each of CDO's 900+ operators is available as a Python method via dynamic dispatch.

from skyborn_cdo import Cdo

cdo = Cdo()

# Basic: operator(parameters, input=..., output=...)
cdo.sellonlatbox("0,30,0,30", input="input.nc", output="output.nc")

# No parameters needed
cdo.copy(input="input.nc", output="output.nc")
cdo.topo(output="topo.nc")

# Multiple input files (space-separated string or list)
cdo.mergetime(input="in1.nc in2.nc in3.nc", output="merged.nc")
cdo.mergetime(input=["in1.nc", "in2.nc", "in3.nc"], output="merged.nc")

# Wildcard / glob patterns (automatically expanded)
cdo.mergetime(input="data_2020*.nc", output="merged.nc")
cdo.mergetime(input="/path/to/data_20200?.nc", output="merged.nc")
cdo.ensmean(input="ensemble_*.nc", output="ensmean.nc")

Wildcards: Both cdo.operator(input="*.nc") and cdo("mergetime *.nc out.nc") support glob patterns (*, ?, [...]). Files are sorted alphabetically before being passed to CDO.

3. Options

CDO options like -O (overwrite), -s (silent), -f nc4 (output format) can be set globally or per-call.

# Global options — applied to every command
cdo = Cdo(options="-O -s")
cdo.copy(input="in.nc", output="out.nc")

# Per-call options — merged with global options
cdo = Cdo()
cdo.copy(input="in.nc", output="out.nc", options="-O -f nc4")

# Common options:
#   -O          Overwrite existing output files
#   -s          Silent mode (suppress informational messages)
#   -f nc4      Output in NetCDF4 format
#   -f nc4c     Output in NetCDF4 classic format
#   -f grb2     Output in GRIB2 format
#   -P 4        Use 4 threads for parallel processing

⚠️ Important: CDO does not overwrite existing output files by default. If the output file already exists, CDO will raise an error: Outputfile out.nc already exists! Use -O to enable overwriting: cdo = Cdo(options="-O") or pass options="-O" per call.

4. Info Operators (return text output)

Operators like info, sinfo, griddes, showname, etc. return their text output as a string instead of writing to a file.

cdo = Cdo()

# File information
info = cdo.sinfo(input="input.nc")
print(info)

# Grid description
grid = cdo.griddes(input="input.nc")
print(grid)

# Show variable names
names = cdo.showname(input="input.nc")
print(names)

# Show timestamps
dates = cdo.showdate(input="input.nc")
print(dates)

# Number of time steps / levels / variables
print(cdo.ntime(input="input.nc"))
print(cdo.nlevel(input="input.nc"))
print(cdo.nvar(input="input.nc"))

5. Return as xarray / netCDF4 / numpy

# Return as xarray.Dataset (requires: pip install skyborn-cdo[xarray])
ds = cdo.sellonlatbox("0,30,0,30", input="input.nc", returnXArray=True)
print(ds)

# Return as netCDF4.Dataset (requires: pip install netCDF4)
nc = cdo.copy(input="input.nc", returnCdf=True)
print(nc.variables.keys())

# Return as numpy array (first variable)
arr = cdo.copy(input="input.nc", returnArray=True)
print(arr.shape)

# Return as masked numpy array
marr = cdo.copy(input="input.nc", returnMaArray=True)

6. Chained Operators (Pipeline)

CDO supports nesting operators in a single command. This is the most powerful feature for building complex processing pipelines.

Command-line style (recommended for complex chains)

cdo = Cdo(options="-O")

# Remapping → Spatial selection → Field mean
cdo("-f nc4 -fldmean -sellonlatbox,70,140,10,55 -remapbil,r180x90 input.nc output.nc")

# Spectral mode conversion pipeline
cdo("-f nc4 -sp2gpl -setgridtype,regular input_spectral.nc output_regular.nc")

# Arithmetic pipeline
cdo("-addc,273.15 -mulc,0.01 input.nc output.nc")

# Conditional masking
cdo("-ifthen -gtc,0 topo.nc topo.nc positive_topo.nc")

Method-call style (using input as sub-command)

cdo = Cdo(options="-O")

# Use CDO operator syntax in the input parameter for chaining
cdo.remapbil("r360x180", input="-mergetime in1.nc in2.nc in3.nc", output="out.nc")
cdo.fldmean(input="-sellonlatbox,70,140,10,55 input.nc", output="mean.nc")
cdo.timmean(input="-sellonlatbox,0,360,-30,30 -remapbil,r180x90 input.nc", output="out.nc")

7. Common Operator Examples

Spatial Operations

cdo = Cdo(options="-O")

# Select region by longitude/latitude box
cdo.sellonlatbox("70,140,10,55", input="global.nc", output="china.nc")

# Select by grid index box
cdo.selindexbox("1,100,1,80", input="input.nc", output="subset.nc")

# Remap to regular grid
cdo.remapbil("r360x180", input="input.nc", output="1deg.nc")     # Bilinear
cdo.remapcon("r360x180", input="input.nc", output="1deg.nc")     # Conservative
cdo.remapnn("r360x180", input="input.nc", output="1deg.nc")      # Nearest neighbor
cdo.remapdis("r360x180", input="input.nc", output="1deg.nc")     # Distance weighted

# Zonal / Meridional mean
cdo.zonmean(input="input.nc", output="zonmean.nc")
cdo.mermean(input="input.nc", output="mermean.nc")

# Invert latitude direction
cdo.invertlat(input="input.nc", output="flipped.nc")

Time Operations

cdo = Cdo(options="-O")

# Time averaging
cdo.timmean(input="input.nc", output="time_avg.nc")
cdo.timstd(input="input.nc", output="time_std.nc")
cdo.timmin(input="input.nc", output="time_min.nc")
cdo.timmax(input="input.nc", output="time_max.nc")

# Monthly / Seasonal / Yearly statistics
cdo.monmean(input="input.nc", output="monthly_mean.nc")
cdo.seasmean(input="input.nc", output="seasonal_mean.nc")
cdo.yearmonmean(input="input.nc", output="yearly_mean.nc")

# Select time steps
cdo.selyear("2020", input="input.nc", output="year2020.nc")
cdo.selmon("1,2,3", input="input.nc", output="jan_mar.nc")
cdo.seltimestep("1/10", input="input.nc", output="first10.nc")

# Set time axis
cdo.settaxis("2020-01-15,12:00,1mon", input="input.nc", output="redate.nc")

# Merge time series
cdo.mergetime(input="jan.nc feb.nc mar.nc", output="q1.nc")

# Split by month / year
cdo.splitmon(input="input.nc", output="monthly_")
cdo.splityear(input="input.nc", output="yearly_")

# Detrend
cdo.detrend(input="input.nc", output="detrended.nc")

Field Statistics

cdo = Cdo(options="-O")

# Field (spatial) statistics
cdo.fldmean(input="input.nc", output="fldmean.nc")
cdo.fldstd(input="input.nc", output="fldstd.nc")
cdo.fldmin(input="input.nc", output="fldmin.nc")
cdo.fldmax(input="input.nc", output="fldmax.nc")
cdo.fldsum(input="input.nc", output="fldsum.nc")

Arithmetic

cdo = Cdo(options="-O")

# Scalar operations
cdo.mulc("2.0", input="input.nc", output="doubled.nc")
cdo.addc("273.15", input="celsius.nc", output="kelvin.nc")
cdo.divc("100", input="input.nc", output="divided.nc")
cdo.subc("273.15", input="kelvin.nc", output="celsius.nc")

# Unary operations
cdo.abs(input="input.nc", output="absolute.nc")
cdo.sqrt(input="positive.nc", output="sqrt.nc")

# Two-file operations
cdo.add(input="a.nc b.nc", output="sum.nc")
cdo.sub(input="a.nc b.nc", output="diff.nc")
cdo.mul(input="a.nc b.nc", output="product.nc")
cdo.div(input="a.nc b.nc", output="ratio.nc")

# Custom expression
cdo.expr("'new_var=temp*2+precip;'", input="input.nc", output="computed.nc")

Vertical Level Operations

cdo = Cdo(options="-O")

# Select specific levels
cdo.sellevel("85000,50000,20000", input="input.nc", output="levels.nc")

# Interpolate to new levels
cdo.intlevel("90000,85000,70000,50000,30000", input="input.nc", output="interp.nc")

# Show levels
print(cdo.showlevel(input="input.nc"))

Grid Type Conversion & Spectral Transforms

cdo = Cdo(options="-O")

# Convert grid type
cdo.setgridtype("regular", input="input.nc", output="regular.nc")

# Spectral ↔ Grid-point transforms
cdo.sp2gpl(input="spectral.nc", output="gaussian_linear.nc")
cdo.sp2gp(input="spectral.nc", output="gaussian.nc")
cdo.gp2sp(input="gaussian.nc", output="spectral.nc")

# Complex chain: spectral to regular grid in NetCDF4
cdo("-O -f nc4 -sp2gpl -setgridtype,regular spectral.nc regular.nc")

Format Conversion

cdo = Cdo(options="-O")

# NetCDF formats
cdo.copy(input="input.nc", output="out.nc", options="-f nc4")     # NetCDF4
cdo.copy(input="input.nc", output="out.nc", options="-f nc4c")    # NetCDF4 Classic
cdo.copy(input="input.nc", output="out.nc", options="-f nc2")     # NetCDF 64-bit

# GRIB formats
cdo.copy(input="input.nc", output="out.grb", options="-f grb")    # GRIB1
cdo.copy(input="input.nc", output="out.grb2", options="-f grb2")  # GRIB2

Copy vs Clone — Understanding File Size Changes

When using copy operator, output file may be significantly larger than input file. This is expected behavior and not a bug.

Why does copy increase file size?

The copy operator:

  1. Reads and decompresses all data from input file into memory
  2. Writes uncompressed to output file (by default CDO does not apply compression)

Example: A compressed NetCDF4 file with deflate compression may be 28 MB. After cdo.copy(), the output becomes 47 MB (uncompressed original data).

Solutions:

Use clone for file duplication (no re-compression):

cdo = Cdo(options="-O")

# Fastest and smallest: clone preserves compression, no decode/encode
cdo.clone(input="compressed_file.nc", output="output.nc")

Use -z zip option to re-compress with deflate:

cdo = Cdo(options="-O")

# Force deflate compression (level 1, matches typical NetCDF4 default)
cdo.copy(input="input.nc", output="output.nc", options="-z zip")

# Specify compression level (1=low/fast, 9=high/slow)
cdo.copy(input="input.nc", output="output.nc", options="-z zip_5")

# Both command styles work
cdo("-O -z zip copy input.nc output.nc")

Difference between copy vs clone:

Operator Compression Speed Use Case Output Size
copy Default (none) Decodes all data Data inspection, reformat Larger
copy -z zip Deflate (level 1) Slower (re-compress) Archive, storage Smaller
clone Preserves original Fast (no decode) Direct duplication Same as input
cdo = Cdo(options="-O")

# Input file: data.nc (28.2 MB, compressed with deflate)

# ❌ Don't do this (output: 47.5 MB)
cdo.copy(input="data.nc", output="output.nc")

# ✅ Do this instead - with compression
cdo.copy(input="data.nc", output="output.nc", options="-z zip")  # output: ~28 MB

# ✅ Or use clone for fastest/smallest direct copy
cdo.clone(input="data.nc", output="output.nc")  # output: ~28 MB (identical)

Variable Metadata

cdo = Cdo(options="-O")

# Rename variable
cdo.chname("old_name,new_name", input="input.nc", output="renamed.nc")

# Set attributes
cdo.setattribute("varname@units=kg/m2", input="input.nc", output="units.nc")

# Set missing value
cdo.setmissval("-999", input="input.nc", output="newmiss.nc")

Ensemble Operations

cdo = Cdo(options="-O")

# Ensemble mean (multiple realizations)
cdo.ensmean(input="run_*.nc", output="ensemble_mean.nc")

# Ensemble standard deviation
cdo.ensstd(input="run_*.nc", output="ensemble_std.nc")

# Ensemble variance
cdo.ensvar(input="run_001.nc run_002.nc run_003.nc", output="ensemble_var.nc")

# Ensemble sum
cdo.enssum(input=["member_1.nc", "member_2.nc", "member_3.nc"], output="ens_sum.nc")

# Ensemble percentiles
cdo.enspctl("25,50,75", input="run_*.nc", output="ensemble_quartiles.nc")

Grid Information and Modification

cdo = Cdo(options="-O")

# Calculate grid cell areas
cdo.gridarea(input="input.nc", output="grid_areas.nc")

# Calculate grid weights (for weighted averaging)
cdo.gridweights(input="input.nc", output="weights.nc")

# Set grid type
cdo.setgridtype("regular", input="curvilinear.nc", output="regular.nc")

# Show grid description
print(cdo.griddes(input="input.nc"))

# Invert latitude direction (flip N-S)
cdo.invertlat(input="input.nc", output="flipped.nc")

Advanced Statistical Operations

cdo = Cdo(options="-O")

# Field percentiles
cdo.fldpctl("10,50,90", input="input.nc", output="field_percentiles.nc")

# Field range (max - min)
cdo.fldrange(input="input.nc", output="field_range.nc")

# Time series percentiles
cdo.timpctl("25,50,75", input="timeseries.nc", output="time_percentiles.nc")

# Running mean (e.g., 5-timestep window)
cdo.runmean("5", input="input.nc", output="smoothed.nc")

# Trend removal
cdo.detrend(input="input.nc", output="detrended.nc")

8. Error Handling

skyborn-cdo captures all CDO errors and raises them as CdoError exceptions with full diagnostic information.

from skyborn_cdo import Cdo, CdoError

cdo = Cdo()

try:
    cdo.sellonlatbox("0,30,0,30", input="nonexistent.nc", output="out.nc")
except CdoError as e:
    print(f"Error: {e}")
    print(f"Return code: {e.returncode}")
    print(f"CDO stderr: {e.stderr}")
    print(f"Command: {e.cmd}")

Common errors:

  • File not found: Open failed on >file.nc< No such file or directory
  • Output exists: Outputfile out.nc already exists! → Add -O option
  • Invalid parameters: Float parameter >abc< contains invalid character
  • Timeout: CDO command timed out after 60s → Increase timeout

9. Timeout

# Global timeout for all commands (seconds)
cdo = Cdo(timeout=300)

# Per-call timeout override
cdo.remapcon("r3600x1800", input="input.nc", output="hires.nc", timeout=600)
cdo("cdo -O remapcon,r3600x1800 input.nc hires.nc", timeout=600)

10. Debug Mode

# Print executed commands and CDO stderr output
cdo = Cdo(debug=True)
cdo.sellonlatbox("0,30,0,30", input="input.nc", output="output.nc")
# [skyborn-cdo] Running: /path/to/cdo -sellonlatbox,0,30,0,30 input.nc output.nc
# [skyborn-cdo] stderr: cdo    sellonlatbox: ...

11. Getting Help

Python API — cdo.help()

from skyborn_cdo import Cdo

cdo = Cdo()

# Help for a specific operator
print(cdo.help("sellonlatbox"))
print(cdo.help("mergetime"))
print(cdo.help("remapbil"))

# General usage summary
print(cdo.help())

# List all available operators
print(cdo.operators())

# Check if an operator exists
cdo.has_operator("sellonlatbox")  # True

CLI — skyborn-cdo -h / --help

# Show general help
skyborn-cdo --help

# Show help for a specific CDO operator (passed to CDO directly)
skyborn-cdo -h sellonlatbox
skyborn-cdo -h mergetime
skyborn-cdo -h remapbil

# List all operators
skyborn-cdo --operators

# Also works via python -m
python -m skyborn_cdo --help
python -m skyborn_cdo -h sellonlatbox

CLI

The package provides a skyborn-cdo command-line tool (also available as python -m skyborn_cdo):

# Show installation info and CDO version
skyborn-cdo --info

# Show help
skyborn-cdo --help

# Operator-level help (forwarded to CDO)
skyborn-cdo -h sellonlatbox

# List all operators
skyborn-cdo --operators

# Pass-through to CDO (any CDO command works)
skyborn-cdo -O -f nc4 copy input.nc output.nc
skyborn-cdo mergetime in1.nc in2.nc out.nc
skyborn-cdo -O -f nc4 -sp2gpl -setgridtype,regular spectral.nc regular.nc

CDO Operators

skyborn-cdo provides access to 938 CDO operators covering all aspects of climate data processing. Check operator availability:

cdo = Cdo()
print(len(cdo.operators()))  # 938
cdo.has_operator("sellonlatbox")  # True
print(cdo.help("sellonlatbox"))  # Get operator documentation

Operator Categories

Category Count Examples Use Cases
Time Operations 208 timmean, timstd, mergetime, seldate, monmean, yearsum Time series analysis, temporal statistics, date/time selection
Statistical 222 fldmean, fldstd, ensmean, timavg, zonmean, mermean Spatial/temporal statistics, ensemble analysis
Spatial Selection 35 sellonlatbox, selindexbox, selgrid, sellevel, selcode Regional extraction, level selection
Grid/Remapping 64 remapbil, remapcon, remapnn, setgrid, gridarea Grid conversion, interpolation, regridding
Arithmetic 60 add, mul, expr, addc, sqrt, log Mathematical operations, calculations
Vertical Levels 13 ml2pl, intlevel, pressure, sealevelpressure Model level conversion, vertical interpolation
Format/IO 47 copy, merge, split, cat, import_*, output* File operations, format conversion
Info/Query 50 info, showname, griddes, ntime, showdate File inspection, metadata extraction
Spectral/Grid Transform 28 sp2gp, gp2sp, sp2gpl, fourier Spectral transforms, Fourier analysis
Others 211 Specialized operators for specific domains Advanced climate computations

Total: 938 operators

Are All Operators Useful?

Commonly used (daily work): ~80-100 operators

  • Space: sellonlatbox, remapbil, remapcon, zonmean, mermean
  • Time: mergetime, timmean, monmean, yearsum, seldate, selyear
  • Statistics: fldmean, fldstd, fldmin, fldmax, ensmean
  • Arithmetic: add, sub, mul, div, addc, mulc, expr
  • Info: sinfo, showname, griddes, ntime

Specialized operators (400+): Domain-specific

  • Meteorology: sealevelpressure, ml2pl, geopotheight
  • Oceanography: detrend, dmean, seasmean
  • Climate indices: eca_* (extreme climate events), ydrun* (running means)
  • Statistical analysis: trend, regres, corr, eof
  • Spectral analysis: sp2gp, gp2sp, dft, filter

Legacy/Niche operators (400+): Less frequently used but available

  • Format-specific imports (import_cmsaf, import_grads)
  • Experimental features (remapavgtest, remapcon2test)
  • Highly specialized computations

How to decide if you need an operator:

# Search operators by keyword
cdo = Cdo()
time_ops = [op for op in cdo.operators() if 'time' in op]
print(f"Time-related: {len(time_ops)} operators")  # 208

# Get detailed help for any operator
print(cdo.help("operator_name"))

CDO Version

This package bundles CDO 2.6.0 with the following libraries:

  • NetCDF-C 4.9.x
  • HDF5 1.14.x
  • ecCodes 2.40+
  • FFTW3 3.3.10
  • PROJ 9.5.x
  • UDUNITS2 2.2.28

Exact library versions vary by platform (Linux/macOS build from source, Windows uses MSYS2 packages).

What's New in CDO 2.6.0

New operators

Operator Description
varsskew Ensemble skewness across input files (VarsStat group)
varskurt Ensemble kurtosis across input files (VarsStat group)
varsmedian Ensemble median across input files (VarsStat group)
varspctl Ensemble percentile across input files, e.g. varspctl,90
symmetrize Mirrors data at the equator (creates symmetric fields)
splitensemble Splits GRIB2 ensemble members into separate files

New global options

Option Description
--query Pre-selects a subset of the data cube from a dataset
--async_read true|false Reads input data asynchronously; available for diff, info, trend, detrend, Timstat operators

Performance improvements

  • Significant performance improvement for reading HEALPix zarr datasets with NCZARR.

Bug fixes

  • fillmiss: wrong result when fewer than 4 valid neighbours available [Bug #12341]
  • chparam: failed since release 2.5.3 [Bug #12328]

Usage examples

cdo = Cdo()

# VarsStat: compute skewness / kurtosis / median across an ensemble
cdo.varsskew(input=["mem1.nc", "mem2.nc", "mem3.nc"], output="skew.nc")
cdo.varskurt(input=["mem1.nc", "mem2.nc", "mem3.nc"], output="kurt.nc")
cdo.varsmedian(input=["mem1.nc", "mem2.nc", "mem3.nc"], output="median.nc")
cdo.varspctl("90", input=["mem1.nc", "mem2.nc", "mem3.nc"], output="pct90.nc")

# Symmetrize: mirror a field at the equator
cdo.symmetrize(input="topo.nc", output="topo_symmetric.nc")

# Global async read option (speeds up supported operators)
cdo("--async_read true -diff file1.nc file2.nc")

Operator Reference

Complete listing of all operators available in CDO 2.6.0 (bundled with skyborn-cdo), grouped by category. Use cdo.help("operator_name") for detailed usage.

Information

Operator Description
info Dataset information listed by identifier
infon Dataset information listed by name
cinfo Compact information listed by name
map Dataset information and simple map
sinfo Short information listed by identifier
sinfon Short information listed by name
xsinfo Extra short information listed by name
xsinfop Extra short information listed by identifier
diff Compare two datasets listed by identifier
diffn Compare two datasets listed by name
npar Number of parameters
nlevel Number of levels
nyear Number of years
nmon Number of months
ndate Number of dates
ntime Number of timesteps
ngridpoints Number of gridpoints
ngrids Number of horizontal grids
showformat Show file format
showcode Show code numbers
showname Show variable names
showstdname Show standard names
showlevel Show levels
showltype Show GRIB level types
showyear Show years
showmon Show months
showdate Show date information
showtime Show time information
showtimestamp Show timestamp
showchunkspec Show chunk specification
showfilter Show filter specification
showattribute Show attributes
partab Parameter table
codetab Parameter code table
griddes Grid description
zaxisdes Z-axis description
vct Vertical coordinate table

File Operations

Operator Description
copy Copy datasets
clone Clone datasets
cat Concatenate datasets
tee Duplicate a data stream and write it to file
pack Pack data
unpack Unpack data
setchunkspec Specify chunking
setfilter Specify filter
bitrounding Bit rounding
replace Replace variables
duplicate Duplicates a dataset
mergegrid Merge grid
merge Merge datasets with different fields
mergetime Merge datasets sorted by date and time
splitcode Split code numbers
splitparam Split parameter identifiers
splitname Split variable names
splitlevel Split levels
splitgrid Split grids
splitzaxis Split z-axes
splittabnum Split parameter table numbers
splithour Split hours
splitday Split days
splitseas Split seasons
splityear Split years
splityearmon Split in years and months
splitmon Split months
splitsel Split selected timesteps
splitdate Splits a file into dates
distgrid Distribute horizontal grid
collgrid Collect horizontal grid

Selection

Operator Description
select Select fields
delete Delete fields
selmulti Select multiple fields
delmulti Delete multiple fields
changemulti Change identification of multiple fields
selparam Select parameters by identifier
delparam Delete parameters by identifier
selcode Select parameters by code number
delcode Delete parameters by code number
selname Select parameters by name
delname Delete parameters by name
selstdname Select parameters by standard name
sellevel Select levels
sellevidx Select levels by index
selgrid Select grids
selzaxis Select z-axes
selzaxisname Select z-axes by name
selltype Select GRIB level types
seltabnum Select parameter table numbers
seltimestep Select timesteps
seltime Select times
selhour Select hours
selday Select days
selmonth Select months (alias: selmon)
selyear Select years
selseason Select seasons
seldate Select dates
selsmon Select single month
sellonlatbox Select a longitude/latitude box
selindexbox Select an index box
selregion Select cells inside regions
selcircle Select cells inside a circle
selgridcell Select grid cells
delgridcell Delete grid cells
samplegrid Resample grid cells
selyearidx Select year by index
seltimeidx Select timestep by index
bottomvalue Extract bottom level
topvalue Extract top level
isosurface Extract isosurface

Conditional

Operator Description
ifthen If then
ifnotthen If not then
ifthenelse Conditional selection
ifthenc If then constant
ifnotthenc If not then constant
reducegrid Reduce fields to user-defined mask

Comparison

Operator Description
eq Equal
ne Not equal
le Less equal
lt Less than
ge Greater equal
gt Greater than
eqc Equal constant
nec Not equal constant
lec Less equal constant
ltc Less than constant
gec Greater equal constant
gtc Greater than constant
ymoneq Compare time series with Equal (multi-year monthly)
ymonne Compare time series with NotEqual (multi-year monthly)
ymonle Compare time series with LessEqual (multi-year monthly)
ymonlt Compare time series with LessThan (multi-year monthly)
ymonge Compare time series with GreaterEqual (multi-year monthly)
ymongt Compare time series with GreaterThan (multi-year monthly)
yseaseq Compare time series with Equal (multi-year seasonal)
yseasne Compare time series with NotEqual (multi-year seasonal)
yseasle Compare time series with LessEqual (multi-year seasonal)
yseaslt Compare time series with LessThan (multi-year seasonal)
yseasge Compare time series with GreaterEqual (multi-year seasonal)
yseasgt Compare time series with GreaterThan (multi-year seasonal)

Modification

Operator Description
setattribute Set attributes
delattribute Delete attributes
setpartabp Set parameter table (by path)
setpartabn Set parameter table (by name)
setcodetab Set parameter code table
setcode Set code number
setparam Set parameter identifier
setname Set variable name
setstdname Set standard name
setunit Set variable unit
setlevel Set level
setltype Set GRIB level type
setmaxsteps Set max timesteps
setdate Set date
settime Set time of the day
setday Set day
setmon Set month
setyear Set year
settunits Set time units
settaxis Set time axis
settbounds Set time bounds
setreftime Set reference time
setcalendar Set calendar
shifttime Shift timesteps
chcode Change code number
chparam Change parameter identifier
chname Change variable or coordinate name
chunit Change variable unit
chlevel Change level
chlevelc Change level of one code
chlevelv Change level of one variable
setgrid Set grid
setgridtype Set grid type
setgridarea Set grid cell area
setgridmask Set grid mask
setprojparams Set proj params
setzaxis Set z-axis
genlevelbounds Generate level bounds
invertlat Invert latitudes
invertlev Invert levels
shiftx Shift x
shifty Shift y
maskregion Mask regions
masklonlatbox Mask a longitude/latitude box
maskindexbox Mask an index box
setclonlatbox Set a longitude/latitude box to constant
setcindexbox Set an index box to constant
enlarge Enlarge fields
setmissval Set a new missing value
setctomiss Set constant to missing value
setmisstoc Set missing value to constant
setrtomiss Set range to missing value
setvrange Set valid range
setmisstonn Set missing value to nearest neighbor
setmisstodis Set missing value to distance-weighted average
vertfillmiss Vertical filling of missing values
timfillmiss Temporal filling of missing values
setgridcell Set the value of a grid cell

Arithmetic

Operator Description
expr Evaluate expressions
exprf Evaluate expressions script
aexpr Evaluate expressions and append results
aexprf Evaluate expression script and append results
abs Absolute value
int Integer value
nint Nearest integer value
pow Power
sqr Square
sqrt Square root
exp Exponential
ln Natural logarithm
log10 Base 10 logarithm
sin Sine
cos Cosine
tan Tangent
asin Arc sine
acos Arc cosine
atan Arc tangent
reci Reciprocal value
not Logical NOT
addc Add a constant
subc Subtract a constant
mulc Multiply with a constant
divc Divide by a constant
minc Minimum of a field and a constant
maxc Maximum of a field and a constant
add Add two fields
sub Subtract two fields
mul Multiply two fields
div Divide two fields
min Minimum of two fields
max Maximum of two fields
atan2 Arc tangent of two fields
setmiss Set missing values
dayadd Add daily time series
daysub Subtract daily time series
daymul Multiply daily time series
daydiv Divide daily time series
monadd Add monthly time series
monsub Subtract monthly time series
monmul Multiply monthly time series
mondiv Divide monthly time series
yearadd Add yearly time series
yearsub Subtract yearly time series
yearmul Multiply yearly time series
yeardiv Divide yearly time series
yhouradd Add multi-year hourly time series
yhoursub Subtract multi-year hourly time series
yhourmul Multiply multi-year hourly time series
yhourdiv Divide multi-year hourly time series
ydayadd Add multi-year daily time series
ydaysub Subtract multi-year daily time series
ydaymul Multiply multi-year daily time series
ydaydiv Divide multi-year daily time series
ymonadd Add multi-year monthly time series
ymonsub Subtract multi-year monthly time series
ymonmul Multiply multi-year monthly time series
ymondiv Divide multi-year monthly time series
yseasadd Add multi-year seasonal time series
yseassub Subtract multi-year seasonal time series
yseasmul Multiply multi-year seasonal time series
yseasdiv Divide multi-year seasonal time series
muldpm Multiply with days per month
divdpm Divide by days per month
muldpy Multiply with days per year
divdpy Divide by days per year
mulcoslat Multiply with the cosine of the latitude
divcoslat Divide by cosine of the latitude

Statistics

Cumulative / Consecutive

Operator Description
timcumsum Cumulative sum over all timesteps
consecsum Consecutive sum
consects Consecutive timesteps

Variables Statistics (across multiple input files)

Operator Description
varsmin Variables minimum
varsmax Variables maximum
varsrange Variables range
varssum Variables sum
varsmean Variables mean
varsavg Variables average
varsstd Variables standard deviation
varsstd1 Variables standard deviation (n-1)
varsvar Variables variance
varsvar1 Variables variance (n-1)
varsskew Variables skewness
varskurt Variables kurtosis
varsmedian Variables median
varspctl Variables percentile

Ensemble Statistics

Operator Description
ensmin Ensemble minimum
ensmax Ensemble maximum
ensrange Ensemble range
enssum Ensemble sum
ensmean Ensemble mean
ensavg Ensemble average
ensstd Ensemble standard deviation
ensstd1 Ensemble standard deviation (n-1)
ensvar Ensemble variance
ensvar1 Ensemble variance (n-1)
ensskew Ensemble skewness
enskurt Ensemble kurtosis
ensmedian Ensemble median
enspctl Ensemble percentile
ensrkhistspace Ranked Histogram averaged over space
ensrkhisttime Ranked Histogram averaged over time
ensroc Ensemble Receiver Operating characteristics
enscrps Ensemble CRPS and decomposition
ensbrs Ensemble Brier score

Field Statistics (spatial reduction to scalar per timestep)

Operator Description
fldmin Field minimum
fldmax Field maximum
fldrange Field range
fldsum Field sum
fldint Field integral
fldmean Field mean
fldavg Field average
fldstd Field standard deviation
fldstd1 Field standard deviation (n-1)
fldvar Field variance
fldvar1 Field variance (n-1)
fldskew Field skewness
fldkurt Field kurtosis
fldmedian Field median
fldcount Field count
fldpctl Field percentile

Zonal Statistics (average along longitude axis)

Operator Description
zonmin Zonal minimum
zonmax Zonal maximum
zonrange Zonal range
zonsum Zonal sum
zonmean Zonal mean
zonavg Zonal average
zonstd Zonal standard deviation
zonstd1 Zonal standard deviation (n-1)
zonvar Zonal variance
zonvar1 Zonal variance (n-1)
zonskew Zonal skewness
zonkurt Zonal kurtosis
zonmedian Zonal median
zonpctl Zonal percentile

Meridional Statistics (average along latitude axis)

Operator Description
mermin Meridional minimum
mermax Meridional maximum
merrange Meridional range
mersum Meridional sum
mermean Meridional mean
meravg Meridional average
merstd Meridional standard deviation
merstd1 Meridional standard deviation (n-1)
mervar Meridional variance
mervar1 Meridional variance (n-1)
merskew Meridional skewness
merkurt Meridional kurtosis
mermedian Meridional median
merpctl Meridional percentile

Gridbox Statistics (aggregate rectangular blocks of grid cells)

Operator Description
gridboxmin Gridbox minimum
gridboxmax Gridbox maximum
gridboxrange Gridbox range
gridboxsum Gridbox sum
gridboxmean Gridbox mean
gridboxavg Gridbox average
gridboxstd Gridbox standard deviation
gridboxstd1 Gridbox standard deviation (n-1)
gridboxvar Gridbox variance
gridboxvar1 Gridbox variance (n-1)
gridboxskew Gridbox skewness
gridboxkurt Gridbox kurtosis
gridboxmedian Gridbox median

Remap Statistics

Operator Description
remapmin Remap minimum
remapmax Remap maximum
remaprange Remap range
remapsum Remap sum
remapmean Remap mean
remapavg Remap average
remapstd Remap standard deviation
remapstd1 Remap standard deviation (n-1)
remapvar Remap variance
remapvar1 Remap variance (n-1)
remapskew Remap skewness
remapkurt Remap kurtosis
remapmedian Remap median

Vertical Statistics

Operator Description
vertmin Vertical minimum
vertmax Vertical maximum
vertrange Vertical range
vertsum Vertical sum
vertmean Vertical mean
vertavg Vertical average
vertstd Vertical standard deviation
vertstd1 Vertical standard deviation (n-1)
vertvar Vertical variance
vertvar1 Vertical variance (n-1)

Time Selection Statistics

Operator Description
timselmin Time selection minimum
timselmax Time selection maximum
timselrange Time selection range
timselsum Time selection sum
timselmean Time selection mean
timselavg Time selection average
timselstd Time selection standard deviation
timselstd1 Time selection standard deviation (n-1)
timselvar Time selection variance
timselvar1 Time selection variance (n-1)
timselpctl Time range percentile

Running Statistics

Operator Description
runmin Running minimum
runmax Running maximum
runrange Running range
runsum Running sum
runmean Running mean
runavg Running average
runstd Running standard deviation
runstd1 Running standard deviation (n-1)
runvar Running variance
runvar1 Running variance (n-1)
runpctl Running percentile

Time Statistics (reduce all timesteps to one)

Operator Description
timmin Time minimum
timmax Time maximum
timminidx Index of time minimum
timmaxidx Index of time maximum
timrange Time range
timsum Time sum
timmean Time mean
timavg Time average
timstd Time standard deviation
timstd1 Time standard deviation (n-1)
timvar Time variance
timvar1 Time variance (n-1)
timpctl Temporal percentile

Hourly Statistics

Operator Description
hourmin Hourly minimum
hourmax Hourly maximum
hourrange Hourly range
hoursum Hourly sum
hourmean Hourly mean
houravg Hourly average
hourstd Hourly standard deviation
hourstd1 Hourly standard deviation (n-1)
hourvar Hourly variance
hourvar1 Hourly variance (n-1)
hourpctl Hourly percentile

Daily Statistics

Operator Description
daymin Daily minimum
daymax Daily maximum
dayrange Daily range
daysum Daily sum
daymean Daily mean
dayavg Daily average
daystd Daily standard deviation
daystd1 Daily standard deviation (n-1)
dayvar Daily variance
dayvar1 Daily variance (n-1)
daypctl Daily percentile

Monthly Statistics

Operator Description
monmin Monthly minimum
monmax Monthly maximum
monrange Monthly range
monsum Monthly sum
monmean Monthly mean
monavg Monthly average
monstd Monthly standard deviation
monstd1 Monthly standard deviation (n-1)
monvar Monthly variance
monvar1 Monthly variance (n-1)
monpctl Monthly percentile

Yearly Statistics

Operator Description
yearmonmean Yearly mean from monthly data
yearmin Yearly minimum
yearmax Yearly maximum
yearminidx Index of yearly minimum
yearmaxidx Index of yearly maximum
yearrange Yearly range
yearsum Yearly sum
yearmean Yearly mean
yearavg Yearly average
yearstd Yearly standard deviation
yearstd1 Yearly standard deviation (n-1)
yearvar Yearly variance
yearvar1 Yearly variance (n-1)
yearpctl Yearly percentile

Seasonal Statistics

Operator Description
seasmin Seasonal minimum
seasmax Seasonal maximum
seasrange Seasonal range
seassum Seasonal sum
seasmean Seasonal mean
seasavg Seasonal average
seasstd Seasonal standard deviation
seasstd1 Seasonal standard deviation (n-1)
seasvar Seasonal variance
seasvar1 Seasonal variance (n-1)
seaspctl Seasonal percentile

Multi-year Hourly Statistics

Operator Description
yhourmin Multi-year hourly minimum
yhourmax Multi-year hourly maximum
yhourrange Multi-year hourly range
yhoursum Multi-year hourly sum
yhourmean Multi-year hourly mean
yhouravg Multi-year hourly average
yhourstd Multi-year hourly standard deviation
yhourstd1 Multi-year hourly standard deviation (n-1)
yhourvar Multi-year hourly variance
yhourvar1 Multi-year hourly variance (n-1)

Multi-day Hourly Statistics

Operator Description
dhourmin Multi-day hourly minimum
dhourmax Multi-day hourly maximum
dhourrange Multi-day hourly range
dhoursum Multi-day hourly sum
dhourmean Multi-day hourly mean
dhouravg Multi-day hourly average
dhourstd Multi-day hourly standard deviation
dhourstd1 Multi-day hourly standard deviation (n-1)
dhourvar Multi-day hourly variance
dhourvar1 Multi-day hourly variance (n-1)
dminutemin Multi-day by the minute minimum
dminutemax Multi-day by the minute maximum
dminuterange Multi-day by the minute range
dminutesum Multi-day by the minute sum
dminutemean Multi-day by the minute mean
dminuteavg Multi-day by the minute average
dminutestd Multi-day by the minute standard deviation
dminutestd1 Multi-day by the minute standard deviation (n-1)
dminutevar Multi-day by the minute variance
dminutevar1 Multi-day by the minute variance (n-1)

Multi-year Daily Statistics

Operator Description
ydaymin Multi-year daily minimum
ydaymax Multi-year daily maximum
ydayrange Multi-year daily range
ydaysum Multi-year daily sum
ydaymean Multi-year daily mean
ydayavg Multi-year daily average
ydaystd Multi-year daily standard deviation
ydaystd1 Multi-year daily standard deviation (n-1)
ydayvar Multi-year daily variance
ydayvar1 Multi-year daily variance (n-1)
ydaypctl Multi-year daily percentile

Multi-year Monthly Statistics

Operator Description
ymonmin Multi-year monthly minimum
ymonmax Multi-year monthly maximum
ymonrange Multi-year monthly range
ymonsum Multi-year monthly sum
ymonmean Multi-year monthly mean
ymonavg Multi-year monthly average
ymonstd Multi-year monthly standard deviation
ymonstd1 Multi-year monthly standard deviation (n-1)
ymonvar Multi-year monthly variance
ymonvar1 Multi-year monthly variance (n-1)
ymonpctl Multi-year monthly percentile

Multi-year Seasonal Statistics

Operator Description
yseasmin Multi-year seasonal minimum
yseasmax Multi-year seasonal maximum
yseasrange Multi-year seasonal range
yseassum Multi-year seasonal sum
yseasmean Multi-year seasonal mean
yseasavg Multi-year seasonal average
yseasstd Multi-year seasonal standard deviation
yseasstd1 Multi-year seasonal standard deviation (n-1)
yseasvar Multi-year seasonal variance
yseasvar1 Multi-year seasonal variance (n-1)
yseaspctl Multi-year seasonal percentile

Multi-year Daily Running Statistics

Operator Description
ydrunmin Multi-year daily running minimum
ydrunmax Multi-year daily running maximum
ydrunsum Multi-year daily running sum
ydrunmean Multi-year daily running mean
ydrunavg Multi-year daily running average
ydrunstd Multi-year daily running standard deviation
ydrunstd1 Multi-year daily running standard deviation (n-1)
ydrunvar Multi-year daily running variance
ydrunvar1 Multi-year daily running variance (n-1)
ydrunpctl Multi-year daily running percentile

Correlation and Regression

Operator Description
fldcor Correlation in grid space
timcor Correlation over time
fldcovar Covariance in grid space
timcovar Covariance over time
regres Regression
detrend Detrend time series
trend Trend of time series
addtrend Add trend
subtrend Subtract trend

EOFs

Operator Description
eof Calculate EOFs in spatial or time space
eoftime Calculate EOFs in time space
eofspatial Calculate EOFs in spatial space
eof3d Calculate 3-Dimensional EOFs in time space
eofcoeff Principal coefficients of EOFs

Interpolation

Operator Description
remapbil Bilinear interpolation
genbil Generate bilinear interpolation weights
remapbic Bicubic interpolation
genbic Generate bicubic interpolation weights
remapknn k-nearest neighbor remapping
remapnn Nearest neighbor remapping
remapdis Distance weighted average remapping
genknn Generate k-nearest neighbor remap weights
gennn Generate nearest neighbor remap weights
gendis Generate distance weighted average remap weights
remapcon First order conservative remapping
gencon Generate 1st order conservative remap weights
remaplaf Largest area fraction remapping
genlaf Generate largest area fraction remap weights
remap Grid remapping (with pre-computed weights)
remapeta Remap vertical hybrid levels
ml2pl Model to pressure level interpolation
ap2pl Vertical pressure interpolation
gh2hl Geometric height interpolation
intlevel Linear level interpolation
intlevel3d Linear level interpolation from/to 3D vertical coordinates
inttime Interpolation between timesteps
intntime Interpolation between n timesteps
intyear Interpolation between two years

Transformation

Operator Description
sp2gp Spectral to gridpoint
gp2sp Gridpoint to spectral
sp2sp Spectral to spectral (truncation change)
sp2gpl Spectral to Gaussian gridpoint (linear)
dv2ps Divergence and vorticity to velocity potential and stream function
dv2uv Divergence and vorticity to U and V wind
uv2dv U and V wind to divergence and vorticity
fourier Fourier transformation

Import / Export

Operator Description
import_binary Import binary data sets
import_cmsaf Import CM-SAF HDF5 files
input ASCII input
inputsrv SERVICE ASCII input
inputext EXTRA ASCII input
output ASCII output
outputf Formatted output
outputint Integer output
outputsrv SERVICE ASCII output
outputext EXTRA ASCII output
outputtab Table output
gmtxyz GMT xyz format
gmtcells GMT multiple segment format

Miscellaneous

Operator Description
gradsdes GrADS data descriptor file
after ECHAM standard post processor
bandpass Bandpass filtering
lowpass Lowpass filtering
highpass Highpass filtering
gridarea Grid cell area
gridweights Grid cell weights
smooth Smooth grid points
smooth9 9 point smoothing
deltat Difference between timesteps
setvals Set list of old values to new values
setrtoc Set range to constant
setrtoc2 Set range to constant, others to constant2
gridcellindex Get grid cell index
const Create a constant field
random Create a field with random numbers
topo Create a field with topography
seq Create a time series
stdatm Create values for hydrostatic atmosphere
timsort Temporal sorting
uvDestag Destaggering of u/v wind components
rotuvNorth Rotate u/v wind to North pole
projuvLatLon Cylindrical Equidistant projection
rotuvb Backward wind rotation
mrotuvb Backward rotation of MPIOM data
mastrfu Mass stream function
pressure_half Pressure on half-levels
pressure Pressure on full-levels
delta_pressure Pressure difference of half-levels
sealevelpressure Sea level pressure
gheight Geopotential height on full-levels
gheight_half Geopotential height on half-levels
air_density Air density
adisit Potential temperature to in-situ temperature
adipot In-situ temperature to potential temperature
rhopot Calculates potential density
histcount Histogram count
histsum Histogram sum
histmean Histogram mean
histfreq Histogram frequency
sethalo Set the bounds of a field
wct Windchill temperature
fdns Frost days where no snow index per time period
strwin Strong wind days index per time period
strbre Strong breeze days index per time period
strgal Strong gale days index per time period
hurr Hurricane days index per time period
cmorlite CMOR lite
verifygrid Verify grid coordinates
hpdegrade Degrade HEALPix grid
hpupgrade Upgrade HEALPix grid
symmetrize Mirrors data at the equator
uv2vr_cfd U and V wind to relative vorticity (curvilinear finite differences)
uv2dv_cfd U and V wind to divergence (curvilinear finite differences)
cmor Climate Model Output Rewriting (CMIP-compliant)

Climate Indices (ETCCDI / ECA&D)

Operator Description
eca_cdd / etccdi_cdd Consecutive dry days index per time period
eca_cfd Consecutive frost days index per time period
eca_csu Consecutive summer days index per time period
eca_cwd / etccdi_cwd Consecutive wet days index per time period
eca_cwdi Cold wave duration index wrt mean of reference period
eca_cwfi / etccdi_csdi Cold-spell days index wrt 10th percentile of reference period
eca_etr Intra-period extreme temperature range
eca_fd / etccdi_fd Frost days index per time period
eca_gsl Thermal growing season length index
eca_hd Heating degree days per time period
eca_hwdi Heat wave duration index wrt mean of reference period
eca_hwfi / etccdi_wsdi Warm spell days index wrt 90th percentile of reference period
eca_id / etccdi_id Ice days index per time period
eca_r75p Moderate wet days wrt 75th percentile of reference period
eca_r75ptot Precipitation percent due to R75p days
eca_r90p Wet days wrt 90th percentile of reference period
eca_r90ptot Precipitation percent due to R90p days
eca_r95p Very wet days wrt 95th percentile of reference period
eca_r95ptot Precipitation percent due to R95p days
eca_r99p Extremely wet days wrt 99th percentile of reference period
eca_r99ptot Precipitation percent due to R99p days
eca_pd / etccdi_r1mm Precipitation days index per time period
eca_r10mm Heavy precipitation days index per time period
eca_r20mm Very heavy precipitation days index per time period
eca_rr1 Wet days index per time period
eca_rx1day / etccdi_rx1day Highest one day precipitation amount per time period
eca_rx5day / etccdi_rx5day Highest five-day precipitation amount per time period
eca_sdii Simple daily intensity index per time period
eca_su / etccdi_su Summer days index per time period
eca_tg10p Cold days percent wrt 10th percentile of reference period
eca_tg90p Warm days percent wrt 90th percentile of reference period
eca_tn10p Cold nights percent wrt 10th percentile of reference period
eca_tn90p Warm nights percent wrt 90th percentile of reference period
eca_tr / etccdi_tr Tropical nights index per time period
eca_tx10p Very cold days percent wrt 10th percentile of reference period
eca_tx90p Very warm days percent wrt 90th percentile of reference period
etccdi_tx90p Percentage of days when daily max temperature > 90th percentile
etccdi_tx10p Percentage of days when daily max temperature < 10th percentile
etccdi_tn90p Percentage of days when daily min temperature > 90th percentile
etccdi_tn10p Percentage of days when daily min temperature < 10th percentile

API Reference

Cdo class

Parameter Type Default Description
cdo_path str None Path to CDO binary (auto-discovered if None)
options str "" Default CDO options (e.g. "-O -s -f nc4")
env dict None Custom environment variables
debug bool False Print commands and stderr
timeout int None Default timeout in seconds

Operator method parameters

Parameter Type Description
First positional arg str Operator parameters (e.g. "0,30,0,30")
input str or list Input file(s)
output str Output file path
options str Additional CDO options for this call
timeout int Timeout override
returnXArray bool Return as xarray.Dataset
returnCdf bool Return as netCDF4.Dataset
returnArray bool Return as numpy.ndarray
returnMaArray bool Return as masked numpy.ndarray

Utility methods

Method Returns Description
cdo.help() str General usage summary
cdo.help("operator") str CDO help text for a specific operator
cdo.version() str CDO version string
cdo.operators() set All available CDO operator names
cdo.has_operator(name) bool Check if an operator exists
cdo.cleanup() Remove temporary files

CdoError exception

Import: from skyborn_cdo import CdoError

Attribute Type Description
returncode int CDO exit code
stderr str Full CDO error output
cmd str Command that failed

Development

git clone --recurse-submodules https://github.com/QianyeSu/skyborn-cdo.git
cd skyborn-cdo
pip install -e ".[test]"
pytest tests/

Author

Qianye Su
Email: suqianye2000@gmail.com
GitHub: @QianyeSu

License

This Python wrapper is licensed under BSD-3-Clause.

CDO itself is licensed under BSD-3-Clause by MPI für Meteorologie. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skyborn_cdo-2.6.0.2.tar.gz (3.2 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

skyborn_cdo-2.6.0.2-cp314-cp314-win_amd64.whl (45.6 MB view details)

Uploaded CPython 3.14Windows x86-64

skyborn_cdo-2.6.0.2-cp314-cp314-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.2-cp314-cp314-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

skyborn_cdo-2.6.0.2-cp313-cp313-win_amd64.whl (44.7 MB view details)

Uploaded CPython 3.13Windows x86-64

skyborn_cdo-2.6.0.2-cp313-cp313-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.2-cp313-cp313-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

skyborn_cdo-2.6.0.2-cp312-cp312-win_amd64.whl (44.7 MB view details)

Uploaded CPython 3.12Windows x86-64

skyborn_cdo-2.6.0.2-cp312-cp312-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.2-cp312-cp312-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

skyborn_cdo-2.6.0.2-cp311-cp311-win_amd64.whl (44.7 MB view details)

Uploaded CPython 3.11Windows x86-64

skyborn_cdo-2.6.0.2-cp311-cp311-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.2-cp311-cp311-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

skyborn_cdo-2.6.0.2-cp310-cp310-win_amd64.whl (44.7 MB view details)

Uploaded CPython 3.10Windows x86-64

skyborn_cdo-2.6.0.2-cp310-cp310-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.2-cp310-cp310-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.10macOS 14.0+ ARM64

skyborn_cdo-2.6.0.2-cp39-cp39-win_amd64.whl (44.7 MB view details)

Uploaded CPython 3.9Windows x86-64

skyborn_cdo-2.6.0.2-cp39-cp39-manylinux_2_28_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

skyborn_cdo-2.6.0.2-cp39-cp39-macosx_14_0_arm64.whl (21.9 MB view details)

Uploaded CPython 3.9macOS 14.0+ ARM64

File details

Details for the file skyborn_cdo-2.6.0.2.tar.gz.

File metadata

  • Download URL: skyborn_cdo-2.6.0.2.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for skyborn_cdo-2.6.0.2.tar.gz
Algorithm Hash digest
SHA256 a176ea9fd08abb160d6e8582dfa434c9fc5772a5acc424ce4154e6b2ba77ac84
MD5 f31c7548853d77332b0b103bda5e7848
BLAKE2b-256 4e8eb35e4739cfdd82b4c3aba42ca9c3e08ec96eadd3204a1ec1c1077b03f9b7

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ec495922484f1c1b1b8bf5d946dfd0b50ebc01b0d30060250170fd24389440eb
MD5 b7db43b448d71e0bf0050c5f34d27e53
BLAKE2b-256 9e91a76e182f56efbd674992199954da1c00a8adaa7e64aef60d98f35d1516ea

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f3e012c2d1d419271722219101793f80c670833b73c30f288867080cb41ebe10
MD5 e954507832ae6dc74246f311829fdb9f
BLAKE2b-256 7fb3d3ffda87cf761dd580a97e99244fb835aeafa3be8f0b0f191bbe27f14302

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 843ec3d94a4ff38daa8be32701064b129095a956ca7863efdd831d49bb1b705c
MD5 43b71d37b982d3eb0a679e587e80b163
BLAKE2b-256 5cd4a64558974051117ce06fcb062d9928b31decfccf39177b9de9f7f333b41a

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0e5164cb4ae69a7488a54431c5023cfd7413ed420f9184e76c2a19ee12c23837
MD5 cc9c4a139466c63197d9be99d53f230c
BLAKE2b-256 ad8c491af25e746feca264ad4c60669c229ec83e2d3146b40ace2195d968a7a6

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0dc197e33e59d0b424c8c11ab1e49440c898c48302dfb9f35f0d586aacedbe32
MD5 f0a372151ad22cc8562fcd3fa61683b7
BLAKE2b-256 c11593c90bbc8c95f57143d88264d992531d7af6cf57e25e727fd31f6e9aee93

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 4451c6bb92b6a5fa90d175cf4a2b98f5732873efe93b788102dcc63f0532a308
MD5 883a1f4c15e4bd871cfdb4a8cf51c02a
BLAKE2b-256 a2810de376b3a6133c544585cf293359d6246bbea7f631fd22587e6702e1796e

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b7cf07276125460be8230691a61fdf2a1c890da7469c30e9e25c0d1cc4747b49
MD5 d6e1073fd0e48b342f9c4d60bd0e3874
BLAKE2b-256 f992bac13e3afbd06cc51be897d56ed5c65ee4a08e7647da4a78b5e4d1221079

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c5b23a96e96e543a72b0d001a8a70ebc2a9ab8927495867c6c2d782a76fc464e
MD5 643090bd97dc4ea1f6b6f20d3ac5ba14
BLAKE2b-256 e1942f39508105a57e1a4d8538cff1bb40000de3e21543ff6dbedfaf4cb68cf6

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 957e8c952ccf8a57399c917af5815d1258c4eae4c7cb6f51f0d199383dc808d6
MD5 74bd3b0473506dcfc9a3d460e6c006a7
BLAKE2b-256 569525bc4f22a15c028d0bf27a72da1e6ee01bd84098af01a97d681db8770937

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7e4238d91066862e2812a20bd5994fbf52b4374b941f532ea0a02e274a9f72c0
MD5 c0f86b326ada1d1b4da06d1be4c11616
BLAKE2b-256 bae930ccd9fc75cca0ffebbb10a14c3d28a8ea3033790d314c5dc0a228b3df5b

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb7ce5a20d830c4fcac9672d97cb5b3b1f021f10d419851d6823705b7f67e517
MD5 ee186dc154fc1f951eaa79126505f3f7
BLAKE2b-256 163098b54c1e871822a649c88afb8c947aabe828be5a72f5338f8ed4d412192c

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 ef8d0536ed8933f904d872fecc88ab04fabef9c14f3fc553aab19ec517ccce11
MD5 17f57c2ad51e96166e129f050150cbc2
BLAKE2b-256 2cc358c51dcf91339f1710a40cb78e5a4bdfd05a80e9540b05869a44b1837bf8

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ed85915c03799fdd9aa245d95f65c653c40c07f89dacc2c2bacd4fcd80a51ea0
MD5 0e3cb0a670a75a1eaf6c808531c77df2
BLAKE2b-256 8c9e70f3b80c9f094541ad1b63d4f63e4be28e240c4e3ede83141fd3c1245f8a

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 44544c0900d9fb81a9281efe4d72482597431fa8e4df63bcdcb824042416f6f0
MD5 1e427d7ef5979d97d50ce6a33b487ef5
BLAKE2b-256 3675029b2f977d040708a2ba12f53cc7ff048cbb907bc1fb6ebe4478ecf55c09

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp310-cp310-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp310-cp310-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 d3443799fa55c4540b4962066142300990db7258ab799578736aa78bedd63a79
MD5 24550405c61a4579ddca255b7b0c2725
BLAKE2b-256 9f6f2b7db42c723e57646c65ce8976fd3b2af9a0d206f454ccf96ee33bb87aae

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5775235b4027f70a942c7099f25862ad30a06e5952e234f109ca87db457aeffb
MD5 c2dd7b23cc424383bc2835f3dee37aeb
BLAKE2b-256 3f61f05de46887f87aa854f29a638f4a723f451f40e98fc9e91625fdc7922e50

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7939e4bc508dbf06f3ebe782ca1abacb2706eafdc753b56b06d2784e2190336a
MD5 154bddf013abea60393406d4a0700eae
BLAKE2b-256 e40f82f7966700b93a3e81d567eca6918eaba3bf148dee250bd6f73b8bd69d5e

See more details on using hashes here.

File details

Details for the file skyborn_cdo-2.6.0.2-cp39-cp39-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for skyborn_cdo-2.6.0.2-cp39-cp39-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 cf36c94d5e9d08185233d3ec1f1d0011775bf5c1e97c7a16786000231b260248
MD5 d1c3cadc7ca8af0311982faa084e4d20
BLAKE2b-256 03dc2d1a2d491a52fa6202f1646f8559a70e577f0f6eadb31a5d2c2c36335517

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page