Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
1dfe14a
Start PuckerToken class
drroe May 3, 2021
901e332
Fix typedef
drroe May 3, 2021
8435dfc
Start adding pucker search class
drroe May 3, 2021
9b93b67
Add PuckerMask
drroe May 3, 2021
a27dd59
Add some pucker types
drroe May 3, 2021
d23d282
Start doing the find pucker routine
drroe May 3, 2021
93e26a0
Start the multipucker action
drroe May 10, 2021
e6489f1
Add name to pucker token
drroe May 10, 2021
a2b94fc
Add ability to define custom types
drroe May 10, 2021
95a5f5f
Add Search for all
drroe May 10, 2021
7fe7584
Finish up init
drroe May 10, 2021
e60d91c
Ensure found pucker is a cycle
drroe May 10, 2021
aea523f
Add FindPuckers
drroe May 10, 2021
4311941
Add function to create string from pucker atoms
drroe May 11, 2021
8fe6e5f
Can only handle puckers of 5 or 6 atoms
drroe May 11, 2021
1f31760
Add residue number and name to PuckerMask
drroe May 11, 2021
8c065ed
Add name and res num
drroe May 11, 2021
4f6431a
Add iterators
drroe May 11, 2021
c966f7a
Do pucker setup
drroe May 11, 2021
600c07e
Add UNSPECIFIED enum. Add iterator over mask atoms.
drroe May 11, 2021
114bb42
Add function returning number of atoms in mask
drroe May 11, 2021
def7dd4
Finish up action.
drroe May 11, 2021
54d2553
Enable multipucker
drroe May 11, 2021
946f479
Start adding multipucker test
drroe May 11, 2021
7513478
Fix the pucker cycle check
drroe May 11, 2021
3471a10
Add pucker wrapping
drroe May 11, 2021
b4a38bc
Add nucleic ribose test
drroe May 11, 2021
0fae3d9
Clean up setup output
drroe May 11, 2021
6ddba39
Add ability to save amplitude and theta
drroe May 11, 2021
361b688
Add files to redirect amplitude/theta sets to
drroe May 11, 2021
62d363a
Add amp/theta info to init
drroe May 11, 2021
03ffb4f
Check amp/theta metadata, not pucker metadata
drroe May 11, 2021
0296ef2
Add furanoid test with amplitude
drroe May 11, 2021
2f3aee3
Add test for pyranoid sugar, both specified and auto detect
drroe May 11, 2021
77ff771
Fix test name
drroe May 11, 2021
d7674c5
Properly trap when no topolgies loaded for info commands.
drroe May 11, 2021
5a87a34
Hide some debug info
drroe May 11, 2021
72e8451
Make PrintTypes const
drroe May 11, 2021
4b88e67
Add index to multipcuker setup output. Make multidihedral setup output
drroe May 11, 2021
5df6fa6
Enable multipucker test
drroe May 11, 2021
540e3d8
Revision bump for addition of multipucker command
drroe May 11, 2021
b1f5696
Does not really need fixing
drroe May 11, 2021
3a6bbcb
Protect against divide by zero
drroe May 11, 2021
8651134
Fix up help
drroe May 11, 2021
d62adfa
Add missing resrange arg to help
drroe May 11, 2021
17d7cb4
Add multipucker manual entry.
drroe May 11, 2021
186f38e
Add note about GMXDATA env. variable. #901 and #893 should be addressed
drroe May 11, 2021
863e9a3
Fix argument formatting
drroe May 11, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
227 changes: 225 additions & 2 deletions doc/cpptraj.lyx
Original file line number Diff line number Diff line change
Expand Up @@ -13382,6 +13382,17 @@ Charmm PSF:
\end_layout

\end_deeper
\begin_layout Subsubsection
Gromacs Top
\end_layout

\begin_layout Standard
By default cpptraj will look for Gromacs topology data (that is not in the
same directory) in the directory defined by the GMXDATA environment variable;
specifically, it expects things to be in the "$GMXDATA/top" directory.

\end_layout

\begin_layout Subsection
parmbox
\end_layout
Expand Down Expand Up @@ -29967,11 +29978,11 @@ Offset: -2=<a0><a1> in previous res, -1=<a0> in previous res, 0=All <aX>

\end_deeper
\begin_layout Standard
DataSet Aspects:
DataSets Generated:
\end_layout

\begin_layout Description
[<dihedral
<name>[<dihedral
\begin_inset space ~
\end_inset

Expand Down Expand Up @@ -30027,6 +30038,218 @@ dihtype
multidihedral dihtype chi1:N:CA:CB:CG out custom.dat
\end_layout

\begin_layout Subsection
multipucker
\end_layout

\begin_layout LyX-Code
multipucker [<name>] [<pucker types>] [out <filename>] [resrange <range>]
\end_layout

\begin_layout LyX-Code
[altona|cremer] [puckertype <name>:<a0>:<a1>:<a2>:<a3>:<a4>[:<a5>]
...]
\end_layout

\begin_layout LyX-Code
[amplitude [ampout <ampfile>]] [theta [thetaout <thetafile>]]
\end_layout

\begin_layout LyX-Code
[range360] [offset <offset>]
\end_layout

\begin_layout LyX-Code
<pucker types> = nucleic furanose pyranose
\end_layout

\begin_deeper
\begin_layout Description
[<name>] Output data set name.
\end_layout

\begin_layout Description
<pucker
\begin_inset space ~
\end_inset

types> Pucker types to look for.

\end_layout

\begin_layout Description
[out
\begin_inset space ~
\end_inset

<filename>] Output file name to write pucker data to.
\end_layout

\begin_layout Description
[resrange
\begin_inset space ~
\end_inset

<range>] Residue range to look for puckers in.
Default is all solute residues.
\end_layout

\begin_layout Description
[puckertype
\begin_inset space ~
\end_inset

<name>:<a0>:<a1>:<a2>:<a3>:<a4>[:<a5>] Search for a custom pucker type called
<name> using atom names <a0>, <a1>, <a2>, <a3>, and <a4> (also <a5> for
6 atom puckers).
\end_layout

\begin_layout Description
[altona] Use method of Altona & Sundaralingam (5 atoms only).
This is the default when pucker has 5 atoms.
\end_layout

\begin_layout Description
[cremer] Use method of Cremer and Pople (5 or 6 atoms).
This is the default when pucker has 6 atoms.
\end_layout

\begin_layout Description
[amplitude] Also calculate amplitude (in degrees).
\end_layout

\begin_deeper
\begin_layout Description
ampout
\begin_inset space ~
\end_inset

<ampfile> File to write amplitude sets to.
\end_layout

\end_deeper
\begin_layout Description
[theta] (Valid for 6 atoms only) Also calculate theta (in degrees).
\end_layout

\begin_deeper
\begin_layout Description
thetaout
\begin_inset space ~
\end_inset

<thetafile> File to write theta sets to.
\end_layout

\end_deeper
\begin_layout Description
[range360] Wrap pucker values from 0.0 to 360.0 (default is -180.0 to 180.0).
\end_layout

\begin_layout Description
[offset
\begin_inset space ~
\end_inset

<offset>] Add <offset> to pucker values.
\end_layout

\begin_layout Standard
DataSets Generated:
\end_layout

\begin_layout Description
<name>[<pucker
\begin_inset space ~
\end_inset

type>]:<#> Aspect corresponds to the pucker type name (e.g.
[nucleic], [furanose], etc).
The index is the residue number.
\end_layout

\begin_layout Description
<name>[<pucker
\begin_inset space ~
\end_inset

type>Amp]:<#>
\series bold
amplitude
\series default
only.
Data set for pucker amplitude.
\end_layout

\begin_layout Description
<name>[<pucker
\begin_inset space ~
\end_inset

type>Theta]:<#>
\series bold
theta
\series default
only.
Data set for pucker theta.
\end_layout

\end_deeper
\begin_layout Standard

\shape italic
Note data sets are not generated until
\series bold
run
\series default
is called.
\end_layout

\begin_layout Standard
Calculate specified pucker types for residues in given range.
By default, puckers are identified based on standard Amber atom names.
The resulting data sets will have aspect equal to [<pucker type>] and index
equal to residue #.
In order to be identified as a pucker, all consecutive atoms in the pucker
must be bonded, and the last atom of the pucker must be bonded to the first.
\end_layout

\begin_layout Standard
For example, to calculate all nucleic acid ribose puckers for residues 6
to 9:
\end_layout

\begin_layout LyX-Code
multipucker MyPuckers nucleic resrange 6-9 out Pucker_6-9.dat
\end_layout

\begin_layout Standard
This will generate data sets named MyPuckers[nucleic]:6, MyPuckers[nucleic]:7,
etc.
Puckers other than those defined in
\series bold
<pucker types>
\series default
can be searched for using
\series bold
puckertype
\series default
.
For example to create a custom pucker type called furanoid using atoms
C2, C3, C4, C5, and O2, then search for and calculate that pucker (with
amplitudes) using the method of Cremer and Pople in all residues:
\end_layout

\begin_layout LyX-Code
multipucker Furanoid puckertype furanoid:C2:C3:C4:C5:O2 cremer
\backslash

\end_layout

\begin_layout LyX-Code
out furanoid.dat amplitude ampout furanoid.dat
\end_layout

\begin_layout Subsection
multivector
\end_layout
Expand Down
2 changes: 1 addition & 1 deletion src/Action_DihedralRMS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ void Action_DihedralRMS::Help() const {
"\t[tgtrange <range> [refrange <range>]]\n"
" Calculate RMSD of selected dihedrals to dihedrals in a\n"
" reference structure.\n",
ReferenceAction::Help(), DihedralSearch::newTypeArgsHelp_);
ReferenceAction::Help(), DihedralSearch::newTypeArgsHelp());
}

// Action_DihedralRMS::Init()
Expand Down
17 changes: 6 additions & 11 deletions src/Action_MultiDihedral.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,9 @@ Action_MultiDihedral::Action_MultiDihedral() :
{}

void Action_MultiDihedral::Help() const {
mprintf("\t[<name>] <dihedral types> [resrange <range>] [out <filename>] [range360]\n");
mprintf("\t[dihtype <name>:<a0>:<a1>:<a2>:<a3>[:<offset>] ...]\n");
mprintf("\t[<name>] [<dihedral types>] [resrange <range>] [out <filename>] [range360]\n");
mprintf("\t[%s]\n", DihedralSearch::newTypeArgsHelp());
DihedralSearch::OffsetHelp();
//mprintf("\t[range360]\n");
mprintf("\t<dihedral types> = ");
DihedralSearch::ListKnownTypes();
mprintf(" Calculate specified dihedral angle types for residues in given <range>.\n");
Expand Down Expand Up @@ -95,7 +94,7 @@ Action::RetType Action_MultiDihedral::Setup(ActionSetup& setup) {
dih != dihSearch_.end(); ++dih)
{
int resNum = dih->ResNum() + 1;
// See if Dataset already present. FIXME should AddSet do this?
// See if Dataset already present.
MetaData md( dsetname_, dih->Name(), resNum );
DataSet* ds = masterDSL_->CheckForSet(md);
if (ds == 0) {
Expand All @@ -109,13 +108,9 @@ Action::RetType Action_MultiDihedral::Setup(ActionSetup& setup) {
outfile_->AddDataSet( ds );
}
data_.push_back( ds );
if (debug_ > 0) {
mprintf("\tDIH [%s]:", ds->legend());
mprintf(" :%i@%i", setup.Top()[dih->A0()].ResNum()+1, dih->A0() + 1);
mprintf(" :%i@%i", setup.Top()[dih->A1()].ResNum()+1, dih->A1() + 1);
mprintf(" :%i@%i", setup.Top()[dih->A2()].ResNum()+1, dih->A2() + 1);
mprintf(" :%i@%i\n", setup.Top()[dih->A3()].ResNum()+1, dih->A3() + 1);
}
//if (debug_ > 0) {
mprintf("\t%zu [%s]: %s\n", data_.size(), ds->legend(), dih->DihedralMaskString(setup.Top()).c_str());
//}
}
return Action::OK;
}
Expand Down
Loading