baed67b5aa7f67279b04e4cf2e33cafd2268f10d
angie
  Mon Mar 12 15:46:09 2018 -0700
Adding obscure util pslFixCdsJoinGap, to correct the output of genePredToFakePsl for transcripts with +1 ribosomal frameshift.
genePred exons skip over a base to maintain frame; genePredToFakePsl sees a 1-base gap on target, 0-base gap on query.
However, the query base is skipped as described in Genbank CDS strings such as "join(168..260,262..741)".
Use CDS strings to recognize these cases, and if the PSL has a 1-sided gap on target at the exact position of the skipped
base then make the gap 2-sided to avoid making the alignment off-by-1 after that point and becoming a swamp of mismatches.
The ideal solution would be to remove the gap and properly interpret join CDS in the rest of our software, but this will at
least prevent totally incorrect genePred-derived PSL for transcripts with +1 ribosomal frameshift for now.
refs #21048

diff --git src/hg/utils/makefile src/hg/utils/makefile
index 50d1e96..78b3669 100644
--- src/hg/utils/makefile
+++ src/hg/utils/makefile
@@ -1,137 +1,138 @@
 # Build all directories in utils
 # test comment
 # 	$Id: makefile,v 1.21 2010/06/04 00:12:42 larrym Exp $
 
 kentSrc = ../..
 
 include ${kentSrc}/inc/localEnvironment.mk
 include ${kentSrc}/inc/common.mk
 
 # to check for Mac OSX Darwin specifics:
 UNAME_S := $(shell uname -s)
 
 # can not build this on Mac OSX - has functions not supported
 ifeq ($(UNAME_S),Darwin)
   buildRefresh=
 else
   buildRefresh=refreshNamedSessionCustomTracks
 endif
 
 # List of directories to build for userApps
 UTILS_APPLIST = \
 	bedExtendRanges \
 	bedToPsl \
 	bedWeedOverlapping \
 	bigMafToMaf \
 	bigPslToPsl \
 	chromGraphFromBin \
 	chromGraphToBin \
 	crTreeIndexBed \
 	crTreeSearchBed \
 	gapToLift \
 	genePredFilter \
 	genePredToBigGenePred \
 	genePredToProt \
 	gff3ToGenePred \
 	gff3ToPsl \
 	gtfToGenePred \
 	hubCheck \
 	hubPublicCheck \
 	mafToBigMaf \
 	makeTableList \
 	oligoMatch \
 	overlapSelect \
 	positionalTblCheck \
 	pslToBigPsl \
 	pslMap \
 	pslMapPostChain \
 	pslRc \
 	tdbQuery \
 	transMapPslToGenePred \
 	twoBitMask
 
 USER_APP_SCRIPTS = \
 	vai.pl
 
 SCRIPT_FILES = \
 	dbNsfpToBed.pl \
 	dumpDb.pl \
 	mergeOverlapBed4.pl \
 	mergeSortedBed3Plus.pl \
 	${USER_APP_SCRIPTS}
 
 APP_SCRIPTS = ${SCRIPT_FILES}
 
 # List of directories to build of interest only at UCSC
 DIRS = ${buildRefresh} \
 	automation \
 	buildReleaseLog \
 	checkUrlsInTable \
 	geoMirrorNode \
 	hgvsToVcf \
 	makeTrackIndex \
 	mysqlSecurityCheck \
+	pslFixCdsJoinGap \
 	pslUniq \
 	refSeqGet \
 	safePush \
 	toDev64 \
 	vcfToHgvs \
 	wigBedToStep
 
 TEST_DIRS = \
 	genePredFilter \
 	genePredToProt \
 	gff3ToGenePred \
 	gff3ToPsl \
 	gtfToGenePred \
 	hgvsToVcf \
 	hubCheck \
 	overlapSelect \
 	pslMap \
 	pslRc \
 	pslToBigPsl \
 	refSeqGet \
 	transMapPslToGenePred \
 	vcfToHgvs
 
 APPS = $(DIRS) $(UTILS_APPLIST)
 
 all:: utils
 
 utils: $(APPS:%=%.utils) $(APP_SCRIPTS:%=%.appScript)
 %.utils:
 	cd $* && echo $* && $(MAKE)
 %.appScript:
 	chmod +x $*
 	rm -f ${DESTDIR}${SCRIPTS}/$*
 	cp -p $* ${DESTDIR}${SCRIPTS}/$*
 
 userApps: $(UTILS_APPLIST:%=%.userApp) $(USER_APP_SCRIPTS:%=%.userAppScript)
 %.userApp:
 	cd $* && echo $* && $(MAKE)
 %.userAppScript:
 	chmod +x $*
 	rm -f ${DESTDIR}${BINDIR}/$*
 	cp -p $* ${DESTDIR}${BINDIR}/$*
 
 scripts: $(SCRIPT_FILES:%=%.scripts)
 %.scripts:
 	chmod +x $*
 	rm -f ${SCRIPTS}/$*
 	cp -p $* ${SCRIPTS}/$*
 
 alpha: scripts all
 
 test::	${TEST_DIRS:%=%.test}
 %.test:
 	(cd $* && ${MAKE} test)
 
 clean:: $(APPS:%=%.clean)
 	- find . -name '*.o' -exec rm {} \;
 %.clean:
 	(cd $* && ${MAKE} clean)
 
 compile:: $(APPS:%=%.compile)
 	- find . -name '*.o' -exec rm {} \;
 %.compile:
 	(cd $* && ${MAKE} compile)