}
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{
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){
}
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;
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) ;
}
}
};
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 {
{ '~', '=', '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;