My previous reply was kind of misleading.  Windows does know about standard input/output, but only for "console" apps, not GUI apps.  Chimera tries to be both.  So instead of bring up a console window, you can simply redirect standard output (which will have your RMSD info) into a file, like so:

E:\Chimera\bin>chimera --nogui myscript.py > E:\rmsds.txt

Don't use the saveReplyFunction in nogui mode since it will always produce an empty file (since there is no reply log).

--Eric

                        Eric Pettersen
                        UCSF Computer Graphics Lab
                        http://www.cgl.ucsf.edu

On Mar 14, 2010, at 11:12 PM, Sumitro Harjanto wrote:

Hi Eric,
 
I managed to figure out something by pirating some python codes I found from chimera mailing list through googling. I want to use the code to save my reply log, which is going to be about 3.4 million lines (by the way, is there a maximum buffer for the number of lines reply log can take? I feared overrunning the buffer and losing my some part of the replylog)
 
Below is the code; I commented away the part I do not use from the original code.
 
I tried the code by opening it using the chimera gui, and it worked just fine, producing the log file I want. But when I tried opening the same code using command line the log file was produced, but empty.
I tried :
 
E:\Chimera\bin>chimera --nogui save_replylog.py   <- -  doesnot show anything, no popup command window, nothing.
E:\Chimera\bin>chimera --nogui --debug save_replylog.py <- - shows a new pop up window
 
Both commands created my log file, but were both empty files.
 
I would want to run the script later in nogui mode, but I need to retrieve the log for rmsd values, therefore I need to overcome this problem. Any advise..?
 
Thanks!
 
Cheers,
Sumitro
 
 
********************************************************************************************************************
from chimera import runCommand
from chimera.tkgui import saveReplyLog
 
#def rms2ref(ref, pose, no):
#    runCommand('open %s; open %s' % (ref, pose))
#    i = 1
#    while i <= no:
#       # only hetatms are included --> ~@/element=h
#       runCommand('sel #1.%i & ~@/element=h' % i)
#       runCommand('rmsd #0 sel')
#       i += 1
#
#rms2ref('lig_cryst.pdb', 'poses.sdf', 10)
 
runCommand('open noprefs E:\\D.combine\\receptor_models\\A-0101_1W72_A.pdb')
runCommand('open noprefs E:\\A.Model_receptor\\PDB_MODELS\\1DUZ.pdb')
runCommand('open noprefs E:\\D.combine\\chain_models\\A-0101_ITLVYKVYY_2CIK.pdb')
runCommand('rmsd #0:@ca #1:2-182.A@ca')
runCommand('match #0:@ca,n,c,o #1:2-182.A@ca,n,c,o')
runCommand('match #2:1-3.C,7-9.C@ca #1:1-3.C,7-9.C@ca ')
runCommand('match #2:1-3.C,7-9.C@ca,n,c,o #1:1-3.C,7-9.C@ca,n,c,o ')
runCommand('combine #0|#2:1-9.C name A-0101_ITLVYKVYY_2CIK.C.(1DUZ.C).A-0101_1W72_A modelId 5')
runCommand('write format pdb 5 E:\\D.combine\\complex\\A-0101_ITLVYKVYY_2CIK.C.(1DUZ.C).A-0101_1W72_A.pdb')
runCommand('close all')
 
# generate output from replyLog.txt
 
saveReplyLog('e:\\D.combine\\mylog.txt')
 
#rmsds = []
#for i in open('mylog2.txt').readlines():
#    if i.startswith('RMSD between'):
#       rmsds.append(i.split()[-2])
#
#print rmsds
*********************************************************************************