ac5918d51bed4db6f5ac837e6660b322123bbd7c
angie
  Tue Apr 26 16:36:45 2011 -0700
Added new lib module hacTree (Hierarchical Agglomerative Clustering),which takes an slList of items and a couple user-defined functions,
and returns a binary tree of clusters, with the leaf nodes containing
the original input items.  The user-defined functions do the interesting
parts: computing distance between two items and/or clusters, and
merging two items and/or clusters into a new cluster.
This is motivated by work on Feature #3711 (vcfTabix: center-weighted
haplotype sorting for display of phased genotypes), but I'm hoping
it might have other uses.

diff --git src/lib/tests/makefile src/lib/tests/makefile
index 4482318..79ade57 100644
--- src/lib/tests/makefile
+++ src/lib/tests/makefile
@@ -1,30 +1,30 @@
 include ../../inc/common.mk
 
 ifeq (${USE_TABIX},1)
     TABIX_TESTS=tabixTest vcfTest
 else
     TABIX_TESTS=
 endif
 
 MYLIBDIR = ../../lib/${MACHTYPE}
 MYLIBS = ${MYLIBDIR}/jkweb.a
 BIN_DIR = bin/${MACHTYPE}
 
 test: errCatchTest htmlPageTest htmlExpandUrlTest pipelineTests dyStringTest \
     mimeTests base64Tests quotedPTests safeTest hashTest fetchUrlTest gff3Test \
-    ${TABIX_TESTS}
+    ${TABIX_TESTS} hacTreeTest
 	rm -r output fetchUrlTest
 	@echo tested all
 
 
 mkdirs:
 	${MKDIR} output ${BIN_DIR}
 
 errCatchTest: errCatchTest.o ${MYLIBS} mkdirs
 	${CC} ${COPT} -o ${BIN_DIR}/errCatchTest errCatchTest.o ${MYLIBS} ${L}
 	${STRIP} ${BIN_DIR}/errCatchTest${EXE}
 	${BIN_DIR}/errCatchTest secret > output/errCatch.good
 	diff expected/errCatch.good output/errCatch.good
 	${BIN_DIR}/errCatchTest bad > output/errCatch.bad
 	diff expected/errCatch.bad output/errCatch.bad
 
@@ -271,17 +271,28 @@
 	diff expected/$@.out output/$@.out
 
 vcfParse1kGWithGenotypes: ${vcfTester} mkdirs
 	${vcfTester} input/YRI.low_coverage.2010_07_excerpt.genotypes.vcf.gz 2 26793737 26794385 > output/$@.out
 	diff expected/$@.out output/$@.out
 
 vcfParseOldV3:
 	${vcfTester} input/20091110_pilot1_vcf_merged_call_sets_YRI.2and3_way.vcf.gz 1 3000 50000 >& output/$@.out
 	diff expected/$@.out output/$@.out
 
 ${BIN_DIR}/vcfParseTest: vcfParseTest.o ${MYLIBS}
 	${MKDIR} ${BIN_DIR}
 	${CC} ${COPT} -o ${BIN_DIR}/vcfParseTest vcfParseTest.o ${MYLIBS} ${L}
 
 
+# hacTree:
+hacTreeTester=${BIN_DIR}/hacTreeTest
+hacTreeTest: ${hacTreeTester} mkdirs
+	${hacTreeTester} input/$@.txt output/$@.out
+	diff expected/$@.out output/$@.out
+
+${BIN_DIR}/hacTreeTest: hacTreeTest.o ${MYLIBS}
+	${MKDIR} ${BIN_DIR}
+	${CC} ${COPT} -o ${BIN_DIR}/hacTreeTest hacTreeTest.o ${MYLIBS} ${L}
+
+
 clean:
 	rm -rf *.o bin output *.tmp mimeTester.tmp mimeTester.out fetchUrlTest