Tsjerk, 你好 (ni hao)
Thank you for your reply. Nice work! So cute codes. I like it.

But when the selection by "id %s"%",".join([str(i) for i in ids]) too long,
it returns "Segmentation fault" error,and quit. Is it a bug?

I use pymol 1.2r2 under Debian Sid.

The error it returns:

PyMOL>run mathexpr.py
Selector-Error: Word too long. Truncated:
Selector-Error: 17,19,.....(long list,about 400 numbers)
Segmentation fault


On Mon, Dec 13, 2010 at 6:00 PM, Tsjerk Wassenaar <tsje...@gmail.com> wrote:

> Ni Hao Cun Zhang
>
> The real 'problem' is that Pymol does not allow selection based on
> coordinates. Probably this should be on the wish list (and easy to
> implement). Expressions are allowed, for instance selecting based on
> b-factor or occupancy.
>
> In your script, you can use some shortcuts. Maybe something like:
>
> def cselect(selection="all",expression=lambda (x,y,z): True):
>    return [i.id for i in cmd.get_model(selection).atom if
> expression(i.coord)]
>
> The expression can be a predefined function, or a lambda function,
> like here. You could then say:
>
> ids = cselect("n. ca",lambda (x,y,z): x<10 and y>5)
> cmd.show("spheres","id %s"%",".join([str(i) for i in ids]))
>
> Hope it helps :)
>
> Cheers,
>
> Tsjerk
>
>
>
> On Mon, Dec 13, 2010 at 9:44 AM, Cun Zhang <apzc2...@gmail.com> wrote:
> > Hi,all
> >
> > I haven't found any pymol script supports using math expression to select
> > atoms,
> > so I spend several hours to write one function to do it.
> >
> > I write a script(mathexpr.py) containing this function, then run
> > mathexpr.py,
> > function 'Select' now can be called. Can anybody tell me how to combine
> this
> > function into pymol,
> > or 'select' command,  so it can be called like 'select x>5'.
> > Hope it useful for you.
> >
> > Thank you!
> >
> > Yours,
> > Cun Zhang
> >
> >
> > def Select(expr='x>5',sel='all'):
> >    """
> >   A function which supports selection by math expressions.
> >    example:
> >          x=Select('x>5 and y<2','name C')
> >    """
> >     ATOMS=cmd.get_model(sel)
> >     vec,index=ATOMS.get_coord_list(),cmd.identify(sel)
> >     command='[index[vec.index([x,y,z])] for x,y,z in vec if '+expr+']'
> >     ID=eval(command) #list type
> >     return ID
> >
> > --
> > ========================================
> > Cun Zhang
> > Ph.D. Candidate
> > LNM,Institute of Mechanics
> > Chinese Academy of Sciences
> > Beijing, 100190, China
> > Tel:86-10-82544204
> > http://www.edwardpku.com/cun
> > ========================================
> >
> >
> ------------------------------------------------------------------------------
> > Oracle to DB2 Conversion Guide: Learn learn about native support for
> PL/SQL,
> > new data types, scalar functions, improved concurrency, built-in
> packages,
> > OCI, SQL*Plus, data movement tools, best practices and more.
> > http://p.sf.net/sfu/oracle-sfdev2dev
> > _______________________________________________
> > PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net)
> > Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
> > Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net
> >
>
>
>
> --
> Tsjerk A. Wassenaar, Ph.D.
>
> post-doctoral researcher
> Molecular Dynamics Group
> * Groningen Institute for Biomolecular Research and Biotechnology
> * Zernike Institute for Advanced Materials
> University of Groningen
> The Netherlands
>



-- 
========================================
Cun Zhang
Ph.D. Candidate
LNM,Institute of Mechanics
Chinese Academy of Sciences
Beijing, 100190, China
Tel:86-10-82544204
http://www.edwardpku.com/cun
========================================
------------------------------------------------------------------------------
Oracle to DB2 Conversion Guide: Learn learn about native support for PL/SQL,
new data types, scalar functions, improved concurrency, built-in packages, 
OCI, SQL*Plus, data movement tools, best practices and more.
http://p.sf.net/sfu/oracle-sfdev2dev 
_______________________________________________
PyMOL-users mailing list (PyMOL-users@lists.sourceforge.net)
Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users
Archives: http://www.mail-archive.com/pymol-users@lists.sourceforge.net

Reply via email to