From 949c8e2090ca1095aa77c183617bbfc65933c8cb Mon Sep 17 00:00:00 2001 From: Marco Biasini <marco.biasini@unibas.ch> Date: Mon, 3 Jan 2011 16:00:46 +0100 Subject: [PATCH] forward GetCAlphaCBetaPos --- modules/qa/src/impl/reduced_impl.cc | 57 +++++++++++++++-------------- modules/qa/src/impl/reduced_impl.hh | 5 ++- modules/qa/src/reduced_potential.cc | 7 ++++ modules/qa/src/reduced_potential.hh | 5 +++ 4 files changed, 44 insertions(+), 30 deletions(-) diff --git a/modules/qa/src/impl/reduced_impl.cc b/modules/qa/src/impl/reduced_impl.cc index 0efa531b3..8994fada4 100644 --- a/modules/qa/src/impl/reduced_impl.cc +++ b/modules/qa/src/impl/reduced_impl.cc @@ -58,34 +58,35 @@ bool ReducedPotentialImpl::VisitResidue(const mol::ResidueHandle& res) bool ReducedPotentialImpl::GetCAlphaCBetaPos(const mol::ResidueHandle& res, geom::Vec3& ca_pos, geom::Vec3& cb_pos) - { - const static Real bond_length=1.5; - mol::AtomHandle ca=res.FindAtom("CA"); - if (!ca.IsValid()) { - return false; - } - ca_pos=ca.GetPos(); - mol::AtomHandle cb=res.FindAtom("CB"); - if (cb.IsValid()) { - cb_pos=cb.GetPos(); - return true; - } - mol::AtomHandle n=res.FindAtom("N"); - mol::AtomHandle c=res.FindAtom("C"); - if (!(ca.IsValid() && c.IsValid() && n.IsValid())) { - LOG_WARNING("residue " << res.GetQualifiedName() - << " doesn't have enough atoms to reconstruct Cbeta position"); - return false; - } - geom::Vec3 v1=geom::Normalize(ca.GetPos()-n.GetPos()); - geom::Vec3 v2=geom::Normalize(ca.GetPos()-c.GetPos()); - geom::Vec3 in_plane_v=geom::Normalize(v1+v2); - geom::Plane p(ca.GetPos() ,n.GetPos(), c.GetPos()); - // rotate around vector perpendicular to p and in_plane_v - geom::Vec3 axis=geom::Normalize(geom::Cross(p.GetNormal(), in_plane_v)); - geom::Mat3 rot_mat=geom::AxisRotation(axis, (-54/180.0)*M_PI); - cb_pos=ca.GetPos()+rot_mat*in_plane_v*bond_length; +{ + const static Real bond_length=1.5; + mol::AtomHandle ca=res.FindAtom("CA"); + if (!ca.IsValid()) { + return false; + } + ca_pos=ca.GetPos(); + mol::AtomHandle cb=res.FindAtom("CB"); + if (cb.IsValid()) { + cb_pos=cb.GetPos(); return true; - } + } + mol::AtomHandle n=res.FindAtom("N"); + mol::AtomHandle c=res.FindAtom("C"); + if (!(ca.IsValid() && c.IsValid() && n.IsValid())) { + LOG_WARNING("residue " << res.GetQualifiedName() + << " doesn't have enough atoms to reconstruct Cbeta position"); + return false; + } + geom::Vec3 v1=geom::Normalize(ca.GetPos()-n.GetPos()); + geom::Vec3 v2=geom::Normalize(ca.GetPos()-c.GetPos()); + geom::Vec3 in_plane_v=geom::Normalize(v1+v2); + geom::Plane p(ca.GetPos() ,n.GetPos(), c.GetPos()); + // rotate around vector perpendicular to p and in_plane_v + geom::Vec3 axis=geom::Normalize(geom::Cross(p.GetNormal(), in_plane_v)); + geom::Mat3 rot_mat=geom::AxisRotation(axis, (-54/180.0)*M_PI); + cb_pos=ca.GetPos()+rot_mat*in_plane_v*bond_length; + return true; +} + }}} diff --git a/modules/qa/src/impl/reduced_impl.hh b/modules/qa/src/impl/reduced_impl.hh index e10ef2c38..98651360b 100644 --- a/modules/qa/src/impl/reduced_impl.hh +++ b/modules/qa/src/impl/reduced_impl.hh @@ -38,8 +38,9 @@ public: virtual bool VisitResidue(const mol::ResidueHandle& res); - bool GetCAlphaCBetaPos(const mol::ResidueHandle& res, geom::Vec3& ca_pos, - geom::Vec3& cb_pos); + static bool GetCAlphaCBetaPos(const mol::ResidueHandle& res, + geom::Vec3& ca_pos, + geom::Vec3& cb_pos); virtual void OnInteraction(AminoAcid aa_one, AminoAcid aa_two, Real dist, Real angle)=0; diff --git a/modules/qa/src/reduced_potential.cc b/modules/qa/src/reduced_potential.cc index e2bbc2bbd..78df5c902 100644 --- a/modules/qa/src/reduced_potential.cc +++ b/modules/qa/src/reduced_potential.cc @@ -61,6 +61,13 @@ private: } +bool ReducedPotential::GetCAlphaCBetaPos(const mol::ResidueHandle& res, + geom::Vec3& ca_pos, + geom::Vec3& cb_pos) +{ + return impl::ReducedPotentialImpl::GetCAlphaCBetaPos(res, ca_pos, cb_pos); +} + ReducedPotentialPtr ReducedPotential::Load(const String& filename) { std::ifstream stream(filename.c_str(), std::ios_base::binary); diff --git a/modules/qa/src/reduced_potential.hh b/modules/qa/src/reduced_potential.hh index a85698ffe..534892678 100644 --- a/modules/qa/src/reduced_potential.hh +++ b/modules/qa/src/reduced_potential.hh @@ -49,6 +49,11 @@ public: Real GetTotalEnergy(ost::mol::EntityHandle ent, bool normalize=true); + + static bool GetCAlphaCBetaPos(const mol::ResidueHandle& res, + geom::Vec3& ca_pos, + geom::Vec3& cb_pos); + Real GetEnergy(AminoAcid aa_one, AminoAcid aa_two, Real ca_dist, Real angle) const { -- GitLab