Question regarding Bash program


Login or Register to Reply

 
Thread Tools Search this Thread
# 1  
Question regarding Bash program

Hello All,

I am trying to write a small bash script to make my life easier for an analysis. I have multiple folders and inside them are 10 output files with an extension .pdbqt What I am trying to do is to read the folder content and then make a PyMol (.pml) file to load the molecules and then display it. When I close the PyMol, the script should go to the next folder and do the same thing again. Below I am pasting the code, any help is greatly appreciated Smilie
Code:
#!/bin/bash                                                                                                                                                                                   
for f in Frog-mol-ryan_*; do
    if [ -d "${f}" ]; then
        echo Loading structures in Pymol: $f
        
cat <<EOF >log.pml                                                                                                                                                                           
                                                                                                                                                                                              
load /server/John/Docking-Studies/docking-FC996-analog/MR1004/test/Frog-mol-ryan_*/out_Frog-ryan-mol_ligand_*.pdbqt                                                            
                                                                                                                                                                                              
reset                                                                                                                                                                                         
load /server/John/Docking-Studies/Insilico-mod-FC996/docking-FC996-analog/PDBs/Holo-with-Bpore.pdb                                                                                
cmd.hide("everything","holo-with-Bpore")                                                                                                                                                 
cmd.show("cartoon"   ,"holo-with-Bpore")                                                                                                                                                 
cmd.show("sticks", "out_Frog-mol-ryan_ligand_*.pdbqt")                                                                                                                                                   
EOF                                                                                                                                                                                           

/usr/bin/pymol log.pml
    fi
done

The output log.pml is:
Code:
load /server/John/Docking-Studies/Insilico-mod-FC996/docking-FC996-analog/MR1004/test/Frog-mol-ryan_*/out__ligand_*.pdbqt

reset
load /server/John/Docking-Studies/Insilico-mod-FC996/docking-FC996-analog/PDBs/Holo-with-Bpore.pdb
cmd.hide("everything","holo-with-Bpore")
cmd.show("cartoon"   ,"holo-with-Bpore")
cmd.show("sticks", "out__ligand_*.pdbqt")

I am not able to pass the argument in cat EOF section.

Kindly help
Thanks

Last edited by jim mcnamara; 10-05-2013 at 09:51 PM..
# 2  
You've passed hardcoded text, rather than the variable $f..
Code:
load /server/John/Docking-Studies/docking-FC996-analog/MR1004/test/Frog-mol-ryan_*/out_Frog-ryan-mol_ligand_*.pdbqt

becomes
Code:
load /server/John/Docking-Studies/Insilico-mod-FC996/docking-FC996-analog/MR1004/test/$f/out_$f*.pdbqt

Assuming the "out_Frog_ryan_mol" was a typo and should have been "out_Frog_mol_ryan"...

Hope this helps

Last edited by Don Cragun; 10-06-2013 at 02:17 AM.. Reason: Change ICODE tags to CODE tags for pathnames that should not be split into multiple lines
# 3  
Hello sea,
Thank you for your help. One small problem, the output files are named out_Frog-mol-ryan_ligand_05.pdbqt so if I set as "$f/out_$f*.pdbqt" its not able to find the files.
Kindly suggest.

Thanks
# 4  
Oh the assumption was wrong Smilie

This should do the trick then:
load /server/John/Docking-Studies/Insilico-mod-FC996/docking-FC996-analog/MR1004/test/$f/out_Frog-mol-ryan_ligand_*.pdbq
# 5  
Thanks sea,
Sorry to disturb you so much.
"out_Frog-mol-ryan_ligand_*.pdbq" is not getting translated in the log.pml file so the visualizer is not able to understand the "*" explicitly.

Let me explain the structure of directories. I have 100 folders named "Frog-mol-ryan_1, Frog-mol-ryan_2, Frog-mol-ryan_3 ... and so on till out_Frog-ryan-mol_ligand_100. Now each folder has 20 output files named "out_Frog-ryan-mol_ligand_1.pdbqt, out_Frog-ryan-mol_ligand_2.pdbqt .... and so on till out_Frog-ryan-mol_ligand_20.pdbqt". What I am trying to do is to make a bash script file which will go inside each folder (Frog-ryan-mol_1), grab all the "out_*.pdbqt" files and write a log.pml file with instructions to load all the molecules in the PyMol. Now after loading the molecules in PyMol, when I close the PyMol window the script will go to the next folder (Frog-ryan-mol_2) and do the same thing as the previous one.

Thank you so much for your time and patience Smilie
# 6  
Can you show us how should a single log.pml look like for a single directory?
# 7  
cat <<EOF >log.pml

load /server/John/Docking-Studies/docking-FC996-analog/MR1004/test/Frog-mol-ryan_*/out_Frog-ryan-mol_ligand_*.pdbqt

reset
load /server/John/Docking-Studies/Insilico-mod-FC996/docking-FC996-analog/PDBs/Holo-with-Bpore.pdb
cmd.hide("everything","holo-with-Bpore")
cmd.show("cartoon" ,"holo-with-Bpore")
cmd.show("sticks", "out_Frog-mol-ryan_ligand_*.pdbqt")
EOF

/usr/bin/pymol log.pml
Login or Register to Reply

|
Thread Tools Search this Thread
Search this Thread:
Advanced Search

More UNIX and Linux Forum Topics You Might Find Helpful
Bash Scripting program
rami-ali
#! /bin/bash # program to creat a backup copy for every deleted file or dierctores mv -t /home/$USER/.local/share/Trash/files $1 rsync -a /home/$USER/.local/share/Trash/files /usr/share/trash didn't work... Homework & Coursework Questions
2
Homework & Coursework Questions
Kill a program from bash
arpagon
to kill a program in bash, for instance 'mousepad' I use kill $(pidof mousepad); or pkill mousepad But it only works if we use another bash window; If it is started from the same bash, that does not work: #mousepad;kill $(pidof mousepad); In this case, it looks like mousepad hangs...... UNIX for Dummies Questions & Answers
7
UNIX for Dummies Questions & Answers
Program Bash VERY URGENT
danihj
Hello I have to do a program in Bash, need help because it does not go out for me and go enough time with this!! Five directories(boards of directors) that more occupy, arranged according to size. To measure the size of every directory(board of directors) there must not be included the size...... Shell Programming and Scripting
1
Shell Programming and Scripting
PROGRAM BASH
danihj
Hola tengo que hacer un programa en Bash, necesito ayuda porque no me sale y llevo bastante tiempo con esto!! Los cinco directorios que más ocupan, ordenados según tamaño. Para medir el tamaño de cada directorio no debe incluirse el tamaño de sus subdirectorios. Los diez archivos normales que más...... Shell Programming and Scripting
1
Shell Programming and Scripting
[bash] Run a program many times
Dedalus
Hi I'm running a program many times with differents input. I mean that i run my_prog with some parameters and i wait till the end, then i start again another simulations with some others differents parameters. Is possible to make it automatic with a script bash. Maybe i need some...... Shell Programming and Scripting
2
Shell Programming and Scripting