Skip to content

Commit e933805

Browse files
refactor: remove TabularFilter base class (#243)
## Description The tabular filters previously inherited from an independent `TabularFilter` base class. This PR changes the code so that all tabular filters now inherit from the regular `Filter` base class instead. ***As a contributor to the Anemoi framework, please ensure that your changes include unit tests, updates to any affected dependencies and documentation, and have been tested in a parallel setting (i.e., with multiple GPUs). As a reviewer, you are also responsible for verifying these aspects and requesting changes if they are not adequately addressed. For guidelines about those please refer to https://anemoi.readthedocs.io/en/latest/*** By opening this pull request, I affirm that all authors agree to the [Contributor License Agreement.](https://github.com/ecmwf/codex/blob/main/Legal/contributor_license_agreement.md)
1 parent 46286e9 commit e933805

24 files changed

+47
-64
lines changed

src/anemoi/transform/filters/tabular/__init__.py

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,12 @@
66
# In applying this licence, ECMWF does not waive the privileges and immunities
77
# granted to it by virtue of its status as an intergovernmental organisation
88
# nor does it submit to any jurisdiction.
9-
from abc import ABC
10-
from abc import abstractmethod
11-
12-
import pandas as pd
139
from anemoi.utils.registry import Registry
1410

1511
filter_registry = Registry(__name__)
1612

17-
__all__ = ["create_filter", "filter_registry", "TabularFilter"]
13+
__all__ = ["create_filter", "filter_registry"]
1814

1915

2016
def create_filter(name: str, **kwargs):
2117
return filter_registry.create(name, **kwargs)
22-
23-
24-
class TabularFilter(ABC):
25-
def __repr__(self):
26-
dict_str = ", ".join(f"{k}={v!r}" for k, v in self.__dict__.items())
27-
return f"{self.__class__.__name__}({dict_str})"
28-
29-
def __call__(self, df: pd.DataFrame) -> pd.DataFrame:
30-
return self.forward(df)
31-
32-
@abstractmethod
33-
def forward(self, df: pd.DataFrame) -> pd.DataFrame:
34-
raise NotImplementedError()

src/anemoi/transform/filters/tabular/add_azimuth.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010

1111
import pandas as pd
1212

13-
from anemoi.transform.filters.tabular import TabularFilter
13+
from anemoi.transform.filter import Filter
1414
from anemoi.transform.filters.tabular import filter_registry
1515
from anemoi.transform.filters.tabular.support.sat_view_angles import calc_azimuth
1616
from anemoi.transform.filters.tabular.support.utils import raise_if_df_missing_cols
1717

1818

1919
@filter_registry.register("add_azimuth")
20-
class AddAzimuth(TabularFilter):
20+
class AddAzimuth(Filter):
2121
"""Adds a column to the DataFrame containing the viewing azimuth angle
2222
calculated from the latitude, longitude and the spacecraft latitude,
2323
spacecraft longitude.

src/anemoi/transform/filters/tabular/add_forcings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
import numpy as np
1212
import pandas as pd
1313

14-
from anemoi.transform.filters.tabular import TabularFilter
14+
from anemoi.transform.filter import Filter
1515
from anemoi.transform.filters.tabular import filter_registry
1616
from anemoi.transform.filters.tabular.support.compute_forcings import cos_solar_zenith_angle
1717

1818

1919
@filter_registry.register("add_forcings")
20-
class AddForcings(TabularFilter):
20+
class AddForcings(Filter):
2121
"""Adds forcings columns to the DataFrame.
2222
2323
The configuration should be a dictionary with the key 'columns' containing

src/anemoi/transform/filters/tabular/add_healpix.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
import healpy as hp
1212
import pandas as pd
1313

14-
from anemoi.transform.filters.tabular import TabularFilter
14+
from anemoi.transform.filter import Filter
1515
from anemoi.transform.filters.tabular import filter_registry
1616

1717

1818
@filter_registry.register("add_healpix")
19-
class AddHealpix(TabularFilter):
19+
class AddHealpix(Filter):
2020
"""Add a healpix index column 'healpix_idx_{nside}' to the DataFrame.
2121
2222
The configuration key `nside` is an integer representing the number of

src/anemoi/transform/filters/tabular/add_msg_angles.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212

1313
import pandas as pd
1414

15-
from anemoi.transform.filters.tabular import TabularFilter
15+
from anemoi.transform.filter import Filter
1616
from anemoi.transform.filters.tabular import filter_registry
1717
from anemoi.transform.filters.tabular.support.sat_view_angles import calc_azimuth
1818
from anemoi.transform.filters.tabular.support.sat_view_angles import calc_zenith
1919
from anemoi.transform.filters.tabular.support.sat_view_angles import get_meteosat_loc
2020

2121

2222
@filter_registry.register("add_msg_angles")
23-
class AddMSGAngles(TabularFilter):
23+
class AddMSGAngles(Filter):
2424
"""Adds columns representing the Meteosat angles to the DataFrame which are
2525
calculated from the sub-satellite latitude, longitude and observed latitude,
2626
longitude.

src/anemoi/transform/filters/tabular/apply_column_transformations.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import numpy as np
1212
import pandas as pd
1313

14-
from anemoi.transform.filters.tabular import TabularFilter
14+
from anemoi.transform.filter import Filter
1515
from anemoi.transform.filters.tabular import filter_registry
1616

1717

@@ -65,7 +65,7 @@ def apply(self, df: pd.DataFrame) -> None:
6565

6666

6767
@filter_registry.register("apply_column_transformations")
68-
class ApplyColumnTransformations(TabularFilter):
68+
class ApplyColumnTransformations(Filter):
6969
"""Apply mathematical transformations to DataFrame columns (including
7070
multiple columns).
7171

src/anemoi/transform/filters/tabular/assign_to_grid.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
import pandas as pd
1212
from scipy.spatial import cKDTree
1313

14-
from anemoi.transform.filters.tabular import TabularFilter
14+
from anemoi.transform.filter import Filter
1515
from anemoi.transform.filters.tabular import filter_registry
1616

1717

1818
@filter_registry.register("assign_to_grid")
19-
class AssignToGrid(TabularFilter):
19+
class AssignToGrid(Filter):
2020
"""Adds a new column ('grid_index_{grid}') to the DataFrame which represents
2121
the index of the nearest grid point, based on the latitude/longitude
2222
coordinates.

src/anemoi/transform/filters/tabular/clip.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212

1313
import pandas as pd
1414

15-
from anemoi.transform.filters.tabular import TabularFilter
15+
from anemoi.transform.filter import Filter
1616
from anemoi.transform.filters.tabular import filter_registry
1717
from anemoi.transform.filters.tabular.support.utils import raise_if_df_missing_cols
1818

1919

2020
@filter_registry.register("clip")
21-
class Clip(TabularFilter):
21+
class Clip(Filter):
2222
"""Clips columns of a DataFrame to the specified range.
2323
2424
The configuration should be a dictionary of column names and clip ranges,

src/anemoi/transform/filters/tabular/drop.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010

1111
import pandas as pd
1212

13-
from anemoi.transform.filters.tabular import TabularFilter
13+
from anemoi.transform.filter import Filter
1414
from anemoi.transform.filters.tabular import filter_registry
1515
from anemoi.transform.filters.tabular.support.utils import raise_if_df_missing_cols
1616

1717

1818
@filter_registry.register("drop")
19-
class Drop(TabularFilter):
19+
class Drop(Filter):
2020
"""Drop one or more columns from a DataFrame.
2121
2222
The configuration should be a dictionary with the key 'columns' containing

src/anemoi/transform/filters/tabular/drop_duplicates.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010

1111
import pandas as pd
1212

13-
from anemoi.transform.filters.tabular import TabularFilter
13+
from anemoi.transform.filter import Filter
1414
from anemoi.transform.filters.tabular import filter_registry
1515
from anemoi.transform.filters.tabular.support.utils import raise_if_df_missing_cols
1616

1717

1818
@filter_registry.register("drop_duplicates")
19-
class DropDuplicates(TabularFilter):
19+
class DropDuplicates(Filter):
2020
"""Drop duplicate rows from a DataFrame.
2121
2222
The configuration can contain either a list of column names to be

0 commit comments

Comments
 (0)