Source code for rook.utils.ops.average
"""Operations for averaging data over dimensions, shape or time."""
from clisops.ops.average import average_over_dims as clisops_average_over_dims
from clisops.ops.average import average_shape as clisops_average_shape
from clisops.ops.average import average_time as clisops_average_time
from clisops.parameter import collection_parameter, dimension_parameter
from .base import Operation
__all__ = ["Average", "average_over_dims", "average_shape", "average_time"]
[docs]
class Average(Operation):
def _resolve_params(self, collection, **params):
dims = dimension_parameter.DimensionParameter(params.get("dims"))
collection = collection_parameter.CollectionParameter(collection)
self.collection = collection
self.params = {
"dims": dims,
"ignore_undetected_dims": params.get("ignore_undetected_dims"),
}
[docs]
def get_operation_callable(self):
return clisops_average_over_dims
[docs]
def average_over_dims(
collection,
dims=None,
ignore_undetected_dims=False,
output_dir=None,
output_type="netcdf",
split_method="time:auto",
file_namer="standard",
apply_fixes=True,
):
return Average(**locals()).calculate()
class AverageShape(Operation):
def _resolve_params(self, collection, **params):
shape = params.get("shape")
collection = collection_parameter.CollectionParameter(collection)
self.collection = collection
self.params = {
"shape": shape,
"variable": params.get("variable"),
}
def get_operation_callable(self):
return clisops_average_shape
[docs]
def average_shape(
collection,
shape,
variable=None,
output_dir=None,
output_type="netcdf",
split_method="time:auto",
file_namer="standard",
apply_fixes=True,
):
return AverageShape(**locals()).calculate()
class AverageTime(Operation):
def _resolve_params(self, collection, **params):
freq = params.get("freq")
collection = collection_parameter.CollectionParameter(collection)
self.collection = collection
self.params = {
"freq": freq,
}
def get_operation_callable(self):
return clisops_average_time
[docs]
def average_time(
collection,
freq="year",
output_dir=None,
output_type="netcdf",
split_method="time:auto",
file_namer="standard",
apply_fixes=True,
):
return AverageTime(**locals()).calculate()