Hi Chandan - Back in the lab today.  I took a look at the code I sent and 
realized that one can’t simply pass a tuple to cmd.color(), as it only accepts 
named colors, so you have to use cmd.set_color().

So here (below) is a modified, fleshed-out version of what I sent yesterday, 
with the protein components of the T. thermophilus ribosome asymmetric unit 
(110 chains) as an example.  For a larger number of colors, you would simply 
have to increase the ranges for i, j, and k in the loop that creates the RGB 
tuples.

Some of the colors turn out to be fairly similar (e.g. those differing by only 
one RGB component), so also maybe check out, e.g., this SO question and its 
answers for alternative approaches: 
http://stackoverflow.com/questions/470690/how-to-automatically-generate-n-distinct-colors.

Cheers,
Jared

###

from pymol import cmd
from random import shuffle

cmd.fetch("2wdk", async=0)
cmd.fetch("2wdl", async=0)
cmd.fetch("2wdm", async=0)
cmd.fetch("2wdn", async=0)

# remove non-polymer components so we can just view the cartoon
cmd.remove("all and not polymer")

# remove RNA chains to get a better view of individual protein chains
cmd.remove("chain A")

my_chains = []

for obj in cmd.get_names():
    for ch in cmd.get_chains(obj):
        my_chains.append((obj, ch))

print "There are currently %s chains to be colored." % len(my_chains)

my_colors = []

# 5^3 > 100
for i in range (0, 5):
    r = 0.25 * i
    for j in range (0, 5):
        g = 0.25 * j
        for k in range (0, 5):
            b = 0.25 * k
            my_colors.append([r, g, b])

# randomize list (optional)
shuffle(my_colors)
print "shuffled the colors"

# name the colors
for i, tup in enumerate(my_colors):
    cmd.set_color("mycolor_%s" % i, "%s" % tup)
    print "set color mycolor_%s to %s" % (i, tup)

# color your chains
for i, ch in enumerate(my_chains):
    sel = "%s and chain %s" % (ch[0], ch[1])
    color = "mycolor_%s" % i
    color_tuple = my_colors[i]
    print "%s will be colored %s (%s)" % (sel, color, color_tuple)
    cmd.color("%s" % color, sel)

###

--
Jared Sampson
Xiangpeng Kong Lab
NYU Langone Medical Center
550 First Avenue
New York, NY 10016
212-263-7898
http://kong.med.nyu.edu/






On Mar 17, 2014, at 2:07 PM, Sampson, Jared 
<jared.samp...@nyumc.org<mailto:jared.samp...@nyumc.org>> wrote:

Hi Chandan -

It seems like you're being limited by the 26 numbered colors in the util.cbc 
function. You could create your own randomized list of evenly-spaced colors, 
something like the following (untested, but should be approximately 
usable--sorry, I'm away from my computer today):

from pymol import cmd
from random import shuffle

my_colors = []

# 5^3 > 100
for i in range (0, 5):
   r = 0.25 * i
   for j in range (0, 5):
       g = 0.25 * j
       for k in range (0, 5):
           b = 0.25 * k
           my_colors.append([r, g, b])

# randomize list
shuffle(my_colors)

# color your chains
for x, c in enumerate(my_chain_list):
   cmd.color(my_colors[x], c)

Hope that helps.

Cheers,
Jared

--
Jared Sampson
Kong Lab
NYU Medical Center
kong.med.nyu.edu<http://kong.med.nyu.edu>
212-263-7898

Sent from my iPhone

On Mar 17, 2014, at 8:37 AM, "Thomas Holder" <thomas.hol...@schrodinger.com> 
wrote:

Hi Chandan,

in Incentive PyMOL 1.6 you can use the spectrum command to color by chain (will 
be enumerated) or by residue number. http://pymolwiki.org/index.php/Spectrum

In open-source PyMOL, you could use the spectrumany script to color by residue 
number: http://pymolwiki.org/index.php/Spectrumany

Cheers,
Thomas

On 13 Mar 2014, at 03:19, Chandan Choudhury <iitd...@gmail.com> wrote:
On Thu, Mar 13, 2014 at 10:21 AM, Jordan Willis <jwillis0...@gmail.com> wrote:
I think...

What is happening is that the color command should take in a name like “color 
yellow, i. 1" or a CMYK color vector. When you are saying “color 1” it is just 
starting at the first index of CMYK which is black.

There is a command for your problem though. Just say util.color_chains() and it 
will color all individual chains a different color.

Thanks Jordon for the reply.

I tried using util.color_chains(). It colors differently upto chain no. 26. 
After 26 all the chains are of same color, as I donot have chain no after that.
Some utility which can color by residue number would be very useful.

Chandan

On Mar 12, 2014, at 11:15 PM, Chandan Choudhury <iitd...@gmail.com> wrote:

Dear PyMOL users,

I build 100 chains of polymer in a box. Residue number is different for every 
chain. Chain 1 hasresidue no. 1, chain 2 has residue no. 2 and so on. I want to 
color each chain differently.
So, I wrote a script which generates a pml file, and opening this pml file with 
PyMOL should color each chain differently.

##color.pml
load 128md_c.pdb
select 1, i. 1
color  1, i. 1
select 2, i. 2
color  2, i. 2
select 3, i. 3
color  3, i. 3
select 4, i. 4
color  4, i. 4
select 5, i. 5
color  5, i. 5
select 6, i. 6
color  6, i. 6
select 7, i. 7
...
...
color  125, i. 125
select 126, i. 126
color  126, i. 126
select 127, i. 127
color  127, i. 127
select 128, i. 128
color  128, i. 128

I have 128 chains.

What I find that mostly green or black dominates the coloring.
While displaying color by the numeric code, what is the maximum no, after which 
the color repeats?

Chandan

--
Chandan Kumar Choudhury
National Chemical Laboratory, Pune
India

--
Thomas Holder
PyMOL Developer
Schrödinger, Inc.


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
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

------------------------------------------------------------
This email message, including any attachments, is for the sole use of the 
intended recipient(s) and may contain information that is proprietary, 
confidential, and exempt from disclosure under applicable law. Any unauthorized 
review, use, disclosure, or distribution is prohibited. If you have received 
this email in error please notify the sender by return email and delete the 
original message. Please note, the recipient should check this email and any 
attachments for the presence of viruses. The organization accepts no liability 
for any damage caused by any virus transmitted by this email.
=================================


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
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

------------------------------------------------------------
This email message, including any attachments, is for the sole use of the 
intended recipient(s) and may contain information that is proprietary, 
confidential, and exempt from disclosure under applicable law. Any unauthorized 
review, use, disclosure, or distribution is prohibited. If you have received 
this email in error please notify the sender by return email and delete the 
original message. Please note, the recipient should check this email and any 
attachments for the presence of viruses. The organization accepts no liability 
for any damage caused by any virus transmitted by this email.
=================================
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
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