From: Mateusz M. <s06...@sm...> - 2009-11-10 16:08:51
|
Hello, I'm writing a script in Python to be executed in PyMOL. Unfortunately I got stuck right at the beginning, when I'm trying to load .pdb's from "converged.nam" file. The relevant bit of the script is the following: from pymol.cgo import * from pymol import cmd loadedStuff=open("converged.nam", 'r') linie = loadedStuff.readlines() for n in range(len(linie)): linie[n] = linie[n][:-1] for n in range(len(linie)): print n, linie[n] for n in linie: cmd.load(n,n) Unfortunately, it is not working - I keep on getting: 0 compstatin.pdb_14 1 compstatin.pdb_72 2 compstatin.pdb_91 3 compstatin.pdb_93 4 compstatin.pdb_78 5 compstatin.pdb_34 6 compstatin.pdb_32 7 compstatin.pdb_7 8 compstatin.pdb_47 9 compstatin.pdb_31 10 compstatin.pdb_5 ExecutiveProcessPDBFile-Error: Unable to open file 'compstatin.pdb_14'. Traceback (most recent call last): File "/usr/local/pymol/modules/pymol/parsing.py", line 407, in run_file execfile(file,global_ns,local_ns) File "align.py", line 8, in ? for n in linie: cmd.load(n,n) File "/usr/local/pymol/modules/pymol/importing.py", line 575, in load if _raising(r): raise pymol.CmdException CmdException: <pymol.CmdException instance at 0x56fdc6cc> When I manually form a list containing all the compstatin entries than it is working, so it must be something with how it processes the list which it gets from the file. I can't really understand why that is so, especially given how it correctly pronts out the content of the list that captures the content of the file. I am obviously making some silly mistake here... any suggestions? Thank you, Mateusz Maciejewski ---------------------------------------------- Mateusz Maciejewski, University of Edinburgh Joseph Black Chemistry Bldg, West Mains Rd., Edinburgh EH9 3JJ, U.K. Phone (44) (0) 131 650 4704 (group office) |
From: Tsjerk W. <ts...@gm...> - 2009-11-10 16:51:23
|
Hi Mateusz, The first guess would be that you're not in the right directory, since Pymol can't find the file. That seems a bit awkward, as I guess they're in the same directory as "converged.nam", or aren't they? To see what is in the directory, you can call cmd.ls() at the start of the script. For what it's worth, the script is syntactically correct, although it could be written a bit more neatly ;) Hope it helps, Tsjerk On Tue, Nov 10, 2009 at 5:08 PM, Mateusz Maciejewski <s06...@sm...> wrote: > Hello, > > I'm writing a script in Python to be executed in PyMOL. Unfortunately I got > stuck right at the beginning, when I'm trying to load .pdb's from > "converged.nam" file. The relevant bit of the script is the following: > > > from pymol.cgo import * > from pymol import cmd > > loadedStuff=open("converged.nam", 'r') > linie = loadedStuff.readlines() > for n in range(len(linie)): linie[n] = linie[n][:-1] > for n in range(len(linie)): print n, linie[n] > for n in linie: cmd.load(n,n) > > > > Unfortunately, it is not working - I keep on getting: > > > > 0 compstatin.pdb_14 > 1 compstatin.pdb_72 > 2 compstatin.pdb_91 > 3 compstatin.pdb_93 > 4 compstatin.pdb_78 > 5 compstatin.pdb_34 > 6 compstatin.pdb_32 > 7 compstatin.pdb_7 > 8 compstatin.pdb_47 > 9 compstatin.pdb_31 > 10 compstatin.pdb_5 > ExecutiveProcessPDBFile-Error: Unable to open file 'compstatin.pdb_14'. > Traceback (most recent call last): > File "/usr/local/pymol/modules/pymol/parsing.py", line 407, in run_file > execfile(file,global_ns,local_ns) > File "align.py", line 8, in ? > for n in linie: cmd.load(n,n) > File "/usr/local/pymol/modules/pymol/importing.py", line 575, in load > if _raising(r): raise pymol.CmdException > CmdException: <pymol.CmdException instance at 0x56fdc6cc> > > > > When I manually form a list containing all the compstatin entries than it is > working, so it must be something with how it processes the list which it > gets from the file. I can't really understand why that is so, especially > given how it correctly pronts out the content of the list that captures the > content of the file. I am obviously making some silly mistake here... any > suggestions? > > Thank you, > Mateusz Maciejewski > > ---------------------------------------------- > > > > Mateusz Maciejewski, > University of Edinburgh > Joseph Black Chemistry Bldg, West Mains Rd., > Edinburgh EH9 3JJ, U.K. > Phone (44) (0) 131 650 4704 (group office) > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus > on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > PyMOL-users mailing list (PyM...@li...) > Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users > Archives: http://www.mail-archive.com/pym...@li... > -- Tsjerk A. Wassenaar, Ph.D. Computational Chemist Medicinal Chemist Neuropharmacologist |
From: Tsjerk W. <ts...@gm...> - 2009-11-10 18:08:14
|
Hi Matt, Well, then you're in for some nasty debugging. That will probably end with you slapping yourself against the head, as I've done plenty ofc times on such occasions. I tried the same things using the same sort of code you posted, and it worked for me. Of course, I'd rather do something like: L = [ i.strip() for i in open("files.nam").readlines() if i.strip() ] for i in L: cmd.load( i, i ) But those are details really. You may want to print the list of filenames right after reading them in, and again after changing the entries. That may give a clue of what goes wrong. Cheers, Tsjerk On Tue, Nov 10, 2009 at 6:05 PM, Mateusz Maciejewski <s06...@sm...> wrote: > Dear Tsjerk, > > I actually also tried using full paths in the script, as in > > > for n in range(len(linie)): linie[n] = ["/path/to/my/files/" + > linie[n][:-1]] > > > Then in the PyMOL interpreter/ log window I was getting > > > ExecutiveProcessPDBFile-Error: Unable to open file > '/path/to/my/files/compstatin.pdb_14'. > > > in the traceback. Yes, the file is in the same directory as the pdb file and > the script. Again if in the script I put names of files I want to open in > the 'linie' list manually rather then make it read in from a file, then it > works fine. Puzzling. > > > Thanks, > Matt > > > > On Tue, Nov 10, 2009 at 4:51 PM, Tsjerk Wassenaar <ts...@gm...> wrote: >> >> Hi Mateusz, >> >> The first guess would be that you're not in the right directory, since >> Pymol can't find the file. That seems a bit awkward, as I guess >> they're in the same directory as "converged.nam", or aren't they? To >> see what is in the directory, you can call cmd.ls() at the start of >> the script. For what it's worth, the script is syntactically correct, >> although it could be written a bit more neatly ;) >> >> Hope it helps, >> >> Tsjerk >> >> On Tue, Nov 10, 2009 at 5:08 PM, Mateusz Maciejewski >> <s06...@sm...> wrote: >> > Hello, >> > >> > I'm writing a script in Python to be executed in PyMOL. Unfortunately I >> > got >> > stuck right at the beginning, when I'm trying to load .pdb's from >> > "converged.nam" file. The relevant bit of the script is the following: >> > >> > >> > from pymol.cgo import * >> > from pymol import cmd >> > >> > loadedStuff=open("converged.nam", 'r') >> > linie = loadedStuff.readlines() >> > for n in range(len(linie)): linie[n] = linie[n][:-1] >> > for n in range(len(linie)): print n, linie[n] >> > for n in linie: cmd.load(n,n) >> > >> > >> > >> > Unfortunately, it is not working - I keep on getting: >> > >> > >> > >> > 0 compstatin.pdb_14 >> > 1 compstatin.pdb_72 >> > 2 compstatin.pdb_91 >> > 3 compstatin.pdb_93 >> > 4 compstatin.pdb_78 >> > 5 compstatin.pdb_34 >> > 6 compstatin.pdb_32 >> > 7 compstatin.pdb_7 >> > 8 compstatin.pdb_47 >> > 9 compstatin.pdb_31 >> > 10 compstatin.pdb_5 >> > ExecutiveProcessPDBFile-Error: Unable to open file 'compstatin.pdb_14'. >> > Traceback (most recent call last): >> > File "/usr/local/pymol/modules/pymol/parsing.py", line 407, in >> > run_file >> > execfile(file,global_ns,local_ns) >> > File "align.py", line 8, in ? >> > for n in linie: cmd.load(n,n) >> > File "/usr/local/pymol/modules/pymol/importing.py", line 575, in load >> > if _raising(r): raise pymol.CmdException >> > CmdException: <pymol.CmdException instance at 0x56fdc6cc> >> > >> > >> > >> > When I manually form a list containing all the compstatin entries than >> > it is >> > working, so it must be something with how it processes the list which it >> > gets from the file. I can't really understand why that is so, especially >> > given how it correctly pronts out the content of the list that captures >> > the >> > content of the file. I am obviously making some silly mistake here... >> > any >> > suggestions? >> > >> > Thank you, >> > Mateusz Maciejewski >> > >> > ---------------------------------------------- >> > >> > >> > >> > Mateusz Maciejewski, >> > University of Edinburgh >> > Joseph Black Chemistry Bldg, West Mains Rd., >> > Edinburgh EH9 3JJ, U.K. >> > Phone (44) (0) 131 650 4704 (group office) >> > >> > >> > ------------------------------------------------------------------------------ >> > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 >> > 30-Day >> > trial. Simplify your report design, integration and deployment - and >> > focus >> > on >> > what you do best, core application coding. Discover what's new with >> > Crystal Reports now. http://p.sf.net/sfu/bobj-july >> > _______________________________________________ >> > PyMOL-users mailing list (PyM...@li...) >> > Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users >> > Archives: http://www.mail-archive.com/pym...@li... >> > >> >> >> >> -- >> Tsjerk A. Wassenaar, Ph.D. >> >> Computational Chemist >> Medicinal Chemist >> Neuropharmacologist >> > > -- Tsjerk A. Wassenaar, Ph.D. Computational Chemist Medicinal Chemist Neuropharmacologist |
From: Jason V. <jas...@gm...> - 2009-11-10 18:23:11
|
Mateusz, Sounds like when you startup PyMOL you're not in the same directory as the files you want to load. Try something like, the following. Just change the variables "pdbDir" to be the path to the directory where your PDBs are. This script prints out the directory in which PyMOL is operating. Does this work? (Make surey you leave a trailing slash on the pdbDir.) from pymol.cgo import * from pymol import cmd import string print "Current PyMOL Directory: ", cmd.pwd() pdbDir = "~/pdb/" nameList = open("converged.nam", "rb").readlines() for name in nameList: loadName = string.rstrip(name) cmd.load(pdbDir + loadName, loadName) Jason Vertrees, PhD PyMOLWiki -- http://www.pymolwiki.org On Tue, Nov 10, 2009 at 1:08 PM, Tsjerk Wassenaar <ts...@gm...> wrote: > Hi Matt, > > Well, then you're in for some nasty debugging. That will probably end > with you slapping yourself against the head, as I've done plenty ofc > times on such occasions. I tried the same things using the same sort > of code you posted, and it worked for me. Of course, I'd rather do > something like: > > L = [ i.strip() for i in open("files.nam").readlines() if i.strip() ] > for i in L: cmd.load( i, i ) > > But those are details really. > You may want to print the list of filenames right after reading them > in, and again after changing the entries. That may give a clue of what > goes wrong. > > Cheers, > > Tsjerk > > On Tue, Nov 10, 2009 at 6:05 PM, Mateusz Maciejewski > <s06...@sm...> wrote: >> Dear Tsjerk, >> >> I actually also tried using full paths in the script, as in >> >> >> for n in range(len(linie)): linie[n] = ["/path/to/my/files/" + >> linie[n][:-1]] >> >> >> Then in the PyMOL interpreter/ log window I was getting >> >> >> ExecutiveProcessPDBFile-Error: Unable to open file >> '/path/to/my/files/compstatin.pdb_14'. >> >> >> in the traceback. Yes, the file is in the same directory as the pdb file and >> the script. Again if in the script I put names of files I want to open in >> the 'linie' list manually rather then make it read in from a file, then it >> works fine. Puzzling. >> >> >> Thanks, >> Matt >> >> >> >> On Tue, Nov 10, 2009 at 4:51 PM, Tsjerk Wassenaar <ts...@gm...> wrote: >>> >>> Hi Mateusz, >>> >>> The first guess would be that you're not in the right directory, since >>> Pymol can't find the file. That seems a bit awkward, as I guess >>> they're in the same directory as "converged.nam", or aren't they? To >>> see what is in the directory, you can call cmd.ls() at the start of >>> the script. For what it's worth, the script is syntactically correct, >>> although it could be written a bit more neatly ;) >>> >>> Hope it helps, >>> >>> Tsjerk >>> >>> On Tue, Nov 10, 2009 at 5:08 PM, Mateusz Maciejewski >>> <s06...@sm...> wrote: >>> > Hello, >>> > >>> > I'm writing a script in Python to be executed in PyMOL. Unfortunately I >>> > got >>> > stuck right at the beginning, when I'm trying to load .pdb's from >>> > "converged.nam" file. The relevant bit of the script is the following: >>> > >>> > >>> > from pymol.cgo import * >>> > from pymol import cmd >>> > >>> > loadedStuff=open("converged.nam", 'r') >>> > linie = loadedStuff.readlines() >>> > for n in range(len(linie)): linie[n] = linie[n][:-1] >>> > for n in range(len(linie)): print n, linie[n] >>> > for n in linie: cmd.load(n,n) >>> > >>> > >>> > >>> > Unfortunately, it is not working - I keep on getting: >>> > >>> > >>> > >>> > 0 compstatin.pdb_14 >>> > 1 compstatin.pdb_72 >>> > 2 compstatin.pdb_91 >>> > 3 compstatin.pdb_93 >>> > 4 compstatin.pdb_78 >>> > 5 compstatin.pdb_34 >>> > 6 compstatin.pdb_32 >>> > 7 compstatin.pdb_7 >>> > 8 compstatin.pdb_47 >>> > 9 compstatin.pdb_31 >>> > 10 compstatin.pdb_5 >>> > ExecutiveProcessPDBFile-Error: Unable to open file 'compstatin.pdb_14'. >>> > Traceback (most recent call last): >>> > File "/usr/local/pymol/modules/pymol/parsing.py", line 407, in >>> > run_file >>> > execfile(file,global_ns,local_ns) >>> > File "align.py", line 8, in ? >>> > for n in linie: cmd.load(n,n) >>> > File "/usr/local/pymol/modules/pymol/importing.py", line 575, in load >>> > if _raising(r): raise pymol.CmdException >>> > CmdException: <pymol.CmdException instance at 0x56fdc6cc> >>> > >>> > >>> > >>> > When I manually form a list containing all the compstatin entries than >>> > it is >>> > working, so it must be something with how it processes the list which it >>> > gets from the file. I can't really understand why that is so, especially >>> > given how it correctly pronts out the content of the list that captures >>> > the >>> > content of the file. I am obviously making some silly mistake here... >>> > any >>> > suggestions? >>> > >>> > Thank you, >>> > Mateusz Maciejewski >>> > >>> > ---------------------------------------------- >>> > >>> > >>> > >>> > Mateusz Maciejewski, >>> > University of Edinburgh >>> > Joseph Black Chemistry Bldg, West Mains Rd., >>> > Edinburgh EH9 3JJ, U.K. >>> > Phone (44) (0) 131 650 4704 (group office) >>> > >>> > >>> > ------------------------------------------------------------------------------ >>> > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 >>> > 30-Day >>> > trial. Simplify your report design, integration and deployment - and >>> > focus >>> > on >>> > what you do best, core application coding. Discover what's new with >>> > Crystal Reports now. http://p.sf.net/sfu/bobj-july >>> > _______________________________________________ >>> > PyMOL-users mailing list (PyM...@li...) >>> > Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users >>> > Archives: http://www.mail-archive.com/pym...@li... >>> > >>> >>> >>> >>> -- >>> Tsjerk A. Wassenaar, Ph.D. >>> >>> Computational Chemist >>> Medicinal Chemist >>> Neuropharmacologist >>> >> >> > > > > -- > Tsjerk A. Wassenaar, Ph.D. > > Computational Chemist > Medicinal Chemist > Neuropharmacologist > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > PyMOL-users mailing list (PyM...@li...) > Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users > Archives: http://www.mail-archive.com/pym...@li... > |
From: Mateusz M. <s06...@sm...> - 2009-11-11 01:01:24
|
Tsjerk, I substituted the .strip() method into my version instead of the [:-1] which was originally meant to discard tailing \n in the entries in "converge.nam". This seemingly identical approach worked! Guess I had more whitespace than I thought? Oh well... Thank you very much! Matt On Tue, Nov 10, 2009 at 6:08 PM, Tsjerk Wassenaar <ts...@gm...> wrote: > Hi Matt, > > Well, then you're in for some nasty debugging. That will probably end > with you slapping yourself against the head, as I've done plenty ofc > times on such occasions. I tried the same things using the same sort > of code you posted, and it worked for me. Of course, I'd rather do > something like: > > L = [ i.strip() for i in open("files.nam").readlines() if i.strip() ] > for i in L: cmd.load( i, i ) > > But those are details really. > You may want to print the list of filenames right after reading them > in, and again after changing the entries. That may give a clue of what > goes wrong. > > Cheers, > > Tsjerk > > On Tue, Nov 10, 2009 at 6:05 PM, Mateusz Maciejewski > <s06...@sm...> wrote: > > Dear Tsjerk, > > > > I actually also tried using full paths in the script, as in > > > > > > for n in range(len(linie)): linie[n] = ["/path/to/my/files/" + > > linie[n][:-1]] > > > > > > Then in the PyMOL interpreter/ log window I was getting > > > > > > ExecutiveProcessPDBFile-Error: Unable to open file > > '/path/to/my/files/compstatin.pdb_14'. > > > > > > in the traceback. Yes, the file is in the same directory as the pdb file > and > > the script. Again if in the script I put names of files I want to open in > > the 'linie' list manually rather then make it read in from a file, then > it > > works fine. Puzzling. > > > > > > Thanks, > > Matt > > > > > > > > On Tue, Nov 10, 2009 at 4:51 PM, Tsjerk Wassenaar <ts...@gm...> > wrote: > >> > >> Hi Mateusz, > >> > >> The first guess would be that you're not in the right directory, since > >> Pymol can't find the file. That seems a bit awkward, as I guess > >> they're in the same directory as "converged.nam", or aren't they? To > >> see what is in the directory, you can call cmd.ls() at the start of > >> the script. For what it's worth, the script is syntactically correct, > >> although it could be written a bit more neatly ;) > >> > >> Hope it helps, > >> > >> Tsjerk > >> > >> On Tue, Nov 10, 2009 at 5:08 PM, Mateusz Maciejewski > >> <s06...@sm...> wrote: > >> > Hello, > >> > > >> > I'm writing a script in Python to be executed in PyMOL. Unfortunately > I > >> > got > >> > stuck right at the beginning, when I'm trying to load .pdb's from > >> > "converged.nam" file. The relevant bit of the script is the following: > >> > > >> > > >> > from pymol.cgo import * > >> > from pymol import cmd > >> > > >> > loadedStuff=open("converged.nam", 'r') > >> > linie = loadedStuff.readlines() > >> > for n in range(len(linie)): linie[n] = linie[n][:-1] > >> > for n in range(len(linie)): print n, linie[n] > >> > for n in linie: cmd.load(n,n) > >> > > >> > > >> > > >> > Unfortunately, it is not working - I keep on getting: > >> > > >> > > >> > > >> > 0 compstatin.pdb_14 > >> > 1 compstatin.pdb_72 > >> > 2 compstatin.pdb_91 > >> > 3 compstatin.pdb_93 > >> > 4 compstatin.pdb_78 > >> > 5 compstatin.pdb_34 > >> > 6 compstatin.pdb_32 > >> > 7 compstatin.pdb_7 > >> > 8 compstatin.pdb_47 > >> > 9 compstatin.pdb_31 > >> > 10 compstatin.pdb_5 > >> > ExecutiveProcessPDBFile-Error: Unable to open file > 'compstatin.pdb_14'. > >> > Traceback (most recent call last): > >> > File "/usr/local/pymol/modules/pymol/parsing.py", line 407, in > >> > run_file > >> > execfile(file,global_ns,local_ns) > >> > File "align.py", line 8, in ? > >> > for n in linie: cmd.load(n,n) > >> > File "/usr/local/pymol/modules/pymol/importing.py", line 575, in > load > >> > if _raising(r): raise pymol.CmdException > >> > CmdException: <pymol.CmdException instance at 0x56fdc6cc> > >> > > >> > > >> > > >> > When I manually form a list containing all the compstatin entries than > >> > it is > >> > working, so it must be something with how it processes the list which > it > >> > gets from the file. I can't really understand why that is so, > especially > >> > given how it correctly pronts out the content of the list that > captures > >> > the > >> > content of the file. I am obviously making some silly mistake here... > >> > any > >> > suggestions? > >> > > >> > Thank you, > >> > Mateusz Maciejewski > >> > > >> > ---------------------------------------------- > >> > > >> > > >> > > >> > Mateusz Maciejewski, > >> > University of Edinburgh > >> > Joseph Black Chemistry Bldg, West Mains Rd., > >> > Edinburgh EH9 3JJ, U.K. > >> > Phone (44) (0) 131 650 4704 (group office) > >> > > >> > > >> > > ------------------------------------------------------------------------------ > >> > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 > >> > 30-Day > >> > trial. Simplify your report design, integration and deployment - and > >> > focus > >> > on > >> > what you do best, core application coding. Discover what's new with > >> > Crystal Reports now. http://p.sf.net/sfu/bobj-july > >> > _______________________________________________ > >> > PyMOL-users mailing list (PyM...@li...) > >> > Info Page: https://lists.sourceforge.net/lists/listinfo/pymol-users > >> > Archives: > http://www.mail-archive.com/pym...@li... > >> > > >> > >> > >> > >> -- > >> Tsjerk A. Wassenaar, Ph.D. > >> > >> Computational Chemist > >> Medicinal Chemist > >> Neuropharmacologist > >> > > > > > > > > -- > Tsjerk A. Wassenaar, Ph.D. > > Computational Chemist > Medicinal Chemist > Neuropharmacologist > > |