34dc2bb14c176fb8f788df267fdb3fd4c8f461b4
braney
  Fri Feb 17 07:00:46 2023 -0800
fix some encoding issues and an errant printf on the TOGO hgc page.

diff --git src/hg/hgc/togaClick.c src/hg/hgc/togaClick.c
index 5608e5c..00a4c8c 100644
--- src/hg/hgc/togaClick.c
+++ src/hg/hgc/togaClick.c
@@ -327,42 +327,42 @@
 
 printf("We define the following variables:\n<ul>\n");
 printf("<li>c: number of reference bases in the intersection between chain blocks and coding exons of the gene under consideration.</li>\n");
 printf("<li>C: number of reference bases in the intersection between chain blocks and coding exons of all genes. </li>\n");
 printf("<li>a: number of reference bases in the intersection between chain blocks and coding exons and introns of the gene under consideration. </li>\n");
 printf("<li>A: number of reference bases in the intersection between chain blocks and coding exons and introns of all genes and the intersection\n");
 printf("between chain blocks and intergenic regions (excludes UTRs). </li>\n");
 printf("<li>f: number of reference bases in chain blocks overlapping the 10 kb flanks of the gene under consideration.\n");
 printf("Alignment blocks overlapping exons of another gene that is located in these 10 kb flanks are ignored. </li>\n");
 printf("<li>i: number of reference bases in the intersection between chain blocks and introns of the gene under consideration. </li>\n");
 printf("<li>CDS (coding sequence): length of the coding region of the gene under consideration. </li>\n");
 printf("<li>I: sum of all intron lengths of the gene under consideration. </li>\n");
 printf("</ul>\n");
 printf("Using these variables, TOGA computes the following features:\n");
 printf("<ul>\n");
-printf("<li>“global CDS fraction” as C / A. Chains with a high value have alignments that largely overlap coding exons,");
+printf("<li>&quot;global CDS fraction&quot; as C / A. Chains with a high value have alignments that largely overlap coding exons,");
 printf("which is a hallmark of paralogous or processed pseudogene chains. In contrast, chains with a low value also align many ");
 printf("intronic and intergenic regions, which is a hallmark of orthologous chains. </li>\n");
-printf("<li>“local CDS fraction” as c / a. Orthologous chains tend to have a lower value, as intronic ");
+printf("<li>&quot;local CDS fraction&quot; as c / a. Orthologous chains tend to have a lower value, as intronic ");
 printf("regions partially align. This feature is not computed for single-exon genes. </li>\n");
-printf("<li>“local intron fraction” as i / I. Orthologous chains tend to have a higher value.");
+printf("<li>&quot;local intron fraction&quot; as i / I. Orthologous chains tend to have a higher value.");
 printf("This feature is not computed for single-exon genes. </li>\n");
-printf("<li>“flank fraction” as f / 20,000. Orthologous chains tend to have higher values,");
+printf("<li>&quot;flank fraction&quot; as f / 20,000. Orthologous chains tend to have higher values,");
 printf("as flanking intergenic regions partially align. This feature is important to detect orthologous loci of single-exon genes. </li>\n");
-printf("<li>“synteny” as log10 of the number of genes, whose coding exons overlap by at least one base aligning");
+printf("<li>&quot;synteny&quot; as log10 of the number of genes, whose coding exons overlap by at least one base aligning");
 printf("blocks of this chain. Orthologous chains tend to cover several genes located in a conserved order, resulting in higher synteny values. </li>\n");
-printf("<li>“local CDS coverage” as c / CDS, which is only used for single-exon genes. </li>\n");
+printf("<li>&quot;local CDS coverage&quot; as c / CDS, which is only used for single-exon genes. </li>\n");
 printf("</ul>\n");
 
 
 printf("</ul>\n</div>\n<BR>\n");
 htmlHorizontalLine();
 
 // show inact mut plot
 printf("<h4>Visualization of inactivating mutations on exon-intron structure</h4>\n");
 printf("%s<BR>\n", info->svg_line);
 printf("<BR>Exons shown in grey are missing (often overlap assembly gaps).\nExons shown in");
 printf(" red or blue are deleted or do not align at all.\nRed indicates that the exon deletion ");
 printf("shifts the reading frame, while blue indicates that exon deletion(s) are framepreserving.<br>\n");
 
 // GLP features
 printf("<a data-toggle=\"collapse\" href=\"#collapseGLP\">Show features used for transcript classification</a>\n");
@@ -419,31 +419,30 @@
 printf("</div>\n<BR>\n");
 
 // show exons data
 htmlHorizontalLine();
 printf("<h4>Exon alignments</h4><BR>\n");
 
 printf("<a data-toggle=\"collapse\" href=\"#collapseExons\">Show exon sequences and features</a><BR><BR>\n");
 printf("<div id=\"collapseExons\" class=\"panel-collapse collapse\">\n");
 // printf("%s\n", info->exon_ali_string);
 printf("%s\n", info->exon_ali_html);
 
 htmlHorizontalLine();
 printf("</div>\n<BR>\n");
 
 // TODO: check whether I need this
-printf("%s", hgTracksPathAndSettings());
 hPrintf("<link rel=\"stylesheet\" href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css\">");
 hPrintf("<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js\"></script>");
 hPrintf("<script src=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js\"></script>");
 
 
 printTrackHtml(tdb);  // and do I need this?
 }
 
 
 void doHillerLabTOGAGene(char *database, struct trackDb *tdb, char *item, char *table_name)
 /* Put up TOGA Gene track info. */
 {
     //int start = cartInt(cart, "o");
     char headerTitle[512];
     char suffix[512];
@@ -516,42 +515,42 @@
             
             printf("We define the following variables:\n<ul>\n");
             printf("<li>c: number of reference bases in the intersection between chain blocks and coding exons of the gene under consideration.</li>\n");
             printf("<li>C: number of reference bases in the intersection between chain blocks and coding exons of all genes. </li>\n");
             printf("<li>a: number of reference bases in the intersection between chain blocks and coding exons and introns of the gene under consideration. </li>\n");
             printf("<li>A: number of reference bases in the intersection between chain blocks and coding exons and introns of all genes and the intersection\n");
             printf("between chain blocks and intergenic regions (excludes UTRs). </li>\n");
             printf("<li>f: number of reference bases in chain blocks overlapping the 10 kb flanks of the gene under consideration.\n");
             printf("Alignment blocks overlapping exons of another gene that is located in these 10 kb flanks are ignored. </li>\n");
             printf("<li>i: number of reference bases in the intersection between chain blocks and introns of the gene under consideration. </li>\n");
             printf("<li>CDS (coding sequence): length of the coding region of the gene under consideration. </li>\n");
             printf("<li>I: sum of all intron lengths of the gene under consideration. </li>\n");
             printf("</ul>\n");
             printf("Using these variables, TOGA computes the following features:\n");
             printf("<ul>\n");
-            printf("<li>“global CDS fraction” as C / A. Chains with a high value have alignments that largely overlap coding exons,");
+            printf("<li>&quot;global CDS fraction&quot; as C / A. Chains with a high value have alignments that largely overlap coding exons,");
             printf("which is a hallmark of paralogous or processed pseudogene chains. In contrast, chains with a low value also align many ");
             printf("intronic and intergenic regions, which is a hallmark of orthologous chains. </li>\n");
-            printf("<li>“local CDS fraction” as c / a. Orthologous chains tend to have a lower value, as intronic ");
+            printf("<li>&quot;local CDS fraction&quot; as c / a. Orthologous chains tend to have a lower value, as intronic ");
             printf("regions partially align. This feature is not computed for single-exon genes. </li>\n");
-            printf("<li>“local intron fraction” as i / I. Orthologous chains tend to have a higher value.");
+            printf("<li>&quot;local intron fraction&quot; as i / I. Orthologous chains tend to have a higher value.");
             printf("This feature is not computed for single-exon genes. </li>\n");
-            printf("<li>“flank fraction” as f / 20,000. Orthologous chains tend to have higher values,");
+            printf("<li>&quot;flank fraction&quot; as f / 20,000. Orthologous chains tend to have higher values,");
             printf("as flanking intergenic regions partially align. This feature is important to detect orthologous loci of single-exon genes. </li>\n");
-            printf("<li>“synteny” as log10 of the number of genes, whose coding exons overlap by at least one base aligning");
+            printf("<li>&quot;synteny&quot; as log10 of the number of genes, whose coding exons overlap by at least one base aligning");
             printf("blocks of this chain. Orthologous chains tend to cover several genes located in a conserved order, resulting in higher synteny values. </li>\n");
-            printf("<li>“local CDS coverage” as c / CDS, which is only used for single-exon genes. </li>\n");
+            printf("<li>&quot;local CDS coverage&quot; as c / CDS, which is only used for single-exon genes. </li>\n");
             printf("</ul>\n");
 
 
             printf("</ul>\n</div>\n<BR>\n");
             htmlHorizontalLine();
 
             // show inact mut plot
             printf("<h4>Visualization of inactivating mutations on exon-intron structure</h4>\n");
             printf("%s<BR>\n", info->svg_line);
             printf("<BR>Exons shown in grey are missing (often overlap assembly gaps).\nExons shown in");
             printf(" red or blue are deleted or do not align at all.\nRed indicates that the exon deletion ");
             printf("shifts the reading frame, while blue indicates that exon deletion(s) are framepreserving.<br>\n");
 
             // GLP features
             printf("<a data-toggle=\"collapse\" href=\"#collapseGLP\">Show features used for transcript classification</a>\n");