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