[Debian Wiki] Update of "BOINC/ServerGuide/AutoDockApp/Scripts" by dhananjay
Debian Wiki
debian-www at lists.debian.org
Mon Aug 15 11:27:12 UTC 2011
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Debian Wiki" for change notification.
The "BOINC/ServerGuide/AutoDockApp/Scripts" page has been changed by dhananjay:
http://wiki.debian.org/BOINC/ServerGuide/AutoDockApp/Scripts
Comment:
Created page, content moverd from parent.
New page:
#language en
#pragma section-numbers 1
#pragma keywords BOINC, AutoDock, Debian, virtual screening, molecular docking
#pragma description Scripts for preparing a example docking app for a BOINC project using AutoDock.
= Scripts used to create and manage AutodockApp =
== 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
}}}
== 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
}}}
== 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
}}}
== 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
}}}
More information about the pkg-boinc-commits
mailing list