Source code for samsifter.util.arg_sanitation
# -*- coding: utf-8 -*-
"""Methods for input sanitation during argument parsing.
.. moduleauthor:: Florian Aldehoff <samsifter@biohazardous.de>
"""
import argparse
import os.path
[docs]def check_pos_int(arg):
"""Check if argument is a positive Integer.
Parameters
----------
arg : str
command line argument
Returns
-------
int
typed value of command line argument
Raises
------
ArgumentTypeError
If value is negative.
"""
try:
value = int(arg)
except ValueError as err:
raise argparse.ArgumentTypeError(str(err))
if value < 0:
raise argparse.ArgumentTypeError("expected value >= 0, got value = %i"
% (value,))
return value
[docs]def check_pos_float(arg):
"""Check if argument is a positive Float.
Parameters
----------
arg : str
command line argument
Returns
-------
float
typed value of command line argument
Raises
------
ArgumentTypeError
If value is negative.
"""
try:
value = float(arg)
except ValueError as err:
raise argparse.ArgumentTypeError(str(err))
if value < 0:
raise argparse.ArgumentTypeError("expected value >= 0, got value = %f"
% (value,))
return value
[docs]def check_pos_float_max1(arg):
"""Check if argument is a positive Float between 0 and 1.
Parameters
----------
arg : str
command line argument
Returns
-------
float
typed value of command line argument
Raises
------
ArgumentTypeError
If value is negative or larger than 1.0.
"""
try:
value = float(arg)
except ValueError as err:
raise argparse.ArgumentTypeError(str(err))
if value <= 0.0 or value > 1.0:
raise argparse.ArgumentTypeError("expected 0.0 > value <= 1.0, got \
value = %f" % (value,))
return value
[docs]def check_pos_float_max100(arg):
"""Check if argument is a positive Float between 0 and 100.
Parameters
----------
arg : str
command line argument
Returns
-------
float
typed value of command line argument
Raises
------
ArgumentTypeError
If value is negative or larger than 100.0.
"""
try:
value = float(arg)
except ValueError as err:
raise argparse.ArgumentTypeError(str(err))
if value <= 0.0 or value > 100.0:
raise argparse.ArgumentTypeError("expected 0.0 > value <= 100.0, got \
value = %f" % (value,))
return value
[docs]def check_percent(arg):
"""Check if argument is a positive Float between 0 and 100.
Note
----
Use check_pos_float_max100() instead.
"""
return check_pos_float_max100(arg)
[docs]def check_sam(arg):
"""Check if argument is a SAM file.
Parameters
----------
arg : str
filepath
Returns
-------
str
filepath to SAM file
Raises
------
ArgumentTypeError
If file does not exist or has no .sam file extension.
"""
if not os.path.isfile(arg):
raise argparse.ArgumentTypeError("no such file: %s" % (arg,))
base, ext = os.path.splitext(arg)
if ext.lower() not in (".sam", ):
raise argparse.ArgumentTypeError("file must have a .sam extension")
return arg
[docs]def check_csv(arg):
"""Check if argument is a CSV file.
Parameters
----------
arg : str
filepath
Returns
-------
str
filepath to SAM file
Raises
------
ArgumentTypeError
If file does not exist or has no .csv file extension.
"""
if not os.path.isfile(arg):
raise argparse.ArgumentTypeError("no such file: %s" % (arg,))
base, ext = os.path.splitext(arg)
if ext.lower() not in (".csv", ):
raise argparse.ArgumentTypeError("file must have a .csv extension")
return arg