Commit 2a2172a9 by maarten

edia fix, missing code from check-in

git-svn-id: svn+ssh://gitlab/srv/svn-repos/pdb-redo/trunk@264 a1961a4f-ab94-4bcc-80e8-33b5a54de466
parent 065ba540
...@@ -17,10 +17,17 @@ class BondMap ...@@ -17,10 +17,17 @@ class BondMap
BondMap(const BondMap&) = delete; BondMap(const BondMap&) = delete;
BondMap& operator=(const BondMap&) = delete; BondMap& operator=(const BondMap&) = delete;
bool operator()(const Atom& a, const Atom& b) const; bool operator()(const Atom& a, const Atom& b) const
{
return isBonded(index.at(a.id()), index.at(b.id()));
}
bool is1_4(const Atom& a, const Atom& b) const;
private: private:
bool isBonded(size_t ai, size_t bi) const;
size_t dim; size_t dim;
std::vector<bool> bond; std::vector<bool> bond;
std::unordered_map<std::string,size_t> index; std::unordered_map<std::string,size_t> index;
......
...@@ -133,6 +133,10 @@ class Atom ...@@ -133,6 +133,10 @@ class Atom
void calculateRadius(float resHigh, float resLow, float perc); void calculateRadius(float resHigh, float resLow, float perc);
float radius() const; float radius() const;
// the energy-type field
std::string energyType() const;
private: private:
struct AtomImpl* mImpl; struct AtomImpl* mImpl;
}; };
......
...@@ -199,7 +199,32 @@ BondMap::BondMap(const Structure& p) ...@@ -199,7 +199,32 @@ BondMap::BondMap(const Structure& p)
} }
} }
bool BondMap::operator()(const Atom& a, const Atom& b) const //bool BondMap::operator()(const Atom& a, const Atom& b) const
//{
// size_t ixa = index.at(a.id());
// size_t ixb = index.at(b.id());
//
// if (ixb < ixa)
// swap(ixa, ixb);
//
// size_t ix = ixb + ixa * dim - ixa * (ixa + 1) / 2;
//
// assert(ix < bond.size());
// return bond[ix];
//}
bool BondMap::isBonded(size_t ixa, size_t ixb) const
{
if (ixa > ixb)
swap(ixa, ixb);
size_t ix = ixb + ixa * dim - ixa * (ixa + 1) / 2;
assert(ix < bond.size());
return bond[ix];
}
bool BondMap::is1_4(const Atom& a, const Atom& b) const
{ {
size_t ixa = index.at(a.id()); size_t ixa = index.at(a.id());
size_t ixb = index.at(b.id()); size_t ixb = index.at(b.id());
...@@ -207,10 +232,23 @@ bool BondMap::operator()(const Atom& a, const Atom& b) const ...@@ -207,10 +232,23 @@ bool BondMap::operator()(const Atom& a, const Atom& b) const
if (ixb < ixa) if (ixb < ixa)
swap(ixa, ixb); swap(ixa, ixb);
size_t ix = ixb + ixa * dim - ixa * (ixa + 1) / 2; bool result = false;
assert(ix < bond.size()); for (size_t ia = 0; result == false and ia + 1 < dim; ++ia)
return bond[ix]; {
if (ia == ixa or ia == ixb)
continue;
for (size_t ib = ia + 1; result == false and ib < dim; ++ib)
{
if (ib == ixa or ib == ixb)
continue;
result = isBonded(ixa, ia) and isBonded(ia, ib) and isBonded(ib, ixb);
}
}
return result;
} }
} }
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