From 96cb92b2a75068b451588d9ddb52e90acec97251 Mon Sep 17 00:00:00 2001 From: Amandine PERRIN <amandine.perrin@pasteur.fr> Date: Mon, 9 Sep 2019 09:25:26 +0200 Subject: [PATCH] Take into account '--quiet' option when showing progress bars --- .../prepare_module/download_genomes_func.py | 1 - PanACoTA/prepare_module/filter_genomes.py | 28 +++++++++++-------- PanACoTA/subcommands/prepare.py | 7 ++++- 3 files changed, 23 insertions(+), 13 deletions(-) diff --git a/PanACoTA/prepare_module/download_genomes_func.py b/PanACoTA/prepare_module/download_genomes_func.py index 2b11ac8e..ef091f19 100644 --- a/PanACoTA/prepare_module/download_genomes_func.py +++ b/PanACoTA/prepare_module/download_genomes_func.py @@ -13,7 +13,6 @@ import shutil import sys import glob import urllib.request -import progressbar import ncbi_genome_download as ngd from PanACoTA import utils diff --git a/PanACoTA/prepare_module/filter_genomes.py b/PanACoTA/prepare_module/filter_genomes.py index 433717e6..2356f40f 100755 --- a/PanACoTA/prepare_module/filter_genomes.py +++ b/PanACoTA/prepare_module/filter_genomes.py @@ -101,7 +101,8 @@ def sort_genomes_minhash(genomes, max_l90, max_cont): return sorted_genomes -def iterative_mash(sorted_genomes, genomes, outdir, species_linked, min_dist, max_dist, threads): +def iterative_mash(sorted_genomes, genomes, outdir, species_linked, min_dist, max_dist, + threads, quiet): """ Run mash all vs all, to get all pairwise distances. Then, take the first genome of the list, and remove those for which the distance to it @@ -124,6 +125,8 @@ def iterative_mash(sorted_genomes, genomes, outdir, species_linked, min_dist, ma max limit of distance between 2 genomes to keep them threads : max number of threads to use + quiet : bool + True if nothing must be sent to stdout/stderr, False otherwise Returns ------- @@ -181,19 +184,22 @@ def iterative_mash(sorted_genomes, genomes, outdir, species_linked, min_dist, ma # Iteratively discard genomes too close or too far logger.info("Starting iterative discarding steps") - widgets = ['Genomes compared: ', - progressbar.Bar(marker='█', left='', right='', fill=' '), ' ', - progressbar.Counter(), "/{}".format(nbgen), ' ', - progressbar.Timer(), ' - ' - ] - bar = progressbar.ProgressBar(widgets=widgets, max_value=len(to_try), term_width=100).start() - done = 0 + if not quiet: + widgets = ['Genomes compared: ', + progressbar.Bar(marker='█', left='', right='', fill=' '), ' ', + progressbar.Counter(), "/{}".format(nbgen), ' ', + progressbar.Timer(), ' - ' + ] + bar = progressbar.ProgressBar(widgets=widgets, max_value=len(to_try), term_width=100).start() + done = 0 while len(to_try) > 1: mash_step(to_try, corresp_file, mat_sp, genomes_removed, min_dist, max_dist) - done = nbgen - len(to_try) - bar.update(done) - bar.finish() + if not quiet: + done = nbgen - len(to_try) + bar.update(done) + if not quiet: + bar.finish() logger.info("Final number of genomes in dataset: {}".format(nbgen - len(genomes_removed))) return genomes_removed diff --git a/PanACoTA/subcommands/prepare.py b/PanACoTA/subcommands/prepare.py index 5deaa300..16ae3ae0 100644 --- a/PanACoTA/subcommands/prepare.py +++ b/PanACoTA/subcommands/prepare.py @@ -204,7 +204,7 @@ def main(cmd, NCBI_species, NCBI_taxid, outdir, tmp_dir, threads, no_refseq, onl # sorted_genome : [genome_file] ordered by L90/nbcont (keys of genomes) sorted_genomes = fg.sort_genomes_minhash(genomes, l90, nbcont) removed = fg.iterative_mash(sorted_genomes, genomes, outdir, species_linked, - min_dist, max_dist, threads) + min_dist, max_dist, threads, quiet) # Write list of genomes kept, and list of genomes removed fg.write_outputfiles(genomes, sorted_genomes, removed, outdir, species_linked, min_dist) logger.info("End") @@ -355,6 +355,11 @@ def check_args(parser, args): parser.error("If you want to run only Mash filtering steps, please give the " "info file with the required information (see '--info' option)") + # Cannot be verbose and quiet at the same time + if args.verbose > 0 and args.quiet: + parser.error("Choose between a verbose output (-v) or a quiet output (-q)." + " You cannot have both.") + # WARNINGS # User did not specify a species name if not args.NCBI_species: -- GitLab