Skip to content
Snippets Groups Projects
Commit fbfd6859 authored by carlocamilloni's avatar carlocamilloni
Browse files

new protein related shortcut for MOLINFO

@chi2, @chi3, @chi4 and @chi5
parent 7c4c372f
No related branches found
No related tags found
No related merge requests found
......@@ -171,3 +171,9 @@ For users:
- Fixed building of python interface on MacOS Mojave (see \issue{445}, thanks to Omar Valsson).
- Numpy is not required anymore at build time (though it is required at runtime for our tests).
- Raw python arrays can be passed as an alternative to Numpy ndarrays.
## Version 2.5.2 ()
For users:
- New shortcuts are available for selecting protein atoms: `@chi2-#`, `@chi3-#`,`@chi4-#` and `@chi5-#`
#! FIELDS time t2 t3 t4 t4d t5 t6 t7 t8 t9 t10 t12 t13 t14
#! FIELDS time t2 t3 t4 t4d t5 t6 t7 t8 t9 t10 t12 t13 t13b t13c t13d t13e t14
#! SET min_t2 -pi
#! SET max_t2 pi
#! SET min_t3 -pi
......@@ -23,6 +23,14 @@
#! SET max_t12 pi
#! SET min_t13 -pi
#! SET max_t13 pi
#! SET min_t13b -pi
#! SET max_t13b pi
#! SET min_t13c -pi
#! SET max_t13c pi
#! SET min_t13d -pi
#! SET max_t13d pi
#! SET min_t13e -pi
#! SET max_t13e pi
#! SET min_t14 -pi
#! SET max_t14 pi
0.000000 -1.140 3.000 1.144 1.436 -2.773 -2.785 -1.264 0.044 -0.426 0.621 0.361 -0.867 -2.888
0.000000 -1.140 3.000 1.144 1.436 -2.773 -2.785 -1.264 0.044 -0.426 0.621 0.361 -0.867 2.257 -0.479 0.621 3.123 -2.888
......@@ -14,11 +14,15 @@ t10: TORSION ATOMS=@v2-B_3
t11: TORSION ATOMS=@v3-B_3
t12: TORSION ATOMS=@v4-B_3
t13: TORSION ATOMS=@phi-2
t13b: TORSION ATOMS=@psi-2
t13c: TORSION ATOMS=@chi1-2
t13d: TORSION ATOMS=@chi2-2
t13e: TORSION ATOMS=@omega-2
# test chain_residue syntax where chain is a number
t14: TORSION ATOMS=@chi-5_8
c: CENTER ATOMS=@back-B4
d: CENTER ATOMS=@base-B4
PRINT ARG=t2,t3,t4,t4d,t5,t6,t7,t8,t9,t10,t12,t13,t14 FILE=COLVAR FMT=%6.3f
PRINT ARG=t2,t3,t4,t4d,t5,t6,t7,t8,t9,t10,t12,t13,t13b,t13c,t13d,t13e,t14 FILE=COLVAR FMT=%6.3f
......@@ -94,6 +94,10 @@ For protein residues, the following groups are available:
@psi-#
@omega-#
@chi1-#
@chi2-#
@chi3-#
@chi4-#
@chi5-#
\endverbatim
that select the appropriate atoms that define each dihedral angle for residue #.
......
......@@ -324,21 +324,81 @@ void MolDataClass::specialSymbol( const std::string& type, const std::string& sy
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("N",resnum+1,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CA",resnum+1,chainid));
} else if( name=="chi1" && !isTerminalGroup("protein",resname) ) {
if ( resname=="GLY" || resname=="ALA" || resname=="SFO" ) plumed_merror("chi-1 is not defined for Alanine, Glycine and SFO");
if ( resname=="GLY" || resname=="ALA" || resname=="SFO" ) plumed_merror("chi-1 is not defined for ALA, GLY and SFO");
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("N",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CA",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CB",resnum,chainid));
if(resname=="ILE"||resname=="VAL")
if(resname=="ILE"||resname=="VAL") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CG1",resnum,chainid));
else if(resname=="CYS")
} else if(resname=="CYS") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("SG",resnum,chainid));
else if(resname=="THR")
} else if(resname=="THR") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("OG1",resnum,chainid));
else if(resname=="SER")
} else if(resname=="SER") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("OG",resnum,chainid));
else
} else {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CG",resnum,chainid));
}
} else if( name=="chi2" && !isTerminalGroup("protein",resname) ) {
if ( resname=="GLY" || resname=="ALA" || resname=="SFO" || resname=="CYS" || resname=="SER" ||
resname=="THR" || resname=="VAL" ) plumed_merror("chi-2 is not defined for ALA, GLY, CYS, SER, THR, VAL and SFO");
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CA",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CB",resnum,chainid));
if(resname=="ILE") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CG1",resnum,chainid));
} else {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CG",resnum,chainid));
}
if(resname=="ASN" || resname=="ASP") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("OD1",resnum,chainid));
} else if(resname=="HIS") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("ND1",resnum,chainid));
} else if(resname=="LEU" || resname=="PHE" || resname=="TRP" || resname=="TYR") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CD1",resnum,chainid));
} else if(resname=="MET") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("SD",resnum,chainid));
} else {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CD",resnum,chainid));
}
} else if( name=="chi3" && !isTerminalGroup("protein",resname) ) {
if (!( resname=="ARG" || resname=="GLN" || resname=="GLU" || resname=="LYS" ||
resname=="MET" )) plumed_merror("chi-3 is defined only for ARG, GLN, GLU, LYS and MET");
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CB",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CG",resnum,chainid));
if(resname=="MET") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("SD",resnum,chainid));
} else {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CD",resnum,chainid));
}
if(resname=="GLN" || resname=="GLU") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("OE1",resnum,chainid));
} else if(resname=="LYS" || resname=="MET") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CE",resnum,chainid));
} else {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("NE",resnum,chainid));
}
} else if( name=="chi4" && !isTerminalGroup("protein",resname) ) {
if (!( resname=="ARG" || resname=="LYS" )) plumed_merror("chi-4 is defined only for ARG and LYS");
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CG",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CD",resnum,chainid));
if(resname=="ARG") {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("NE",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CZ",resnum,chainid));
} else {
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CE",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("NZ",resnum,chainid));
}
} else if( name=="chi5" && !isTerminalGroup("protein",resname) ) {
if (!( resname=="ARG" )) plumed_merror("chi-5 is defined only for ARG");
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CD",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("NE",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("CZ",resnum,chainid));
numbers.push_back(mypdb.getNamedAtomFromResidueAndChain("NH1",resnum,chainid));
} else numbers.push_back(mypdb.getNamedAtomFromResidueAndChain(name,resnum,chainid));
} else if( allowedResidue("rna",resname) || allowedResidue("dna",resname)) {
std::string basetype;
if(resname.find_first_of("A")!=std::string::npos) basetype+="A";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment