real cutoff_; // = 4.0; ???
NBSearchMethod NBS;
bool verbose, PPHelices, addHydrogens;
+ int pp_stretch;
};
enum class backboneAtomTypes : std::size_t
Break, // =
Bend, // S
Turn, // T
- Helis_PPII, // P
+ Helix_PP, // P
Helix_5, // I
Helix_3, // G
- Bridge, // B
Strand, // E
+ Bridge, // B
Helix_4, // H
Count
Turn_3 = 0,
Turn_4,
Turn_5,
+ Turn_PP,
Count
};
class secondaryStructures{ // PatterSearch Wrapper
public:
secondaryStructures();
- void initiateSearch(const std::vector<ResInfo> &ResInfoMatrix, const bool PiHelicesPreferencez = true);
+ void initiateSearch(const std::vector<ResInfo> &ResInfoMatrix, const bool PiHelicesPreferencez, const int _pp_stretch);
std::string patternSearch();
~secondaryStructures();
class secondaryStructuresData{ // PatternSearch Tool
public:
- void setStatus(const secondaryStructureTypes secondaryStructureTypeName);
+ void setStatus(const secondaryStructureTypes secondaryStructureTypeName, bool status = true);
void setStatus(const HelixPositions helixPosition, const turnsTypes turn);
bool getStatus(const secondaryStructureTypes secondaryStructureTypeName) const, isBreakPartnerWith(const secondaryStructuresData *partner) const;
HelixPositions getStatus(const turnsTypes turn) const;
bool hasBridges() const, hasBridges(bridgeTypes bridgeType) const, isBridgePartnerWith(secondaryStructuresData *bridgePartner, bridgeTypes bridgeType) const;
std::size_t getBridgePartnerIndex(bridgeTypes bridgeType) const;
secondaryStructuresData getBridgePartner(bridgeTypes bridgeType) const;
+ void set_phi(const ResInfo resi), set_psi(const ResInfo resi);
private:
std::array<bool, static_cast<std::size_t>(secondaryStructureTypes::Count)> SecondaryStructuresStatusArray{ true, 0, 0, 0, 0, 0, 0 };
secondaryStructuresData *breakPartners[2]{nullptr, nullptr};
secondaryStructuresData *bridgePartners[2]{nullptr, nullptr};
std::size_t bridgePartnersIndexes[2]{};
secondaryStructureTypes SecondaryStructuresStatus {secondaryStructureTypes::Loop};
- std::array<HelixPositions, static_cast<std::size_t>(turnsTypes::Count)> TurnsStatusArray {HelixPositions::None, HelixPositions::None, HelixPositions::None};
+ std::array<HelixPositions, static_cast<std::size_t>(turnsTypes::Count)> TurnsStatusArray {HelixPositions::None, HelixPositions::None, HelixPositions::None, HelixPositions::None};
};
std::vector<secondaryStructuresData> SecondaryStructuresStatusMap;
const std::vector<ResInfo> *ResInfoMap;
const gmx::EnumerationArray<secondaryStructureTypes, const char> secondaryStructureTypeNames = {
- { '~', '=', 'S', 'T', 'P', 'I', 'G', 'B', 'E', 'H'}
+ { '~', '=', 'S', 'T', 'P', 'I', 'G', 'E', 'B', 'H'}
};
std::string SecondaryStructuresStringLine;
bool hasHBondBetween(std::size_t resi1, std::size_t resi2) const;
bool NoChainBreaksBetween(std::size_t ResiStart, std::size_t ResiEnd) const, isLoop(const std::size_t resiIndex) const, PiHelixPreference;
+ int8_t pp_stretch;
bridgeTypes calculateBridge(std::size_t i, std::size_t j) const;
void analyzeBridgesAndStrandsPatterns(), analyzeTurnsAndHelicesPatterns(), analyzePPHelicesPatterns();
initParameters initParams;
AtomsDataPtr atoms_;
std::string filename_;
- void calculateBends(const t_trxframe& fr, const t_pbc* pbc);
+ void calculateBends(const t_trxframe& fr, const t_pbc* pbc), calculateDihedrals(const t_trxframe& fr, const t_pbc* pbc);
std::vector<std::string> ResiNames;
std::vector<std::size_t> AtomResi;
std::vector<ResInfo> IndexMap;
const t_pbc* pbc);
float CalculateAtomicDistances(const int &A, const int &B, const t_trxframe &fr, const t_pbc *pbc);
float CalculateAtomicDistances(const rvec &A, const int &B, const t_trxframe &fr, const t_pbc *pbc);
+ float CalculateDihedralAngle(const int &A, const int &B, const int &C, const int &D, const t_trxframe &fr, const t_pbc *pbc);
class DsspStorage
{