Source code for rook.utils.ops.subset
"""Subset operation with rook-specific fix application."""
from clisops.ops.subset import subset as clisops_subset
from clisops.parameter import parameterise
from rook.utils.apply_fixes import apply_fixes
from .base import Operation
from . import normalise
__all__ = ["Subset", "subset"]
[docs]
class Subset(Operation):
def _resolve_params(self, collection, **params):
parameters = parameterise(
collection=collection,
time=params.get("time"),
area=params.get("area"),
level=params.get("level"),
time_components=params.get("time_components"),
)
self.collection = parameters.pop("collection")
self.params = parameters
[docs]
def calculate(self):
config = {
"output_type": self._output_type,
"output_dir": self._output_dir,
"split_method": self._split_method,
"file_namer": self._file_namer,
}
self.params.update(config)
norm_collection = normalise.normalise(self.collection, False)
rs = normalise.ResultSet(vars())
for dset, norm_collection_ in norm_collection.items():
fixed_collection = apply_fixes(dset, norm_collection_)
rs.add(dset, clisops_subset(fixed_collection, **self.params))
return rs
[docs]
def subset(
collection,
time=None,
area=None,
level=None,
time_components=None,
output_dir=None,
output_type="netcdf",
split_method="time:auto",
file_namer="standard",
apply_fixes=False,
):
return Subset(**locals()).calculate()