Возможно нашёл и исправил ошибку????
authorMax <Infinity2573@gmail.com>
Tue, 11 Oct 2022 20:43:06 +0000 (23:43 +0300)
committerMax <Infinity2573@gmail.com>
Tue, 11 Oct 2022 20:43:06 +0000 (23:43 +0300)
src/dssptools.cpp

index 291e56cf12f5e8de149e414c3a3ba204f39fb152..9db6df6d708acde7dd0d45c5619ab659fa8cdc41 100644 (file)
@@ -925,60 +925,62 @@ void DsspTool::calculateHBondEnergy(ResInfo& Donor,
 //    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;
 //    }