easyclimate.core.units

Functions for handling calculations of units

Functions

transfer_units_coeff(→ float)

Compute the unit conversion factor from input units to output units.

transfer_data_multiple_units(...)

Convert data units for multiplicative transitions (e.g., m to km).

transfer_data_difference_units(...)

Convert data units for difference-based transitions (e.g., adjustments requiring offset).

transfer_data_temperature_units(...)

Convert temperature data from one unit to another, supporting aliases.

transfer_data_units(→ xarray.DataArray | xarray.Dataset)

Convert data units for any type of transition using Pint.

Module Contents

easyclimate.core.units.transfer_units_coeff(input_units: str, output_units: str) float

Compute the unit conversion factor from input units to output units.

Parameters

input_unitsstr

The input unit string (e.g., ‘m’).

output_unitsstr

The output unit string (e.g., ‘km’).

Returns

float

The conversion factor to multiply the input values by to obtain output values.

Example

>>> import easyclimate as ecl
>>> result1 = ecl.transfer_units_coeff("m/s", "km/h")
>>> result2 = ecl.transfer_units_coeff("hPa", "mbar")
>>> result3 = ecl.transfer_units_coeff("mm/day", "m/month")
>>> print(result1, result2, result3)
3.6 1.0 0.0304375
easyclimate.core.units.transfer_data_multiple_units(input_data: xarray.DataArray | xarray.Dataset, input_units: str, output_units: str) xarray.DataArray | xarray.Dataset

Convert data units for multiplicative transitions (e.g., m to km).

Parameters

input_dataxarray.DataArray or xarray.Dataset

The input data with units to convert.

input_unitsstr

The input unit string. Below is a table of supported temperature unit standards and aliases:

output_unitsstr

The output unit string.

Returns

xarray.DataArray or xarray.Dataset

The converted data with updated ‘units’ attribute.

Example

>>> import xarray as xr
>>> import numpy as np
>>> import easyclimate as ecl
>>> ds = xr.DataArray(
...     np.array([[3e-5, 5.4e-5], [5.2, -75.5]]),
...     dims=("lon", "lat"),
...     coords={"lon": np.array([160, 70]), "lat": np.array([87.5, -87.5])}
... )
>>> result = ecl.transfer_data_multiple_units(ds, "mm/day", "m/day")
>>> print(result)
<xarray.DataArray (lon: 2, lat: 2)> Size: 32B
array([[ 3.00e-08,  5.40e-08],
    [ 5.20e-03, -7.55e-02]])
Coordinates:
* lon      (lon) int64 16B 160 70
* lat      (lat) float64 16B 87.5 -87.5
Attributes:
    units:    m/day
easyclimate.core.units.transfer_data_difference_units(input_data: xarray.DataArray | xarray.Dataset, input_units: str, output_units: str) xarray.DataArray | xarray.Dataset

Convert data units for difference-based transitions (e.g., adjustments requiring offset).

Parameters

input_dataxarray.DataArray or xarray.Dataset

The input data with units to convert.

input_unitsstr

The input unit string.

output_unitsstr

The output unit string.

Returns

xarray.DataArray or xarray.Dataset

The converted data with updated ‘units’ attribute.

Example

>>> import xarray as xr
>>> import easyclimate as ecl
>>> result = ecl.transfer_data_difference_units(xr.DataArray(15), "celsius", "kelvin")
>>> print(result)
<xarray.DataArray ()> Size: 8B
array(288.15)
Attributes:
    units:    kelvin
easyclimate.core.units.transfer_data_temperature_units(input_data: xarray.DataArray | xarray.Dataset, input_units: str, output_units: str) xarray.DataArray | xarray.Dataset

Convert temperature data from one unit to another, supporting aliases.

Parameters

input_dataxarray.DataArray or xarray.Dataset

The input temperature data to convert.

input_unitsstr

The input temperature unit (e.g., ‘degC’, ‘K’, ‘摄氏度’). The available values are as follows:

K, kelvin, degK, 开氏度, ケルビン

degC, celsius, degC, 摄氏度, セルシウス度

degF, fahrenheit, 华氏度, カ氏度, 華氏度, ファーレンハイト度

degR, rankine, 兰氏度, ランキン度

degRe, reaumur, 列氏度, レオミュール度

output_unitsstr

The output temperature unit (e.g., ‘degF’, ‘kelvin’). The available values are as follows:

K, kelvin, degK, 开氏度, ケルビン

degC, celsius, degC, 摄氏度, セルシウス度

degF, fahrenheit, 华氏度, カ氏度, 華氏度, ファーレンハイト度

degR, rankine, 兰氏度, ランキン度

degRe, reaumur, 列氏度, レオミュール度

Returns

xarray.DataArray or xarray.Dataset

The converted temperature data with updated ‘units’ attribute.

Example

>>> import xarray as xr
>>> import easyclimate as ecl
>>> result = ecl.transfer_data_temperature_units(
...     xr.DataArray([104, 100, 92, 92, 86, 80, 80, 60, 30]), "摄氏度", "カ氏度"
... )
>>> print(result)
<xarray.DataArray (dim_0: 9)> Size: 72B
array([219.2, 212. , 197.6, 197.6, 186.8, 176. , 176. , 140. ,  86. ])
Dimensions without coordinates: dim_0
Attributes:
    units:    カ氏度
easyclimate.core.units.transfer_data_units(input_data: xarray.DataArray | xarray.Dataset, input_units: str, output_units: str) xarray.DataArray | xarray.Dataset

Convert data units for any type of transition using Pint.

Warning

Does NOT support dask.

Parameters

input_dataxarray.DataArray or xarray.Dataset

The input data with units to convert.

input_unitsstr

The input unit string.

output_unitsstr

The output unit string.

Returns

xarray.DataArray or xarray.Dataset

The converted data with updated ‘units’ attribute.

Example

>>> import xarray as xr
>>> import easyclimate as ecl
>>> result = ecl.transfer_data_units(
...     xr.DataArray([104, 100, 92, 92, 86, 80, 80, 60, 30]), "degC", "degF"
... )
>>> print(result)
<xarray.DataArray (dim_0: 9)> Size: 72B
array([219.2, 212. , 197.6, 197.6, 186.8, 176. , 176. , 140. ,  86. ])
Dimensions without coordinates: dim_0
Attributes:
    units:    degF