uncongeniality_analysis/main.py

61 lines
1.7 KiB
Python

import pandas as pd
import yaml
import logging
import datetime
from pathlib import Path
from src.analysis import run_analyses
from src.preprocessor import Preprocessing
from src.data_loading_and_saving.constructor import custom_constructor
from src.data_loading_and_saving.create_results_report import (
create_markdown_report,
create_pdf_report,
)
def main():
yaml.SafeLoader.add_multi_constructor("!", custom_constructor)
with open("config.yaml", "r") as file:
config = yaml.safe_load(file)
path_to_data: str = config["data_path"]
name_data: str = config["dataset_name"]
name_analysis_job_file: str = config["analysis_job_file"]
bool_create_pdf_report: bool = config["create_pdf_report"]
log_filename: str = "log.log"
todays_date: str = datetime.date.today().strftime("%B %d, %Y")
output_name: str = f"{todays_date}_analysis_report"
logging.basicConfig(
filename=log_filename,
filemode="w",
format="%(message)s",
level=logging.INFO,
)
preprocessor: Preprocessing = Preprocessing(path_to_data, name_data)
with open(name_analysis_job_file, "r") as file:
analysis_config = yaml.safe_load(file)
datasets: dict[str, pd.DataFrame] = preprocessor.preprocess_datasets(analysis_config["preprocessing"])
run_analyses(analysis_config, datasets)
create_markdown_report(
log_filename=Path(log_filename),
output_name=Path(output_name),
output_dir=Path("results_reports"),
)
if bool_create_pdf_report:
create_pdf_report(
markdown_filename=Path(output_name), output_dir=Path("results_reports")
)
if __name__ == "__main__":
main()