[chimera-dev] colors...
Eric Pettersen
pett at cgl.ucsf.edu
Fri Sep 26 14:41:06 PDT 2003
On Friday, September 26, 2003, at 02:41 AM, Lars Kunert wrote:
> Hi I do like to color some molecules/atoms
>
> I figured out, that I create a color like this:
>
>>> c=chimera.Color()
>>> c=(1,0,0,1)
Does the code above have a typo in it? The first line assigns 'c' to
point at a Color instance, then the second line has 'c' point to a
four-tuple (effectively discarding the Color instance). Perhaps you
meant the second line to be 'c.rgba = (1,0,0,1)'?
Regardless of the 'c' assignment problem, the more basic problem is
that Color is a base class (for MaterialColor and TextureColor) that
isn't supposed to be used directly like this. For the most part you
want to use MaterialColors when assigning colors in Chimera. To get
the color you wanted above, there are two methods:
from chimera.colorTable import getColorByName
c = getColorByName("red")
The getColorByName() function returns a MaterialColor instance. You
can use any of the color names in the Actions...Color menu with
getColorByName (e.g. "dodger blue").
If you need a shade that isn't one of the built-in color names, you
would have to do something similar to what you were trying to do
earlier:
c = chimera.MaterialColor(1, 0, 0, None) # 'None' is the "material",
i.e. use the default material
> But when I apply this to all the atoms of a molecule, I end up with
> the following error-message:
>>>> for a in m.atoms:
> a.color=c
>
> Traceback (most recent call last):
> File "<pyshell#66>", line 1, in ?
> for a in m.atoms:
> RuntimeError: __wrappy__ is missing
>>>>
I don't get this error using the code you supplied. In both the case
where 'c' is a four-tuple and the case where it's a Color instance, I
get:
TypeError: argument 1 should be a const Color*
In your code, is 'm' a Molecule instance created by
chimera.openModels.open(), or is it something else?
> I suppose, that colors like "red"are predefined somewhere, where?
Yes, in the chimera.colorTable module, as in the example code above.
> Are the different color-levels modell/molecule/atom are just fancy
> stuff for the interactive user? - I colored a molecule first
> (interactive) "byatom" and then tried to alter the coloring by hand:
>>> m.color=c
>
> it did not work, I had to alter the color atomwise... is color-byatom
> a function? How can I call it?
Coloring "by atom" assigns colors to individual atoms, which overrides
colors assigned at the model level, which is why your color assignment
to the molecule had no apparent effect. The is explained in detail in
a new programmer's example (i.e. it's not in the 1700 release) called
"Chimera's Object Model" which explains not only the color hierarchy
(in the section "Display Properties") but the whole basic layout of
Chimera objects. To access this example you need to go to
http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/Examples/
index.html (it's the first example).
There are two functions to assist in coloring by element type. They
are both in the chimera.actions module. The first is colorByElement(),
which colors atoms in the current selection, or everything if nothing
is selected. By default it sets the "color" attribute (the atom's
color). You can supply the keyword 'attr="surfaceColor"' to make it
color surfaces instead, or 'attr="labelColor"' to make it color labels.
Perhaps more useful is the colorAtomByElement(a) function which takes
an atom as argument. It takes the same 'attr' keyword that
colorByElement() does. In the next release (in about two weeks), it
will instead take an 'attrs' keyword for a list of attributes to set.
> Is there a way to "switch on"a history function in the buildin IDLE?
> Copy and paste do also not work within the IDLE. I allways have to
> copy and paste via an editor...
In IDLE, you can insert an old line of code by clicking the mouse to
put the insertion point in that line of code and then hitting Return.
The code will appear at the bottom and you can edit it and so forth.
Eric Pettersen
UCSF Computer Graphics Lab
pett at cgl.ucsf.edu
http://www.cgl.ucsf.edu
More information about the Chimera-dev
mailing list