[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