asdasd
authorMax <Infinity2573@gmail.com>
Mon, 29 Aug 2022 21:54:54 +0000 (00:54 +0300)
committerMax <Infinity2573@gmail.com>
Mon, 29 Aug 2022 21:54:54 +0000 (00:54 +0300)
src/dssptools.cpp
src/dssptools.h

index 5902024925b373af06368d1acfe0c6abe4d2e088..c1876b888672d95c9c7e77bf405590f1b588441f 100644 (file)
@@ -614,15 +614,15 @@ void DsspTool::calculateHBondEnergy(ResInfo& Donor,
                    Donor.getIndex(backboneAtomTypes::AtomN), Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
 
            if (initParams.addHydrogens){
-               if (Acceptor.prevResi != nullptr){
+               if (Donor.prevResi != nullptr && Donor.prevResi->getIndex(backboneAtomTypes::AtomC) && Donor.prevResi->getIndex(backboneAtomTypes::AtomO)){
                    rvec atomH{};
-                   float prevCODist {CalculateAtomicDistances(Acceptor.prevResi->getIndex(backboneAtomTypes::AtomC), Acceptor.prevResi->getIndex(backboneAtomTypes::AtomO), fr, pbc)};
+                   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[Acceptor.prevResi->getIndex(backboneAtomTypes::AtomC)][i] - fr.x[Acceptor.prevResi->getIndex(backboneAtomTypes::AtomO)][i];
+                       float prevCO = fr.x[Donor.prevResi->getIndex(backboneAtomTypes::AtomC)][i] - fr.x[Donor.prevResi->getIndex(backboneAtomTypes::AtomO)][i];
                        atomH[i] = prevCO / prevCODist;
                    }
-                   distanceHO = CalculateAtomicDistances(Donor.getIndex(backboneAtomTypes::AtomO), atomH, fr, pbc);
-                   distanceHC = CalculateAtomicDistances(Donor.getIndex(backboneAtomTypes::AtomC), atomH, fr, pbc);
+                   distanceHO = CalculateAtomicDistances(atomH, Acceptor.getIndex(backboneAtomTypes::AtomO), fr, pbc);
+                   distanceHC = CalculateAtomicDistances(atomH, Acceptor.getIndex(backboneAtomTypes::AtomC), fr, pbc);
                }
                else{
                    distanceHO = distanceNO;
@@ -654,6 +654,7 @@ void DsspTool::calculateHBondEnergy(ResInfo& Donor,
                            * ((1 / distanceNO) + (1 / distanceHC) - (1 / distanceHO) - (1 / distanceNC));
                    HbondEnergy = std::round(HbondEnergy * 1000) / 1000;
 
+                   std::cout.precision(5);
                    std::cout << "Calculated ENERGY - " << HbondEnergy << std::endl;
 
                    if ( HbondEnergy < minEnergy ){
@@ -704,10 +705,10 @@ float DsspTool::CalculateAtomicDistances(const int &A, const int &B, const t_trx
 }
 
 /* Calculate Distance From B to A, where A is only fake coordinates */
-float DsspTool::CalculateAtomicDistances(const int &A, const rvec &B, const t_trxframe &fr, const t_pbc *pbc)
+float DsspTool::CalculateAtomicDistances(const rvec &A, const int &B, const t_trxframe &fr, const t_pbc *pbc)
 {
    gmx::RVec r{ 0, 0, 0 };
-   pbc_dx(pbc, fr.x[A], B, r.as_vec());
+   pbc_dx(pbc, A, fr.x[B], r.as_vec());
    return r.norm(); // TODO * gmx::c_nm2A; if not PDB, i guess????
 }
 
index 03eb7276a177eb154aff2f8871090093aa810db0..42e35c686258197a5bb8152edf548219aa93c1dc 100644 (file)
@@ -245,7 +245,7 @@ private:
                                                                    const t_trxframe&          fr,
                                                                    const t_pbc*               pbc);
    float CalculateAtomicDistances(const int &A, const int &B, const t_trxframe &fr, const t_pbc *pbc);
-   float CalculateAtomicDistances(const int &A, const rvec &B, const t_trxframe &fr, const t_pbc *pbc);
+   float CalculateAtomicDistances(const rvec &A, const int &B, const t_trxframe &fr, const t_pbc *pbc);
 
    class DsspStorage
    {