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