TATATATATA
authorMax <Infinity2573@gmail.com>
Mon, 26 Sep 2022 13:39:19 +0000 (16:39 +0300)
committerMax <Infinity2573@gmail.com>
Mon, 26 Sep 2022 13:39:19 +0000 (16:39 +0300)
src/dssptools.cpp

index d7f9f00c362e0cbf2fccd8aa6a5fde27f304090f..bbd856ca00e2772e146593db9214503c1e105166 100644 (file)
@@ -122,7 +122,7 @@ void secondaryStructures::secondaryStructuresData::setBreak(secondaryStructuresD
     setStatus(secondaryStructureTypes::Break);
 }
 
-bool secondaryStructures::hasHBondBetween(std::size_t Donor, std::size_t Acceptor) const{ // prob should add resi name comparison ?
+bool secondaryStructures::hasHBondBetween(std::size_t Donor, std::size_t Acceptor) const{
     if( (*ResInfoMap)[Donor].acceptor[0] == nullptr ||
         (*ResInfoMap)[Donor].acceptor[1] == nullptr ||
         (*ResInfoMap)[Acceptor].info == nullptr ){
@@ -139,32 +139,32 @@ bool secondaryStructures::hasHBondBetween(std::size_t Donor, std::size_t Accepto
         std::cout << std::endl;
         return false;
     }
-    else if (!( (*ResInfoMap)[Acceptor].donor[0] == nullptr ||
-              (*ResInfoMap)[Acceptor].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 ) ||
-                ( (*ResInfoMap)[Donor].acceptor[1] == (*ResInfoMap)[Acceptor].info && (*ResInfoMap)[Donor].acceptorEnergy[1] < HBondEnergyCutOff ) ){
-            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;
-    }
+//    else if (!( (*ResInfoMap)[Acceptor].donor[0] == nullptr ||
+//              (*ResInfoMap)[Acceptor].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 ) ||
+//                ( (*ResInfoMap)[Donor].acceptor[1] == (*ResInfoMap)[Acceptor].info && (*ResInfoMap)[Donor].acceptorEnergy[1] < HBondEnergyCutOff ) ){
+//            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 );
@@ -291,7 +291,7 @@ void secondaryStructures::analyzeTurnsAndHelicesPatterns(){
                 for (std::size_t k {1}; k < stride; ++k){
                     if( SecondaryStructuresStatusMap[j + k].getStatus(i) == HelixPositions::None ){
                         SecondaryStructuresStatusMap[j + k].setStatus(HelixPositions::Middle, i);
-                        SecondaryStructuresStatusMap[j + k].setStatus(secondaryStructureTypes::Turn);
+//                        SecondaryStructuresStatusMap[j + k].setStatus(secondaryStructureTypes::Turn);
                     }
 
                 }
@@ -331,7 +331,7 @@ void secondaryStructures::analyzeTurnsAndHelicesPatterns(){
                     break;
                 }
                 if ( empty || Helix == secondaryStructureTypes::Helix_4 ){
-                    for(std::size_t k {0}; k < stride - 1; ++k ){
+                    for(std::size_t k {0}; k < stride; ++k ){
                         SecondaryStructuresStatusMap[j + k].setStatus(Helix);
                     }
                 }
@@ -339,24 +339,21 @@ void secondaryStructures::analyzeTurnsAndHelicesPatterns(){
         }
     }
 
-//    for(std::size_t i {1}; i + 1 < SecondaryStructuresStatusMap.size(); ++i){
-//        if (SecondaryStructuresStatusMap[i].getStatus(secondaryStructureTypes::Loop)){
-//            bool isTurn = false;
-//            for(const turnsTypes &j : {turnsTypes::Turn_3, turnsTypes::Turn_4, turnsTypes::Turn_5}){
-//                std::size_t stride {static_cast<std::size_t>(i) + 3};
-//                for(std::size_t k {1}; k < stride; ++k){
-//                    isTurn = (i >= k) && (SecondaryStructuresStatusMap[i - k].getStatus(j) == HelixPositions::Start || SecondaryStructuresStatusMap[i - k].getStatus(j) == HelixPositions::Start_AND_End) ;
-//                }
-//            }
+    for(std::size_t i {1}; i + 1 < SecondaryStructuresStatusMap.size(); ++i){
+        if (SecondaryStructuresStatusMap[i].getStatus(secondaryStructureTypes::Loop)){
+            bool isTurn = false;
+            for(const turnsTypes &j : {turnsTypes::Turn_3, turnsTypes::Turn_4, turnsTypes::Turn_5}){
+                std::size_t stride {static_cast<std::size_t>(i) + 3};
+                for(std::size_t k {1}; k < stride; ++k){
+                    isTurn = (i >= k) && (SecondaryStructuresStatusMap[i - k].getStatus(j) == HelixPositions::Start || SecondaryStructuresStatusMap[i - k].getStatus(j) == HelixPositions::Start_AND_End) ;
+                }
+            }
 
-//            if (isTurn){
-//                SecondaryStructuresStatusMap[i].setStatus(secondaryStructureTypes::Turn);
-//            }
-//            else if (SecondaryStructuresStatusMap[i].getStatus(secondaryStructureTypes::Bend)){
-//                SecondaryStructuresStatusMap[i].setStatus(secondaryStructureTypes::Bend);
-//            }
-//        }
-//    }
+            if (isTurn){
+                SecondaryStructuresStatusMap[i].setStatus(secondaryStructureTypes::Turn);
+            }
+        }
+    }
 
 }
 
@@ -713,9 +710,9 @@ void DsspTool::calculateHBondEnergy(ResInfo& Donor,
 
        HbondEnergy = std::round(HbondEnergy * 1000) / 1000;
 
-       if ( HbondEnergy < minEnergy ){ // I don't think that this is correct
-            HbondEnergy = minEnergy;
-       }
+//       if ( HbondEnergy < minEnergy ){ // I don't think that this is correct
+//            HbondEnergy = minEnergy;
+//       }
 
 //       std::cout << "Calculated energy = " << HbondEnergy << std::endl;
     }