| | import argparse |
| | import json |
| | import os |
| | from csv import QUOTE_NONNUMERIC |
| | from time import localtime, strftime |
| |
|
| | import pandas as pd |
| |
|
| | from src.logger import logger |
| |
|
| |
|
| | def load_json(path, **rest): |
| | try: |
| | with open(path, "r") as f: |
| | loaded = json.load(f, **rest) |
| | except json.decoder.JSONDecodeError as error: |
| | logger.critical(f"Error when loading json file at: '{path}'\n{error}") |
| | exit(1) |
| | return loaded |
| |
|
| |
|
| | class Paths: |
| | def __init__(self, output_dir): |
| | self.output_dir = output_dir |
| | self.save_marked_dir = output_dir.joinpath("") |
| | self.results_dir = output_dir.joinpath("") |
| | self.manual_dir = output_dir.joinpath("Manual") |
| | self.evaluation_dir = output_dir.joinpath("Evaluation") |
| | self.errors_dir = self.manual_dir.joinpath("ErrorFiles") |
| | self.multi_marked_dir = self.manual_dir.joinpath("MultiMarkedFiles") |
| |
|
| |
|
| | def setup_dirs_for_paths(paths): |
| | logger.info("Checking Directories...") |
| | for save_output_dir in [paths.save_marked_dir]: |
| | if not os.path.exists(save_output_dir): |
| | logger.info(f"Created : {save_output_dir}") |
| | os.makedirs(save_output_dir) |
| | os.mkdir(save_output_dir.joinpath("stack")) |
| | os.mkdir(save_output_dir.joinpath("_MULTI_")) |
| | os.mkdir(save_output_dir.joinpath("_MULTI_", "stack")) |
| |
|
| | for save_output_dir in [paths.manual_dir, paths.results_dir, paths.evaluation_dir]: |
| | if not os.path.exists(save_output_dir): |
| | logger.info(f"Created : {save_output_dir}") |
| | os.makedirs(save_output_dir) |
| |
|
| | for save_output_dir in [paths.multi_marked_dir, paths.errors_dir]: |
| | if not os.path.exists(save_output_dir): |
| | logger.info(f"Created : {save_output_dir}") |
| | os.makedirs(save_output_dir) |
| |
|
| |
|
| | def setup_outputs_for_template(paths, template): |
| | |
| | ns = argparse.Namespace() |
| | logger.info("Checking Files...") |
| |
|
| | |
| | ns.paths = paths |
| |
|
| | ns.empty_resp = [""] * len(template.output_columns) |
| | ns.sheetCols = [ |
| | "file_id", |
| | "input_path", |
| | "output_path", |
| | "score", |
| | ] + template.output_columns |
| | ns.OUTPUT_SET = [] |
| | ns.files_obj = {} |
| | TIME_NOW_HRS = strftime("%I%p", localtime()) |
| | ns.filesMap = { |
| | "Results": os.path.join(paths.results_dir, f"Results_{TIME_NOW_HRS}.csv"), |
| | "MultiMarked": os.path.join(paths.manual_dir, "MultiMarkedFiles.csv"), |
| | "Errors": os.path.join(paths.manual_dir, "ErrorFiles.csv"), |
| | } |
| |
|
| | for file_key, file_name in ns.filesMap.items(): |
| | if not os.path.exists(file_name): |
| | logger.info(f"Created new file: '{file_name}'") |
| | |
| | ns.files_obj[file_key] = file_name |
| | |
| | pd.DataFrame([ns.sheetCols], dtype=str).to_csv( |
| | ns.files_obj[file_key], |
| | mode="a", |
| | quoting=QUOTE_NONNUMERIC, |
| | header=False, |
| | index=False, |
| | ) |
| | else: |
| | logger.info(f"Present : appending to '{file_name}'") |
| | ns.files_obj[file_key] = open(file_name, "a") |
| |
|
| | return ns |
| |
|