// std::cout << "For Donor №" << Donor.info->nr - 1 << " and Accpetor №" << Acceptor.info->nr - 1 << std::endl;
if( !(Donor.is_proline) && (Acceptor.getIndex(backboneAtomTypes::AtomC) && Acceptor.getIndex(backboneAtomTypes::AtomO)
- && Donor.getIndex(backboneAtomTypes::AtomN) && ( Donor.getIndex(backboneAtomTypes::AtomH) || initParams.addHydrogens ) ) ){ // TODO
+ && Donor.getIndex(backboneAtomTypes::AtomN) && ( Donor.getIndex(backboneAtomTypes::AtomH) || initParams.addHydrogens ) ) ){
distanceNO = CalculateAtomicDistances(
- Donor.getIndex(backboneAtomTypes::AtomN), Acceptor.getIndex(backboneAtomTypes::AtomO), fr, pbc);
+ Donor.getIndex(backboneAtomTypes::AtomN), Acceptor.getIndex(backboneAtomTypes::AtomO), fr, pbc);
distanceNC = CalculateAtomicDistances(
- Donor.getIndex(backboneAtomTypes::AtomN), Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
+ Donor.getIndex(backboneAtomTypes::AtomN), Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
if (initParams.addHydrogens){
if (Donor.prevResi != nullptr && Donor.prevResi->getIndex(backboneAtomTypes::AtomC) && Donor.prevResi->getIndex(backboneAtomTypes::AtomO)){
- rvec atomH{};
- float prevCODist {CalculateAtomicDistances(Donor.prevResi->getIndex(backboneAtomTypes::AtomC), Donor.prevResi->getIndex(backboneAtomTypes::AtomO), fr, pbc)};
- for (int i{XX}; i <= ZZ; ++i){
- float prevCO = fr.x[Donor.prevResi->getIndex(backboneAtomTypes::AtomC)][i] - fr.x[Donor.prevResi->getIndex(backboneAtomTypes::AtomO)][i];
- atomH[i] = fr.x[Donor.getIndex(backboneAtomTypes::AtomH)][i]; // Но на самом деле берутся координаты N
- atomH[i] += prevCO / prevCODist;
- }
- distanceHO = CalculateAtomicDistances(atomH, Acceptor.getIndex(backboneAtomTypes::AtomO), fr, pbc);
- distanceHC = CalculateAtomicDistances(atomH, Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
+ rvec atomH{};
+ float prevCODist {CalculateAtomicDistances(Donor.prevResi->getIndex(backboneAtomTypes::AtomC), Donor.prevResi->getIndex(backboneAtomTypes::AtomO), fr, pbc)};
+ for (int i{XX}; i <= ZZ; ++i){
+ float prevCO = fr.x[Donor.prevResi->getIndex(backboneAtomTypes::AtomC)][i] - fr.x[Donor.prevResi->getIndex(backboneAtomTypes::AtomO)][i];
+ atomH[i] = fr.x[Donor.getIndex(backboneAtomTypes::AtomH)][i]; // Но на самом деле берутся координаты N
+ atomH[i] += prevCO / prevCODist;
+ }
+ distanceHO = CalculateAtomicDistances(atomH, Acceptor.getIndex(backboneAtomTypes::AtomO), fr, pbc);
+ distanceHC = CalculateAtomicDistances(atomH, Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
}
else{
distanceHO = distanceNO;
distanceHC = distanceNC;
}
- }
- else {
- distanceHO = CalculateAtomicDistances(
- Donor.getIndex(backboneAtomTypes::AtomH), Acceptor.getIndex(backboneAtomTypes::AtomO), fr, pbc);
- distanceHC = CalculateAtomicDistances(
- Donor.getIndex(backboneAtomTypes::AtomH), Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
- }
- if ((distanceNO < minimalAtomDistance) || (distanceHC < minimalAtomDistance)
- || (distanceHO < minimalAtomDistance) || (distanceNC < minimalAtomDistance))
- {
+ }
+ else {
+ distanceHO = CalculateAtomicDistances(
+ Donor.getIndex(backboneAtomTypes::AtomH), Acceptor.getIndex(backboneAtomTypes::AtomO), fr, pbc);
+ distanceHC = CalculateAtomicDistances(
+ Donor.getIndex(backboneAtomTypes::AtomH), Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
+ }
+ if ((distanceNO < minimalAtomDistance) || (distanceHC < minimalAtomDistance)
+ || (distanceHO < minimalAtomDistance) || (distanceNC < minimalAtomDistance))
+ {
HbondEnergy = minEnergy;
- }
- else{
- HbondEnergy =
- kCouplingConstant
- * ((1 / distanceNO) + (1 / distanceHC) - (1 / distanceHO) - (1 / distanceNC));
- }
+ }
+ else{
+ HbondEnergy =
+ kCouplingConstant
+ * ((1 / distanceNO) + (1 / distanceHC) - (1 / distanceHO) - (1 / distanceNC));
+ }
-// std::cout << "CA-CA distance: " << CalculateAtomicDistances(
-// Donor.getIndex(backboneAtomTypes::AtomCA), Acceptor.getIndex(backboneAtomTypes::AtomCA), fr, pbc) << std::endl;
-// std::cout << "N-O distance: " << distanceNO << std::endl;
-// std::cout << "N-C distance: " << distanceNC << std::endl;
-// std::cout << "H-O distance: " << distanceHO << std::endl;
-// std::cout << "H-C distance: " << distanceHC << std::endl;
+ // std::cout << "CA-CA distance: " << CalculateAtomicDistances(
+ // Donor.getIndex(backboneAtomTypes::AtomCA), Acceptor.getIndex(backboneAtomTypes::AtomCA), fr, pbc) << std::endl;
+ // std::cout << "N-O distance: " << distanceNO << std::endl;
+ // std::cout << "N-C distance: " << distanceNC << std::endl;
+ // std::cout << "H-O distance: " << distanceHO << std::endl;
+ // std::cout << "H-C distance: " << distanceHC << std::endl;
- HbondEnergy = std::round(HbondEnergy * 1000) / 1000;
+ HbondEnergy = std::round(HbondEnergy * 1000) / 1000;
- if ( HbondEnergy < minEnergy ){
+ if ( HbondEnergy < minEnergy ){
HbondEnergy = minEnergy;
- }
+ }
+
+ } // TODO
+
// std::cout << "Calculated energy = " << HbondEnergy << std::endl;
- }
// else{
// std::cout << "Donor Is Proline" << std::endl;
// }