1#! /bin/sh
2
3#
4#  template-test
5#
6#
7#  Part of TREE-PUZZLE 5.2 (July 2004)
8#
9#  (c) 2003-2004 by Heiko A. Schmidt, Korbinian Strimmer, and Arndt von Haeseler
10#  (c) 1999-2003 by Heiko A. Schmidt, Korbinian Strimmer,
11#                   M. Vingron, and Arndt von Haeseler
12#  (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler
13#
14#  All parts of the source except where indicated are distributed under
15#  the GNU public licence.  See http://www.opensource.org for details.
16#
17#  ($Id$)
18#
19
20fname=`echo $0 | sed 's/.*\///'`
21GENERATE=0
22TESTTYPE="Testing: "
23
24if test 0 -ne $#
25then
26   case "$1" in
27       -g*)
28           GENERATE=1
29           TESTTYPE="Generating: "
30           ;;
31       *)
32           echo "Usage: $fname [-g] "
33           echo
34           echo "  Test a TREE-PUZZLE scenario."
35           echo "  With -g no test is performed, but the "
36           echo "  template for a future test is created."
37           echo
38           exit 1
39           ;;
40   esac
41fi
42
43##########################################################################
44
45TEST_PREF=`echo $fname | sed s/\.test//`
46INUTREE=${TEST_PREF}.trees
47INCTREE=${TEST_PREF}.ctrees
48PARAMS=${TEST_PREF}.param
49# default
50DATA=nucl
51INFILE=${TEST_PREF}.${DATA}
52INFILESOURCE=../data/marswolf.n
53INUTREESOURCE=../data/marswolf.trees
54INCTREESOURCE=../data/marswolf.ctrees
55
56#
57# data type
58#
59case "$TEST_PREF" in
60   *-nucl)
61          TESTTYPE="${TESTTYPE}nucleotide data"
62          DATA=nucl
63          INFILE=${TEST_PREF}.${DATA}
64          INFILESOURCE=../data/marswolf.n
65          INUTREESOURCE=../data/marswolf.trees
66          INCTREESOURCE=../data/marswolf.ctrees
67          echo d > $PARAMS
68          case "$TEST_PREF" in
69              *-hky*)
70                       TESTTYPE="${TESTTYPE}, HKY"
71                       ;;
72              *-tn*)
73                       TESTTYPE="${TESTTYPE}, TN"
74                       echo m >> $PARAMS
75                       ;;
76              *-gtr*)
77                       TESTTYPE="${TESTTYPE}, TN"
78                       echo m >> $PARAMS
79                       echo m >> $PARAMS
80                       ;;
81              *-sh*)
82                       TESTTYPE="${TESTTYPE}, SH"
83                       echo m >> $PARAMS
84                       echo m >> $PARAMS
85                       echo m >> $PARAMS
86                       ;;
87              *)
88                       TESTTYPE="${TESTTYPE}, default model"
89          esac
90          ;;
91   *-prot)
92          TESTTYPE="${TESTTYPE}protein data"
93          DATA=prot
94          INFILE=${TEST_PREF}.${DATA}
95          INFILESOURCE=../data/globin.a
96          INUTREESOURCE=../data/globin.trees
97          INCTREESOURCE=../data/globin.ctrees
98          echo d > $PARAMS
99          echo d >> $PARAMS
100          case "$TEST_PREF" in
101              *-dayhoff*)
102                       TESTTYPE="${TESTTYPE}, Dayhoff"
103                       echo m >> $PARAMS
104                       ;;
105              *-jtt*)
106                       TESTTYPE="${TESTTYPE}, JTT"
107                       echo m >> $PARAMS
108                       echo m >> $PARAMS
109                       ;;
110              *-mtrev*)
111                       TESTTYPE="${TESTTYPE}, mtREV"
112                       echo m >> $PARAMS
113                       echo m >> $PARAMS
114                       echo m >> $PARAMS
115                       ;;
116              *-blosum*)
117                       TESTTYPE="${TESTTYPE}, BLOSUM"
118                       echo m >> $PARAMS
119                       echo m >> $PARAMS
120                       echo m >> $PARAMS
121                       echo m >> $PARAMS
122                       ;;
123              *-vt*)
124                       TESTTYPE="${TESTTYPE}, VT"
125                       echo m >> $PARAMS
126                       echo m >> $PARAMS
127                       echo m >> $PARAMS
128                       echo m >> $PARAMS
129                       echo m >> $PARAMS
130                       ;;
131              *-wag*)
132                       TESTTYPE="${TESTTYPE}, WAG"
133                       echo m >> $PARAMS
134                       echo m >> $PARAMS
135                       echo m >> $PARAMS
136                       echo m >> $PARAMS
137                       echo m >> $PARAMS
138                       echo m >> $PARAMS
139                       ;;
140              *)
141                       TESTTYPE="${TESTTYPE}, default model"
142          esac
143          ;;
144   *-bin)
145          TESTTYPE="${TESTTYPE}binary data"
146          DATA=bin
147          INFILE=${TEST_PREF}.${DATA}
148          INFILESOURCE=../data/primates.b
149          INUTREESOURCE=../data/primates.trees
150          INCTREESOURCE=../data/primates.ctrees
151          echo d > $PARAMS
152          echo d >> $PARAMS
153          echo d >> $PARAMS
154          ;;
155   *)
156          TESTTYPE="${TESTTYPE}default data, default model"
157          ;;
158esac
159
160case "$TEST_PREF" in
161    *-clock*)
162             TESTTYPE="${TESTTYPE}, clock"
163             echo z >> $PARAMS
164             ;;
165esac
166case "$TEST_PREF" in
167    *-rhet4*)
168             TESTTYPE="${TESTTYPE}, rate heterogeneity (4 rates)"
169             echo w >> $PARAMS
170             echo c >> $PARAMS
171             echo 4 >> $PARAMS
172             ;;
173    *-rhet*)
174             TESTTYPE="${TESTTYPE}, rate heterogeneity"
175             echo w >> $PARAMS
176             ;;
177esac
178
179CHECK_PREF=check-$INFILE
180
181case "$TEST_PREF" in
182    qp-*)
183             TESTTYPE="${TESTTYPE}, quartet puzzling"
184             cp $INFILESOURCE $INFILE
185             RESULT_PREF=$INFILE
186             echo y >> $PARAMS
187             echo; echo "$TESTTYPE ($TEST_PREF)"
188             ../src/puzzle$EXEEXT -randseed1001 ${INFILE} < $PARAMS > ${INFILE}.out 2>&1
189             ;;
190    lm-*)
191             TESTTYPE="${TESTTYPE}, likelihood mapping"
192             cp $INFILESOURCE $INFILE
193             RESULT_PREF=$INFILE
194             echo b >> $PARAMS
195             echo y >> $PARAMS
196             echo; echo "$TESTTYPE ($TEST_PREF)"
197             ../src/puzzle$EXEEXT -randseed1001 ${INFILE} < $PARAMS > ${INFILE}.out 2>&1
198             ;;
199    ut-*)
200             TESTTYPE="${TESTTYPE}, user tree evaluation"
201             cp $INFILESOURCE $INFILE
202             cp $INUTREESOURCE $INUTREE
203             RESULT_PREF=$INUTREE
204             echo y >> $PARAMS
205             echo; echo "$TESTTYPE ($TEST_PREF)"
206             ../src/puzzle$EXEEXT -randseed1001 ${INFILE} ${INUTREE} < $PARAMS > ${INFILE}.out 2>&1
207             ;;
208    cons-*)
209             TESTTYPE="${TESTTYPE}, consensus construction"
210             cp $INFILESOURCE $INFILE
211             cp $INCTREESOURCE $INCTREE
212             RESULT_PREF=$INCTREE
213             echo k >> $PARAMS
214             echo y >> $PARAMS
215             echo; echo "$TESTTYPE ($TEST_PREF)"
216             ../src/puzzle$EXEEXT -randseed1001 ${INFILE} ${INCTREE} < $PARAMS > ${INFILE}.out 2>&1
217             ;;
218    *)
219             echo; echo "$TESTTYPE ($TEST_PREF)"
220             echo UNKNOWN analysis type: test ignored
221             exit 77
222             ;;
223esac
224
225if test $GENERATE == 1; then
226   cat ${RESULT_PREF}.puzzle \
227      | grep -v "^Date and time" \
228      | grep -v "^Runtime (" \
229      | sed "s/$VERSION//g" \
230      > check-${TEST_PREF}
231   exit 0
232else
233   cat ${RESULT_PREF}.puzzle \
234      | grep -v "^Date and time" \
235      | grep -v "^Runtime (" \
236      | sed "s/$VERSION//g" \
237      > ${RESULT_PREF}.clean
238   diff ${RESULT_PREF}.clean check-${TEST_PREF}
239   result=$?
240   exit $result
241fi
242