#!/bin/sh # runcheck_p - for testing of the parallel version of MEME. # # $Id: runcheck 1537 2007-01-12 21:48:56Z cegrant $ # set meme environment top=`pwd`/.. MEME_DIRECTORY="$top" export MEME_DIRECTORY if [ ! $testdir ] ; then testdir=$top/tests fi meme=$top/src/parallel/meme_p echo "****************************************" echo "Now Running Test for Parallel Version..." echo "****************************************" echo if [ ! -x $meme ] ; then echo "$meme does not exist or is not executable" echo "Run 'make' before running 'make check'" exit 1 fi #################################################################### # define functions #################################################################### # run meme tests func_run_meme () { meme="/usr/bin/mpirun -np 2 $meme " echo "" echo " Meme test for " echo " ---------------------------------" echo " Dataset Model result " echo " ---------------------------------" for mod in $models do memefile=meme/meme.$dset.$mod$suffix $meme $pargs $dir/common/$dset.s -mod $mod $params > $dirout/$memefile func_diff $memefile "meme" done } # remove lines specified by regexpr from the file # takes a filename as an argument func_sed () { e1="/Release date/d" e2="/http:/d" e3="/MOTIFS/d" e4="/Time/d" e5="/CPU:/d" e6="/DATAFILE=/d" e7="/DATABASE/d" e8="/command: /d" e9="/Background letter frequencies/d" e10="/Last updated/d" e11="/MPI/d" e12="/^$/d" sed -e "$e1" -e "$e2" -e "$e3" -e "$e4" -e "$e5" -e "$e6" -e "$e7" \ -e "$e8" -e "$e9" -e "$e10" -e "$e11" -e "$e12" $1 > $1.sed } # checks two files for differences. Arguments - a filename # and a string containing dataset and model info to print. func_diff () { f1=$dir/$1 # first file f2=$dirout/$1 # second file # string to print str=`echo $dset $mod | awk '{printf(" %-16s%-8s ",$1,$2)}'` if [ ! -f $f1 ]; then echo "File $f1 does not exist, can't compare output" echo "$str" "SKIPPED" return fi if [ ! -f $f2 ]; then echo "File $f2 does not exist, can't compare output" echo "$str" "SKIPPED" return fi func_sed $f1 func_sed $f2 num=`diff $f1.sed $f2.sed | wc -l` status=$? if [ $status -eq 0 -a $num -eq 0 ]; then echo "$str" "OK" else echo "$str" "FAIL" err=1 fi return } # initializes tests parameters func_set () { dset="crp0" models="oops zoops tcm" params="-text -dna -revcomp -nostatus -nmotifs 2 -minw 8" dir=$top/tests dirout=$top/tests/results if [ ! -d $dirout/meme ]; then cmd=`mkdir -p $dirout/meme` status=$? if [ $status -eq 1 ] ; then exit 1 fi fi err=0 } # removes temp output files func_clean () { /bin/rm -rf $dir/*.sed $dirout if [ ! $err ] ; then /bin/rm -rf $dirout fi echo } #################################################################### # check command line arguments and run tests #################################################################### # check arguments while test $# -gt 0; do case "$1" in -p) shift procs=$1 pargs="-p $1" suffix=".$1" ;; esac shift done # run tests func_set func_run_meme func_clean exit $err