#!/bin/sh # # gaddwicc - Bourne shell script for running GA-based Druglike Database program # # Michael A. Kappler # 25 Jan 2002 # # Usage: gadd.sh [ -clean [ -name ] ] [ GADD options ] # Options: # -clean destroy previous Thor database only # -name set CFRAG, FRAG, and database basename # # All other options are passed to the GADD program. # See gadd.c for details on its options. # # Execute 'GoMedchem00' to make SMILES for input into GADD # Execute 'GoCombiChem' after 'GoMedchem00' to make SMILES for input into GADD # with combinatorial chemistry options (-combichem, -exhaustive) # Usage if [ "_$1" = '_-help' ]; then printf "Usage: $0 [ -clean ] [ -name ] [ -align ] [ GADD options ]\n" printf "Options:\n" printf "\t-clean \t\tdestroy previous Thor database only\n" printf "\t-name \tset CFRAG, FRAG, and database basename\n" printf "\nAll other options are passed to the GADD program.\n" printf "See gadd.c for details on its options.\n" exit 0 fi # PATH to Thor database # database name # database password # machine name # user name # password DY_THORDB=/usr/local/daylight/thordb DB=gadd_demo DB_PW= HOST=localhost USER=thor USER_PW= # use -clean to destory previous Thor database only if [ "_$1" = '_-clean' ]; then CLEAN=y; shift fi # use -name to override default database if [ "_$1" = '_-name' ]; then shift if [ $# -ne 0 ]; then DB=$1 shift else printf "$0: missing argument to $1\n" fi fi # use -align to orientate structures that have the same core if [ "_$1" = '_-align' ]; then ALIGN=y; shift fi # check arguments for GADD -combichem option ARGS="$*" while [ $# -ne 0 ] do if [ $1 = '-combichem' ]; then COMBICHEM=y elif [ $1 = '-silent' ]; then SILENT=y fi shift done run_command() { if [ "_$SILENT" = '_' ]; then echo $1 $1 else $1 > /dev/null 2>1 fi } # Thor server # Merlin server # datatypes TSERVER=thor MSERVER=merlin DBDATATYPES="$DB"_datatypes # release previous pool from Merlin DB_EXISTS=`merlinls -MERLIN_IPC_SERVICE $MSERVER | grep $DB` if [ "_$DB_EXISTS" != '_' ]; then OPTS='-LOAD_POOL RELEASE' DBSPEC="$DB%$DB_PW@$HOST:$MSERVER:$USER%$USER_PW" CMD="merlinload $OPTS $DBSPEC" run_command "$CMD" fi # destroy previous Thor database DB_EXISTS=`thorls -THOR_IPC_SERVICE $TSERVER | grep $DB` if [ "_$DB_EXISTS" != '_' ]; then OPTS='-ARE_YOU_SURE DONTASK' # database DBSPEC="$DY_THORDB/$DB%$DB_PW@$HOST:$TSERVER:$USER%$USER_PW" CMD="thordestroy $OPTS $DBSPEC" run_command "$CMD" # datatypes DBSPEC="$DY_THORDB/$DBDATATYPES%@$HOST:$TSERVER:$USER%$USER_PW" CMD="thordestroy $OPTS $DBSPEC" run_command "$CMD" elif [ "_$CLEAN" = '_y' ]; then printf "Thor database $DB doesn't exist\n" fi if [ "_$CLEAN" != '_' ]; then exit 0 fi # GADD parameters DBSPEC="$DB%$DB_PW@$HOST:$TSERVER:$USER%$USER_PW" OPTDB="-db $DBSPEC" OPTS= if [ "_$COMBICHEM" != '_' ]; then CFRAGS="$DB.cores" FRAGS="$DB.rgroups" else CFRAGS="$DB.cfrags" FRAGS="$DB.frags" fi DATA="-cfrags $CFRAGS -frags $FRAGS" # run GADD CMD="gadd $OPTDB $OPTS $DATA $ARGS" run_command "$CMD" # get return value GADD=$? # generate aligned 2D coordinates if [ "_$ALIGN" != '_' ]; then NULL=/dev/null SMI2MOL='smi2mol' MOLALIGN='molalign' MOL2SMI='mol2smi -output_format TDT -dont_quote_ditem' CORES=`cat $CFRAGS | awk '{ print $1 }' | sed s/'\*'/X/g` for CORE in $CORES do CORESMI=`echo $CORE | sed -e s/=X//g -e s/X=//g -e s/#X//g -e s/X#//g -e s/'\[1X\]'//g -e s/'\[2X\]'//g -e s/'\[3X\]'//g -e s/'\[4X\]'//g -e s/X//g -e s/'()'//g` CORE=`echo $CORE | sed s/X/'\*'/g` CMD="echo \"\\\$CORE<$CORE>|\" | thorlookup -INPUT_FORMAT TDT -OUTPUT_FORMAT SMI -RETRIEVE_ALL TRUE $DBSPEC | cut -d' ' -f1 | $SMI2MOL 2>$NULL | $MOLALIGN -s \"$CORESMI\" 2>$NULL | $MOL2SMI 2>$NULL | tdtcat -TDT_OUTPUT_FORMAT DUMP | thorload $DBSPEC" if [ "_$SILENT" = '_' ]; then echo "$CMD" fi echo "\$CORE<$CORE>|" | thorlookup -INPUT_FORMAT TDT -OUTPUT_FORMAT SMI -RETRIEVE_ALL TRUE $DBSPEC | cut -d' ' -f1 | $SMI2MOL 2>$NULL | $MOLALIGN -s \"$CORESMI\" 2>$NULL | $MOL2SMI 2>$NULL | tdtcat -TDT_OUTPUT_FORMAT DUMP | thorload $DBSPEC done fi # view results if molecule were created if [ $GADD -eq 0 ]; then # count TDTs CMD="thorlist $DB%$DB_PW@$HOST:$TSERVER:$USER%$USER_PW | tdtcount | cut -d' ' -f5" if [ "_$SILENT" = '_' ]; then echo $CMD fi TDTs=`thorlist $DB%$DB_PW@$HOST:$TSERVER:$USER%$USER_PW | tdtcat -TDT_OUTPUT_FORMAT DUMP | grep -v SMIG | tdtcount | cut -d' ' -f5` if [ $TDTs -le 1 ]; then # view with Thor CMD="thorlist $DB%$DB_PW@$HOST:$TSERVER:$USER%$USER_PW" run_command "$CMD" else # view with Merlin CMD="merlinload $DB%$DB_PW@$HOST:$MSERVER:$USER%$USER_PW" run_command "$CMD" OPTS="-MERLIN_COLS_MAXINIT 8 -MERLIN_DEPICT_2D_SMILES TRUE -MERLIN_VERBOSE_MESSAGES FALSE" # run_command "$CMD" CMD="xvmerlin $OPTS $DB%$DB_PW@$HOST:$MSERVER:$USER%$USER_PW -MERLIN_INIT_COLS '\$SMI CP HBA HBD ROT MOLWT HEAVY CHARGE'" if [ "_$SILENT" = '_' ]; then echo $CMD fi xvmerlin $OPTS $DB%$DB_PW@$HOST:$MSERVER:$USER%$USER_PW -MERLIN_INIT_COLS '$SMI CP HBA HBD ROT MOLWT HEAVY CHARGE' fi fi