From 1ea6a4d3baba4ff2adb187c342b6bd9b2b9c78d7 Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Tue, 30 Jun 2020 16:35:55 -0500 Subject: [PATCH 1/2] ENH: Add ForceField.registered_parameter_handlers property --- openforcefield/tests/test_forcefield.py | 20 +++++++++++++++++++ .../typing/engines/smirnoff/forcefield.py | 13 ++++++++++++ 2 files changed, 33 insertions(+) diff --git a/openforcefield/tests/test_forcefield.py b/openforcefield/tests/test_forcefield.py index c3419c1e4..12e62371e 100644 --- a/openforcefield/tests/test_forcefield.py +++ b/openforcefield/tests/test_forcefield.py @@ -1211,6 +1211,26 @@ def test_nonbonded_method_resolution(self, forcefield.get_parameter_handler('Electrostatics', {}).method = electrostatics_method omm_system = forcefield.create_openmm_system(topology) + def test_registered_parameter_handlers(self): + """Test registered_parameter_handlers property""" + forcefield = ForceField('test_forcefields/smirnoff99Frosst.offxml') + registered_handlers = forcefield.registered_parameter_handlers + + expected_handlers = [ + 'Bonds', + 'Angles', + 'ProperTorsions', + 'ImproperTorsions', + 'vdW', + 'Electrostatics', + 'ToolkitAM1BCC', + ] + + for expected_handler in expected_handlers: + assert expected_handler in registered_handlers + + assert 'LibraryChrages' not in registered_handlers + def test_parameter_handler_lookup(self): """Ensure __getitem__ lookups work""" forcefield = ForceField('test_forcefields/smirnoff99Frosst.offxml') diff --git a/openforcefield/typing/engines/smirnoff/forcefield.py b/openforcefield/typing/engines/smirnoff/forcefield.py index 6ab10266a..dd4a3f13f 100644 --- a/openforcefield/typing/engines/smirnoff/forcefield.py +++ b/openforcefield/typing/engines/smirnoff/forcefield.py @@ -556,6 +556,19 @@ def register_parameter_io_handler(self, parameter_io_handler): self._parameter_io_handlers[io_format])) self._parameter_io_handlers[io_format] = parameter_io_handler + @property + def registered_parameter_handlers(self): + """ + Return the list of registered parameter handlers by name + + .. warning :: This API is experimental and subject to change. + + Returns + ------- + registered_parameter_handlers: iterable of names of ParameterHandler objects in this ForceField + + """ + return [*self._parameter_handlers.keys()] # TODO: Do we want to make this optional? From 72c2c82f3c058bcc8ca927cd81adc8f14e394195 Mon Sep 17 00:00:00 2001 From: "Matthew W. Thompson" Date: Mon, 6 Jul 2020 09:39:00 -0500 Subject: [PATCH 2/2] DOCS: Update changelog for PR #632 --- docs/releasehistory.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/releasehistory.rst b/docs/releasehistory.rst index ed5df35eb..c2201e693 100644 --- a/docs/releasehistory.rst +++ b/docs/releasehistory.rst @@ -17,6 +17,12 @@ Bugfixes would not load files correctly if passed lowercase `file_format`. Note that this bug did not occur when calling :`Molecule.from_file` `. +New features +"""""""""""" +- `PR #632 `_: Adds + :py:meth:`ForceField.registered_parameter_handlers + ` + 0.7.0 - Charge Increment Model, Proper Torsion interpolation, and new Molecule methods --------------------------------------------------------------------------------------