Source code for biobss.pipeline.feature_extraction

from __future__ import annotations

import inspect
from distutils.log import warn

import pandas as pd


[docs]class Feature: def __init__(self, name, function, *args, **kwargs): self.name = name self.function = function self.args = args self.kwargs = kwargs
[docs] def process(self, *args, **kwargs) -> pd.DataFrame: args = args + self.args kwargs.update(self.kwargs) kwargs = self._process_args(**kwargs) feature_output = self.__extract(*args, **kwargs) return feature_output
def _process_args(self, **kwargs): signature = inspect.signature(self.function) excess_args = [] for key in kwargs.keys(): if key not in signature.parameters.keys(): excess_args.append(key) for e in excess_args: kwargs.pop(e) return kwargs def __extract(self, *args, **kwargs): result = self.function(*args, **kwargs) return result def __str__(self) -> str: return self.name