openmmtools icon indicating copy to clipboard operation
openmmtools copied to clipboard

Avoid raising generic exceptions

Open ijpulidos opened this issue 3 years ago • 0 comments

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.

ijpulidos avatar Oct 20 '21 16:10 ijpulidos