diff --git a/README.md b/README.md index 3b6fb0f..b9cfbf8 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ from within a virtual environment (e.g., via [virtualenv](https://pypi.org/proje ## Requirements -* Python 3.1 or higher +* Python 3.5 or higher ## Getting started diff --git a/propka/lib.py b/propka/lib.py index fb92056..cd25446 100644 --- a/propka/lib.py +++ b/propka/lib.py @@ -215,7 +215,7 @@ def build_parser(parser=None): group.add_argument("-k", "--keep-protons", dest="keep_protons", action="store_true", help="Keep protons in input file", default=False) group.add_argument("-q", "--quiet", action="store_const", const="WARNING", - dest="log_level", help="supress non-warning messages") + dest="log_level", help="suppress non-warning messages") group.add_argument("--protonate-all", dest="protonate_all", action="store_true", help="Protonate all atoms (will not influence pKa calculation)", default=False) @@ -328,4 +328,3 @@ def debug(*args): def warning(*args): """Log a WARN message""" logger.warning(_args_to_str(args)) - diff --git a/requirements.txt b/requirements.txt index 55b033e..107957b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ -pytest \ No newline at end of file +pytest +numpy \ No newline at end of file diff --git a/setup.py b/setup.py index a8363de..19d8938 100755 --- a/setup.py +++ b/setup.py @@ -56,6 +56,7 @@ See http://propka.org/ for the PROPKA web server. ], }, zip_safe=True, - python_requires='>=3', + python_requires='>=3.5', + tests_require=["pandas", "numpy"], test_suite="tests", ) diff --git a/tests/README.md b/tests/README.md index c1b9717..10e2f3c 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,6 +1,7 @@ # Testing PROPKA -These tests assume that PROPKA is installed as a module on your system. +These tests assume that PROPKA is installed as a module on your system the +dependencies in `../requirements.txt` are satisfied. If you are running in a virtual environment and want to make changes to your code, module installation accomplished by ``` diff --git a/tests/regression_test.py b/tests/test_basic_regression.py similarity index 88% rename from tests/regression_test.py rename to tests/test_basic_regression.py index f90f009..7e2a687 100644 --- a/tests/regression_test.py +++ b/tests/test_basic_regression.py @@ -4,7 +4,7 @@ import os import re from pathlib import Path import pytest -import pandas as pd +from numpy.testing import assert_almost_equal import propka.lib import propka.molecular_container @@ -12,9 +12,10 @@ import propka.molecular_container _LOGGER = logging.getLogger(__name__) -# Maximum error set by number of decimal places in pKa output as well as need -# to make unmodified code work on WSL Ubuntu 18.04 -MAX_ERR = 0.01 +# Number of decimal places for maximum tolerable error. Set by number of +# decimal places in pKa output as well as need to make unmodified code work +# on WSL Ubuntu 18.04 +MAX_ERR_DECIMALS = 2 # This directory @@ -69,8 +70,6 @@ def run_propka(options, pdb_path, tmp_path): molecule = propka.molecular_container.Molecular_container(str(pdb_path), args) molecule.calculate_pka() molecule.write_pka() - except Exception as err: - raise err finally: os.chdir(cwd) @@ -104,13 +103,9 @@ def compare_output(pdb, tmp_path, ref_path): m = re.search(r'([0-9]+\.[0-9]+)', line) value = float(m.group(0)) test_data.append(value) - - df = pd.DataFrame({"reference": ref_data, "test": test_data}) - df["difference"] = df["reference"] - df["test"] - max_err = df["difference"].abs().max() - if max_err > MAX_ERR: - errstr = "Error in test (%g) exceeds maximum (%g)" % (max_err, MAX_ERR) - raise ValueError(errstr) + errstr = "Error exceeds maximum allowed value (%d decimal places)" % MAX_ERR_DECIMALS + assert_almost_equal(test_data, ref_data, decimal=MAX_ERR_DECIMALS, + err_msg=errstr, verbose=True) @pytest.mark.parametrize("pdb, options", [