61 lines
1.7 KiB
Python
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()
|