Transform Function Decorators

Transform function decorators, provided by the pyterrier_alpha.transform module, allow you to write more concise and expressive code when defining Transformers by removing boilerplate.

Right now, the only supported decorator is the by_query() decorator.

API Documentation

pyterrier_alpha.transform.by_query(*, add_ranks=True, batch_size=None, verbose=None)[source]

Decorates a function to transform a DataFrame query-by-query. Arguments match those in pt.apply closely.

Return type:

Union[Callable[[Callable[[DataFrame], DataFrame]], Callable[[DataFrame], DataFrame]], Callable[[Callable[[Iterable[Dict]], Iterable[Dict]]], Callable[[Iterable[Dict]], Iterable[Dict]]]]

Parameters:
  • verbose (bool) – Whether to print progress bar. Default is to inspect the passed transformer for a verbose member variable that is True.

  • add_ranks (bool) – Whether to add ranks

  • batch_size (int) – whether to apply fn on batches of rows or all that are received.

Example:

class MyTransformer(pt.Transformer):
    @pta.transform.by_query()
    def transform(self, inp: pd.DataFrame) -> pd.DataFrame:
        # inp only contains a single query at a time.

It can also decorate transform_iter, which is identifed by the function name

Example:

class MyIterTransformer(pt.Transformer):
    @pta.transform.by_query(add_ranks=False)
    def transform_iter(self, inp: Iterable[Dict]) -> Iterable[Dict]:
        # inp only contains a single query at a time.

Changed in version 0.12.0: added support for transform_iter

Changed in version 0.12.3: supports verbose kwarg

Changed in version 0.12.4: inspect the passed transformer for a verbose variable