
Hi Eric I now have a new challenge. My files are in several folders as shown below: . ├── 8_C_pol │ ├── 247_CnA1_pol_frag_1_conf_36_out_01.pdb │ ├── 247_CnA1_pol_frag_1_conf_62_out_07.pdb │ └── HLA_5w6a_model_4.pdb └── 94_C_vif ├── 247_CnA1_pol_frag_1_conf_36_out_01.pdb ├── 247_CnA1_pol_frag_1_conf_62_out_07.pdb └── HLA_5w6a_model_4.pdb I would like to iterate through the folders and execute the commands with the original script below (only works inside one folder): 1 import chimera 2 import os 3 import glob 4 5 from chimera import runCommand as rc # use 'rc' as shorthand for runCommand 6 from chimera import replyobj # for emitting status messages 7 8 # change to folder with data files 9 os.chdir("/Volumes/Sammy/Grants/H3Africa/CAfGEN/CAfGEN_PhD_Work/Allele_mechanisms/Mini_ligands_All/Auto_chimera”) 10 11 # absolute path to search all .pdb files of ligands 12 path = r'*out*.pdb' 13 files = glob.glob(path) 14 print(files) 15 16 file_names = files 17 18 for files in file_names: 19 my_mod=chimera.openModels.open('./HLA_5w6a_model_4.pdb',type="PDB") 20 replyobj.status("Processing " + files) 21 rc("open " + files) 22 rc("addh") 23 hbonds_output = files[:-4] + "hbonds.txt" # change ".pdb" to "hbonds.txt" 24 rc("findhbond intermodel true intramodel false relax false reveal true saveFile " + hbonds_output) 25 rc("close all") 26 # uncommenting the line below will cause Chimera to exit when the script is done 27 rc("stop now") But I have tried the following modification but it returns errors. 1 import chimera 2 import os 3 import glob 4 5 from chimera import runCommand as rc # use 'rc' as shorthand for runCommand 6 from chimera import replyobj # for emitting status messages 7 8 rootdir = '/Volumes/Sammy/Grants/H3Africa/CAfGEN/CAfGEN_PhD_Work/Allele_mechanisms/Mini_ligands_All/Auto_chimera/try/' 9 for subdir, dirs, files in os.walk(rootdir): 10 12 for file in files: 13 print os.path.join(file) 14 15 path = r'*out*.pdb' 16 glob.glob('*out*.pdb') 17 print(file) 18 19 my_mod=chimera.openModels.open('./HLA_5w6a_model_4.pdb',type="PDB") 20 replyobj.status("Processing " + file) 21 rc("open " + file) 22 rc("addh") 23 hbonds_output = files[:-4] + "hbonds.txt" # change ".pdb" to "hbonds.txt" 24 rc("findhbond intermodel true intramodel false relax false reveal true saveFile " + hbonds_output) 25 rc("close all”) 26 27 # uncommenting the line below will cause Chimera to exit when the script is done 28 rc("stop now") After hours of trying various options on stack overflow, I have to turn to your expert help. Thank you Samuel
On 15 Apr 2022, at 17:03, Eric Pettersen <pett@cgl.ucsf.edu> wrote:
You need a space between saveFile and the quote that follows it.
On Apr 15, 2022, at 6:39 AM, Samuel Kyobe <samuelkyobe@gmail.com> wrote:
Hi Eric
I have modified the code:
hbonds_output = files[:-4] + "hbonds.txt" # change ".pdb" to "hbonds.txt" rc("findhbond intermodel true intramodel false relax false reveal true saveFile" + hbonds_output)
But, the code returns the error below:
File "/private/var/folders/y2/p069gv9n6lsf1x8w08bym32w0000gn/T/AppTranslocation/AF4918BD-D759-418D-AA97-756E6B1D941C/d/Chimera.app/Contents/Resources/share/Midas/midas_text.py", line 3396, in _parseTyped % typed MidasError: No value provided for keyword 'saveFile247_CnA1_pol_frag_1_conf_36_out_01hbonds.txt'
Not sure what could be causing the error.
Thank you
Samuel
On 15 Apr 2022, at 04:02, Eric Pettersen <pett@cgl.ucsf.edu> wrote:
Hi Samuel, You know the ligand file name, so you could just modify that to make a corresponding unique output file name. So between lines 22 and 23 you could do:
hbonds_output = files[:-4] + “.hbonds.txt” # change “.pdb” to “.hbonds.txt”
and your findhbond command would be rc("findhbond intermodel true intramodel false relax false reveal true saveFile “ + hbonds_output)
—Eric
On Apr 14, 2022, at 6:10 AM, Samuel Kyobe via Chimera-users <chimera-users@cgl.ucsf.edu> wrote:
Hi Elaine
Thank you so much for your responses. I have modified the recommended example as seen below:
1 import chimera 2 import os 3 import glob 4 5 from chimera import runCommand as rc 6 from chimera import replyobj 7 8 # change to folder with data files 9 os.chdir("/Volumes/Auto_chimera") 10 11 # absolute path to search all .pdb files of ligands 12 path = r'./*_out_*.pdb’ # several files with output name specified as *_out_*.pdb 13 files = glob.glob(path) 14 print(files) 15 16 file_names = files 17 18 for files in file_names: 19 my_mod=chimera.openModels.open('./HLA_5w6a_model_4.pdb',type="PDB") 20 replyobj.status("Processing " + files) 21 rc("open " + files) 22 rc("addh") 23 rc("findhbond intermodel true intramodel false relax false reveal true saveFile") 24 rc("close all") 25 rc("stop now”)
My current challenge is how to save the different resultant files with unique file_names (line 25).
Is there an alternative way I can call the files names after saveFile (line 25)? Your example doesn’t not work with my modified code.
Thank you
Samuel
On 13 Apr 2022, at 19:04, Elaine Meng <meng@cgl.ucsf.edu> wrote:
Hi Samuel, Although the first link I sent you shows Chimera commands, the second link shows how to put those commands together with Python for looping. Elaine
On Apr 13, 2022, at 9:00 AM, Samuel Kyobe via Chimera-users <chimera-users@cgl.ucsf.edu> wrote:
Dear Elaine
The challenge I have is that the Command Index is not written for Python which I would prefer to use for looping in several files.
I am using only Chimera I have no access to ChimeraX.
Thank you
Samuel
_______________________________________________ Chimera-users mailing list: Chimera-users@cgl.ucsf.edu Manage subscription: https://www.rbvi.ucsf.edu/mailman/listinfo/chimera-users