Skip to main content

Check whether the parameters received by a function are correct

Project description

paramcheckup

This package has a collection of functions that check whether the parameter received by a function is of a certain type, returning True if the input is as expected or raising an error that indicates what the problem is.

Install

pip install paramcheckup

Example 1

import numpy as np
from scipy import stats

Assume a function t_test() that applies one sample Student's t test to compare means (two sided). This function receives three parameters, which are x_data, mu and alpha.

def t_test(x_data, mu, alpha):
    tcalc = (x_data.mean() - mu)*np.sqrt(x_data.size)/(x_data.std(ddof=1))
    t_critical = stats.t.ppf(1-alpha/2, x_data.size - 1)
    p_value = (1 - stats.t.cdf(np.abs(tcalc), x_data.size - 1))*2
    if p_value < alpha:
        conclusion = "Reject H0"
    else:
        conclusion = "Fail to reject H0"
    return tcalc, t_critical, p_value, conclusion

The t_test function strongly depends on the x_data parameter being a one-dimensional NumpyArray. The types.is_numpy(value, param_name, func_name) function can checks whether this is True:

from paramcheckup import types
def t_test(x_data, mu, alpha):
    types.is_numpy(x_data, "x_data", "t_test")
    
    tcalc = (x_data.mean() - mu)*np.sqrt(x_data)/(x_data.std(ddof=1))
    t_critical = stats.t.ppf(1-alpha/2, x_data.size - 1)
    p_value = (1 - stats.t.cdf(np.abs(tcalc), x_data.size - 1))*2
    if p_value < alpha:
        conclusion = "Reject H0"
    else:
        conclusion = "Fail to reject H0"
    return tcalc, t_critical, p_value, conclusion

If the user passes a NumpyArray as input for x_data, the result of types.is_numpy function will be True and the calculation will be performed.

x = np.array([1.24, 1.3, 1.11])
result = t_test(x, 3, 0.05)
print(result)
(-31.80244895786038, 4.302652729911275, 0.0009872686643235262, 'Reject H0')

However, if you use a list instead of NumpyArray, an TypeError will be raised indicating what the error is:

x = [1.24, 1.3, 1.11]
result = t_test(x, 3, 0.05)
The parameter 'x_data' in function 't_test' must be of type *numpy.ndarray*, but its type is *list*.

The Traceback error is also displayed:

Traceback (most recent call last):
  File "...\main.py", line 21, in <module>
    result = t_test(x, 3, 0.05)
  File "...\main.py", line 8, in t_test
    types.is_numpy(x_data, "x_data", "t_test")
  File "...\venv\lib\site-packages\paramcheckup\types.py", line 436, in is_numpy
    raise TypeError("NotNumPyError")
TypeError: NotNumPyError

In future releases, the Traceback will be optional

Example 2

The alpha parameter indicates the level of significance that should be adopted for the test. It is a value that varies between 0 and 1. To limit the range of values, you can use the numbers.is_between_a_and_b() function:

from paramcheckup import types, numbers

def t_test(x_data, mu, alpha):
    types.is_numpy(x_data, "x_data", "t_test")
    numbers.is_between_a_and_b(alpha, 0, 1, "alpha", "t_test", inclusive=False)
    tcalc = (x_data.mean() - mu)*np.sqrt(x_data.size)/(x_data.std(ddof=1))
    t_critical = stats.t.ppf(1-alpha/2, x_data.size - 1)
    p_value = (1 - stats.t.cdf(np.abs(tcalc), x_data.size - 1))*2
    if p_value < alpha:
        conclusion = "Reject H0"
    else:
        conclusion = "Fail to reject H0"
    return tcalc, t_critical, p_value, conclusion


x = np.array([1.24, 1.3, 1.11])
alpha = 1.05
result = t_test(x, 3, alpha)
The value of parameter 'alpha' in function 't_test' must be within the range of 0 < value < 1, but it is '1.05'.

Traceback ommited

Note that the inclusive=False parameter causes the limits to be open, which makes sense for the significance level.

License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paramcheckup-1.0.0.tar.gz (96.2 kB view hashes)

Uploaded Source

Built Distribution

paramcheckup-1.0.0-py3-none-any.whl (14.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page