Source code for lyscripts.data.enhance

"""Enhance the dataset by inferring additional columns from the data.

This is a command-line interface to the methods
:py:meth:`~lydata.accessor.LyDataAccessor.combine` and
:py:meth:`~lydata.accessor.LyDataAccessor.augment` of the
:py:class:`~lydata.accessor.LyDataAccessor` class.
"""

from typing import Literal

from loguru import logger
from lydata.accessor import LyDataFrame
from lydata.utils import ModalityConfig

from lyscripts.cli import assemble_main
from lyscripts.configs import BaseCLI, DataConfig
from lyscripts.data.utils import save_table_to_csv


[docs] class EnhanceCLI(BaseCLI): """Enhance the dataset by inferring additional columns from the data.""" input: DataConfig modalities: dict[str, ModalityConfig] | None = None method: Literal["max_llh", "rank"] = "max_llh" lnl_subdivisions: dict[str, list[str]] = { "I": ["a", "b"], "II": ["a", "b"], "V": ["a", "b"], } output_file: str
[docs] def cli_cmd(self) -> None: """Infer additional columns from the data and save the enhanced dataset. This basically provides a CLI to the :py:func:`~lydata.accessor.LyDataAccessor.augment` function. See its docs for more details on what exactly is happening here. """ logger.debug(self.model_dump_json(indent=2)) data: LyDataFrame = self.input.load() data = data.ly.enhance( modalities=self.modalities, method=self.method, subdivisions=self.lnl_subdivisions, ) save_table_to_csv(file_path=self.output_file, table=data)
if __name__ == "__main__": main = assemble_main(settings_cls=EnhanceCLI, prog_name="enhance") main()