From af50b6565991fbca6fdad75360a618b88cd72e3c Mon Sep 17 00:00:00 2001 From: Stephen Thomas Date: Thu, 7 Aug 2025 15:02:38 -0400 Subject: [PATCH] naming water and ion residues during solvate --- openpharmmdflow/pipeline/sm/pipeline.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/openpharmmdflow/pipeline/sm/pipeline.py b/openpharmmdflow/pipeline/sm/pipeline.py index 9407841..6af1511 100644 --- a/openpharmmdflow/pipeline/sm/pipeline.py +++ b/openpharmmdflow/pipeline/sm/pipeline.py @@ -110,18 +110,39 @@ def solvate(self): if m.to_smiles() == "[H][O][H]" ] ) + # Assign residue name for atoms in water molecule + for molecule in self.solvated_topology.molecules: + if molecule.to_smiles() == "[H][O][H]": + for atom in molecule.atoms: + if not hasattr(atom, "metadata") or atom.metadata is None: + atom.metadata = {} + atom.metadata["residue_name"] = "HOH" # create a Sodium ion self.sodium_ion = Molecule.from_smiles("[Na+]") # find out the number of sodium ions in the system self.n_sodium_ion = len( [m for m in self.solvated_topology.molecules if m.to_smiles() == "[Na+]"] ) + # Assign residue name for atoms in Na ion + for molecule in self.solvated_topology.molecules: + if molecule.to_smiles() == "[Na+]": + for atom in molecule.atoms: + if not hasattr(atom, "metadata") or atom.metadata is None: + atom.metadata = {} + atom.metadata["residue_name"] = "NAP" # create a Chlorine ion self.chlorine_ion = Molecule.from_smiles("[Cl-]") # find out the number of sodium ions in the system self.n_chlorine_ion = len( [m for m in self.solvated_topology.molecules if m.to_smiles() == "[Cl-]"] ) + # Assign residue name for atoms in Cl ion + for molecule in self.solvated_topology.molecules: + if molecule.to_smiles() == "[Cl-]": + for atom in molecule.atoms: + if not hasattr(atom, "metadata") or atom.metadata is None: + atom.metadata = {} + atom.metadata["residue_name"] = "[Cl-]" def parameterize(self): # TODO test to make sure we use the FF we expect to use