Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes for new openmmtools 0.23.0 #1203

Merged
merged 28 commits into from
Jun 15, 2023
Merged

Fixes for new openmmtools 0.23.0 #1203

merged 28 commits into from
Jun 15, 2023

Conversation

mikemhenry
Copy link
Contributor

Description

Motivation and context

Resolves #???

How has this been tested?

Change log


@mikemhenry
Copy link
Contributor Author

This should pull in the dev build for all tests, but will need to double check CI logs

@codecov
Copy link

codecov bot commented Jun 9, 2023

Codecov Report

Merging #1203 (6afba88) into main (53c61b8) will decrease coverage by 2.71%.
The diff coverage is 30.00%.

@mikemhenry mikemhenry changed the title Test openmmtools_dev Fixes for new openmmtools 0.23.0 Jun 12, 2023
@mikemhenry
Copy link
Contributor Author

Getting this error on a few runs:

=================================== FAILURES ===================================
______________________ test_relative_setup_charge_change _______________________
[gw0] linux -- Python 3.10.0 /home/runner/micromamba-root/envs/test/bin/python3.10

    def test_relative_setup_charge_change():
        """
        execute `RelativeFEPSetup` in solvent/complex phase on a charge change and assert that the modified new system and old system charge difference is zero.
        also assert endstate validation.
        """
        from perses.app.relative_setup import RelativeFEPSetup
        import numpy as np
        # Setup directory
        ligand_sdf = resource_filename("perses", "data/bace-example/Bace_ligands_shifted.sdf")
        host_pdb = resource_filename("perses", "data/bace-example/Bace_protein.pdb")
    
>       setup = RelativeFEPSetup(
                     ligand_input = ligand_sdf,
                     old_ligand_index=0,
                     new_ligand_index=12,
                     forcefield_files = ['amber/ff14SB.xml','amber/tip3p_standard.xml','amber/tip3p_HFE_multivalent.xml'],
                     phases = ['solvent', 'vacuum'],
                     protein_pdb_filename=host_pdb,
                     receptor_mol2_filename=None,
                     pressure=1.0 * unit.atmosphere,
                     temperature=300.0 * unit.kelvin,
                     solvent_padding=9.0 * unit.angstroms,
                     ionic_strength=0.15 * unit.molar,
                     hmass=4*unit.amus,
                     neglect_angles=False,
                     map_strength='default',
                     atom_expr=None,
                     bond_expr=None,
                     anneal_14s=False,
                     small_molecule_forcefield='gaff-2.11',
                     small_molecule_parameters_cache=None,
                     trajectory_directory=None,
                     trajectory_prefix=None,
                     spectator_filenames=None,
                     nonbonded_method = 'PME',
                     complex_box_dimensions=None,
                     solvent_box_dimensions=None,
                     remove_constraints=False,
                     use_given_geometries = False
                     )

perses/tests/test_relative_setup.py:315: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
perses/app/relative_setup.py:477: in __init__
    self._solvent_topology_proposal = self._proposal_engine.propose(self._ligand_system_old_solvated,
perses/rjmc/topology_proposal.py:2094: in propose
    new_system = self._system_generator.create_system(new_topology)
../../../micromamba-root/envs/test/lib/python3.10/site-packages/openmmforcefields/generators/system_generators.py:327: in create_system
    system = self.forcefield.createSystem(topology, **forcefield_kwargs)
../../../micromamba-root/envs/test/lib/python3.10/site-packages/openmm/app/forcefield.py:1212: in createSystem
    templateForResidue = self._matchAllResiduesToTemplates(data, topology, residueTemplates, ignoreExternalBonds)
../../../micromamba-root/envs/test/lib/python3.10/site-packages/openmm/app/forcefield.py:1417: in _matchAllResiduesToTemplates
    if generator(self, res):
../../../micromamba-root/envs/test/lib/python3.10/site-packages/openmmforcefields/generators/template_generators.py:547: in generator
    return super().generator(forcefield, residue)
../../../micromamba-root/envs/test/lib/python3.10/site-packages/openmmforcefields/generators/template_generators.py:323: in generator
    forcefield.loadFile(StringIO(ffxml_contents))
../../../micromamba-root/envs/test/lib/python3.10/site-packages/openmm/app/forcefield.py:288: in loadFile
    self.registerAtomType(type.attrib)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <openmm.app.forcefield.ForceField object at 0x7f5de10af640>
parameters = {'class': 'c5', 'element': 'C', 'mass': '12.01', 'name': 'c5'}

    def registerAtomType(self, parameters):
        """Register a new atom type."""
        name = parameters['name']
        if name in self._atomTypes:
>           raise ValueError('Found multiple definitions for atom type: '+name)
E           ValueError: Found multiple definitions for atom type: c5

../../../micromamba-root/envs/test/lib/python3.10/site-packages/openmm/app/forcefield.py:433: ValueError

@jchodera
Copy link
Member

I can reproduce this error locally with openmmforcefields test tests/test_system_generator.py::TestSystemGenerator::test_add_molecules, and am debugging now.

____________________________________________________________________________________________________________________ TestSystemGenerator.test_add_molecules _____________________________________________________________________________________________________________________

self = <openmmforcefields.tests.test_system_generator.TestSystemGenerator testMethod=test_add_molecules>

    def test_add_molecules(self):
        """Test that Molecules can be added to SystemGenerator later"""
        SMALL_MOLECULE_FORCEFIELDS = SystemGenerator.SMALL_MOLECULE_FORCEFIELDS if not CI else ['gaff-2.11', 'openff-2.0.0', 'espaloma-0.2.2']
        for small_molecule_forcefield in SMALL_MOLECULE_FORCEFIELDS:
            # Create a SystemGenerator for this force field
            generator = SystemGenerator(forcefields=self.amber_forcefields,
                                            small_molecule_forcefield=small_molecule_forcefield)
    
            # Add molecules for each test system separately
            for name, testsystem in self.testsystems.items():
                molecules = testsystem['molecules']
    
                # Add molecules
                generator.add_molecules(molecules)
    
                # Parameterize molecules
                for molecule in molecules:
                    openmm_topology = molecule.to_topology().to_openmm()
                    with Timer() as t1:
>                       system = generator.create_system(openmm_topology)

tests/test_system_generator.py:329: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
generators/system_generators.py:332: in create_system
    system = self.forcefield.createSystem(topology, **forcefield_kwargs)
../../../../micromamba/envs/openmmforcefields/lib/python3.10/site-packages/openmm/app/forcefield.py:1218: in createSystem
    templateForResidue = self._matchAllResiduesToTemplates(data, topology, residueTemplates, ignoreExternalBonds)
../../../../micromamba/envs/openmmforcefields/lib/python3.10/site-packages/openmm/app/forcefield.py:1423: in _matchAllResiduesToTemplates
    if generator(self, res):
generators/template_generators.py:551: in generator
    return super().generator(forcefield, residue)
generators/template_generators.py:324: in generator
    forcefield.loadFile(StringIO(ffxml_contents))
../../../../micromamba/envs/openmmforcefields/lib/python3.10/site-packages/openmm/app/forcefield.py:288: in loadFile
    self.registerAtomType(type.attrib)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <openmm.app.forcefield.ForceField object at 0x18800e500>, parameters = {'class': 'c5', 'element': 'C', 'mass': '12.01', 'name': 'c5'}

    def registerAtomType(self, parameters):
        """Register a new atom type."""
        name = parameters['name']
        if name in self._atomTypes:
>           raise ValueError('Found multiple definitions for atom type: '+name)
E           ValueError: Found multiple definitions for atom type: c5

../../../../micromamba/envs/openmmforcefields/lib/python3.10/site-packages/openmm/app/forcefield.py:437: ValueError
----------------------------------------------------------------------------------------------------------------------------- Captured stdout call ------------------------------------------------------------------------------------------------------------------------------

@ijpulidos ijpulidos added this to the 0.10.2 Bugfix release milestone Jun 15, 2023
…ch-3"

This reverts commit cd0e440, reversing
changes made to 1a7f712.
… mikemhenry-patch-3"

This reverts commit 1a7f712, reversing
changes made to 1505004.
…to mikemhenry-patch-3"

This reverts commit 1505004, reversing
changes made to 0474f9a.
@ijpulidos
Copy link
Contributor

ijpulidos commented Jun 15, 2023

I think the best approach to move forward with the release is to just force for now ambertools < 23 on the perses openmmforcefields conda package, until the problem gets handled upstream.

@ijpulidos ijpulidos self-requested a review June 15, 2023 19:03
Copy link
Contributor

@ijpulidos ijpulidos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@ijpulidos ijpulidos merged commit 72eac20 into main Jun 15, 2023
@ijpulidos ijpulidos deleted the mikemhenry-patch-3 branch June 15, 2023 20:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants