[chimerax-users] A couple questions about programming in ChimeraX
Tom Goddard
goddard at sonic.net
Wed Sep 22 13:37:47 PDT 2021
Hi William,
I've made it so when you open a ChimeraX marker file (*.cmm) it will save the extra attributes (the marker_extra_attributes dictionary) in subsequently saved sessions. This will be in tonight's ChimeraX builds. If you need this to work in older ChimeraX (e.g version 1.2.5) then you can call
marker_set.save_marker_attribute_in_sessions('marker_extra_attributes', None)
with the attribute type as None. Probably an attribute type of dict would work too. I don't know what your Dict[str, str] is -- that is not legal Python as far as I know. You can detect when new models are opened and look for marker sets using the add models trigger as described here
https://www.rbvi.ucsf.edu/chimerax/docs/devel/well_known_triggers.html <https://www.rbvi.ucsf.edu/chimerax/docs/devel/well_known_triggers.html>
although that should not be needed for your use starting with tomorrow's daily build. We plan to release ChimeraX 1.3 next month and it will have today's improvements.
Tom
On Sep 22, 2021, at 5:21 AM, William Hofsøy via ChimeraX-users <chimerax-users at cgl.ucsf.edu> wrote:
>
> Hi again! Thank you for all the answers from last time. It was very helpful.
>
> I have another question. I was trying to save extra attributes on a marker model from a cmm file and ran into some issues.
>
> I made a function to test it out using:
> marker_set.save_marker_attribute_in_sessions('marker_extra_attributes', Dict[str, str])
>
> and got an error:
> ValueError: error processing: 'attribute registration' -> : No bundle information for typing._GenericAlias
>
> File "C:\Program Files\ChimeraX 1.2.5\bin\lib\site-packages\chimerax\core\session.py", line 262, in discovery
> raise ValueError("error processing: %s: %s" % (_obj_stack(parents, obj), e))
>
> Is it only possible to save more primitive types or can I fix this somehow?
>
> In my project the cmm files contain extra attributes that my plugin makes use of. These are the attributes that I would like to save in sessions.
> I would like this save enabling function to be called automatically when a cmm file is opened so that I can enable saving of these attributes on file open.
> Is there perhaps some onFileOpened that I could subscribe to, or is there another way that could allow me to achieve this?
>
> -William
>
> fre. 27. aug. 2021 kl. 22:15 skrev Tom Goddard <goddard at sonic.net <mailto:goddard at sonic.net>>:
> Hi William,
>
> To add a marker to an open marker set:
>
> from chimerax.markers import MarkerSet
> marker_sets = session.models.list(type = MarkerSet)
> m = marker_sets[0]
> xyz = (15.3, -34, 8.8)
> color = (255,0,0,255) # RGBA 0-255 range.
> radius = 2.5
> m.create_marker(xyz, color, radius)
>
> I see MarkerSet is not in our online programming documentation yet. The source code is in your ChimeraX distribution under
>
> chimerax/lib/python3.9/site-packages/chimerax/markers/markers.py
>
> or on GitHub
>
> https://github.com/RBVI/ChimeraX/blob/develop/src/bundles/markers/src/markers.py <https://github.com/RBVI/ChimeraX/blob/develop/src/bundles/markers/src/markers.py>
>
> The marker_extra_attributes is saved and restored in cmm files. For ChimeraX session files you can get extra attributes to save by saying what attributes you want saved
>
> marker_set.save_marker_attribute_in_sessions('myattribute', float)
>
> For placing geometric surfaces in the scene look at the shape command
>
> https://www.cgl.ucsf.edu/chimerax/docs/user/commands/shape.html <https://www.cgl.ucsf.edu/chimerax/docs/user/commands/shape.html>
>
> Surprised there is no cube shape, but maybe rectangle with the slab option can make a cube. Python code is here
>
> https://github.com/RBVI/ChimeraX/blob/develop/src/bundles/shape/src/shape.py <https://github.com/RBVI/ChimeraX/blob/develop/src/bundles/shape/src/shape.py>
>
> for example
>
> from chimerax.shape.shape import shape_rectangle
> model = shape_rectangle(session, width = 10, height = 10, slab = (-5,5), mesh = True)
>
> Tom
>
>
>> On Aug 27, 2021, at 8:21 AM, William Hofsøy via ChimeraX-users <chimerax-users at cgl.ucsf.edu <mailto:chimerax-users at cgl.ucsf.edu>> wrote:
>>
>> Hi, I'm currently working on a plugin that deals with a cmm-file model and have a few questions about how to do certain things. Mainly I would like to be able to modify the model by adding new markers and links to the model. I have managed to figure out how to make new markersets and add them to the session but not how to alter existing ones aka the model that I load from the cmm file.
>> Additionally I am making use of the marker_extra_attributes info since the cmm file im reading has attributes there that I need, but as I read in the documentation these aren't saved in sessions and I wondered if there is a way to do just that.
>> Lastly, I was wondering if it is possible to place any mesh in the scene, for instance a cube.
>>
>> -William
>> _______________________________________________
>> ChimeraX-users mailing list
>> ChimeraX-users at cgl.ucsf.edu <mailto:ChimeraX-users at cgl.ucsf.edu>
>> Manage subscription:
>> https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users <https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users>
>
> _______________________________________________
> ChimeraX-users mailing list
> ChimeraX-users at cgl.ucsf.edu
> Manage subscription:
> https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://plato.cgl.ucsf.edu/pipermail/chimerax-users/attachments/20210922/ee91177b/attachment.html>
More information about the ChimeraX-users
mailing list