From fc7ca91733afa9b2487e6125315dd65358a46c27 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Tue, 21 May 2019 13:22:08 -0400 Subject: [PATCH 1/8] DRR - Cpptraj: Add 'solventmask' keyword to closest command --- src/Action_Closest.cpp | 67 ++++++++++++++++++++++++++++++++---------- src/Action_Closest.h | 1 + 2 files changed, 53 insertions(+), 15 deletions(-) diff --git a/src/Action_Closest.cpp b/src/Action_Closest.cpp index 4bd37890f9..a480a8ee70 100644 --- a/src/Action_Closest.cpp +++ b/src/Action_Closest.cpp @@ -39,9 +39,9 @@ Action_Closest::Action_Closest() : {} void Action_Closest::Help() const { - mprintf("\t<# to keep> [noimage] [first | oxygen] [center]\n" - "\t[closestout [name ]] [outprefix ]\n" - "\t[parmout ]\n" + mprintf("\t<# to keep> [solventmask ] [noimage]\n" + "\t[first | oxygen] [center] [closestout [name ]]\n" + "\t[outprefix ] [parmout ]\n" " Keep only the closest <# to keep> solvent molecules to atoms in .\n" " Molecules can be marked as solvent with the 'solvent' command.\n" " If 'center' specified use geometric center of atoms in .\n"); @@ -107,7 +107,10 @@ Action::RetType Action_Closest::Init(ArgList& actionArgs, ActionInit& init, int } // Get Masks - std::string mask1 = actionArgs.GetMaskNext(); + std::string mask1 = actionArgs.GetStringKey("solventmask"); + if (!mask1.empty()) + solventMask_.SetMaskString( mask1 ); + mask1 = actionArgs.GetMaskNext(); if (mask1.empty()) { mprinterr("Error: No mask specified.\n"); return Action::ERR; @@ -120,6 +123,8 @@ Action::RetType Action_Closest::Init(ArgList& actionArgs, ActionInit& init, int mprintf("\tGeometric center of atoms in mask will be used.\n"); if (!image_.UseImage()) mprintf("\tImaging will be turned off.\n"); + if (solventMask_.MaskStringSet()) + mprintf("\tSolvent will be selected by mask '%s'\n", solventMask_.MaskString()); if (firstAtom_) mprintf("\tOnly first atom of solvent molecule used for distance calc.\n"); if (outFile_!=0) @@ -140,20 +145,51 @@ Action::RetType Action_Closest::Init(ArgList& actionArgs, ActionInit& init, int * parm file. Atom masks for each solvent molecule will be set up. */ Action::RetType Action_Closest::Setup(ActionSetup& setup) { + if (setup.Top().Nmol() < 1) { + mprintf("Warning: 'closest' requires molecule information. Skipping.\n"); + return Action::SKIP; + } closestWaters_ = targetNclosest_; + // Determine solvent molecules + std::vector IsSolventMol; + IsSolventMol.reserve( setup.Top().Nmol() ); + int nSolvent = 0; + if (solventMask_.MaskStringSet()) { + if (setup.Top().SetupCharMask( solventMask_ )) return Action::ERR; + solventMask_.MaskInfo(); + if (solventMask_.None()) { + mprintf("Warning: No solvent selected by mask '%s'. Skipping.\n", solventMask_.MaskString()); + return Action::SKIP; + } + for (Topology::mol_iterator Mol = setup.Top().MolStart(); + Mol != setup.Top().MolEnd(); ++Mol) + { + if ( solventMask_.AtomsInCharMask(Mol->BeginAtom(), Mol->EndAtom()) ) { + IsSolventMol.push_back( true ); + nSolvent++; + } else + IsSolventMol.push_back( false ); + } + } else { + for (Topology::mol_iterator Mol = setup.Top().MolStart(); + Mol != setup.Top().MolEnd(); ++Mol) + IsSolventMol.push_back( Mol->IsSolvent() ); + nSolvent = setup.Top().Nsolvent(); + } + mprintf("\t%i molecules out of %i selected as solvent.\n", nSolvent, setup.Top().Nmol()); // If there are no solvent molecules this action is not valid. - if (setup.Top().Nsolvent()==0) { - mprintf("Warning: Parm %s does not contain solvent.\n",setup.Top().c_str()); + if (nSolvent == 0) { + mprintf("Warning: Topology %s does not contain solvent.\n", setup.Top().c_str()); return Action::SKIP; } // If # solvent to keep >= solvent in this parm the action is not valid. - if (closestWaters_ == setup.Top().Nsolvent()) { + if (closestWaters_ == nSolvent) { mprintf("Warning: # solvent to keep (%i) == # solvent molecules in '%s' (%i)\n", - closestWaters_, setup.Top().c_str(), setup.Top().Nsolvent()); - } else if (closestWaters_ > setup.Top().Nsolvent()) { + closestWaters_, setup.Top().c_str(), nSolvent); + } else if (closestWaters_ > nSolvent) { mprintf("Warning: # solvent to keep (%i) > # solvent molecules in '%s' (%i)\n", - closestWaters_, setup.Top().c_str(), setup.Top().Nsolvent()); - closestWaters_ = setup.Top().Nsolvent(); + closestWaters_, setup.Top().c_str(), nSolvent); + closestWaters_ = nSolvent; mprintf("Warning: Keeping %i solvent molecules.\n", closestWaters_); } image_.SetupImaging( setup.CoordInfo().TrajBox().Type() ); @@ -171,8 +207,9 @@ Action::RetType Action_Closest::Setup(ActionSetup& setup) { MolDist solvent; solvent.D = 0.0; solvent.mol = 0; - SolventMols_.resize(setup.Top().Nsolvent(), solvent); + SolventMols_.resize(nSolvent, solvent); std::vector::iterator mdist = SolventMols_.begin(); + std::vector::iterator isSolvent = IsSolventMol.begin(); // 3: Set up the soluteMask for all non-solvent molecules. stripMask_.ResetMask(); int molnum = 1; @@ -181,9 +218,9 @@ Action::RetType Action_Closest::Setup(ActionSetup& setup) { int NsolventAtoms = -1; keptWaterAtomNum_.resize(closestWaters_); for (Topology::mol_iterator Mol = setup.Top().MolStart(); - Mol != setup.Top().MolEnd(); ++Mol) + Mol != setup.Top().MolEnd(); ++Mol, ++isSolvent) { - if ( !Mol->IsSolvent() ) { // Not solvent, add to solute mask. + if ( !(*isSolvent) ) { // Not solvent, add to solute mask. stripMask_.AddAtomRange( Mol->BeginAtom(), Mol->EndAtom() ); newnatom += Mol->NumAtoms(); } else { // Solvent, check for same # of atoms. @@ -242,7 +279,7 @@ Action::RetType Action_Closest::Setup(ActionSetup& setup) { // Store original # of molecules. // NOTE: This is stored so that it can be used in the OpenMP section // of action. I dont think iterators are thread-safe. - NsolventMolecules_ = setup.Top().Nsolvent(); + NsolventMolecules_ = nSolvent; // Create stripped Parm if (newParm_!=0) delete newParm_; newParm_ = setup.Top().modifyStateByMask(stripMask_); diff --git a/src/Action_Closest.h b/src/Action_Closest.h index e34398317e..9242ee98c2 100644 --- a/src/Action_Closest.h +++ b/src/Action_Closest.h @@ -43,6 +43,7 @@ class Action_Closest: public Action { bool useMaskCenter_; ///< If true use geometric center of mask. AtomMask stripMask_; ///< Mask including all solute and closest molecules. AtomMask distanceMask_; ///< Mask of atoms to calculate distance from solvent to. + CharMask solventMask_; ///< Optional mask selecting solvent. Topology *newParm_; ///< New topology with solute and closest molecules. int NsolventMolecules_; ///< # of solvent molecules in SolventMols. int debug_; From 7b961fdec5cfddfea2af33cef041d1c49d09da22 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Tue, 21 May 2019 13:25:01 -0400 Subject: [PATCH 2/8] DRR - Cpptraj: Test solventmask keyword --- test/Test_Closest/RunTest.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/test/Test_Closest/RunTest.sh b/test/Test_Closest/RunTest.sh index 4281d6d4a9..3eb1d74dcf 100755 --- a/test/Test_Closest/RunTest.sh +++ b/test/Test_Closest/RunTest.sh @@ -5,7 +5,8 @@ # Clean CleanFiles closest.in first.Closest.pdb.1 closestmols.dat \ closest.tz2.truncoct.parm7 all.Closest.pdb.1 \ - closest10.center2_4.crd closest10.mols.dat + closest10.center2_4.crd closest10.mols.dat \ + solventmask.dat INPUT="-i closest.in" TESTNAME='Closest tests' @@ -50,6 +51,16 @@ RunCpptraj "Closest command test, using mask center" DoTest closest10.center2_4.crd.save closest10.center2_4.crd DoTest closest10.mols.dat.save closest10.mols.dat +# Test 4 - Select solvent via solventmask +cat > closest.in < Date: Wed, 22 May 2019 10:02:09 -0400 Subject: [PATCH 3/8] DRR - Cpptraj: Add routine for initializing CharMask without a mask expression. --- src/CharMask.cpp | 8 ++++++++ src/CharMask.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/src/CharMask.cpp b/src/CharMask.cpp index b3696602f0..dae907376c 100644 --- a/src/CharMask.cpp +++ b/src/CharMask.cpp @@ -1,6 +1,14 @@ #include "CharMask.h" #include "CpptrajStdio.h" // PrintMaskAtoms +/** Use to initialize the mask without a mask expression. */ +void CharMask::InitCharMask(int natoms, bool initSelected) { + if (initSelected) + CharMask_.assign(natoms, SelectedChar_); + else + CharMask_.assign(natoms, UnselectedChar_); +} + /** Given atom and residue info and coordinates, setup character mask * based on current mask tokens. */ diff --git a/src/CharMask.h b/src/CharMask.h index 6454b35094..f9cf5f0b44 100644 --- a/src/CharMask.h +++ b/src/CharMask.h @@ -15,6 +15,8 @@ class CharMask : public MaskTokenArray { CharMask(std::string const& e) : nselected_(0) { SetMaskString(e); } /// Construct from given char array and # selected atoms. CharMask(std::vector const& c, int n) : CharMask_(c), nselected_(n) {} + /// Initialize mask with SelectedChar_ if true or UnselectedChar_ if false + void InitCharMask(int, bool); /// \return true if given atom is selected. bool AtomInCharMask(int) const; /// \return true if any atoms within given range are selected. From 31d5fe95c561567d921710cfb191fb0a2b04e675 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 22 May 2019 10:02:48 -0400 Subject: [PATCH 4/8] DRR - Cpptraj: Only use atoms selected by the solvent mask for distance calc. --- src/Action_Closest.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Action_Closest.cpp b/src/Action_Closest.cpp index a480a8ee70..91689b5a1e 100644 --- a/src/Action_Closest.cpp +++ b/src/Action_Closest.cpp @@ -155,6 +155,7 @@ Action::RetType Action_Closest::Setup(ActionSetup& setup) { IsSolventMol.reserve( setup.Top().Nmol() ); int nSolvent = 0; if (solventMask_.MaskStringSet()) { + // Use only atoms selected by solventMask if (setup.Top().SetupCharMask( solventMask_ )) return Action::ERR; solventMask_.MaskInfo(); if (solventMask_.None()) { @@ -171,6 +172,9 @@ Action::RetType Action_Closest::Setup(ActionSetup& setup) { IsSolventMol.push_back( false ); } } else { + // Select everything; all solvent atoms are fair game. + solventMask_.ResetMask(); + solventMask_.InitCharMask(setup.Top().Natom(), true); for (Topology::mol_iterator Mol = setup.Top().MolStart(); Mol != setup.Top().MolEnd(); ++Mol) IsSolventMol.push_back( Mol->IsSolvent() ); @@ -220,10 +224,12 @@ Action::RetType Action_Closest::Setup(ActionSetup& setup) { for (Topology::mol_iterator Mol = setup.Top().MolStart(); Mol != setup.Top().MolEnd(); ++Mol, ++isSolvent) { - if ( !(*isSolvent) ) { // Not solvent, add to solute mask. + if ( !(*isSolvent) ) { + // Not solvent, add to solute mask. stripMask_.AddAtomRange( Mol->BeginAtom(), Mol->EndAtom() ); newnatom += Mol->NumAtoms(); - } else { // Solvent, check for same # of atoms. + } else { + // Solvent, check for same # of atoms. if (NsolventAtoms == -1) NsolventAtoms = Mol->NumAtoms(); else if ( NsolventAtoms != Mol->NumAtoms() ) { @@ -234,7 +240,7 @@ Action::RetType Action_Closest::Setup(ActionSetup& setup) { } // mol here is the output molecule number which is why it starts from 1. mdist->mol = molnum; - // Solvent molecule mask + // Entire solvent molecule mask mdist->mask.AddAtomRange( Mol->BeginAtom(), Mol->EndAtom() ); // Atoms in the solvent molecule to actually calculate distances to. if (firstAtom_) { @@ -243,7 +249,8 @@ Action::RetType Action_Closest::Setup(ActionSetup& setup) { mdist->solventAtoms.clear(); mdist->solventAtoms.reserve( Mol->NumAtoms() ); for (int svatom = Mol->BeginAtom(); svatom < Mol->EndAtom(); svatom++) - mdist->solventAtoms.push_back( svatom ); + if (solventMask_.AtomInCharMask(svatom)) + mdist->solventAtoms.push_back( svatom ); } // For solvent molecules that will be kept, record what the atom number // will be in the new stripped parm. From 7ba621406d084de9aaec21fa080dea8e9a4f3420 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 22 May 2019 10:03:29 -0400 Subject: [PATCH 5/8] DRR - Cpptraj: Add solvent mask, water oxygen only test --- test/Test_Closest/RunTest.sh | 12 +++- test/Test_Closest/wato.dat.save | 101 ++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 test/Test_Closest/wato.dat.save diff --git a/test/Test_Closest/RunTest.sh b/test/Test_Closest/RunTest.sh index 3eb1d74dcf..e32ed23668 100755 --- a/test/Test_Closest/RunTest.sh +++ b/test/Test_Closest/RunTest.sh @@ -6,7 +6,7 @@ CleanFiles closest.in first.Closest.pdb.1 closestmols.dat \ closest.tz2.truncoct.parm7 all.Closest.pdb.1 \ closest10.center2_4.crd closest10.mols.dat \ - solventmask.dat + solventmask.dat wato.dat INPUT="-i closest.in" TESTNAME='Closest tests' @@ -57,9 +57,17 @@ parm ../tz2.ortho.parm7 trajin ../tz2.ortho.nc closest 10 :2,4 solventmask :WAT center closestout solventmask.dat name C10 EOF -RunCpptraj "Closest command test, using mask center" +RunCpptraj "Closest command test, using mask center and solvent mask" DoTest closest10.mols.dat.save solventmask.dat +# Test 5 - Solventmask, oxygen atoms only + cat > closest.in < Date: Wed, 22 May 2019 10:04:58 -0400 Subject: [PATCH 6/8] DRR - Cpptraj: Fix up comments. --- src/Action_Closest.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Action_Closest.h b/src/Action_Closest.h index 9242ee98c2..84d7dbf224 100644 --- a/src/Action_Closest.h +++ b/src/Action_Closest.h @@ -54,10 +54,10 @@ class Action_Closest: public Action { /** The moldist structure is used in order to preserve the original * solvent molecule numbers after sorting. */ struct MolDist { - int mol; ///< Original solvent molecule number (starts from 1). - double D; ///< Closest distance of solvent molecule to atoms in distanceMask. - AtomMask mask; ///< Original topology solvent molecule atom mask. - Iarray solventAtoms; ///< Actual solvent atom #s to loop over. + int mol; ///< Original solvent molecule number (starts from 1). + double D; ///< Closest distance of solvent molecule to atoms in distanceMask. + AtomMask mask; ///< Entire solvent molecule atom mask. + Iarray solventAtoms; ///< Actual solvent atom #s to calc distance to. }; /// Return true if the first molecule is closer than the second struct moldist_cmp { From 2f2a2e307aee8e361e01771803f8bc42b051a96f Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 22 May 2019 10:05:18 -0400 Subject: [PATCH 7/8] DRR - Cpptraj: Revision bump for closest command 'solventmask' keyword --- src/Version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Version.h b/src/Version.h index cd2e723a24..92da390c43 100644 --- a/src/Version.h +++ b/src/Version.h @@ -12,7 +12,7 @@ * Whenever a number that precedes is incremented, all subsequent * numbers should be reset to 0. */ -#define CPPTRAJ_INTERNAL_VERSION "V4.14.4" +#define CPPTRAJ_INTERNAL_VERSION "V4.14.5" /// PYTRAJ relies on this #define CPPTRAJ_VERSION_STRING CPPTRAJ_INTERNAL_VERSION #endif From 2ddfc5e48602389cb1099cb0928deccdb69204e0 Mon Sep 17 00:00:00 2001 From: "Daniel R. Roe" Date: Wed, 22 May 2019 10:15:07 -0400 Subject: [PATCH 8/8] DRR - Cpptraj: Update 'closest' manual entry --- doc/CpptrajManual.pdf | Bin 796365 -> 796589 bytes doc/cpptraj.lyx | 48 +++++++++++++++++++++++++++++++----------- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/doc/CpptrajManual.pdf b/doc/CpptrajManual.pdf index 907e1b7826c80ce562241228b72602b672fa0708..3b7084f674a52f0a60878baed39f7e506776feec 100644 GIT binary patch delta 22147 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 Ua%E-;H#j#mIXMa?B}Gq03a>?Cd;kCd diff --git a/doc/cpptraj.lyx b/doc/cpptraj.lyx index 52f18bb580..b5c516d5d1 100644 --- a/doc/cpptraj.lyx +++ b/doc/cpptraj.lyx @@ -18812,19 +18812,15 @@ closest \end_inset - <# to keep> [noimage] [first | oxygen] [center] + <# to keep> [solventmask ] [noimage] \end_layout \begin_layout LyX-Code - [closestout ] [name ] [outprefix ] -\begin_inset Separator latexpar -\end_inset - - + [first | oxygen] [center] [closestout [name ]] \end_layout \begin_layout LyX-Code - [parmout ] + [outprefix ] [parmout ] \end_layout \begin_deeper @@ -18844,6 +18840,27 @@ keep> Number of solvent molecules to keep around Mask of atoms to search for closest waters around. \end_layout +\begin_layout Description +[solventmask +\begin_inset space ~ +\end_inset + +] Optional mask for selecting solvent atoms. + If not specified, atoms in all molecules marked as +\begin_inset Quotes eld +\end_inset + +solvent +\begin_inset Quotes erd +\end_inset + + will be used. +\end_layout + \begin_layout Description [noimage] Do not perform imaging; only recommended if trajectory has previously been imaged. @@ -18867,7 +18884,7 @@ oxygen] Calculate distances between all atoms in \end_layout \begin_layout Description -[center] Search for waters closest to center of +[center] Search for waters closest to geometric center of \series bold \series default @@ -18945,8 +18962,8 @@ strip \shape italic cpptraj \shape default - (by default residues named WAT, HOH, or TIP3) or can be specified prior - via the + (by default residues named WAT, HOH, or TIP3), can be specified prior via + the \series bold \shape italic solvent @@ -18959,8 +18976,15 @@ reference "subsec:cpptraj_solvent" \end_inset -). - The format of the +), or can be selected by +\series bold +solventmask +\series default +. +\end_layout + +\begin_layout Standard +The format of the \series bold closestout \series default