asdasdsad
authorMax <Infinity2573@gmail.com>
Mon, 19 Sep 2022 16:36:14 +0000 (19:36 +0300)
committerMax <Infinity2573@gmail.com>
Mon, 19 Sep 2022 16:36:14 +0000 (19:36 +0300)
src/dssptools.cpp
src/dssptools.h

index 5a2e5ad17a5039ab8ab4f86458b70eabb56006c5..5efefe8bb54676a7cf9321c5ab9719592b11aabb 100644 (file)
@@ -97,7 +97,7 @@ void secondaryStructures::secondaryStructuresData::setStatus(const secondaryStru
 }
 
 void secondaryStructures::secondaryStructuresData::setStatus(const HelixPositions helixPosition, const turnsTypes turn){
-    TurnsStatusArray[static_cast<std::size_t>(turn) - 3] = helixPosition;
+    TurnsStatusArray[static_cast<std::size_t>(turn)] = helixPosition;
 }
 
 bool secondaryStructures::secondaryStructuresData::getStatus(const secondaryStructureTypes secondaryStructureTypeName) const{
@@ -260,10 +260,12 @@ void secondaryStructures::analyzeBridgesAndLaddersPatterns(){
 
 void secondaryStructures::analyzeTurnsAndHelicesPatterns(){
     for(const turnsTypes &i : { turnsTypes::Turn_4, turnsTypes::Turn_3, turnsTypes::Turn_5 }){
-        std::cout << "Testing Helix_" << &i << std::endl;
+        std::cout << "Testing Helix_" << static_cast<std::size_t>(i) << std::endl;
+        std::size_t stride {static_cast<std::size_t>(i) + 3};
         for(std::size_t j {0}; j + static_cast<std::size_t>(i) < SecondaryStructuresStatusMap.size(); ++j){
-            std::cout << "Testing " << j << " and " << j + static_cast<std::size_t>(i) << std::endl;
-            if ( hasHBondBetween(j, j + (static_cast<std::size_t>(i))) && NoChainBreaksBetween(j, j + static_cast<std::size_t>(i)) ){
+            std::cout << "Testing " << j << " and " << j + stride << std::endl;
+            if ( hasHBondBetween(j, j + (static_cast<std::size_t>(i))) && NoChainBreaksBetween(j, j + stride) ){
+                std::cout << j << " and " << j + stride << " has hbond!" << std::endl;
                 SecondaryStructuresStatusMap[j + static_cast<std::size_t>(i)].setStatus(HelixPositions::End, i);
 
                 for (std::size_t k {1}; k < (static_cast<std::size_t>(i)); ++k){
@@ -284,20 +286,21 @@ void secondaryStructures::analyzeTurnsAndHelicesPatterns(){
     }
 
     for(const turnsTypes &i : { turnsTypes::Turn_4, turnsTypes::Turn_3, turnsTypes::Turn_5 }){
-        for(std::size_t j {1}; j + (static_cast<std::size_t>(i)) < SecondaryStructuresStatusMap.size(); ++j){
+        std::size_t stride {static_cast<std::size_t>(i) + 3};
+        for(std::size_t j {1}; j + stride < SecondaryStructuresStatusMap.size(); ++j){
             if ( (SecondaryStructuresStatusMap[j - 1].getStatus(i) == HelixPositions::Start || SecondaryStructuresStatusMap[j - 1].getStatus(i) == HelixPositions::Start_AND_End ) &&
                  (SecondaryStructuresStatusMap[j].getStatus(i) == HelixPositions::Start || SecondaryStructuresStatusMap[j].getStatus(i) == HelixPositions::Start_AND_End ) ){
                 bool empty = true;
                 secondaryStructureTypes Helix;
                 switch(i){
                 case turnsTypes::Turn_3:
-                    for (std::size_t k {0}; empty && k < (static_cast<std::size_t>(i)); ++k){
+                    for (std::size_t k {0}; empty && k < stride; ++k){
                         empty = SecondaryStructuresStatusMap[j + k].getStatus(secondaryStructureTypes::Loop ) || SecondaryStructuresStatusMap[j + k].getStatus(secondaryStructureTypes::Helix_3);
                     }
                     Helix = secondaryStructureTypes::Helix_3;
                     break;
                 case turnsTypes::Turn_5:
-                    for (std::size_t k {0}; empty && k < (static_cast<std::size_t>(i)); ++k){
+                    for (std::size_t k {0}; empty && k < stride; ++k){
                         empty = SecondaryStructuresStatusMap[j + k].getStatus(secondaryStructureTypes::Loop ) || SecondaryStructuresStatusMap[j + k].getStatus(secondaryStructureTypes::Helix_5) || (PiHelixPreference && SecondaryStructuresStatusMap[j + k].getStatus(secondaryStructureTypes::Helix_5));
                     }
                     Helix = secondaryStructureTypes::Helix_4;
@@ -320,7 +323,8 @@ void secondaryStructures::analyzeTurnsAndHelicesPatterns(){
         if (SecondaryStructuresStatusMap[i].getStatus(secondaryStructureTypes::Loop)){
             bool isTurn = false;
             for(const turnsTypes &j : {turnsTypes::Turn_3, turnsTypes::Turn_4, turnsTypes::Turn_5}){
-                for(std::size_t k {1}; k < (static_cast<std::size_t>(j)); ++k){
+                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) ;
                 }
             }
index 74638a84fa31b36432587ddd2b992afa821e7783..42f3587f72d34f3d25cdf854db5d8636d8e9e2e6 100644 (file)
@@ -133,10 +133,10 @@ enum class secondaryStructureTypes : std::size_t { // TODO
 };
 
 enum class turnsTypes : std::size_t {
-    Turn_3 = 3,
+    Turn_3 = 0,
     Turn_4,
     Turn_5,
-    Count = 3
+    Count
 };
 
 enum class HelixPositions : std::size_t {
@@ -187,7 +187,6 @@ private:
        { '~', '=', 'S', 'T', '?', 'I', 'G', 'E', 'B', 'H'} // TODO
     };
     std::string     SecondaryStructuresStringLine;
-//    const std::size_t     strideFactor{3};
 
     bool            hasHBondBetween(std::size_t resi1, std::size_t resi2) const;