Ben, Here are two answers:
A) If you absolutely need to pipe commands into PyMOL, then you should use the -K option to keep PyMOL from automatically quitting once standard input has been exhausted: echo '...;quit' | pymol -pKcq Note that the '-i' and '-x' options are superfluous with '-c'. B) However, a cleaner approach would be to run the Python script as the first argument to PyMOL followed by a -d statement. pymol -cq BuildHelix.py -d 'BuildMe("AAAAAAAAA")' Cheers, Warren -- DeLano Scientific LLC Subscriber Support Services mailto:del...@delsci.info > -----Original Message----- > From: pymol-users-boun...@lists.sourceforge.net > [mailto:pymol-users-boun...@lists.sourceforge.net] On Behalf > Of Benjamin Hall > Sent: Thursday, April 24, 2008 8:35 AM > To: pymol-users@lists.sourceforge.net > Subject: [PyMOL] Problem Saving Molecules from batch mode > > Hi > > I'm writing a short script to use pymol to generate "ideal" > alpha helices out of arbitrary sequences. I use a short > script, BuildHelix.py: > > from pymol import cmd, stored > > def BuildMe(sequence): > cmd.set("secondary_structure",1.00) > for aa in sequence: cmd._alt(string.lower(aa)) > cmd.save(sequence+".pdb") > > cmd.extend( "BuildMe", BuildMe ) > > I can then run this from the gui prompt, or in interactive > mode without the gui without issue, as follows: > > run BuildHelix.py > BuildMe("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") > quit > > However, as I want to use this in an automated way, I have > been trying this command: > > echo 'run > BuildHelix.py\nBuildMe("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")\nq uit\n)' | pymol -xpic > > This works intermittently, roughly 1 in 3 or 4 times. Adding > cmd.sync() lines to either the script or the command doesn't > change the results. > However, if I use the command "quit()" (rather than "quit"), > pymol crashes with an error in threading.py and the file is > correctly written out. The error given is > > PyMOL>quit() > Traceback (most recent call last): > File "/var/lib/python-support/python2.5/pymol/parser.py", > line 456, in parse > exec(layer.com2+"\n",self.pymol_names,self.pymol_names) > File "<string>", line 1, in <module> > File "site.py", line 256, in __call__ > raise SystemExit(code) > SystemExit: None > Exception in thread Thread-1: > Traceback (most recent call last): > File "threading.py", line 460, in __bootstrap > self.run() > File "threading.py", line 440, in run > self.__target(*self.__args, **self.__kwargs) > File "/var/lib/python-support/python2.5/pymol/parser.py", > line 500, in stdin_reader > l = sys.stdin.readline() > ValueError: I/O operation on closed file > > I'm running version 1.0re1, though I have also tested with 0.98. > > Any advice would be much appreciated. Thanks in advance > > Ben Hall > > -------------------------------------------------------------- > ----------- > This SF.net email is sponsored by the 2008 JavaOne(SM) > Conference Don't miss this year's exciting event. There's > still time to save $100. > Use priority code J8TL2D2. > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java .sun.com/javaone > _______________________________________________ > PyMOL-users mailing list > PyMOL-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/pymol-users