def preprocess_forcefield_files(forcefield_files=None, backend="gmso"): """Pre-process foyer Forcefield XML files.""" if forcefield_files is None: return None tmp_processed_files = list() if backend == "gmso": # Run through the forcefield XML conversion from gmso.external.convert_foyer_xml import from_foyer_xml for idx, file in enumerate(forcefield_files): _, suffix = os.path.split(file) tempfile = NamedTemporaryFile(suffix=suffix, delete=False) try: Validator(ff_file_name=file, debug=False) from_foyer_xml( foyer_xml=str(file), gmso_xml=str(tempfile.name), overwrite=True, ) except: warnings.warn(f"Could not convert {str(file)} as a foyer XML," f"attempt to read in as a GMSO XML.") shutil.copyfile(file, tempfile.name) tmp_processed_files.append(tempfile.name) else: raise FoyerError("Backend not supported." 'Supports backend: "gmso".') return tmp_processed_files
def test_from_foyer_validate_foyer(self, ff): from_foyer_xml( get_fn(ff), f"{ff}-gmso-converted.xml", overwrite=True, validate_foyer=True, )
def foyer_periodic(self): if has_foyer: import foyer from foyer.tests.utils import get_fn from_foyer_xml(get_fn("oplsaa-periodic.xml"), overwrite=True) gmso_ff = ForceField("oplsaa-periodic_gmso.xml") return gmso_ff
def foyer_fullerene(self): if has_foyer: import foyer from foyer.tests.utils import get_fn from_foyer_xml(get_fn("fullerene.xml"), overwrite=True) gmso_ff = ForceField("fullerene_gmso.xml") return gmso_ff
def foyer_urey_bradley(self): if has_foyer: import foyer from foyer.tests.utils import get_fn from_foyer_xml(get_fn("charmm36_cooh.xml"), overwrite=True) gmso_ff = ForceField("charmm36_cooh_gmso.xml") return gmso_ff
def foyer_rb_torsion(self): if has_foyer: import foyer from foyer.tests.utils import get_fn from_foyer_xml(get_fn("refs-multi.xml"), overwrite=True, validate_foyer=True) gmso_ff = ForceField("refs-multi_gmso.xml") return gmso_ff
def test_foyer_file_not_found(self): file_path = "dummy_name.xml" with pytest.raises(FileNotFoundError): from_foyer_xml(file_path, overwrite=True)
def test_foyer_pathlib(self, ff): file_path = Path(get_fn(ff)) from_foyer_xml(file_path, overwrite=True)
def test_from_foyer_different_name(self, ff): from_foyer_xml(get_fn(ff), f"{ff}-gmso-converted.xml", overwrite=True)
def test_from_foyer_overwrite_false(self, ff): from_foyer_xml(get_fn(ff), overwrite=False) with pytest.raises(FileExistsError): from_foyer_xml(get_fn(ff), overwrite=False)
def test_from_foyer(self, ff): from_foyer_xml(get_fn(ff), overwrite=True)
def test_empty_foyer_atomtype(self): with pytest.raises(ForceFieldParseError): from_foyer_xml(get_path("empty_foyer.xml"))