From a235e497f4826882643f53d6cfde8cbb06b28646 Mon Sep 17 00:00:00 2001 From: Jakob Nybo Nissen Date: Thu, 9 Nov 2023 15:58:32 +0100 Subject: [PATCH] Validate arguments to ReclusteringOptions This allows Vamb to fail early if passed paths to files that do not exist. --- vamb/__main__.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/vamb/__main__.py b/vamb/__main__.py index a82fee5f..4ed879db 100755 --- a/vamb/__main__.py +++ b/vamb/__main__.py @@ -248,10 +248,18 @@ def __init__( clusters_path: Path, hmmout_path: Path, binsplit_separator: Optional[str], - algorithm: Optional[str], + algorithm: str, ): assert isinstance(latent_path, Path) assert isinstance(clusters_path, Path) + assert isinstance(hmmout_path, Path) + + for path in [latent_path, clusters_path, hmmout_path]: + if not path.is_file(): + raise FileNotFoundError(path) + + if algorithm not in ("kmeans", "dbscan"): + raise ValueError("Algortihm must be 'kmeans' or 'dbscan'") self.latent_path = latent_path self.clusters_path = clusters_path @@ -1706,7 +1714,6 @@ def run_inner(self, logfile: Optional[IO[str]]): class ReclusteringArguments(BasicArguments): def __init__(self, args): super(ReclusteringArguments, self).__init__(args) - assert args.algorithm in ("kmeans", "dbscan") self.reclustering_options = ReclusteringOptions( latent_path=args.latent_path, clusters_path=args.clusters_path,