Fix typo
[pkg-boinc/scripts.git] / server-examples / autodock / dock-pre.sh
1 #!/bin/bash
2
3 # The code to run at server, prepares ligands for work
4 # generator.
5
6 # Created by Dhananjay M Balan <dbalan at acm dot org>
7 # Based on Tomas Malinauskas' docker.sh 
8 # Website: http://users.ox.ac.uk/~jesu1458/docker/
9 #
10 # The woring directory should contain ligands.mol2, receptor.gpf, receptor.pdbqt files. 
11 # This script splits them into a file for each ligand which is stored in the 
12 # ligands/ subdirectory. The work-gen script should be run from here to genearate a workunit for each ligand.
13
14 set -e
15 origDir=$(pwd)
16 # Specify ligand set file name.
17
18 RECEPTOR=receptor
19
20 if [ ! -r $RECEPTOR.pdbqt -o ! -r $RECEPTOR.gpf ]; then
21     echo Receptor files could not be found!!!
22     exit -1
23 fi
24
25 echo Preparing the receptor...
26
27 echo autogrid4 -p $RECEPTOR.gpf -l $RECEPTOR.glg
28 autogrid4 -p $RECEPTOR.gpf -l $RECEPTOR.glg
29
30 echo "Done."
31
32
33 if [ -z "$LIGANDS" ]; then
34     LIGANDS=ligands
35 fi
36
37 if [ ! -r "$LIGANDS.mol2" ]; then
38         echo "Expected the file '$LIGANDS.mol2' to be located in current directory. This was not found and I don't know what to spilt."
39         exit -1
40 fi
41
42 mkdir $LIGANDS
43
44 echo "Preparing atomic coordinates of the ligands..." 
45 cd $LIGANDS
46
47 csplit -ftmp -n4 -ks - '%^@.TRIPOS.MOLECULE%' '/^@.TRIPOS.MOLECULE/' '{*}' < $origDir/ligands.mol2
48
49 for f in *
50 do
51         entryName=$(grep ZINC $f)
52         if [ -z "$entryName" ]; then
53                 continue
54         else
55                 mv -v $f $entryName.mol2
56         fi
57 done
58
59 pythonPath=/usr/share/pyshared
60 # Prepare each ligand file for docking with AutoDock.
61 echo "Preparing ligands for docking..."
62 for f in *.mol2; do
63         echo $f
64         if [ -r $(echo $f|sed -e 's/.mol2$/.pdbqt/') ]; then continue; fi
65         python $pythonPath/AutoDockTools/Utilities24/prepare_ligand4.py -l $f
66 done
67
68
69 if [ ! -r "$RECEPTOR.pdbqt" ]; then
70         echo "Linking ../$RECEPTOR.pdbqt to local directory"
71         ln -f ../$RECEPTOR.pdbqt .
72         ln -f ../$RECEPTOR.maps.* .
73         ln -f ../$RECEPTOR.*.map .
74 fi
75
76 echo Starting the preparation of docking parameter files.
77 for f in *.pdbqt; do
78     base=$(basename $f .pdbqt)
79     
80     if [ "$base" = "$RECEPTOR" ]; then 
81         echo Test
82         continue
83     fi
84         
85     echo "Preparing dpf for $base against $RECEPTOR"
86     
87     python $pythonPath/AutoDockTools/Utilities24/prepare_dpf4.py -l "$base.pdbqt" -r "$RECEPTOR.pdbqt" \
88             -p ga_num_evals=1000000 \
89             -p ga_pop_size=100 \
90             -p ga_run=30
91
92 done
93
94
95 echo "Done."
96 echo "Find the ligand files in the $origDir/ligands subdirectory."
97 echo 
98 echo "You can now create work units for BOINC."
99
100 exit 0
101