23 #include "core/ActionRegister.h"
24 #include "core/PlumedMain.h"
25 #include "core/Atoms.h"
28 namespace secondarystructure {
86 PLUMED_REGISTER_ACTION(
AlphaRMSD,
"ALPHARMSD")
97 std::vector<std::string> backnames(5); std::vector<unsigned> chains;
98 backnames[0]=
"N"; backnames[1]=
"CA"; backnames[2]=
"CB"; backnames[3]=
"C"; backnames[4]=
"O";
102 unsigned nres, nprevious=0; std::vector<unsigned> nlist(30);
103 for(
unsigned i=0;i<chains.size();++i){
104 if( chains[i]<30 )
error(
"segment of backbone defined is not long enough to form an alpha helix. Each backbone fragment must contain a minimum of 6 residues");
106 if( chains[i]%5!=0 )
error(
"backbone segment received does not contain a multiple of five residues");
107 for(
unsigned ires=0;ires<nres-5;ires++){
108 unsigned accum=nprevious + 5*ires;
109 for(
unsigned k=0;k<30;++k) nlist[k] = accum+k;
112 nprevious+=chains[i];
116 std::vector<Vector> reference(30);
117 reference[0] =
Vector( 0.733, 0.519, 5.298 );
118 reference[1] =
Vector( 1.763, 0.810, 4.301 );
119 reference[2] =
Vector( 3.166, 0.543, 4.881 );
120 reference[3] =
Vector( 1.527, -0.045, 3.053 );
121 reference[4] =
Vector( 1.646, 0.436, 1.928 );
122 reference[5] =
Vector( 1.180, -1.312, 3.254 );
123 reference[6] =
Vector( 0.924, -2.203, 2.126 );
124 reference[7] =
Vector( 0.650, -3.626, 2.626 );
125 reference[8] =
Vector(-0.239, -1.711, 1.261 );
126 reference[9] =
Vector(-0.190, -1.815, 0.032 );
127 reference[10] =
Vector(-1.280, -1.172, 1.891 );
128 reference[11] =
Vector(-2.416, -0.661, 1.127 );
129 reference[12] =
Vector(-3.548, -0.217, 2.056 );
130 reference[13] =
Vector(-1.964, 0.529, 0.276 );
131 reference[14] =
Vector(-2.364, 0.659, -0.880 );
132 reference[15] =
Vector(-1.130, 1.391, 0.856 );
133 reference[16] =
Vector(-0.620, 2.565, 0.148 );
134 reference[17] =
Vector( 0.228, 3.439, 1.077 );
135 reference[18] =
Vector( 0.231, 2.129, -1.032 );
136 reference[19] =
Vector( 0.179, 2.733, -2.099 );
137 reference[20] =
Vector( 1.028, 1.084, -0.833 );
138 reference[21] =
Vector( 1.872, 0.593, -1.919 );
139 reference[22] =
Vector( 2.850, -0.462, -1.397 );
140 reference[23] =
Vector( 1.020, 0.020, -3.049 );
141 reference[24] =
Vector( 1.317, 0.227, -4.224 );
142 reference[25] =
Vector(-0.051, -0.684, -2.696 );
143 reference[26] =
Vector(-0.927, -1.261, -3.713 );
144 reference[27] =
Vector(-1.933, -2.219, -3.074 );
145 reference[28] =
Vector(-1.663, -0.171, -4.475 );
146 reference[29] =
Vector(-1.916, -0.296, -5.673 );
void setSecondaryStructure(std::vector< Vector > &structure, double bondlength, double units)
Set a reference configuration.
void error(const std::string &msg) const
Crash calculation and print documentation.
static void registerKeywords(Keywords &keys)
void readBackboneAtoms(const std::vector< std::string > &backnames, std::vector< unsigned > &chain_lengths)
Get the atoms in the backbone.
void addColvar(const std::vector< unsigned > &newatoms)
Add a set of atoms to calculat ethe rmsd from.
This class holds the keywords and their documentation.
This class is used to bring the relevant information to the Action constructor.
Base class for all the input Actions.
static void registerKeywords(Keywords &keys)
const double & getLength() const
Get length units as double.
AlphaRMSD(const ActionOptions &)
Vector3d Vector
Alias for three dimensional vectors.
Provides the keyword ALPHARMSD
Base action for calculating things like AlphRMSD, AntibetaRMSD, etc.