Thank you. I made a few mistakes in my code. I wasn't paying attention
to the commented code because I was only trying stuff there. I still
get:

1) a bunch of 3 kb black png's
2) I still have no idea what the command cmd.get_pdbstr do
3) can you give me a line using iterate to get the residue names and numbers?


import __main__
__main__.pymol_argv = ['pymol','-qc']
import pymol
from pymol import cmd, stored, util

pymol.finish_launching()

residues = {'3s4m.pdb': {'102': 'THR',
  '143': 'TYR',
  '158': 'SER',
  '166': 'TYR',
  '173': 'TRP',
  '181': 'SER',
  '183': 'HIS',
  '206': 'SER',
  '95': 'TYR'}}

for name, data in residues.items():
    for resnumber, resname in data.items():
        cmd.delete('all')
        bare_name = name.split('.')[0]
        cmd.load(name, bare_name)
        cmd.select('%s_%s%s' % (bare_name, resname, resnumber), 'byres
resn %s around 10' % resnumber)
        cmd.dist('mysele_polar_conts','%s_%s%s' % (bare_name, resname,
resnumber),'all within 5 of %s_%s%s' % (bare_name, resname,
resnumber), quiet=1,mode=2,label=0,reset=1)
        cmd.show_as('sticks', '%s_%s%s' % (bare_name, resname, resnumber))
        util.cnc('%s_%s%s' % (bare_name, resname, resnumber))
        cmd.hide('everything', 'all and not %s_%s%s' % (bare_name,
resname, resnumber))
        cmd.zoom('%s_%s%s' % (bare_name, resname, resnumber), 5)
        cmd.png('%s_%s%s.png' % (bare_name, resname, resnumber), ray=1)



On Tue, May 2, 2017 at 7:14 AM, Jared Sampson
<jared.samp...@columbia.edu> wrote:
> Hi Ahmad - Please see below for some suggestions on getting your script to
> do what I understand you would like to do.
>
> Cheers,
> Jared
>
>
> On May 1, 2017, at 4:54 PM, Ahmad Abdelzaher <underoath...@gmail.com> wrote:
>
> OK I finally tried some of Jared suggestions, I'm not sure why
> util.cnc doesn't work I get "NameError: name 'util' is not defined",
>
>
> You will need to import the `util` namespace.  Try changing the pymol
> submodule import line to:
>
>     from pymol import cmd, stored, util
>
> Again, I want to color by element, second option from the gui. Also
> the script outputs black screenshots, nothing is there, so there is a
> bug somewhere! I attached the script and pdb below. I would appreciate
> your help.
>
> import __main__
> __main__.pymol_argv = ['pymol','-qc']
> import pymol
> from pymol import cmd, stored
>
> pymol.finish_launching()
>
> residues = {'3s4m.pdb': {'102': 'THR',
>  '143': 'TYR',
>  '158': 'SER',
>  '166': 'TYR',
>  '173': 'TRP',
>  '181': 'SER',
>  '183': 'HIS',
>  '206': 'SER',
>  '95': 'TYR'}}
>
> for name, data in residues.items():
>    for resnumber, resname in data.items():
>        cmd.delete('all')
>        cmd.load(name, name)
>
>
> The load command here gives you an object called "3s4m.pdb" but you later
> try to use a selection called only "3s4m" (`bare_name`).  If you leave the
> second argument off from cmd.load(), the .pdb extension will be stripped
> automatically.  Alternatively, you could assign `bare_name` first and give
> that as the 2nd argument:
>
>     bare_name = name.split('.')[0]
>     cmd.load(name, bare_name)
>
>
>        bare_name = name.split('.')[0]
>        cmd.select('%s_%s%s' % (bare_name, resname, resnumber), 'byres
> resn %s around 3' % resnumber)
>        #selee = cmd.get_pdbstr('%s' % name.split('.')[0])
>
>
> Since you've already assigned a variable for this, you can (and should!) use
> `bare_name` instead of `name.split('.')[0]` wherever it occurs.  Also, you
> don't need to do "%"-style string formatting if your variable is a string
> and comprises the entire argument string.  Simply
> `cmd.get_pdbstr(bare_name)`, for example, will work just fine.
>
>        #print(selee)
>        cmd.dist('mysele_polar_conts','%s_%s%s' % (bare_name, resname,
> resnumber),'all within 5 of %s_%s%s' % (name.split('.')[0], resname,
> resnumber), quiet=1,mode=2,label=0,reset=1)
>        cmd.show_as('sticks', '%s_%s%s' % (bare_name, resname, resnumber))
>        #util.cnc('%s' % name.split('.')[0])
>        cmd.hide('everything', 'all and not %s_%s%s' % (bare_name,
> resname, resnumber))
>        cmd.zoom('%s_%s%s' % (bare_name, resname, resnumber), 5)
>        cmd.png('%s_%s%s.png' % (bare_name, resname, resnumber), ray=1)
>
>
> Also, to get information about residues in your selection as you asked in
> your later message, have a look at cmd.iterate().
> https://pymolwiki.org/index.php/Iterate
>
>
> Hope that helps.
>
> Cheers,
> Jared
>
>
> On Sat, Apr 29, 2017 at 3:34 PM, Ahmad Abdelzaher
> <underoath...@gmail.com> wrote:
>
> Thanks Jared. A lot of fantastic tips there. Much appreciated.
>
> Regards.
>
> On Sat, Apr 29, 2017 at 6:03 AM, Jared Sampson
> <jared.samp...@columbia.edu> wrote:
>
> Hi Ahmad -
>
> Here are a few suggestions:
>
> I'm still a bit new to the API so I'm not sure which commands to use.
> At least I know I will start with cmd.select(string name, string
> selection).
>
> How can I tell Pymol to:
>
> 1) look within a certain radius distance, and return resi's within
> that distacne.
>
>
>    cmd.select('mysele', 'byres all within 5 of sele')
>
> See https://pymolwiki.org/index.php/Selection_Algebra for more handy
> operators (`beyond`, `around`, `expand`, etc.)
>
>
> 2) find all polar interactions within a distance,
>
>
> You can use cmd.distance (https://pymolwiki.org/index.php/Distance), e.g.
> (as done in the GUI by [A] > find > polar contacts...)
>
>    cmd.dist("mysele_polar_conts","mysele","all within 5 of
> mysele",quiet=1,mode=2,label=0,reset=1)
>
> or for a list of atoms, check out https://pymolwiki.org/index.php/Polarpairs
>
>
> use sticks,
>
>
>    cmd.show('sticks', 'mysele')
>
> or to hide all other representations,
>
>    cmd.show_as('sticks', 'mysele')
>
>
> color by atom
>
>
>    util.cnc('mysele')
>
> I use this one all the time ("cnc" == color non-carbon).  There is also
> `util.cbc` == color by chain.
>
>
> hide everything else
>
>
>    cmd.hide('everything', 'all and not mysele')
>
>
> and output an image of the selections and interactions around it.
>
>
>    cmd.zoom('mysele', 5)
>    cmd.png('mysele.png', ray=1)
>
>
> Please feel free to throw in any useful commands that can you might think is
> helpful.
>
>
> One useful trick to learn new commands is to open a log file (via `log_open
> log.pml` or the File menu) and then perform the desired action in the GUI.
> The log file will show the API commands that are called from the GUI.  It
> doesn't work for everything (e.g. wizards), but for most basic actions, it
> should be helpful.  At least it will give you the right command to look up
> on the PyMOL wiki!
>
> Hope that helps.
>
> Cheers,
> Jared
>
>
> Your help is greatly appreciated.
>
> Regards.
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> 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
>
>
> <3s4m.pdb><pymol_png_test.py>
>
>

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
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