[Chimera-users] Saving sessions including maps?
Oliver Clarke
olibclarke at gmail.com
Wed Sep 16 12:59:20 PDT 2015
Awesome, thanks Eric! I was looking for a chimera command to execute shell commands but somehow didn’t find it (even though it is certainly documented in the command index).
In that case the following alias works well to create a packaged session with all maps saved:
#Save session with maps. saves in home dir with directory name same as session.
# Usage: save_session_dir session-name
# Don't use spaces or under_scores in session names.
alias ^save_session_dir cd ~; system mkdir chimera_session_dirs; cd chimera_session_dirs; system mkdir $1; volume # save ~/chimera_session_dirs/$1/$1%d.mrc; save ~/chimera_session_dirs/$1/$1
The only remaining issue is that Chimera treats underscores in alias arguments as special characters, and converts them to spaces. I don’t suppose there is some way to avoid that behaviour? E.g. like using a \ to escape a special character in a shell script?
Cheers,
Oli.
> On Sep 16, 2015, at 3:51 PM, Eric Pettersen <pett at cgl.ucsf.edu> wrote:
>
> Sorry this reply is kind of tardy. Anyway, your little script has done 98% of the work needed to add that command at startup. Look at the “Adding Command-line Commands” example in the Chimera Programmer’s Guide: http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/Examples/index.html <http://www.cgl.ucsf.edu/chimera/docs/ProgrammersGuide/Examples/index.html>
>
> Basically, you need call the script file “ChimeraExtension.py”, put it inside a folder (maybe named “Mkdir”) and then tell Chimera to look for it by going to Tools section of Preferences and adding the parent folder of Mkdir (i.e. the folder that contains Mkdir) to the “Locations” list that Chimera will look for tools in (and click the Save button!)
>
> The above is good to know for adding tools in general. However in the specific case of your mkdir command, you can do it directly in Chimera without making an extension. The “system” command will execute its arguments as a shell command, so “system mkdir xyz” will create an xyz directory.
>
> —Eric
>
> Eric Pettersen
> UCSF Computer Graphics Lab
>
>
>> On Sep 11, 2015, at 2:11 PM, Oliver Clarke <olibclarke at gmail.com <mailto:olibclarke at gmail.com>> wrote:
>>
>> Ok, so if I run the following python script at chimera startup (to add a mkdir command):
>>
>> def mkdir(mkdir,dir1):
>> import os
>> import time
>> if not os.path.exists(dir1):
>> os.mkdir(dir1)
>> from Midas.midas_text import addCommand
>> addCommand("mkdir", mkdir, help=False)
>>
>> And then add the following alias:
>>
>> #Save session with maps. saves in home dir with directory name same as session.
>> # Usage: save_session_dir session-name
>> # Don't use spaces or under_scores in session names.
>> alias ^save_session_dir cd ~; mkdir $1; volume # save ~/$1/$1%d.mrc; save ~/$1/$1
>>
>> This seems to work okay. It will create a sub dir in the user’s home directory with maps and a chimera session file.
>>
>> Incidentally, is there any easy way to add python code snippets to a Chimera command file (with aliases etc)? I guess the only ways are to either have it in a separate file and use open or runscript, or to make it one big python file and wrap all of the aliases in runcommand() calls. But then how does one tell Chimera to run a given python file at start up? When I add python files to the “Files to read at startup” section of preferences, Chimera seems to interpret them as Chimera command files, and hence gives an error.
>>
>> Cheers,
>> Oliver.
>>> On Sep 11, 2015, at 9:04 PM, Oliver Clarke <olibclarke at gmail.com <mailto:olibclarke at gmail.com>> wrote:
>>>
>>> Thanks for the quick reply Tom, got it. Looking forward to Chimera 2!
>>>
>>> One temporary work around I have thought about is the following alias:
>>>
>>> #Save session with maps. saves in home dir with directory name same as session.
>>> # Usage: save_session_dir session-name
>>> # Don't use spaces or under_scores in session names.
>>> alias ^save_session_dir volume # save ~/$1/map%d.mrc; save ~/$1/$1
>>>
>>> This will save all maps in a subdir of the home directory with the desired session name, and then save the session in the same dir - this folder is then portable and has all the info needed to restore the session. The only caveat to this is that this only works if the directory already exists - otherwise it gives an error. Maybe it would be possible to add an option to save/write to make the dir if it does not already exist? Otherwise I can do it in python I guess. Also, map names are not preserved, but I don’t see any easy way to get around that. Only other problem with this is that because of the way aliases work in chimera, any underscores in the alias arguments will be converted to spaces, but that is not an issue so long as one is aware of it.
>>>
>>> Cheers,
>>> Oliver.
>>>> On Sep 11, 2015, at 6:54 PM, Tom Goddard <goddard at sonic.net <mailto:goddard at sonic.net>> wrote:
>>>>
>>>> Hi Oliver,
>>>>
>>>> This has long been a requested feature.
>>>>
>>>> http://plato.cgl.ucsf.edu/trac/chimera/ticket/12426 <http://plato.cgl.ucsf.edu/trac/chimera/ticket/12426>
>>>>
>>>> And I agree it would be useful. If Chimera packages up all the needed maps and the session file in a zip archive this would be convenient. You can of course do this right now by hand, only it isn’t so convenient. Unfortunately this has never reached a high enough priority relative to other enhancements we are working on, so it has not been implemented. It is more likely to get into Chimera 2 than Chimera 1.
>>>>
>>>> Tom
>>>>
>>>>
>>>>> On Sep 11, 2015, at 2:05 AM, Oliver Clarke wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> Is there any possibility of altering the chimera session format (or adding a separate option) such that all maps (including those created during the session) are also saved?
>>>>>
>>>>> This would greatly facilitate sharing data with collaborators, and would also allow one to provide chimera sessions with saved scenes as supplementary data when publishing.
>>>>>
>>>>> It would also make saving sessions more practical when many different volumes are created during the session - for example, when using a molmap low resolution representation for each domain.
>>>>>
>>>>> This would not necessarily require creating a new format - just creating a tarball or folder with all the maps and relative paths specified in the python file would work fine I think?
>>>>>
>>>>> Cheers,
>>>>> Oli.
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Chimera-users mailing list
>>>>> Chimera-users at cgl.ucsf.edu <mailto:Chimera-users at cgl.ucsf.edu>
>>>>> http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users <http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users>
>>>>>
>>>>
>>>
>>
>> _______________________________________________
>> Chimera-users mailing list
>> Chimera-users at cgl.ucsf.edu <mailto:Chimera-users at cgl.ucsf.edu>
>> http://plato.cgl.ucsf.edu/mailman/listinfo/chimera-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://plato.cgl.ucsf.edu/pipermail/chimera-users/attachments/20150916/362d1fa6/attachment.html>
More information about the Chimera-users
mailing list