1. Scripts used to create and manage AutodockApp
Contents
The are here for reference purposes, the original and the subsequent versions can be found in this git repository.
1.1. dock-pre.sh
cat << EOFPRE > dock-pre.sh #!/bin/bash set -e origDir=$(pwd) # Specify ligand set file name. RECEPTOR=receptor if [ ! -r $RECEPTOR.pdbqt -o ! -r $RECEPTOR.gpf ]; then echo Receptor files could not be found!!! exit -1 fi echo Preparing the receptor... echo autogrid4 -p $RECEPTOR.gpf -l $RECEPTOR.glg autogrid4 -p $RECEPTOR.gpf -l $RECEPTOR.glg echo "Done." if [ -z "$LIGANDS" ]; then LIGANDS=ligands fi if [ ! -r "$LIGANDS.mol2" ]; then echo "Expected the file '$LIGANDS.mol2' to be located in current directory. This was not found and I don't know what to spilt." exit -1 fi mkdir $LIGANDS echo "Preparing atomic coordinates of the ligands..." cd $LIGANDS csplit -ftmp -n4 -ks - '%^@.TRIPOS.MOLECULE%' '/^@.TRIPOS.MOLECULE/' '{*}' < $origDir/ligands.mol2 for f in * do entryName=$(grep ZINC $f) if [ -z "$entryName" ]; then continue else mv -v $f $entryName.mol2 fi done pythonPath=/usr/share/pyshared # Prepare each ligand file for docking with AutoDock. echo "Preparing ligands for docking..." for f in *.mol2; do echo $f if [ -r $(echo $f|sed -e 's/.mol2$/.pdbqt/') ]; then continue; fi python $pythonPath/AutoDockTools/Utilities24/prepare_ligand4.py -l $f done if [ ! -r "$RECEPTOR.pdbqt" ]; then echo "Linking ../$RECEPTOR.pdbqt to local directory" ln -f ../$RECEPTOR.pdbqt . ln -f ../$RECEPTOR.maps.* . ln -f ../$RECEPTOR.*.map . fi echo Starting the preparation of docking parameter files. for f in *.pdbqt; do base=$(basename $f .pdbqt) if [ "$base" = "$RECEPTOR" ]; then echo Test continue fi echo "Preparing dpf for $base against $RECEPTOR" python $pythonPath/AutoDockTools/Utilities24/prepare_dpf4.py -l "$base.pdbqt" -r "$RECEPTOR.pdbqt" \ -p ga_num_evals=1000000 \ -p ga_pop_size=100 \ -p ga_run=30 done echo "Done." echo "Find the ligand files in the $origDir/ligands subdirectory." echo echo "You can now create work units for BOINC." exit 0 EOFPRE
1.2. Workunit Template
cat <<EOFTEMP > wu_template.xml <file_info> <number>0</number> <sticky/> <nodelete/> </file_info> <file_info> <number>1</number> <sticky/> <nodelete/> </file_info> <file_info> <number>2</number> <sticky/> <nodelete/> </file_info> <file_info> <number>3</number> <sticky/> <nodelete/> </file_info> <file_info> <number>4</number> <sticky/> <nodelete/> </file_info> <file_info> <number>5</number> <sticky/> <nodelete/> </file_info> <file_info> <number>6</number> <sticky/> <nodelete/> </file_info> <file_info> <number>7</number> <sticky/> <nodelete/> </file_info> <file_info> <number>8</number> <sticky/> <nodelete/> </file_info> <file_info> <number>9</number> <sticky/> <nodelete/> </file_info> <file_info> <number>10</number> <sticky/> <nodelete/> </file_info> <file_info> <number>11</number> <sticky/> <nodelete/> </file_info> <file_info> <number>12</number> </file_info> <file_info> <number>13</number> </file_info> <workunit> <file_ref> <file_number>0</file_number> <open_name>receptor.A.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>1</file_number> <open_name>receptor.C.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>2</file_number> <open_name>receptor.d.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>3</file_number> <open_name>receptor.e.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>4</file_number> <open_name>receptor.HD.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>5</file_number> <open_name>receptor.maps.fld</open_name> <copy_file/> </file_ref> <file_ref> <file_number>6</file_number> <open_name>receptor.maps.xyz</open_name> <copy_file/> </file_ref> <file_ref> <file_number>7</file_number> <open_name>receptor.NA.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>8</file_number> <open_name>receptor.N.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>9</file_number> <open_name>receptor.OA.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>10</file_number> <open_name>receptor.pdbqt</open_name> <copy_file/> </file_ref> <file_ref> <file_number>11</file_number> <open_name>receptor.SA.map</open_name> <copy_file/> </file_ref> <file_ref> <file_number>12</file_number> <open_name>ligand.pdbqt</open_name> <copy_file/> </file_ref> <file_ref> <file_number>13</file_number> <open_name>ligand_receptor.dlg</open_name> <copy_file/> </file_ref> <command_line>-p ligand_receptor.dpf -l ligand.dlg</command_line> <rsc_fpops_bound>1.5e11</rsc_fpops_bound> <rsc_fpops_est>1.5e11</rsc_fpops_est> </workunit> EOFTEMP
1.3. Result Template
cat <<EOFTEMP > result_template.xml <file_info> <name><OUTFILE_0/></name> <generated_locally/> <upload_when_present/> <max_nbytes>5000000</max_nbytes> <url><UPLOAD_URL/></url> </file_info> <result> <file_ref> <file_name><OUTFILE_0/></file_name> <open_name>ligand.dlg</open_name> <copy_file/> </file_ref> </result> EOFTEMP
1.4. dock-genwu.sh
cat <<EOFGEN > dock-genwu.sh #!/bin/bash set -e origDir=$(pwd) # Define names. RECEPTOR=receptor if [ -z "$LIGANDS" ]; then LIGANDS=ligands fi generated=Generated # BOINC project details. projectRoot=/tmp app=wrapper temp_wu=templates/wrapper_wu.xml temp_res=template/wrapper_res.xml downStage=$projectRoot/downloads # USAGE if [ -z $1 ]; then cat <<EOF Usage: dock-genwu.sh number-of-wu-needed EOF exit -1 fi cd $LIGANDS mkdir -p $generated # Add receptor files to the staging area. if [ ! -d $downStage ]; then mkdir $downStage fi cp $RECEPTOR.pdbqt $RECEPTOR.maps.* $RECEPTOR.*.map $downStage # Copy files for each ligand and generate corresponfing workunit. count=0 for pf in *.dpf; do if [[ $count -lt $1 ]]; then base=${pf%%_*} cp $base.pdbqt $pf $downStage cd $projectRoot ./bin/create_work --appname $app --wu_name $base --wu_template $temp_wu \ --result_template $temp_res $RECEPTOR.A.map $RECEPTOR.C.map $RECEPTOR.d.map $RECEPTOR.e.map $RECEPTOR.maps.fld \ $RECEPTOR.maps.xyz $RECEPTOR.NA.map $RECEPTOR.N.map $RECEPTOR.OA.map $RECEPTOR.pdbqt $RECEPTOR.SA.map \ $base.pdbqt ${base}_${RECEPTOR}.dpf cd $orgDir mv $base* $generated rm $downStage/$base* let count=$count+1 else echo Specified number of workunits generated!! fi done echo "Creation of work units completed." exit 0