Skip to content

Commit 79b77ce

Browse files
committed
🎨 Move filter registration to CLI and rename ExampleFilter to DoublingFilter
1 parent cc145d0 commit 79b77ce

8 files changed

Lines changed: 32 additions & 24 deletions

File tree

ice_station_zebra/config/base.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
defaults:
22
- datasets:
33
- samp_sicsouth_osisaf_25k_2020_2020_24h_v1
4-
- samp_weathersouth_era5_0p5_2020_2020_24h_v1
4+
# - samp_weathersouth_era5_0p5_2020_2020_24h_v1
5+
- nbsamp_weathersouth_era5_0p5_2020_2020_24h_v1
56
- evaluate: default
67
- loggers:
78
- wandb

ice_station_zebra/config/datasets/nbsamp_weathersouth_era5_0p5_2020_2020_24h_v1.yaml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ nbsamp-weathersouth-era5-0p5-2020-2020-24h-v1:
1111
frequency: 24h
1212

1313
input:
14-
anemoi-dataset:
15-
join:
16-
- dataset: ${base_path}/data/anemoi/samp-weathersouth-era5-0p5-2020-2020-24h-v1.zarr
17-
select: [ 2t, z_250, z_500 , 10u, 10v, cos_julian_day, sin_julian_day ]
14+
pipe:
15+
- anemoi-dataset:
16+
join:
17+
- dataset: ${base_path}/data/anemoi/samp-weathersouth-era5-0p5-2020-2020-24h-v1.zarr
18+
select: [ 2t, z_250, z_500 , 10u, 10v, cos_julian_day, sin_julian_day ]
19+
- doubling_filter:
20+
input_field: 2t
21+
output_field: doubled_2t

ice_station_zebra/data_processors/cli.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from ice_station_zebra.cli import hydra_adaptor
77

8+
from .filters import register_filters
89
from .zebra_data_processor_factory import ZebraDataProcessorFactory
910

1011
# Create the typer app
@@ -17,6 +18,7 @@
1718
@hydra_adaptor
1819
def create(config: DictConfig) -> None:
1920
"""Create all datasets."""
21+
register_filters()
2022
factory = ZebraDataProcessorFactory(config)
2123
for dataset in factory.datasets:
2224
logger.info("Working on %s.", dataset.name)
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1-
from .example_filter import ExampleFilter
1+
from anemoi.transform.filters import filter_registry
2+
3+
from .doubling_filter import DoublingFilter
4+
5+
6+
# Register all filers with anemoi-transform
7+
def register_filters() -> None:
8+
filter_registry.register("doubling_filter", DoublingFilter)
9+
210

311
__all__ = [
4-
"ExampleFilter",
12+
"DoublingFilter",
513
]

ice_station_zebra/data_processors/filters/example_filter.py renamed to ice_station_zebra/data_processors/filters/doubling_filter.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,24 @@
11
from collections.abc import Iterator
22

3-
import earthkit.data as ekd # type: ignore[import-untyped]
3+
import earthkit.data as ekd
44
from anemoi.transform.filters.matching import MatchingFieldsFilter, matching
55

66

7-
# @filter_registry.register("example_filter")
8-
class ExampleFilter(MatchingFieldsFilter):
9-
@matching(
10-
select="param",
11-
forward=["input_field"],
12-
)
7+
class DoublingFilter(MatchingFieldsFilter):
8+
@matching(select="param", forward=["input_field"])
139
def __init__(
1410
self,
1511
*,
1612
input_field: str = "msl",
13+
output_field: str = "doubled_msl",
1714
) -> None:
18-
"""Create an example filter."""
15+
"""An example filter that takes two arguments."""
1916
self.input_field = input_field
17+
self.output_field = output_field
2018

2119
def forward_transform(self, input_field: ekd.Field) -> Iterator[ekd.Field]:
22-
"""An example forward transform that doubles the input field."""
20+
"""An example forward transform that doubles the input field as a new field."""
2321
yield input_field
2422
yield self.new_field_from_numpy(
25-
input_field.to_numpy() * 2, template=input_field, param="test_field"
23+
input_field.to_numpy() * 2, template=input_field, param=self.output_field
2624
)
27-
28-
def backward_transform(self, input_field: ekd.Field) -> Iterator[ekd.Field]:
29-
yield input_field

ice_station_zebra/data_processors/zebra_data_processor.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@
44

55
from anemoi.datasets.commands.create import Create
66
from anemoi.datasets.commands.inspect import InspectZarr
7-
from anemoi.transform.filters import filter_registry
87
from omegaconf import DictConfig, OmegaConf
98
from zarr.errors import PathNotFoundError
109

1110
from ice_station_zebra.types import AnemoiCreateArgs, AnemoiInspectArgs
1211

13-
from .filters.example_filter import ExampleFilter
1412
from .preprocessors import IPreprocessor
1513

1614
logger = logging.getLogger(__name__)
@@ -48,7 +46,6 @@ def create(self) -> None:
4846

4947
def download(self) -> None:
5048
"""Download a single Anemoi dataset."""
51-
filter_registry.register("example_filter", ExampleFilter)
5249
self.preprocessor.download(self.path_preprocessor)
5350
logger.info("Creating dataset %s at %s.", self.name, self.path_dataset)
5451
Create().run(

ice_station_zebra/data_processors/zebra_data_processor_factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ def __init__(self, config: DictConfig) -> None:
2424
.get("type", "None")
2525
]
2626
self.datasets.append(
27-
ZebraDataProcessor(dataset_name, config, cls_preprocessor)
27+
ZebraDataProcessor(dataset_name, config, cls_preprocessor) # type: ignore[type-abstract]
2828
)

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ omit= [
6262
module = [
6363
"anemoi.datasets.*",
6464
"anemoi.transform.*",
65+
"earthkit.*",
6566
"icenet.data.sic.*",
6667
"zarr.*",
6768
]

0 commit comments

Comments
 (0)