I see now. I updated the code at the link in my previous email to provide
behavior which should allow you to do what you want. Here are your examples
written using the command:

select_with_filter sele, flag 8, lambda s: len(cmd.get_chains(s)) < 2
select_with_filter sele, flag 8, lambda s: cmd.get_fastastr(s) < 2
select_with_filter sele, flag 8 and chain A, lambda s: peplength(s) < 15

If you want to write and use your own multi-line function, you can write a
script and cmd.extend('your_function', your_function), then use
your_function in select_with_filter.

Please let me know if you have any further questions.

Best,
Cole

On Mon, Aug 5, 2019 at 8:30 AM Pedro Lacerda <pslace...@gmail.com> wrote:

> I expressed myself wrong, I'm looking something like:
>
>    select peplength < 15 and chain A
>
> Where peplength is an user defined function like:
>
> def peplength(atom):
>     return compute_peplength(atom)
>
> I'm looking for the availability of user defined functions on selection
> expressions. How to?
>
> Em sex, 2 de ago de 2019 às 15:44, Christian "Cole" French <
> christian.fre...@schrodinger.com> escreveu:
>
>> Edit: remove the cmd. part when running select_with_filter. (Since it's
>> a custom command, it doesn't belong to the cmd module.)
>>
>> On Fri, Aug 2, 2019 at 2:41 PM Christian "Cole" French <
>> christian.fre...@schrodinger.com> wrote:
>>
>>> Hi Pedro Lacerda,
>>>
>>> Here is a link to a script I wrote which adds a command which does what
>>> you ask:
>>> https://gist.github.com/ColeFrench/6f68fa5f04a67bb6234f10c25debb865. To
>>> use it, download the file to the directory where you run PyMOL from, then
>>> open PyMOL and run run select_with_filter.py.
>>>
>>> For your examples, the commands would be 
>>> cmd.select_with_filter(predicate=lambda
>>> s: len(cmd.get_chains(s)) < 2) and cmd.select_with_filter(predicate=lambda
>>> s: cmd.get_fastastr(s) < 2).
>>>
>>> Commands which can be simply run are a convenience which allows you to
>>> type less (e.g., select chain A instead of cmd.select('chain A')). Some
>>> commands require different arguments and can only be run the longer way,
>>> such as the one I wrote which takes a function as an argument.
>>>
>>> Hope this helps,
>>> Cole
>>>
>>> On Fri, Aug 2, 2019 at 11:45 AM Pedro Lacerda <pslace...@gmail.com>
>>> wrote:
>>>
>>>> Hi PyMOL users,
>>>>
>>>> It there any way to enhance the selecion algebra with functions? For
>>>> instance:
>>>>
>>>> select len(get_chains(*)) < 2
>>>>>
>>>>
>>>> Or even:
>>>>
>>>> select cmd.get_fastastr(*) < 2
>>>>>
>>>>
>>>>
>>>> By the way, why some commands we can simply run (like get_chains) and
>>>> others are different (like cmd.get_fastastr())?
>>>>
>>>> --
>>>> Pedro Sousa Lacerda
>>>>
>>>>
>>>> *Laboratório de Bioinformática e Modelagem Molecular*
>>>> *Faculdade de Farmácia / UFBA*
>>>>
>>>> *@pslacerda*
>>>>
>>>> *+55 71 9 9981-1856*
>>>> _______________________________________________
>>>> PyMOL-users mailing list
>>>> Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
>>>> Unsubscribe:
>>>> https://sourceforge.net/projects/pymol/lists/pymol-users/unsubscribe
>>>
>>>
>
> --
> Pedro Sousa Lacerda
>
>
> *Laboratório de Bioinformática e Modelagem Molecular*
> *Faculdade de Farmácia / UFBA*
>
> *@pslacerda*
>
> *+55 71 9 9981-1856*
>
_______________________________________________
PyMOL-users mailing list
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
Unsubscribe: 
https://sourceforge.net/projects/pymol/lists/pymol-users/unsubscribe

Reply via email to