Closed mikemhenry closed 1 year ago
This should pull in the dev build for all tests, but will need to double check CI logs
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
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 ------------------------------------------------------------------------------------------------------------------------------
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.
Description
Motivation and context
Resolves #???
How has this been tested?
Change log