Исправляю тюрны и хеликсы
authorMax <Infinity2573@gmail.com>
Mon, 19 Sep 2022 13:52:09 +0000 (16:52 +0300)
committerMax <Infinity2573@gmail.com>
Mon, 19 Sep 2022 13:52:09 +0000 (16:52 +0300)
src/dssptools.cpp
src/dssptools.h

index f19f099c6c96954591b41eef2b91ad39dabaf075..a78c9f350fa1929d224bbe57d36642808fc9c1db 100644 (file)
@@ -107,7 +107,7 @@ bool secondaryStructures::secondaryStructuresData::getStatus(const secondaryStru
     return SecondaryStructuresStatusArray[static_cast<std::size_t>(secondaryStructureTypeName)];
 }
 
-bool secondaryStructures::secondaryStructuresData::isBreakPartnerWith(secondaryStructuresData *partner) const{
+bool secondaryStructures::secondaryStructuresData::isBreakPartnerWith(const secondaryStructuresData *partner) const{
     return breakPartners[0] == partner || breakPartners[1] == partner;
 }
 
@@ -152,22 +152,23 @@ bool secondaryStructures::hasHBondBetween(std::size_t Donor, std::size_t Accepto
 }
 
 bool secondaryStructures::NoChainBreaksBetween(std::size_t Resi1, std::size_t Resi2) const{
-    bool flag {true};
-    if (Resi1 < Resi2){
-        for(std::size_t i{Resi1}; flag and i < Resi2; ++i ){
-            if (SecondaryStructuresStatusMap[Resi1].getStatus(secondaryStructureTypes::Break)){
-                flag = false;
-            }
-        }
-    }
-    else if (Resi1 > Resi2){
-        for(std::size_t i{Resi2}; flag and i < Resi1; ++i ){
-            if (SecondaryStructuresStatusMap[Resi1].getStatus(secondaryStructureTypes::Break)){
-                flag = false;
-            }
-        }
-    }
-    return flag;
+//    bool flag {true};
+//    if (Resi1 < Resi2){
+//        for(std::size_t i{Resi1}; flag and i < Resi2; ++i ){
+//            if (SecondaryStructuresStatusMap[Resi1].getStatus(secondaryStructureTypes::Break)){
+//                flag = false;
+//            }
+//        }
+//    }
+//    else if (Resi1 > Resi2){
+//        for(std::size_t i{Resi2}; flag and i < Resi1; ++i ){
+//            if (SecondaryStructuresStatusMap[Resi1].getStatus(secondaryStructureTypes::Break)){
+//                flag = false;
+//            }
+//        }
+//    }
+//    return flag;
+    return SecondaryStructuresStatusMap[Resi1].isBreakPartnerWith(&SecondaryStructuresStatusMap[Resi2]) || SecondaryStructuresStatusMap[Resi2].isBreakPartnerWith(&SecondaryStructuresStatusMap[Resi1]);
 }
 
 bridgeTypes secondaryStructures::calculateBridge(std::size_t i, std::size_t j) const{
@@ -571,7 +572,7 @@ void DsspTool::calculateBends(const t_trxframe &fr, const t_pbc *pbc)
            PatternSearch.SecondaryStructuresStatusMap[i].setBreak(&PatternSearch.SecondaryStructuresStatusMap[i + 1]);
            PatternSearch.SecondaryStructuresStatusMap[i + 1].setBreak(&PatternSearch.SecondaryStructuresStatusMap[i]);
 
-           std::cout << "Break between " << i + 1 << " and " << i + 2 << std::endl;
+//           std::cout << "Break between " << i + 1 << " and " << i + 2 << std::endl;
        }
    }
    for (std::size_t i{ 2 }; i + 2 < IndexMap.size() ; ++i)
index d0ccc71b5d66137187ce4d8c2468ee5e9a1595be..be635e4f37024e9ab515adf95c603423f44b1960 100644 (file)
@@ -166,7 +166,7 @@ public:
     public:
         void                                setStatus(const secondaryStructureTypes secondaryStructureTypeName);
         void                                setStatus(const HelixPositions helixPosition, const turnsTypes turn);
-        bool                                getStatus(const secondaryStructureTypes secondaryStructureTypeName) const, isBreakPartnerWith(secondaryStructuresData *partner) const;
+        bool                                getStatus(const secondaryStructureTypes secondaryStructureTypeName) const, isBreakPartnerWith(const secondaryStructuresData *partner) const;
         HelixPositions                      getStatus(const turnsTypes turn) const;
         secondaryStructureTypes             getStatus() const;
         void                                setBreak(secondaryStructuresData *breakPartner);