openmmtools
openmmtools copied to clipboard
Avoid raising generic exceptions
While trying to read an incomplete simulation from an nc file I get
Exception: Non-global MBAR analysis not implemented yet.
which comes from https://github.com/choderalab/openmmtools/blob/master/openmmtools/multistate/multistateanalyzer.py#L878
I think we should avoid raising a generic exception here and probably in all of the other similar cases. I see similar things happening in other places, as follows
❯ grep -n -r "raise Exception(" . | awk '{print $1}'
./openmmtools/scripts/test_openmm_platforms.py:178:
./openmmtools/alchemy.py:2070:
./openmmtools/multistate/multistatesampler.py:760:
./openmmtools/multistate/multistatesampler.py:767:
./openmmtools/multistate/multistatesampler.py:1404:
./openmmtools/multistate/sams.py:342:
./openmmtools/multistate/sams.py:359:
./openmmtools/multistate/sams.py:417:
./openmmtools/multistate/sams.py:639:
./openmmtools/multistate/sams.py:662:
./openmmtools/multistate/multistateanalyzer.py:878:
./openmmtools/tests/test_testsystems.py:56:
./openmmtools/tests/test_testsystems.py:150:
./openmmtools/tests/test_mixing.py:89:
./openmmtools/tests/test_integrators.py:100:
./openmmtools/tests/test_integrators.py:775:
./openmmtools/tests/test_integrators.py:923:
./openmmtools/tests/test_sampling.py:193:
./openmmtools/tests/test_alchemy.py:520:
./openmmtools/tests/test_alchemy.py:1132:
./openmmtools/tests/test_alchemy.py:1140:
./openmmtools/tests/test_alchemy.py:1167:
./openmmtools/tests/test_forcefactories.py:104:
./openmmtools/tests/test_utils.py:37:
./openmmtools/tests/test_utils.py:40:
./openmmtools/tests/test_utils.py:43:
./openmmtools/testsystems.py:277:
./openmmtools/testsystems.py:1807:
./openmmtools/testsystems.py:2918:
./openmmtools/integrators.py:92:
./openmmtools/integrators.py:674:
./openmmtools/integrators.py:677:
./openmmtools/integrators.py:1253:
./openmmtools/integrators.py:1275:
./openmmtools/integrators.py:1292:
./openmmtools/integrators.py:1772:
./openmmtools/integrators.py:2338:
./openmmtools/utils.py:498:
./openmmtools/utils.py:555:
Maybe we have to deal with them one by one. But in general, having a better non-generic exception raised is desired, specially if we expect other tools to use our API and do something when an exception is raised.