From 9c096d85be8edee700cd06037886bde73045cfe5 Mon Sep 17 00:00:00 2001 From: Marco Biasini <marco.biasini@unibas.ch> Date: Wed, 20 Oct 2010 17:35:59 +0200 Subject: [PATCH] treat Deuterium like hydrogens --- modules/conop/src/rule_based_builder.cc | 12 +++++++----- modules/mol/base/src/impl/atom_prop.cc | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/conop/src/rule_based_builder.cc b/modules/conop/src/rule_based_builder.cc index f8617c89d..bd7b5cfca 100644 --- a/modules/conop/src/rule_based_builder.cc +++ b/modules/conop/src/rule_based_builder.cc @@ -49,7 +49,7 @@ void RuleBasedBuilder::CheckResidueCompleteness(const mol::ResidueHandle& rh) mol::AtomHandleList atoms=rh.GetAtomList(); mol::AtomHandleList::iterator i=atoms.begin(); for (; j!=last_compound_->GetAtomSpecs().end() && i!=atoms.end(); ++j) { - if ((*j).is_leaving || (*j).element=="H") + if ((*j).is_leaving || (*j).element=="H" || (*j).element=="D") continue; if ((*j).ordinal!=static_cast<int>((*i).Impl()->GetState())) { this->OnMissingAtom(rh, (*j).name); @@ -72,7 +72,8 @@ bool RuleBasedBuilder::HasUnknownAtoms(mol::ResidueHandle res) for (mol::AtomHandleList::iterator i=atoms.begin(), e=atoms.end(); i!=e; ++i) { if ((*i).Impl()->GetState()==std::numeric_limits<unsigned int>::max()) { - if ((*i).GetElement()=="H" && this->GetStrictHydrogenMode()==false) { + if (((*i).GetElement()=="H" || (*i).GetElement()=="D") && + this->GetStrictHydrogenMode()==false) { continue; } return true; @@ -210,14 +211,15 @@ void RuleBasedBuilder::ConnectAtomsOfResidue(mol::ResidueHandle rh) mol::AtomHandle a2=this->LocateAtom(atoms, bond.atom_two); if (a1.IsValid() && a2.IsValid() && this->IsBondFeasible(a1, a2)) { if (this->GetStrictHydrogenMode() && - (a1.GetElement()=="H" || a2.GetElement()=="H")) { + (a1.GetElement()=="H" || a2.GetElement()=="D")) { continue; } e.Connect(a1, a2, bond.order); } } for (mol::AtomHandleList::iterator i=atoms.begin(), e=atoms.end(); i!=e; ++i) { - if ((*i).GetElement()=="H" && (*i).GetBondCount()==0) { + if (((*i).GetElement()=="H" || (*i).GetElement()=="D") && + (*i).GetBondCount()==0) { this->DistanceBasedConnect(*i); } } @@ -293,7 +295,7 @@ bool RuleBasedBuilder::IsResidueComplete(const mol::ResidueHandle& residue) mol::AtomHandleList::iterator i=atoms.begin(); for (AtomSpecList::const_iterator j=last_compound_->GetAtomSpecs().begin(), e=last_compound_->GetAtomSpecs().end(); j!=e; ++j) { - if ((*j).is_leaving || (*j).element=="H") { + if ((*j).is_leaving || (*j).element=="H" || (*j).element=="D") { continue; } if (!(residue.FindAtom(j->name) || residue.FindAtom(j->alt_name))) { diff --git a/modules/mol/base/src/impl/atom_prop.cc b/modules/mol/base/src/impl/atom_prop.cc index 587fce2ac..aefb8d219 100644 --- a/modules/mol/base/src/impl/atom_prop.cc +++ b/modules/mol/base/src/impl/atom_prop.cc @@ -50,6 +50,7 @@ void AtomProp::Init() defaults_["CO"]=AtomProp(2.0000, 58.9330); defaults_["CR"]=AtomProp(2.0000, 51.9960); defaults_["CS"]=AtomProp(2.0000, 132.9050); + defaults_["D"]=AtomProp(1.0900, 2.0141); defaults_["CU"]=AtomProp(1.4000, 63.5460); defaults_["DB"]=AtomProp(2.0000, 262.0000); defaults_["DS"]=AtomProp(2.0000, 271.0000); -- GitLab