diff --git a/frag_package/fragmentation_v2.py b/frag_package/fragmentation_v2.py index eec7aff7bdae5377627d4de9d2ce68da8ab27d57..a27a493134d37c0e068f2ad4d36f70548111196c 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