From 2ae7fd8a9b0cfd8fb7ce9a3cfb47f2ef0db5e449 Mon Sep 17 00:00:00 2001 From: "hugo.madgeleon" <hugo.madgeleon@stud.unibas.ch> Date: Sun, 13 Nov 2022 12:35:29 +0100 Subject: [PATCH] Add check for positive integers in argparse --- frag_package/fragmentation_v2.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/frag_package/fragmentation_v2.py b/frag_package/fragmentation_v2.py index eec7aff..a27a493 100644 --- a/frag_package/fragmentation_v2.py +++ b/frag_package/fragmentation_v2.py @@ -63,14 +63,21 @@ def extant_file(x): raise argparse.ArgumentTypeError("{0} does not exist".format(x)) return x +# found on https://stackoverflow.com/questions/14117415/in-python-using-argparse-allow-only-positive-integers +def check_positive(value): + ivalue = int(value) + if ivalue <= 0: + raise argparse.ArgumentTypeError("%s is an invalid positive int value" % value) + return ivalue + # Parse command-line arguments def parse_arguments(): parser = argparse.ArgumentParser(description="Takes as input FASTA file of cDNA sequences, a CSV with sequence counts, and mean and std. dev. of fragment lengths. Outputs most terminal fragment (within desired length range) for each sequence.") - + parser.add_argument('--fasta', required=True, type=extant_file, help="FASTA file with cDNA sequences") parser.add_argument('--counts', required=True, type=extant_file, help="CSV file with sequence counts") - parser.add_argument('--mean', required = False, default = 10, type = int, help="Mean fragment length (default: 10)") - parser.add_argument('--std', required = False, default = 1, type = int, help="Standard deviation fragment length (defafult: 1)") + parser.add_argument('--mean', required = False, default = 10, type = check_positive, help="Mean fragment length (default: 10)") + parser.add_argument('--std', required = False, default = 1, type = check_positive, help="Standard deviation fragment length (defafult: 1)") args = parser.parse_args() return args.fasta, args.counts, args.mean, args.std -- GitLab