Setting the same sdLevel threshold for several volumes

Good morning, I would like to set the threshold of multiple CryoEM Volumes (10-20) at the same time, and I would like to put all of them at the same sdlevel. I use the command: volume #1 sdLevel 2 But this only work for one volume, if I use volume all sdLevel 2, or volume #1 #2 #3 sdLevel 2 It does not work and the threshold are random. In chimera I had a script that I use for doing that but I have not found the way to do it in ChimeraX. In Chimera, I normally called the script with an alias. alias ^allsd runscript ~/chimeraScriptSD.py allsd 3 And the script (chimeraScriptSD.py) was: import sys import chimera from VolumeViewer import Volume mlist = chimera.openModels.list(modelTypes=[Volume]) sdlevel = 2 if len(sys.argv)>1: sdlevel = sys.argv[1] for m in mlist: chimera.runCommand('volume '+str(m)+' sdlevel '+ str(sdlevel)) But I do not know how to do this in ChimeraX. The key point I do not know how to do is to do a loop that say “for any volume in all the opened volumes”. Thanks for your help Moisés

Hi Moisés, That is a bug in ChimeraX. It will be fixed in tomorrow's ChimeraX daily build. Both of the following should work volume all sdLevel 2 volume #1-3 sdLevel 3 but the code processed each volume in turn and due to a bug remembered some of the level parameters from the previous volume. Thanks for reporting the problem! Tom
On Apr 7, 2022, at 2:03 AM, Moisés Maestro López via ChimeraX-users <chimerax-users@cgl.ucsf.edu> wrote:
Good morning,
I would like to set the threshold of multiple CryoEM Volumes (10-20) at the same time, and I would like to put all of them at the same sdlevel.
I use the command:
volume #1 sdLevel 2
But this only work for one volume, if I use
volume all sdLevel 2, or volume #1 #2 #3 sdLevel 2
It does not work and the threshold are random.
In chimera I had a script that I use for doing that but I have not found the way to do it in ChimeraX. In Chimera, I normally called the script with an alias.
alias ^allsd runscript ~/chimeraScriptSD.py
allsd 3
And the script (chimeraScriptSD.py) was:
import sys import chimera from VolumeViewer import Volume
mlist = chimera.openModels.list(modelTypes=[Volume])
sdlevel = 2
if len(sys.argv)>1: sdlevel = sys.argv[1]
for m in mlist:
chimera.runCommand('volume '+str(m)+' sdlevel '+ str(sdlevel))
But I do not know how to do this in ChimeraX. The key point I do not know how to do is to do a loop that say “for any volume in all the opened volumes”.
Thanks for your help
Moisés
_______________________________________________ ChimeraX-users mailing list ChimeraX-users@cgl.ucsf.edu Manage subscription: https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users

Hi Tom, Thanks for the response. I have downloaded the daily build and now it works. As far as I know the problem also happens in chimera (that is why I had to use my script). Best regards Moisés
El 7 abr 2022, a las 21:17, Tom Goddard <goddard@sonic.net> escribió:
Hi Moisés,
That is a bug in ChimeraX. It will be fixed in tomorrow's ChimeraX daily build. Both of the following should work
volume all sdLevel 2 volume #1-3 sdLevel 3
but the code processed each volume in turn and due to a bug remembered some of the level parameters from the previous volume.
Thanks for reporting the problem!
Tom
On Apr 7, 2022, at 2:03 AM, Moisés Maestro López via ChimeraX-users <chimerax-users@cgl.ucsf.edu <mailto:chimerax-users@cgl.ucsf.edu>> wrote:
Good morning,
I would like to set the threshold of multiple CryoEM Volumes (10-20) at the same time, and I would like to put all of them at the same sdlevel.
I use the command:
volume #1 sdLevel 2
But this only work for one volume, if I use
volume all sdLevel 2, or volume #1 #2 #3 sdLevel 2
It does not work and the threshold are random.
In chimera I had a script that I use for doing that but I have not found the way to do it in ChimeraX. In Chimera, I normally called the script with an alias.
alias ^allsd runscript ~/chimeraScriptSD.py
allsd 3
And the script (chimeraScriptSD.py) was:
import sys import chimera from VolumeViewer import Volume
mlist = chimera.openModels.list(modelTypes=[Volume])
sdlevel = 2
if len(sys.argv)>1: sdlevel = sys.argv[1]
for m in mlist:
chimera.runCommand('volume '+str(m)+' sdlevel '+ str(sdlevel))
But I do not know how to do this in ChimeraX. The key point I do not know how to do is to do a loop that say “for any volume in all the opened volumes”.
Thanks for your help
Moisés
_______________________________________________ ChimeraX-users mailing list ChimeraX-users@cgl.ucsf.edu <mailto:ChimeraX-users@cgl.ucsf.edu> Manage subscription: https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users

Great! Thanks for reporting the problem. I fixed it in Chimera today too. But I encourage everyone to use ChimeraX. Usually we don't do fixes to Chimera anymore unless they are critical, but it only needed a few lines of code changed just like in ChimeraX so I fixed Chimera too. Tom
On Apr 8, 2022, at 8:49 AM, Moisés Maestro López <mmaestro@cnb.csic.es> wrote:
Hi Tom,
Thanks for the response. I have downloaded the daily build and now it works. As far as I know the problem also happens in chimera (that is why I had to use my script).
Best regards
Moisés
El 7 abr 2022, a las 21:17, Tom Goddard <goddard@sonic.net <mailto:goddard@sonic.net>> escribió:
Hi Moisés,
That is a bug in ChimeraX. It will be fixed in tomorrow's ChimeraX daily build. Both of the following should work
volume all sdLevel 2 volume #1-3 sdLevel 3
but the code processed each volume in turn and due to a bug remembered some of the level parameters from the previous volume.
Thanks for reporting the problem!
Tom
On Apr 7, 2022, at 2:03 AM, Moisés Maestro López via ChimeraX-users <chimerax-users@cgl.ucsf.edu <mailto:chimerax-users@cgl.ucsf.edu>> wrote:
Good morning,
I would like to set the threshold of multiple CryoEM Volumes (10-20) at the same time, and I would like to put all of them at the same sdlevel.
I use the command:
volume #1 sdLevel 2
But this only work for one volume, if I use
volume all sdLevel 2, or volume #1 #2 #3 sdLevel 2
It does not work and the threshold are random.
In chimera I had a script that I use for doing that but I have not found the way to do it in ChimeraX. In Chimera, I normally called the script with an alias.
alias ^allsd runscript ~/chimeraScriptSD.py
allsd 3
And the script (chimeraScriptSD.py) was:
import sys import chimera from VolumeViewer import Volume
mlist = chimera.openModels.list(modelTypes=[Volume])
sdlevel = 2
if len(sys.argv)>1: sdlevel = sys.argv[1]
for m in mlist:
chimera.runCommand('volume '+str(m)+' sdlevel '+ str(sdlevel))
But I do not know how to do this in ChimeraX. The key point I do not know how to do is to do a loop that say “for any volume in all the opened volumes”.
Thanks for your help
Moisés
_______________________________________________ ChimeraX-users mailing list ChimeraX-users@cgl.ucsf.edu <mailto:ChimeraX-users@cgl.ucsf.edu> Manage subscription: https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users <https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users>

Thanks a lot
El 8 abr 2022, a las 20:44, Tom Goddard <goddard@sonic.net> escribió:
Great! Thanks for reporting the problem. I fixed it in Chimera today too. But I encourage everyone to use ChimeraX. Usually we don't do fixes to Chimera anymore unless they are critical, but it only needed a few lines of code changed just like in ChimeraX so I fixed Chimera too.
Tom
On Apr 8, 2022, at 8:49 AM, Moisés Maestro López <mmaestro@cnb.csic.es <mailto:mmaestro@cnb.csic.es>> wrote:
Hi Tom,
Thanks for the response. I have downloaded the daily build and now it works. As far as I know the problem also happens in chimera (that is why I had to use my script).
Best regards
Moisés
El 7 abr 2022, a las 21:17, Tom Goddard <goddard@sonic.net <mailto:goddard@sonic.net>> escribió:
Hi Moisés,
That is a bug in ChimeraX. It will be fixed in tomorrow's ChimeraX daily build. Both of the following should work
volume all sdLevel 2 volume #1-3 sdLevel 3
but the code processed each volume in turn and due to a bug remembered some of the level parameters from the previous volume.
Thanks for reporting the problem!
Tom
On Apr 7, 2022, at 2:03 AM, Moisés Maestro López via ChimeraX-users <chimerax-users@cgl.ucsf.edu <mailto:chimerax-users@cgl.ucsf.edu>> wrote:
Good morning,
I would like to set the threshold of multiple CryoEM Volumes (10-20) at the same time, and I would like to put all of them at the same sdlevel.
I use the command:
volume #1 sdLevel 2
But this only work for one volume, if I use
volume all sdLevel 2, or volume #1 #2 #3 sdLevel 2
It does not work and the threshold are random.
In chimera I had a script that I use for doing that but I have not found the way to do it in ChimeraX. In Chimera, I normally called the script with an alias.
alias ^allsd runscript ~/chimeraScriptSD.py
allsd 3
And the script (chimeraScriptSD.py) was:
import sys import chimera from VolumeViewer import Volume
mlist = chimera.openModels.list(modelTypes=[Volume])
sdlevel = 2
if len(sys.argv)>1: sdlevel = sys.argv[1]
for m in mlist:
chimera.runCommand('volume '+str(m)+' sdlevel '+ str(sdlevel))
But I do not know how to do this in ChimeraX. The key point I do not know how to do is to do a loop that say “for any volume in all the opened volumes”.
Thanks for your help
Moisés
_______________________________________________ ChimeraX-users mailing list ChimeraX-users@cgl.ucsf.edu <mailto:ChimeraX-users@cgl.ucsf.edu> Manage subscription: https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users <https://www.rbvi.ucsf.edu/mailman/listinfo/chimerax-users>
participants (2)
-
Moisés Maestro López
-
Tom Goddard