dsfdsfdsf
authorMax <Infinity2573@gmail.com>
Mon, 26 Sep 2022 11:59:23 +0000 (14:59 +0300)
committerMax <Infinity2573@gmail.com>
Mon, 26 Sep 2022 11:59:23 +0000 (14:59 +0300)
src/dssptools.cpp

index f5de878c021cef8e9800bf8767eea634b94cf8a1..e2a69fb9f711911810c46a1c1794adf87fe4d1b7 100644 (file)
@@ -139,10 +139,12 @@ bool secondaryStructures::hasHBondBetween(std::size_t Donor, std::size_t Accepto
         std::cout << std::endl;
         return false;
     }
-    else {
-        std::cout << "Comparing DONOR №" << (*ResInfoMap)[Donor].info->nr << " And ACCEPTOR №" << (*ResInfoMap)[Acceptor].info->nr << ": ";
-        std::cout << "DONOR's acceptors' nr are = " << (*ResInfoMap)[Donor].acceptor[0]->nr << " (chain " << (*ResInfoMap)[Donor].acceptor[0]->chainid << ") , " << (*ResInfoMap)[Donor].acceptor[1]->nr << " (chain " << (*ResInfoMap)[Donor].acceptor[1]->chainid << ")" << std::endl;
-        std::cout << "DONOR's acceptors' energy are = " << (*ResInfoMap)[Donor].acceptorEnergy[0] << ", " << (*ResInfoMap)[Donor].acceptorEnergy[1] << std::endl;
+    else if (!( (*ResInfoMap)[Acceptor].donor[0] == nullptr ||
+              (*ResInfoMap)[Accpetor].donor[1] == nullptr ||
+              (*ResInfoMap)[Donor].info == nullptr )) {
+        std::cout << "Comparing DONOR №" << (*ResInfoMap)[Donor].info->nr << " And ACCEPTOR №" << (*ResInfoMap)[Acceptor].info->nr << ": " << std::endl;
+        std::cout << "Donor's acceptors' nr are = " << (*ResInfoMap)[Donor].acceptor[0]->nr << " (chain " << (*ResInfoMap)[Donor].acceptor[0]->chainid << ") , " << (*ResInfoMap)[Donor].acceptor[1]->nr << " (chain " << (*ResInfoMap)[Donor].acceptor[1]->chainid << ")" << std::endl;
+        std::cout << "Donor's acceptors' energy are = " << (*ResInfoMap)[Donor].acceptorEnergy[0] << ", " << (*ResInfoMap)[Donor].acceptorEnergy[1] << std::endl;
         std::cout << "Acceptors's donors' nr are = " << (*ResInfoMap)[Acceptor].donor[0]->nr << " (chain " << (*ResInfoMap)[Acceptor].donor[0]->chainid << ") , " << (*ResInfoMap)[Acceptor].donor[1]->nr << " (chain " << (*ResInfoMap)[Acceptor].donor[1]->chainid << ")" << std::endl;
         std::cout << "Acceptors's donors' energy are = " << (*ResInfoMap)[Acceptor].donorEnergy[0] << ", " << (*ResInfoMap)[Acceptor].donorEnergy[1] << std::endl;
         if( ( (*ResInfoMap)[Donor].acceptor[0] == (*ResInfoMap)[Acceptor].info && (*ResInfoMap)[Donor].acceptorEnergy[0] < HBondEnergyCutOff ) ||
@@ -150,6 +152,19 @@ bool secondaryStructures::hasHBondBetween(std::size_t Donor, std::size_t Accepto
             std::cout << "HBond Exist" << std::endl;
         }
     }
+    else {
+        std::cout << "Bad hbond check. Reason(s): " ;
+        if ( (*ResInfoMap)[Acceptor].donor[0] == nullptr ){
+            std::cout << "Acceptor has no donor[0]; ";
+        }
+        if ( (*ResInfoMap)[Acceptor].donor[1] == nullptr ){
+            std::cout << "Acceptor has no donor[1]; ";
+        }
+        if ( (*ResInfoMap)[Donor].info == nullptr ){
+            std::cout << "No info about donor; ";
+        }
+        std::cout << std::endl;
+    }
 
     return ( (*ResInfoMap)[Donor].acceptor[0] == (*ResInfoMap)[Acceptor].info && (*ResInfoMap)[Donor].acceptorEnergy[0] < HBondEnergyCutOff ) ||
            ( (*ResInfoMap)[Donor].acceptor[1] == (*ResInfoMap)[Acceptor].info && (*ResInfoMap)[Donor].acceptorEnergy[1] < HBondEnergyCutOff );