8f29deda5ff897fbf1d208907ac7f734afc07ed2
jcasper
  Tue Oct 1 20:31:17 2024 -0700
Many liftOver functions now have a preserveInput argument, which appends the input
position to the name field.  This makes it easier to see what got mapped where.  The option is made available through a
command-line argument to the liftOver utility and a checkbox in the hgLiftOver CGI, refs #28023

diff --git src/hg/liftOver/tests/makefile src/hg/liftOver/tests/makefile
index a2b2e58..22d8b6a 100644
--- src/hg/liftOver/tests/makefile
+++ src/hg/liftOver/tests/makefile
@@ -1,21 +1,24 @@
 kentSrc = ../../..
 include ../../../inc/common.mk
 
 # make VERBOSE=-verbose=2 will echo out positions as they convert
 
-test:   bin bedPlus3 bed8 bed12 simpleTest minus enm001 chuckTest chuckBigTest enr223 scaffoldEndBug zeroWidth
+test:   bin bedPlus3 bed8 bed12 simpleTest minus enm001 chuckTest chuckBigTest enr223 scaffoldEndBug zeroWidth \
+	bed12PreserveInput bed3PreserveInput gffPreserveInput pslPreserveInput samplePreserveInput \
+	genePredPreserveInput gtfPreserveInput
+# omitting positionPreserveInput right now because it creates extra junk files in the current directory
 
 # tests too slow to use in default test suite
 testSlow: mm3 multiple
 
 liftOver=${DESTBINDIR}/liftOver
 liftOverMerge=${DESTBINDIR}/liftOverMerge
 # use local binaries if available
 ifneq ($(wildcard ../liftOver),)
   liftOver=../liftOver
 endif
 ifneq ($(wildcard ../liftOverMerge),)
   liftOverMerge=../liftOverMerge
 endif
 
 
@@ -168,20 +171,86 @@
                     output/mm3.all.good.bed \
                     output/mm3.all.bad.bed
 	cat output/mm3.all.{good,bad}.bed | \
                 diff - expected/mm3.all.bed 1>&2
 
 # too slow -- don't use in default test suite
 multiple:	mkdirs
 	${liftOver} -minMatch=.01 minSizeT=4000 minSizeQ=20000 -multiple ${VERBOSE}\
                 input/mm3.multiple.bed \
                      https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg16ToMm3.chain.gz \
                     output/mm3.multiple.good.bed \
                     output/mm3.multiple.bad.bed
 	cat output/mm3.multiple.{good,bad}.bed | \
                 diff - expected/mm3.multiple.bed 1>&2
 
+bed12PreserveInput: mkdirs
+	${liftOver} -preserveInput \
+            input/bed12Preserve.bed \
+             https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg38ToPanTro6.over.chain.gz \
+                output/bed12Preserve.good.bed output/bed12Preserve.bad.bed 2> /dev/null
+	cat output/bed12Preserve.{good,bad}.bed | \
+                diff - expected/bed12Preserve.bed 1>&2
+
+bed3PreserveInput: mkdirs
+	${liftOver} -preserveInput \
+            input/bed3Preserve.bed \
+             https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg38ToPanTro6.over.chain.gz \
+                output/bed3Preserve.good.bed output/bed3Preserve.bad.bed 2> /dev/null
+	cat output/bed3Preserve.{good,bad}.bed | \
+                diff - expected/bed3Preserve.bed 1>&2
+
+genePredPreserveInput: mkdirs
+	${liftOver} -preserveInput -genePred \
+            input/genePredPreserve.gp \
+             https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg38ToPanTro6.over.chain.gz \
+                output/genePredPreserve.good.gp output/genePredPreserve.bad.gp 2> /dev/null
+	cat output/genePredPreserve.{good,bad}.gp | \
+                diff - expected/genePredPreserve.gp 1>&2
+
+gtfPreserveInput: mkdirs
+	${liftOver} -preserveInput -gff \
+            input/gtfPreserve.gtf \
+             https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg38ToPanTro6.over.chain.gz \
+                output/gtfPreserve.good.gtf output/gtfPreserve.bad.gtf 2> /dev/null
+	cat output/gtfPreserve.{good,bad}.gtf | \
+                diff - expected/gtfPreserve.gtf 1>&2
+
+pslPreserveInput: mkdirs
+	${liftOver} -preserveInput -pslT \
+            input/pslPreserve.psl \
+             https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg38ToPanTro6.over.chain.gz \
+                output/pslPreserve.good.psl output/pslPreserve.bad.psl 2> /dev/null
+	cat output/pslPreserve.{good,bad}.psl | \
+                diff - expected/pslPreserve.psl 1>&2
+
+gffPreserveInput: mkdirs
+	${liftOver} -preserveInput -gff \
+            input/gffPreserve.gff \
+             https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg38ToPanTro6.over.chain.gz \
+                output/gffPreserve.good.gff output/gffPreserve.bad.gff 2> /dev/null
+	cat output/gffPreserve.{good,bad}.gff | \
+                diff - expected/gffPreserve.gff 1>&2
+
+samplePreserveInput: mkdirs
+	${liftOver} -preserveInput -sample \
+            input/samplePreserve.sample \
+             https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg38ToPanTro6.over.chain.gz \
+                output/samplePreserve.good.sample output/samplePreserve.bad.sample 2> /dev/null
+	cat output/samplePreserve.{good,bad}.sample | \
+                diff - expected/samplePreserve.sample 1>&2
+
+# this isn't being tested right now because liftOver -positions creates temp bed files in the current
+# directory and then never cleans them up
+positionPreserveInput: mkdirs
+	${liftOver} -preserveInput -positions \
+            input/positionPreserve.pos \
+             https://hgdownload.soe.ucsc.edu/admin/exe/testFiles/liftOver/hg38ToPanTro6.over.chain.gz \
+                output/positionPreserve.good.pos output/positionPreserve.bad.pos 2> /dev/null
+	cat output/positionPreserve.{good,bad}.pos | \
+                diff - expected/positionPreserve.pos 1>&2
+
 mkdirs:
 	mkdir -p output
 
 clean:
 	rm -fr output