diff --git a/modules/mol/base/pymod/export_residue.cc b/modules/mol/base/pymod/export_residue.cc index d0915dcd719b02502ba2158cac951fb91acea277..fad1a74bd18ee5713c4e58b55fb57ad70ad27511 100644 --- a/modules/mol/base/pymod/export_residue.cc +++ b/modules/mol/base/pymod/export_residue.cc @@ -37,6 +37,16 @@ namespace { return String(1, char(s)); } + boost::python::list get_alt_group_names(const ost::mol::ResidueHandle& res) { + std::vector<String> v_alt_group_names = res.GetAltAtomGroupNames(); + boost::python::list alt_group_names; + for(std::vector<String>::iterator it = v_alt_group_names.begin(); + it != v_alt_group_names.end(); ++it) { + alt_group_names.append(*it); + } + return alt_group_names; + } + typedef EntityView (ResidueHandle::*QueryMethod)(const Query&, uint) const; typedef EntityView (ResidueHandle::*StringMethod)(const String&, uint) const; QueryMethod select_query=&ResidueHandle::Select; @@ -239,6 +249,7 @@ void export_Residue() .def("GetHandle", &ResidueHandle::GetHandle) .add_property("handle", &ResidueHandle::GetHandle) .def("HasAltAtomGroup", &ResidueHandle::HasAltAtomGroup) + .def("GetAltAtomGroupNames", &get_alt_group_names) .def("GetCurrentAltGroupName", &ResidueHandle::GetCurrentAltGroupName, return_value_policy<copy_const_reference>()) .def("SwitchAtomPos", &ResidueHandle::SwitchAtomPos) diff --git a/modules/mol/base/src/impl/entity_impl.cc b/modules/mol/base/src/impl/entity_impl.cc index 410c41715933d006f865e1803a73077177702657..90ef2ad75d3411d5ba105f97d5756ebce1031910 100644 --- a/modules/mol/base/src/impl/entity_impl.cc +++ b/modules/mol/base/src/impl/entity_impl.cc @@ -816,8 +816,9 @@ TorsionImplP EntityImpl::FindTorsion(const AtomImplPtr& a1, return TorsionImplP(); } -AtomImplList EntityImpl::FindWithin(const geom::Vec3& pos, Real radius) const +AtomImplList EntityImpl::FindWithin(const geom::Vec3& pos, Real radius) { + this->UpdateOrganizerIfNeeded(); SpatialAtomOrganizer::ItemList alist = atom_organizer_.FindWithin(pos,radius); return alist; } diff --git a/modules/mol/base/src/impl/entity_impl.hh b/modules/mol/base/src/impl/entity_impl.hh index 5033bd55e806f4cb21331649a663ac36ef28fe7f..7a1e3a30309371f1a921fa6ba598f618335b9e62 100644 --- a/modules/mol/base/src/impl/entity_impl.hh +++ b/modules/mol/base/src/impl/entity_impl.hh @@ -160,7 +160,7 @@ public: void UpdateOrganizer(); - AtomImplList FindWithin(const geom::Vec3& pos, Real radius) const; + AtomImplList FindWithin(const geom::Vec3& pos, Real radius); // use query flag defaults EntityView Select(const EntityHandle& h, const Query& q) const; // override query flag defaults with given flags diff --git a/modules/mol/base/src/impl/residue_impl.cc b/modules/mol/base/src/impl/residue_impl.cc index 014f4069f5cae65e808d25151db5cee4ef10f213..3cf6591964f0a254d593853e7772c6639b4ed25a 100644 --- a/modules/mol/base/src/impl/residue_impl.cc +++ b/modules/mol/base/src/impl/residue_impl.cc @@ -648,6 +648,7 @@ bool ResidueImpl::SwitchAtomPos(const String& group) { entry.atom.lock()->SetOccupancy(j->occ); } curr_group_=group; + this->GetEntity()->MarkOrganizerDirty(); return true; }