Difference between revisions of "Ligand preparation - 20170424"

From DISI
Jump to: navigation, search
Line 27: Line 27:
 
3.  
 
3.  
  
 +
the following is a wrapper script (wrapper_queue_build_smiles_ligand_corina.csh) which braeks up the smiles file and submits it to the queue.  This method gives the user more control over the "qsub-mr-meta" way although it is less polished.
 +
#! /bin/csh
 +
 +
# source enviorment.
 +
source ~tbalius/.cshrc_dbgen_corina
 +
 +
#set number_per_db2 = 1000
 +
#set number_per_db2 = 5
 +
set number_per_db2 = 10
 +
set ph = 7.4
 +
 +
set file = $1
 +
set fileprefix = ${file:r}
 +
 +
 +
set pwd = `pwd`
 +
set pathdir = $pwd
 +
set workdir = $pwd/${fileprefix}
 +
 +
echo ${workdir}
 +
echo ${file} ${fileprefix}
 +
 +
if (-e ${workdir}) then
 +
  echo "${workdir} exists"
 +
  exit
 +
endif
 +
 +
#exit
 +
#rm -rf ${workdir}
 +
mkdir ${workdir}
 +
cd ${workdir}
 +
 +
ln -s ../${file} .
 +
 +
echo "split --lines=$number_per_db2 --suffix-length=6  ${file} ${fileprefix}_split"
 +
 +
split --lines=$number_per_db2 --suffix-length=6  ${file} ${fileprefix}_split
 +
 +
 +
foreach splitfile ( ` ls ${fileprefix}_split* | grep -v db2.gz ` )
 +
echo ${splitfile}
 +
 +
# make sure that the link is pointing to something. 
 +
#set lsoutput = `ls -l sgejob_*/${splitfile}.db2.gz`
 +
#echo "WHAT:: $lsoutput"
 +
#if ("$lsoutput" == "") then
 +
#    rm ${splitfile}.db2.gz
 +
#endif
 +
 +
if (-e ${splitfile}.db2.gz) then
 +
    echo "${splitfile} has been submitted for generations."
 +
    continue
 +
endif
 +
 +
cat << EOF >! script_qsub_${splitfile}.csh
 +
#\$ -S /bin/csh
 +
#\$ -cwd
 +
#\$ -q all.q
 +
#\$ -o stdout_${splitfile}
 +
#\$ -e stderr_${splitfile}
 +
 +
# source enviorment.
 +
source ~tbalius/.cshrc_dbgen_corina
 +
 +
hostname
 +
date
 +
 +
set SCRATCH_DIR = /scratch
 +
if ! (-d \$SCRATCH_DIR ) then
 +
    SCRATCH_DIR=/tmp
 +
endif
 +
set username = `whoami`
 +
 +
set TASK_DIR = "\$SCRATCH_DIR/\${username}/\$JOB_ID"
 +
echo \$TASK_DIR
 +
 +
mkdir -p \${TASK_DIR}
 +
cd \${TASK_DIR}
 +
pwd
 +
 +
cp ${workdir}/${splitfile} .
 +
 +
# note that the pining script's inputs should not be in quotes ('' or "").
 +
/nfs/home/tbalius/zzz.github/DOCK/common/on-one-core - ${DOCKBASE}/ligand/generate/build_database_ligand.sh -H $ph ${splitfile}
 +
 +
cd ${workdir}
 +
mkdir sgejob_\${JOB_ID}_${splitfile}
 +
 +
echo copying
 +
ls -l \${TASK_DIR}/finished/*/*.db2.gz
 +
ls -l \${TASK_DIR}/finished/*/*.db.gz
 +
 +
# copy finshed directory
 +
mv \${TASK_DIR}/finished/ sgejob_\${JOB_ID}_${splitfile}
 +
rm -r \${TASK_DIR}
 +
 +
EOF
 +
 +
while ( `qstat -u tbalius | wc -l ` > 10 )
 +
  sleep 10
 +
end
 +
 +
 +
qsub script_qsub_${splitfile}.csh
 +
 +
#exit
 +
 +
end
  
  

Revision as of 10:09, 18 April 2017

3 ways to build ligands:

1. Source the environment and run the stand-alone script:

  source /nfs/soft/dock/versions/dock37/DOCK-3.7-trunk/env.sh
  sh $DOCKBASE/ligand/generate/build_database_ligand.sh mysmiles.smi


2. Source the environment and submit jobs:

  a. put these commands in cmd file:
     setenv DOCKBASE /nfs/soft/dock/versions/dock37/DOCK-3.7-trunk 
     setenv BUILD_ENVIRONMENT /nfs/soft/dock/versions/dock37/DOCK-3.7-trunk/env.sh
     /nfs/soft/tools/utils/qsub-slice/qsub-mr-meta -tc 10 -L 100000 --map-instance-script \
     "/nfs/scratch/A/xyz/protomer/qsub-mr-map.sh" -s $BUILD_ENVIRONMENT \
     -l 100 $1 $DOCKBASE/ligand/generate/build_database_ligand.sh
  b. run the script:
     csh cmd mysmiles.smi


3.

the following is a wrapper script (wrapper_queue_build_smiles_ligand_corina.csh) which braeks up the smiles file and submits it to the queue. This method gives the user more control over the "qsub-mr-meta" way although it is less polished.

#! /bin/csh

# source enviorment. 
source ~tbalius/.cshrc_dbgen_corina

#set number_per_db2 = 1000
#set number_per_db2 = 5
set number_per_db2 = 10
set ph = 7.4

set file = $1
set fileprefix = ${file:r}


set pwd = `pwd`
set pathdir = $pwd
set workdir = $pwd/${fileprefix}

echo ${workdir}
echo ${file} ${fileprefix}

if (-e ${workdir}) then
 echo "${workdir} exists"
 exit
endif

#exit
#rm -rf ${workdir}
mkdir ${workdir}
cd ${workdir}

ln -s ../${file} .

echo "split --lines=$number_per_db2 --suffix-length=6  ${file} ${fileprefix}_split"

split --lines=$number_per_db2 --suffix-length=6  ${file} ${fileprefix}_split


foreach splitfile ( ` ls ${fileprefix}_split* | grep -v db2.gz ` ) 
echo ${splitfile}

# make sure that the link is pointing to something.  
#set lsoutput = `ls -l sgejob_*/${splitfile}.db2.gz`
#echo "WHAT:: $lsoutput"
#if ("$lsoutput" == "") then
#    rm ${splitfile}.db2.gz
#endif

if (-e ${splitfile}.db2.gz) then
   echo "${splitfile} has been submitted for generations." 
   continue
endif 

cat << EOF >! script_qsub_${splitfile}.csh
#\$ -S /bin/csh
#\$ -cwd
#\$ -q all.q
#\$ -o stdout_${splitfile}
#\$ -e stderr_${splitfile}

# source enviorment. 
source ~tbalius/.cshrc_dbgen_corina

hostname
date

set SCRATCH_DIR = /scratch
if ! (-d \$SCRATCH_DIR ) then
    SCRATCH_DIR=/tmp
endif
set username = `whoami`

set TASK_DIR = "\$SCRATCH_DIR/\${username}/\$JOB_ID"
echo \$TASK_DIR

mkdir -p \${TASK_DIR}
cd \${TASK_DIR}
pwd

cp ${workdir}/${splitfile} .

# note that the pining script's inputs should not be in quotes ( or "").
/nfs/home/tbalius/zzz.github/DOCK/common/on-one-core - ${DOCKBASE}/ligand/generate/build_database_ligand.sh -H $ph ${splitfile}

cd ${workdir}
mkdir sgejob_\${JOB_ID}_${splitfile}

echo copying
ls -l \${TASK_DIR}/finished/*/*.db2.gz
ls -l \${TASK_DIR}/finished/*/*.db.gz 

# copy finshed directory
mv \${TASK_DIR}/finished/ sgejob_\${JOB_ID}_${splitfile}
rm -r \${TASK_DIR}

EOF

while ( `qstat -u tbalius | wc -l ` > 10 )
  sleep 10
end


qsub script_qsub_${splitfile}.csh

#exit

end


set up environment: jchem mitools, DOCK3.7, ZINC, corina

source /nfs/soft/jchem/current/env.csh
source /nfs/soft/mitools/env.csh
source /nfs/soft/dock/versions/dock37/DOCK-3.7-trunk/env.csh
deactivate
source /nfs/soft/www/apps/zinc15/envs/edge/env.csh
source /nfs/soft/corina/current/env.csh
setenv EMBED_PROTOMERS_3D_EXE $DOCKBASE/ligand/3D/embed3d_corina.sh 
setenv ZINC_CONFIG_ENV admin
setenv ZINC_CONFIG_SETUP_SKIP blueprints 


step 2. csh cmd mysmiles.ism

# put any change in the BUILD_ENVIRONMENT
source /nfs/soft/dock/versions/dock37/DOCK-3.7-trunk/env.csh
source /nfs/soft/corina/current/env.csh
setenv EMBED_PROTOMERS_3D_EXE $DOCKBASE/ligand/3D/embed3d_corina.sh
setenv BUILD_ENVIRONMENT /nfs/home/xyz/bin/dockenvNS.sh
#
/nfs/soft/tools/utils/qsub-slice/qsub-mr-meta -tc 10 -L 100000 --map-instance-script \
"/nfs/scratch/A/xyz/protomer/qsub-mr-map.sh" -s $BUILD_ENVIRONMENT \
-l 300 $1 $DOCKBASE/ligand/generate/build_database_ligand.sh

If you have any trouble using this (which the procedure used to build ZINC between July 14, 2016 and Nov 14, 2016 (ongoing), please contact me. I would be happy to help debug, as it will help us to make this procedure more robust.