From 8d4fbec920577a6943961ece2889a34c3cfc1d71 Mon Sep 17 00:00:00 2001 From: Niklaus Johner <nij2003@med.cornell.edu> Date: Fri, 31 May 2013 13:30:41 -0400 Subject: [PATCH] Added stride to CoordGroup::Filter --- modules/mol/base/pymod/export_coord_group.cc | 2 +- modules/mol/base/src/coord_group.cc | 5 +++-- modules/mol/base/src/coord_group.hh | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/mol/base/pymod/export_coord_group.cc b/modules/mol/base/pymod/export_coord_group.cc index a445e74c0..790337cb1 100644 --- a/modules/mol/base/pymod/export_coord_group.cc +++ b/modules/mol/base/pymod/export_coord_group.cc @@ -75,7 +75,7 @@ void export_CoordGroup() .add_property("start_time",&CoordGroupHandle::GetStartTime,&CoordGroupHandle::SetStartTime) .def("__getitem__",cg_getitem) .def("__setitem__",cg_setitem) - .def("Filter", &CoordGroupHandle::Filter, (arg("selected"),arg("first")=0,arg("last")=-1)) + .def("Filter", &CoordGroupHandle::Filter, (arg("selected"),arg("first")=0,arg("last")=-1,arg("stride")=1)) ; def("CreateCoordGroup",CreateCoordGroup); diff --git a/modules/mol/base/src/coord_group.cc b/modules/mol/base/src/coord_group.cc index d02eecc27..1edd38b45 100644 --- a/modules/mol/base/src/coord_group.cc +++ b/modules/mol/base/src/coord_group.cc @@ -220,7 +220,7 @@ void CoordGroupHandle::Capture(uint frame) } } -CoordGroupHandle CoordGroupHandle::Filter(const EntityView& selected, int first, int last) const +CoordGroupHandle CoordGroupHandle::Filter(const EntityView& selected, int first, int last, int stride) const { this->CheckValidity(); std::vector<unsigned long> indices; @@ -248,7 +248,8 @@ CoordGroupHandle CoordGroupHandle::Filter(const EntityView& selected, int first, CoordGroupHandle filtered_cg=CreateCoordGroup(new_ent.GetAtomList()); std::vector<geom::Vec3> vecs(indices.size()); if (last==-1) last=this->GetFrameCount(); - for (int i=first; i<last; ++i) { + if (stride<=0) stride=1; + for (int i=first; i<last; i=i+stride) { LOG_INFO("Filtering frame " << i << "/" << last); CoordFramePtr frame=this->GetFrame(i); for (std::vector<unsigned long>::const_iterator diff --git a/modules/mol/base/src/coord_group.hh b/modules/mol/base/src/coord_group.hh index 623f745ef..c9ea57e4e 100644 --- a/modules/mol/base/src/coord_group.hh +++ b/modules/mol/base/src/coord_group.hh @@ -109,7 +109,7 @@ public: /// \brief return a filtered coord group, containing only the atoms in the /// view - CoordGroupHandle Filter(const EntityView& selected,int first=0,int last=-1) const; + CoordGroupHandle Filter(const EntityView& selected,int first=0,int last=-1,int stride=1) const; /// \brief apply in-place transform to each coordinate in each frame void ApplyTransform(const geom::Transform& tf); -- GitLab