74 lines
2.8 KiB
Python
Raw Normal View History

from src.analysis_functions.descriptive import DescriptiveAnalysis
from src.data_classes.parameters_descriptive_aggregated import (
DescriptiveAggregatedParameters,
)
from src.data_classes.parameters_descriptive_overview import (
DescriptiveOverviewParameters,
)
from src.data_classes.parameters_descriptive_percentage_of_dataset_under_condition import (
DescriptivePercentageOfDatasetUnderConditionParameters,
)
from src.data_classes.parameters_general import GeneralParameters
from src.utils.helper_logging import log_descriptive_analysis_details
def run_descriptive_analysis(
descriptive: DescriptiveAnalysis, analyses_list: list[GeneralParameters]
):
"""
Run descriptive analyses based on a list of parameter objects.
This function iterates over a list of GeneralParameters objects,
logs the details of each analysis, and then performs the appropriate
descriptive analysis based on the type of the Parameters object.
Parameters
----------
descriptive: DescriptiveAnalysis
An instance of the DescriptiveAnalysis class.
analyses_list: list[PlotParameters]
A list of PlotParameters objects.
Each object contains the parameters for a single visualization.
Raises
------
ValueError: If the type of the GeneralParameters object is not recognized or not a descriptive analysis.
Returns
-------
None
"""
for analysis_config in analyses_list:
log_descriptive_analysis_details(analysis_config)
if isinstance(analysis_config, DescriptiveAggregatedParameters):
descriptive.create_descriptive_aggregated_for_metrics(
data=analysis_config.data,
variables=analysis_config.variables,
aggregation_function=analysis_config.aggregation_function,
group_by=analysis_config.group_by,
name_save_file=analysis_config.name_save_file,
)
elif isinstance(analysis_config, DescriptiveOverviewParameters):
descriptive.create_descriptives_for_metrics(
data=analysis_config.data,
metrics=analysis_config.metrics,
group_by=analysis_config.group_by,
name_save_file=analysis_config.name_save_file,
)
elif isinstance(
analysis_config, DescriptivePercentageOfDatasetUnderConditionParameters
):
descriptive.give_percentage_of_dataset_under_condition(
data=analysis_config.data,
variable=analysis_config.variable,
comparison=analysis_config.comparison,
condition=analysis_config.condition,
name_save_file=analysis_config.name_save_file,
)
else:
raise ValueError(
f"Invalid type of descriptive analysis requested {type(analysis_config)}"
)