From fda7a0ac9ca2bb0fd3f39a6ef4a298b932f998ae Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 26 Sep 2022 16:39:19 +0300 Subject: [PATCH] TATATATATA --- src/dssptools.cpp | 95 +++++++++++++++++++++++------------------------ 1 file changed, 46 insertions(+), 49 deletions(-) diff --git a/src/dssptools.cpp b/src/dssptools.cpp index d7f9f00..bbd856c 100644 --- a/src/dssptools.cpp +++ b/src/dssptools.cpp @@ -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(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(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; } -- 2.22.0