imod.prepare.Regridder#
- class imod.prepare.Regridder(method, ndim_regrid=None, use_relative_weights=False, extra_overlap=0)[source]#
Object to repeatedly regrid similar objects. Compiles once on first call, can then be repeatedly called without JIT compilation overhead.
- method#
The method to use for regridding. Default available methods are:
{"nearest", "multilinear", mean", "harmonic_mean", "geometric_mean", "sum", "minimum", "maximum", "mode", "median", "conductance"}
- Type:
str, function
- ndim_regrid#
The number of dimensions over which to regrid. If not provided,
ndim_regrid
will be inferred. It serves to prevent regridding over an unexpected number of dimensions; say you want to regrid over only two dimensions. Due to an input error in the coordinates oflike
, three dimensions may be inferred in the first.regrid
call. An error will be raised if ndim_regrid not match the number of inferred dimensions. Default value is None.- Type:
int, optional
- use_relative_weights#
Whether to use relative weights in the regridding method or not. Relative weights are defined as: cell_overlap / source_cellsize, for every axis.
This argument should only be used if you are providing your own
method
as a function, where the function requires relative, rather than absolute weights (the providedconductance
method requires relative weights, for example). Default value is False.- Type:
bool, optional
- extra_overlap#
In case of chunked regridding, how many cells of additional overlap is necessary. Linear interpolation requires this for example, as it reaches beyond cell boundaries to compute values. Default value is 0.
- Type:
integer, optional
Examples
Initialize the Regridder object:
>>> mean_regridder = imod.prepare.Regridder(method="mean")
Then call the
regrid
method to regrid.>>> result = mean_regridder.regrid(source, like)
The regridder can be re-used if the number of regridding dimensions match, saving some time by not (re)compiling the regridding method.
>>> second_result = mean_regridder.regrid(second_source, like)
A one-liner is possible for single use:
>>> result = imod.prepare.Regridder(method="mean").regrid(source, like)
It’s possible to provide your own methods to the
Regridder
, provided that numba can compile them. They need to take the argumentsvalues
andweights
. Make sure they deal withnan
values gracefully!>>> def p30(values, weights): >>> return np.nanpercentile(values, 30)
>>> p30_regridder = imod.prepare.Regridder(method=p30) >>> p30_result = p30_regridder.regrid(source, like)
The Numba developers maintain a list of support Numpy features here: https://numba.pydata.org/numba-doc/dev/reference/numpysupported.html
In general, however, the provided methods should be adequate for your regridding needs.
Methods
__init__
(method[, ndim_regrid, ...])regrid
(source, like[, fill_value])Regrid
source
along dimensions thatsource
andlike
share.