Color cbcobj

From PyMOLWiki
Revision as of 08:39, 27 October 2022 by OscarConchillo-Solé (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Type Python Script
Download
Author(s) Oscar Conchillo-Solé
License

Overview

color_cbcobj

Color all chains in different objects with a different color

color_cbcobj(selection='(all)', first_color=0, quiet=0, _self=cmd):

uses colors and order as in _color_cycle defined here: https://github.com/schrodinger/pymol-open-source/blob/master/modules/pymol/util.py

quiet=0 means verbose (not quiet)

Usage

color_cbcobj selection, [first_color=0..n, [quiet=0/1 ]]

where:

  • selection can be any existing or newly-defined selection
  • first_color first color tu use from "_color_cycle" (first is 0)
  • quiet (default 0) print colored chains and models quiet=0 means verbose (not quiet)

Examples

PyMOL>color_cbcobj all and elem C,2,1

colors all chains in all objects differently, only carbon atoms, starting by color 154 (lightmagenta), does not show what has been colored

PyMOL>color_cbcobj all and elem C,2
 util.cbcobj: color 154 and model 6Y6C_BC', (chain B)
 Executive: Colored 670 atoms.
 util.cbcobj: color 6 and model 6Y6C_BC', (chain C)
 Executive: Colored 1131 atoms.
 util.cbcobj: color 9 and model 6Y6C_AD', (chain A)
 Executive: Colored 664 atoms.
 util.cbcobj: color 29 and model 6Y6C_AD', (chain D)
 Executive: Colored 1135 atoms.

Code

Copy the following text and save it as color_cbcobj.py

from pymol import cmd, CmdException

_color_cycle = [
    26   , # /* carbon */
    5    , # /* cyan */
    154  , # /* lightmagenta */
    6    , # /* yellow */
    9    , # /* salmon */
    29   , # /* hydrogen */
    11   , # /* slate */
    13   , # /* orange */
    10   , # /* lime */
    5262 , # /* deepteal */
    12   , # /* hotpink */
    36   , # /* yelloworange */
    5271 , # /* violetpurple */
    124  , # /* grey70 */
    17   , # /* marine */
    18   , # /* olive */
    5270 , # /* smudge */
    20   , # /* teal */
    5272 , # /* dirtyviolet */
    52   , # /* wheat */
    5258 , # /* deepsalmon */
    5274 , # /* lightpink */
    5257 , # /* aquamarine */
    5256 , # /* paleyellow */
    15   , # /* limegreen */
    5277 , # /* skyblue */
    5279 , # /* warmpink */
    5276 , # /* limon */
    53   , # /* violet */
    5278 , # /* bluewhite */
    5275 , # /* greencyan */
    5269 , # /* sand */
    22   , # /* forest */
    5266 , # /* lightteal */
    5280 , # /* darksalmon */
    5267 , # /* splitpea */
    5268 , # /* raspberry */
    104  , # /* grey50 */
    23   , # /* deepblue */
    51   , # /* brown */
    ]

_color_cycle_len = len(_color_cycle)

def color_cbcobj(selection='(all)', first_color=0, quiet=0, _self=cmd):
    '''
DESCRIPTION

    Color all chains in different objects a different color

SEE ALSO

    util.cbc, https://github.com/schrodinger/pymol-open-source/blob/master/modules/pymol/util.py
    split_chains.py, https://pymolwiki.org/index.php/Split_chains
    '''
    quiet = int(quiet)
    count = int(first_color)
    models = cmd.get_object_list('(' + selection + ')')
    for model in models:
        for chain in cmd.get_chains('(%s) and model %s' % (selection, model)):
            if len(chain.split()) != 1:
                chain = '"' + chain + '"'
            color = _color_cycle[count % _color_cycle_len]
            if not quiet:
                print(" util.cbcobj: color %s and model %s', (chain %s)" % (color, model, chain))
            #_self.color(color, "(chain %s and (%s))" % (chain, model), quiet=quiet)
            _self.color(color, "(chain %s and (%s) and (%s))" % (chain, model, selection), quiet)
            count+=1

cmd.extend('color_cbcobj', color_cbcobj)

#color_cbcobj all and elem C,1