Commit 6cebeaac by Maarten L. Hekkelman

start renaming and reorganising

parent 32869b34
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
# set the project name # set the project name
project(mkdssp VERSION 4.1.1 LANGUAGES CXX) project(mkdssp VERSION 4.2.0 LANGUAGES CXX)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
......
...@@ -34,9 +34,6 @@ ...@@ -34,9 +34,6 @@
// -------------------------------------------------------------------- // --------------------------------------------------------------------
namespace dssp
{
const double const double
kPI = 3.141592653589793238462643383279502884; kPI = 3.141592653589793238462643383279502884;
...@@ -803,7 +800,7 @@ bool TestBond(const residue *a, const residue *b) ...@@ -803,7 +800,7 @@ bool TestBond(const residue *a, const residue *b)
(a->mHBondAcceptor[1].res == b and a->mHBondAcceptor[1].energy < kMaxHBondEnergy); (a->mHBondAcceptor[1].res == b and a->mHBondAcceptor[1].energy < kMaxHBondEnergy);
} }
bool test_bond(DSSP::residue_info const &a, DSSP::residue_info const &b) bool test_bond(dssp::residue_info const &a, dssp::residue_info const &b)
{ {
return a and b and TestBond(a.m_impl, b.m_impl); return a and b and TestBond(a.m_impl, b.m_impl);
} }
...@@ -1833,92 +1830,92 @@ std::string DSSP_impl::GetPDBAUTHORLine() ...@@ -1833,92 +1830,92 @@ std::string DSSP_impl::GetPDBAUTHORLine()
// -------------------------------------------------------------------- // --------------------------------------------------------------------
std::string DSSP::residue_info::asym_id() const std::string dssp::residue_info::asym_id() const
{ {
return m_impl->mAsymID; return m_impl->mAsymID;
} }
std::string DSSP::residue_info::compound_id() const std::string dssp::residue_info::compound_id() const
{ {
return m_impl->mCompoundID; return m_impl->mCompoundID;
} }
char DSSP::residue_info::compound_letter() const char dssp::residue_info::compound_letter() const
{ {
return MapResidue(compound_id()); return MapResidue(compound_id());
} }
int DSSP::residue_info::seq_id() const int dssp::residue_info::seq_id() const
{ {
return m_impl->mSeqID; return m_impl->mSeqID;
} }
std::string DSSP::residue_info::alt_id() const std::string dssp::residue_info::alt_id() const
{ {
return m_impl->mAltID; return m_impl->mAltID;
} }
std::string DSSP::residue_info::auth_asym_id() const std::string dssp::residue_info::auth_asym_id() const
{ {
return m_impl->mAuthAsymID; return m_impl->mAuthAsymID;
} }
int DSSP::residue_info::auth_seq_id() const int dssp::residue_info::auth_seq_id() const
{ {
return m_impl->mAuthSeqID; return m_impl->mAuthSeqID;
} }
std::string DSSP::residue_info::pdb_strand_id() const std::string dssp::residue_info::pdb_strand_id() const
{ {
return m_impl->mPDBStrandID; return m_impl->mPDBStrandID;
} }
int DSSP::residue_info::pdb_seq_num() const int dssp::residue_info::pdb_seq_num() const
{ {
return m_impl->mPDBSeqNum; return m_impl->mPDBSeqNum;
} }
std::string DSSP::residue_info::pdb_ins_code() const std::string dssp::residue_info::pdb_ins_code() const
{ {
return m_impl->mPDBInsCode; return m_impl->mPDBInsCode;
} }
float DSSP::residue_info::alpha() const float dssp::residue_info::alpha() const
{ {
return m_impl->mAlpha; return m_impl->mAlpha;
} }
float DSSP::residue_info::kappa() const float dssp::residue_info::kappa() const
{ {
return m_impl->mKappa; return m_impl->mKappa;
} }
float DSSP::residue_info::omega() const float dssp::residue_info::omega() const
{ {
return m_impl->mOmega; return m_impl->mOmega;
} }
float DSSP::residue_info::phi() const float dssp::residue_info::phi() const
{ {
return m_impl->mPhi; return m_impl->mPhi;
} }
float DSSP::residue_info::psi() const float dssp::residue_info::psi() const
{ {
return m_impl->mPsi; return m_impl->mPsi;
} }
float DSSP::residue_info::tco() const float dssp::residue_info::tco() const
{ {
return m_impl->mTCO; return m_impl->mTCO;
} }
bool DSSP::residue_info::is_pre_pro() const bool dssp::residue_info::is_pre_pro() const
{ {
return m_impl->mType != kProline and m_impl->mNext != nullptr and m_impl->mNext->mType == kProline; return m_impl->mType != kProline and m_impl->mNext != nullptr and m_impl->mNext->mType == kProline;
} }
float DSSP::residue_info::chiral_volume() const float dssp::residue_info::chiral_volume() const
{ {
return m_impl->mChiralVolume; return m_impl->mChiralVolume;
} }
...@@ -1945,14 +1942,14 @@ const std::map<residue_type, std::vector<std::string>> kChiAtomsMap = { ...@@ -1945,14 +1942,14 @@ const std::map<residue_type, std::vector<std::string>> kChiAtomsMap = {
{ MapResidue("VAL"), { "CG1" } } { MapResidue("VAL"), { "CG1" } }
}; };
std::size_t DSSP::residue_info::nr_of_chis() const std::size_t dssp::residue_info::nr_of_chis() const
{ {
auto i = kChiAtomsMap.find(m_impl->mType); auto i = kChiAtomsMap.find(m_impl->mType);
return i != kChiAtomsMap.end() ? i->second.size() : 0; return i != kChiAtomsMap.end() ? i->second.size() : 0;
} }
float DSSP::residue_info::chi(std::size_t index) const float dssp::residue_info::chi(std::size_t index) const
{ {
float result = 0; float result = 0;
...@@ -1984,37 +1981,37 @@ float DSSP::residue_info::chi(std::size_t index) const ...@@ -1984,37 +1981,37 @@ float DSSP::residue_info::chi(std::size_t index) const
return result; return result;
} }
std::tuple<float, float, float> DSSP::residue_info::ca_location() const std::tuple<float, float, float> dssp::residue_info::ca_location() const
{ {
return { m_impl->mCAlpha.mX, m_impl->mCAlpha.mY, m_impl->mCAlpha.mZ }; return { m_impl->mCAlpha.mX, m_impl->mCAlpha.mY, m_impl->mCAlpha.mZ };
} }
chain_break_type DSSP::residue_info::chain_break() const chain_break_type dssp::residue_info::chain_break() const
{ {
return m_impl->mChainBreak; return m_impl->mChainBreak;
} }
int DSSP::residue_info::nr() const int dssp::residue_info::nr() const
{ {
return m_impl->mNumber; return m_impl->mNumber;
} }
structure_type DSSP::residue_info::type() const structure_type dssp::residue_info::type() const
{ {
return m_impl->mSecondaryStructure; return m_impl->mSecondaryStructure;
} }
int DSSP::residue_info::ssBridgeNr() const int dssp::residue_info::ssBridgeNr() const
{ {
return m_impl->mSSBridgeNr; return m_impl->mSSBridgeNr;
} }
helix_position_type DSSP::residue_info::helix(helix_type helixType) const helix_position_type dssp::residue_info::helix(helix_type helixType) const
{ {
return m_impl->GetHelixFlag(helixType); return m_impl->GetHelixFlag(helixType);
} }
bool DSSP::residue_info::is_alpha_helix_end_before_start() const bool dssp::residue_info::is_alpha_helix_end_before_start() const
{ {
bool result = false; bool result = false;
...@@ -2024,17 +2021,17 @@ bool DSSP::residue_info::is_alpha_helix_end_before_start() const ...@@ -2024,17 +2021,17 @@ bool DSSP::residue_info::is_alpha_helix_end_before_start() const
return result; return result;
} }
bool DSSP::residue_info::bend() const bool dssp::residue_info::bend() const
{ {
return m_impl->IsBend(); return m_impl->IsBend();
} }
double DSSP::residue_info::accessibility() const double dssp::residue_info::accessibility() const
{ {
return m_impl->mAccessibility; return m_impl->mAccessibility;
} }
std::tuple<DSSP::residue_info, int, bool> DSSP::residue_info::bridge_partner(int i) const std::tuple<dssp::residue_info, int, bool> dssp::residue_info::bridge_partner(int i) const
{ {
auto bp = m_impl->GetBetaPartner(i); auto bp = m_impl->GetBetaPartner(i);
...@@ -2043,18 +2040,18 @@ std::tuple<DSSP::residue_info, int, bool> DSSP::residue_info::bridge_partner(int ...@@ -2043,18 +2040,18 @@ std::tuple<DSSP::residue_info, int, bool> DSSP::residue_info::bridge_partner(int
return std::make_tuple(std::move(ri), bp.ladder, bp.parallel); return std::make_tuple(std::move(ri), bp.ladder, bp.parallel);
} }
int DSSP::residue_info::sheet() const int dssp::residue_info::sheet() const
{ {
return m_impl->GetSheet(); return m_impl->GetSheet();
} }
std::tuple<DSSP::residue_info, double> DSSP::residue_info::acceptor(int i) const std::tuple<dssp::residue_info, double> dssp::residue_info::acceptor(int i) const
{ {
auto &a = m_impl->mHBondAcceptor[i]; auto &a = m_impl->mHBondAcceptor[i];
return { residue_info(a.res), a.energy }; return { residue_info(a.res), a.energy };
} }
std::tuple<DSSP::residue_info, double> DSSP::residue_info::donor(int i) const std::tuple<dssp::residue_info, double> dssp::residue_info::donor(int i) const
{ {
auto &d = m_impl->mHBondDonor[i]; auto &d = m_impl->mHBondDonor[i];
return { residue_info(d.res), d.energy }; return { residue_info(d.res), d.energy };
...@@ -2062,18 +2059,18 @@ std::tuple<DSSP::residue_info, double> DSSP::residue_info::donor(int i) const ...@@ -2062,18 +2059,18 @@ std::tuple<DSSP::residue_info, double> DSSP::residue_info::donor(int i) const
// -------------------------------------------------------------------- // --------------------------------------------------------------------
DSSP::iterator::iterator(residue *res) dssp::iterator::iterator(residue *res)
: m_current(res) : m_current(res)
{ {
} }
DSSP::iterator &DSSP::iterator::operator++() dssp::iterator &dssp::iterator::operator++()
{ {
++m_current.m_impl; ++m_current.m_impl;
return *this; return *this;
} }
DSSP::iterator &DSSP::iterator::operator--() dssp::iterator &dssp::iterator::operator--()
{ {
--m_current.m_impl; --m_current.m_impl;
return *this; return *this;
...@@ -2081,7 +2078,7 @@ DSSP::iterator &DSSP::iterator::operator--() ...@@ -2081,7 +2078,7 @@ DSSP::iterator &DSSP::iterator::operator--()
// -------------------------------------------------------------------- // --------------------------------------------------------------------
DSSP::DSSP(const cif::datablock &db, int model_nr, int min_poly_proline_stretch, bool calculateSurfaceAccessibility) dssp::dssp(const cif::datablock &db, int model_nr, int min_poly_proline_stretch, bool calculateSurfaceAccessibility)
: m_impl(new DSSP_impl(db, model_nr, min_poly_proline_stretch)) : m_impl(new DSSP_impl(db, model_nr, min_poly_proline_stretch))
{ {
if (calculateSurfaceAccessibility) if (calculateSurfaceAccessibility)
...@@ -2094,17 +2091,17 @@ DSSP::DSSP(const cif::datablock &db, int model_nr, int min_poly_proline_stretch, ...@@ -2094,17 +2091,17 @@ DSSP::DSSP(const cif::datablock &db, int model_nr, int min_poly_proline_stretch,
m_impl->calculateSecondaryStructure(); m_impl->calculateSecondaryStructure();
} }
DSSP::~DSSP() dssp::~dssp()
{ {
delete m_impl; delete m_impl;
} }
DSSP::iterator DSSP::begin() const dssp::iterator dssp::begin() const
{ {
return iterator(m_impl->mResidues.empty() ? nullptr : m_impl->mResidues.data()); return iterator(m_impl->mResidues.empty() ? nullptr : m_impl->mResidues.data());
} }
DSSP::iterator DSSP::end() const dssp::iterator dssp::end() const
{ {
// careful now, MSVC is picky when it comes to dereferencing iterators that are at the end. // careful now, MSVC is picky when it comes to dereferencing iterators that are at the end.
residue *res = nullptr; residue *res = nullptr;
...@@ -2117,7 +2114,7 @@ DSSP::iterator DSSP::end() const ...@@ -2117,7 +2114,7 @@ DSSP::iterator DSSP::end() const
return iterator(res); return iterator(res);
} }
DSSP::residue_info DSSP::operator[](const key_type &key) const dssp::residue_info dssp::operator[](const key_type &key) const
{ {
auto i = std::find_if(begin(), end(), auto i = std::find_if(begin(), end(),
[key](const residue_info &res) { return res.asym_id() == std::get<0>(key) and res.seq_id() == std::get<1>(key); }); [key](const residue_info &res) { return res.asym_id() == std::get<0>(key) and res.seq_id() == std::get<1>(key); });
...@@ -2128,12 +2125,12 @@ DSSP::residue_info DSSP::operator[](const key_type &key) const ...@@ -2128,12 +2125,12 @@ DSSP::residue_info DSSP::operator[](const key_type &key) const
return *i; return *i;
} }
statistics DSSP::get_statistics() const dssp::statistics dssp::get_statistics() const
{ {
return m_impl->mStats; return m_impl->mStats;
} }
std::string DSSP::get_pdb_header_line(pdb_record_type pdb_record) const std::string dssp::get_pdb_header_line(pdb_record_type pdb_record) const
{ {
switch (pdb_record) switch (pdb_record)
{ {
...@@ -2149,5 +2146,3 @@ std::string DSSP::get_pdb_header_line(pdb_record_type pdb_record) const ...@@ -2149,5 +2146,3 @@ std::string DSSP::get_pdb_header_line(pdb_record_type pdb_record) const
return {}; return {};
} }
} }
} // namespace dssp
...@@ -24,86 +24,87 @@ ...@@ -24,86 +24,87 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#pragma once
/// \file DSSP.hpp /// \file DSSP.hpp
/// Calculate DSSP-like secondary structure information. /// Calculate DSSP-like secondary structure information.
#pragma once #include <filesystem>
#include <cif++.hpp> #include <cif++.hpp>
namespace dssp class dssp
{ {
public:
struct residue;
struct residue; enum class structure_type : char
{
enum class structure_type : char Loop = ' ',
{ Alphahelix = 'H',
Loop = ' ', Betabridge = 'B',
Alphahelix = 'H', Strand = 'E',
Betabridge = 'B', Helix_3 = 'G',
Strand = 'E', Helix_5 = 'I',
Helix_3 = 'G', Helix_PPII = 'P',
Helix_5 = 'I', Turn = 'T',
Helix_PPII = 'P', Bend = 'S'
Turn = 'T', };
Bend = 'S'
};
enum class helix_type enum class helix_type
{ {
_3_10, _3_10,
alpha, alpha,
pi, pi,
pp pp
}; };
enum class helix_position_type enum class helix_position_type
{ {
None, None,
Start, Start,
End, End,
StartAndEnd, StartAndEnd,
Middle Middle
}; };
const size_t static constexpr size_t kHistogramSize = 30;
kHistogramSize = 30;
struct statistics struct statistics
{
struct
{ {
uint32_t residues, chains, SS_bridges, intra_chain_SS_bridges, H_bonds; struct
uint32_t H_bonds_in_antiparallel_bridges, H_bonds_in_parallel_bridges; {
uint32_t H_Bonds_per_distance[11]; uint32_t residues, chains, SS_bridges, intra_chain_SS_bridges, H_bonds;
} count; uint32_t H_bonds_in_antiparallel_bridges, H_bonds_in_parallel_bridges;
uint32_t H_Bonds_per_distance[11];
} count;
double accessible_surface;
double accessible_surface; struct
{
uint32_t residues_per_alpha_helix[kHistogramSize];
uint32_t parallel_bridges_per_ladder[kHistogramSize];
uint32_t antiparallel_bridges_per_ladder[kHistogramSize];
uint32_t ladders_per_sheet[kHistogramSize];
} histogram;
};
struct enum class chain_break_type
{ {
uint32_t residues_per_alpha_helix[kHistogramSize]; None,
uint32_t parallel_bridges_per_ladder[kHistogramSize]; NewChain,
uint32_t antiparallel_bridges_per_ladder[kHistogramSize]; Gap
uint32_t ladders_per_sheet[kHistogramSize]; };
} histogram;
};
enum class chain_break_type dssp(const std::filesystem::path &file, int model_nr, int min_poly_proline_stretch_length, bool calculateSurfaceAccessibility);
{ dssp(const cif::datablock &db, int model_nr, int min_poly_proline_stretch_length, bool calculateSurfaceAccessibility);
None, dssp(const cif::mm::structure &s, int min_poly_proline_stretch_length, bool calculateSurfaceAccessibility);
NewChain,
Gap
};
class DSSP ~dssp();
{
public:
DSSP(const cif::datablock &db, int model_nr, int min_poly_proline_stretch_length, bool calculateSurfaceAccessibility);
~DSSP();
DSSP(const DSSP &) = delete; dssp(const dssp &) = delete;
DSSP &operator=(const DSSP &) = delete; dssp &operator=(const dssp &) = delete;
statistics get_statistics() const; statistics get_statistics() const;
...@@ -126,7 +127,7 @@ class DSSP ...@@ -126,7 +127,7 @@ class DSSP
int seq_id() const; int seq_id() const;
std::string alt_id() const; std::string alt_id() const;
std::string compound_id() const; std::string compound_id() const;
char compound_letter() const; // Single letter for residue compound type, or 'X' in case it is not known char compound_letter() const; // Single letter for residue compound type, or 'X' in case it is not known
std::string auth_asym_id() const; std::string auth_asym_id() const;
int auth_seq_id() const; int auth_seq_id() const;
...@@ -237,7 +238,7 @@ class DSSP ...@@ -237,7 +238,7 @@ class DSSP
using value_type = residue_info; using value_type = residue_info;
// To access residue info by key, i.e. LabelAsymID and LabelSeqID // To access residue info by key, i.e. LabelAsymID and LabelSeqID
using key_type = std::tuple<std::string,int>; using key_type = std::tuple<std::string, int>;
iterator begin() const; iterator begin() const;
iterator end() const; iterator end() const;
...@@ -248,12 +249,17 @@ class DSSP ...@@ -248,12 +249,17 @@ class DSSP
// convenience method, when creating old style DSSP files // convenience method, when creating old style DSSP files
enum class pdb_record_type { HEADER, COMPND, SOURCE, AUTHOR }; enum class pdb_record_type
{
HEADER,
COMPND,
SOURCE,
AUTHOR
};
std::string get_pdb_header_line(pdb_record_type pdb_record) const; std::string get_pdb_header_line(pdb_record_type pdb_record) const;
private: private:
struct DSSP_impl *m_impl; struct DSSP_impl *m_impl;
}; };
} // namespace dssp
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment