[cctbxbb] model selection

Oleg Sobolev osobolev at lbl.gov
Thu Aug 16 16:01:19 PDT 2018


Hi Pavel,

Currently model class has three selection methods:
>
> def selection(self, selstr, optional=True):
>
Takes selection string, returns bool selection

def select(self, selection):
>
Takes selection (bool or iselection), applies it to self and returns
selected part of model object.

def iselection(self, selstr):
>
Same as first, but returns iselection.


which is hideously confusing with zero chance to remember, and also
> inconsistent with the rest.
>
Let me disagree on the point of inconsistency with the rest.
selection and iselection functions are available with exactly same meaning
for atom_selection_cache.
select is available with exact same meaning (returning part of an object)
in hierarchy, af_shared_atom, flex.vec3_double, xray_structure etc which
you pointed out.


> Can we consolidate all three into one ".select()" that would allow taking
> bool or int or str?
>
No, because they are doing different things. Selection and iselection wraps
atom_selection_cache functionality and not duplicating those of select()
function. ".select()" function already has the described functionality.


> Or you think there are philosophical arguments against it?
>
Yes, and practical ones as well. I'm caching atom_selection_cache inside
model object, so you don't have to construct it again if you use wrappers
available in model class. hierarchy.atom_selection_cache() is not a free
function to the point I had to pass the cache around to avoid constructing
it again to achieve measurable speedup. Especially for larger models.

At the very least, please use model.get_atom_selection_cache() instead of
constructing it.

Best regards,
Oleg Sobolev.


>
> Pavel
>
> On 8/16/18 15:00, CCTBX commit wrote:
>
> Repository : ssh://g18-sc-serv-04.diamond.ac.uk/cctbx
> On branch  : master
>
> ------------------------------
>
>
> commit c98b44997e8eb7bf53ee828f510b933cd5167758
> Author: Oleg Sobolev <osobolev at lbl.gov> <osobolev at lbl.gov>
> Date:   Thu Aug 16 15:00:20 2018 -0700
>
>     Proper use of model class
>
>
> ------------------------------
>
>
> c98b44997e8eb7bf53ee828f510b933cd5167758
> mmtbx/model/model.py | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/mmtbx/model/model.py b/mmtbx/model/model.py
> index 6f2247452..87412f95c 100644
> --- a/mmtbx/model/model.py
> +++ b/mmtbx/model/model.py
> @@ -2312,8 +2312,7 @@ class manager(object):
>      sizes = flex.int()
>      h = self.get_hierarchy()
>      if(macro_molecule_only):
> -      asc = h.atom_selection_cache()
> -      s = asc.selection("protein or nucleotide")
> +      s = self.selection("protein or nucleotide")
>        h = h.select(s)
>      for r in h.residue_groups():
>        sizes.append(r.atoms().size())
>
>
>
> _______________________________________________
> cctbxbb mailing list
> cctbxbb at phenix-online.org
> http://phenix-online.org/mailman/listinfo/cctbxbb
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://phenix-online.org/pipermail/cctbxbb/attachments/20180816/a79e3e0b/attachment.htm>


More information about the cctbxbb mailing list