5b83a4f3758e71c48c76f3235f7a1924c21b4ae2
angie
  Tue Jan 15 13:21:18 2019 -0800
Implement liftOver -multiple -genePred; update gtexGeneModel with all the alts/patches.  refs #18855

diff --git src/hg/liftOver/liftOver.c src/hg/liftOver/liftOver.c
index 46f4b0c..6f2a3a5 100644
--- src/hg/liftOver/liftOver.c
+++ src/hg/liftOver/liftOver.c
@@ -109,51 +109,57 @@
 struct hash *chainHash = newHash(0);		/* Old chromosome name keyed, chromMap valued. */
 FILE *mapped = mustOpen(newFile, "w");
 FILE *unmapped = mustOpen(unmappedFile, "w");
 int errCt;
 
 if (!fileExists(oldFile))
     errAbort("Can't find file: %s\n", oldFile);
 verbose(1, "Reading liftover chains\n");
 readLiftOverMap(mapFile, chainHash);
 verbose(1, "Mapping coordinates\n");
 if (optionExists("gff"))
     {
     fprintf(stderr, "WARNING: -gff is not recommended.\nUse 'ldHgGene -out=<file.gp>' and then 'liftOver -genePred <file.gp>'\n");
     if (multiple)
         errAbort("ERROR: -multiple is not supported for -gff.");
+    if (chainTable)
+        errAbort("ERROR: -chainTable is not supported for -gff.");
     liftOverGff(oldFile, chainHash, minMatch, minBlocks, mapped, unmapped);
     }
 else if (optionExists("genePred"))
     {
-    if (multiple)
-        errAbort("ERROR: -multiple is not supported for -genePred.");
+    if (chainTable)
+        errAbort("ERROR: -chainTable is not supported for -genePred.");
     liftOverGenePred(oldFile, chainHash, minMatch, minBlocks, fudgeThick,
-                        mapped, unmapped);
+                     mapped, unmapped, multiple);
     }
 else if (optionExists("sample"))
     {
     if (multiple)
         errAbort("ERROR: -multiple is not supported for -sample.");
+    if (chainTable)
+        errAbort("ERROR: -chainTable is not supported for -sample.");
     liftOverSample(oldFile, chainHash, minMatch, minBlocks, fudgeThick,
                         mapped, unmapped);
     }
 else if (optionExists("pslT"))
     {
     verbose(1, "Consider using pslMap instead of liftOver for PSL.\n");
     if (multiple)
         errAbort("ERROR: -multiple is not supported for -pslT.");
+    if (chainTable)
+        errAbort("ERROR: -chainTable is not supported for -pslT.");
     liftOverPsl(oldFile, chainHash, minMatch, minBlocks, fudgeThick,
                         mapped, unmapped);
     }
 else if (optionExists("ends"))
     liftOverBedPlusEnds(oldFile, chainHash, minMatch, minBlocks, 
                 minSizeT, minSizeQ, 
                 minChainT, minChainQ, fudgeThick, mapped, unmapped, multiple, noSerial,
 		chainTable, bedPlus, hasBin, tabSep, ends, &errCt);
 else if (optionExists("bedPlus"))
     liftOverBedPlus(oldFile, chainHash, minMatch, minBlocks, 
                 minSizeT, minSizeQ, 
                 minChainT, minChainQ, fudgeThick, mapped, unmapped, multiple, noSerial,
 		chainTable, bedPlus, hasBin, tabSep, &errCt);
 else if (optionExists("positions"))
     liftOverPositions(oldFile, chainHash, minMatch, minBlocks, minSizeT, minSizeQ,