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

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@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@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


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


Surprised there is no cube shape, but maybe rectangle with the slab option can make a cube.  Python code is here


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@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@cgl.ucsf.edu
Manage subscription:
https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users

_______________________________________________
ChimeraX-users mailing list
ChimeraX-users@cgl.ucsf.edu
Manage subscription:
https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users