Source code for haddock.gear.postprocessing

"""Tools for post-processing haddock3 runs."""

import os
import shutil
import tarfile

from haddock import log
from haddock.clis.cli_analyse import ANA_FOLDER
from haddock.core.typing import Optional


[docs] def archive_run(run_dir: str, delete: bool = True) -> tuple[str, Optional[str]]: """Create an archive of the haddock3 run directory and analysis. Parameters ---------- run_dir : str Path to the run directory delete : bool, optional Should the un-archived directory be deleted?, by default False Returns ------- tuple[str, Optional[str]] run_archive_fname : str Path to the run archive analysis_archive_fname : Optional[str] Path to the run analysis archive """ log.info("Creating an archive of the run") # Start by archiving the run_directory run_archive_fname = f"{run_dir}.tgz" with tarfile.open(run_archive_fname, "w:gz") as tar: tar.add(run_dir, arcname=os.path.basename(run_dir)) # Archive the analysis directory analysis_archive_fname = None if os.path.exists(f"{run_dir}/{ANA_FOLDER}"): analysis_archive_fname = f"{run_dir}_{ANA_FOLDER}.tgz" with tarfile.open(analysis_archive_fname, "w:gz") as tar: tar.add(f"{run_dir}/{ANA_FOLDER}", arcname=f"{run_dir}_{ANA_FOLDER}") if delete: shutil.rmtree(run_dir) return run_archive_fname, analysis_archive_fname