9716ae4bc04dbfbcb526f497f62d6ecab62516ee
angie
  Wed Apr 24 10:40:00 2019 -0700
For altSeqLiftOverPsl, don't show the 'view alt in context' or 'view corresponding range on alt' unless the alt is already in database.  hg19 on beta/RR does not have patch updates, but does have altSeqLiftOverPsl and those links were broken.  refs #18854 note-53

diff --git src/hg/hgc/hgc.c src/hg/hgc/hgc.c
index 5700c2e..464d6ee 100644
--- src/hg/hgc/hgc.c
+++ src/hg/hgc/hgc.c
@@ -8985,40 +8985,44 @@
 char *chrom = cartString(cart, "c");
 int start = cartInt(cart, "o");
 struct sqlConnection *conn = hAllocConn(database);
 
 genericHeader(tdb, item);
 printCustomUrl(tdb, item, TRUE);
 
 puts("<P>");
 struct psl *pslList = getAlignmentsTName(conn, tdb->table, item, chrom);
 if (pslList)
     {
     printf("<B>Alignment of %s to %s:</B><BR>\n", item, pslList->tName);
     printAlignments(pslList, start, "htcCdnaAli", tdb->table, item);
 
     char *hgsid = cartSessionId(cart);
+    if (hgIsOfficialChromName(database, item))
+        {
         int rangeStart = 0, rangeEnd = 0;
         if (pslTrimListToTargetRange(pslList, winStart, winEnd, &rangeStart, &rangeEnd))
             {
             printf("<A HREF='hgTracks?hgsid=%s&position=%s:%d-%d'>"
                    "View corresponding position range on %s</A><BR>\n",
                    hgsid, item, rangeStart+1, rangeEnd, item);
             }
+        }
     char *altFix = item;
     if (!endsWith(altFix, "alt") && !endsWith(altFix, "fix"))
         altFix = pslList->tName;
+    if (hgIsOfficialChromName(database, altFix))
         printf("<A HREF=\"hgTracks?hgsid=%s&virtModeType=singleAltHaplo&singleAltHaploId=%s\">"
                "Show %s placed on its chromosome</A><BR>\n",
                hgsid, altFix, altFix);
 
     puts("<P><B>Alignment stats:</B><BR>");
     // Sometimes inversions cause alignments to be split up; just sum up all the stats.
     int totalBlocks = 0, totalSize = 0, totalMatch = 0, totalMismatch = 0, totalN = 0;
     int totalTIns = 0, totalQIns = 0;
     struct psl *psl;
     for (psl = pslList;  psl != NULL;  psl = psl->next)
         {
         totalBlocks += psl->blockCount;
         int i;
         for (i=0;  i < psl->blockCount;  i++)
             totalSize += psl->blockSizes[i];