428bacd2dcbaca9304763d3f2dca7ccffd088caa
hiram
  Tue May 26 11:18:06 2020 -0700
correct br tags refs #23734

diff --git src/hg/utils/automation/asmHubXenoRefGene.pl src/hg/utils/automation/asmHubXenoRefGene.pl
index 5e7d650..076679b 100755
--- src/hg/utils/automation/asmHubXenoRefGene.pl
+++ src/hg/utils/automation/asmHubXenoRefGene.pl
@@ -1,153 +1,153 @@
 #!/usr/bin/env perl
 
 use strict;
 use warnings;
 use FindBin qw($Bin);
 use lib "$Bin";
 use AsmHub;
 use File::Basename;
 
 my $argc = scalar(@ARGV);
 
 if ($argc != 3) {
   printf STDERR "usage: asmHubXenoRefGene.pl asmId asmId.names.tab .../trackData/\n";
   printf STDERR "where asmId is the assembly identifier,\n";
   printf STDERR "and .../trackData/ is the path to the /trackData/ directory.\n";
   exit 255;
 }
 
 # from Perl Cookbook Recipe 2.17, print out large numbers with comma
 # delimiters:
 sub commify($) {
     my $text = reverse $_[0];
     $text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g;
     return scalar reverse $text
 }
 
 my $asmId = shift;
 my $namesFile = shift;
 my $trackDataDir = shift;
 my $xenoRefGeneBbi = "$trackDataDir/xenoRefGene/$asmId.xenoRefGene.bb";
 my $asmType = "refseq";
 
 if ( ! -s $xenoRefGeneBbi ) {
   printf STDERR "ERROR: can not find $asmId.xenoRefGene.bb file\n";
   exit 255;
 }
 
 my @partNames = split('_', $asmId);
 my $ftpDirPath = sprintf("%s/%s/%s/%s/%s", $partNames[0],
    substr($partNames[1],0,3), substr($partNames[1],3,3),
    substr($partNames[1],6,3), $asmId);
 
 $asmType = "genbank" if ($partNames[0] =~ m/GCA/);
 my $totalBases = `ave -col=2 $trackDataDir/../${asmId}.chrom.sizes | grep "^total" | awk '{printf "%d", \$2}'`;
 chomp $totalBases;
 my $geneStats = `cat $trackDataDir/xenoRefGene/${asmId}.xenoRefGene.stats.txt | awk '{printf "%d\\n", \$2}' | xargs echo`;
 chomp $geneStats;
 my ($itemCount, $basesCovered) = split('\s+', $geneStats);
 my $percentCoverage = sprintf("%.3f", 100.0 * $basesCovered / $totalBases);
 $itemCount = commify($itemCount);
 $basesCovered = commify($basesCovered);
 $totalBases = commify($totalBases);
 
 my $em = "<em>";
 my $noEm = "</em>";
 my $assemblyDate = `grep -v "^#" $namesFile | cut -f9`;
 chomp $assemblyDate;
 my $ncbiAssemblyId = `grep -v "^#" $namesFile | cut -f10`;
 chomp $ncbiAssemblyId;
 my $organism = `grep -v "^#" $namesFile | cut -f5`;
 chomp $organism;
 
 print <<_EOF_
 <h2>Description</h2>
 
 <p>
 The RefSeq mRNAs gene track for the $assemblyDate $em${organism}$noEm/$asmId
 genome assembly displays translated blat alignments of vertebrate and
 invertebrate mRNA in
 <a href="https://www.ncbi.nlm.nih.gov/genbank/" target="_blank"> GenBank</a>.
 </p>
 
 <h2>Track statistics summary</h2>
 <p>
-<b>Total genome size: </b>$totalBases</br>
+<b>Total genome size: </b>$totalBases<br>
 <b>Gene count: </b>$itemCount<br>
-<b>Bases in genes: </b>$basesCovered</br>
-<b>Percent genome coverage: </b>% $percentCoverage</br>
+<b>Bases in genes: </b>$basesCovered<br>
+<b>Percent genome coverage: </b>% $percentCoverage<br>
 </p>
 
 <h2>Search tips</h2>
 <p>
 Please note, the name searching system is not completely case insensitive.
 When in doubt, enter search names in all lower case to find gene names.
 </p>
 
 <h2>Methods</h2>
 
 <p>
 The mRNAs were aligned against the $em${organism}$noEm/$asmId genome using
 translated blat.  When a single mRNA aligned in multiple places, the alignment
 having the highest base identity was found.  Only those alignments having a base
 identity level within 1% of the best and at least 25% base identity with the
 genomic sequence were kept.
 </p>
 
 <p>
 Specifically, the translated blat command is:
 <pre>
 blat -noHead -q=rnax -t=dnax -mask=lower target.fa query.fa target.query.psl
 
 where target.fa is one of the chromosome sequence of the genome assembly,
 and the query.fa is the mRNAs from RefSeq
 </pre>
 The resulting PSL outputs are filtered:
 <pre>
 pslCDnaFilter -minId=0.35 -minCover=0.25  -globalNearBest=0.0100 -minQSize=20 \
   -ignoreIntrons -repsAsMatch -ignoreNs -bestOverlap \
     all.results.psl $asmId.xenoRefGene.psl
 </pre>
 The filtered $asmId.xenoRefGene.psl is converted to
 <a href='http://genome.ucsc.edu/FAQ/FAQformat.html#format9'
 target=_blank>genePred data</a> to display for this track.
 </p>
 
 <H2>Credits</h2>
 
 <p>
 The mRNA track was produced at UCSC from mRNA sequence data
 submitted to the international public sequence databases by
 scientists worldwide.
 </p>
 
 <h2>References</h2>
 <p>
 Benson DA, Cavanaugh M, Clark K, Karsch-Mizrachi I, Lipman DJ, Ostell J, Sayers EW.
 <a href="https://academic.oup.com/nar/article/41/D1/D36/1068219/GenBank" target="_blank">
 GenBank</a>.
 <em>Nucleic Acids Res</em>. 2013 Jan;41(Database issue):D36-42.
 PMID: <a href="https://www.ncbi.nlm.nih.gov/pubmed/23193287" target="_blank">23193287</a>; PMC: <a
 href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3531190/" target="_blank">PMC3531190</a>
 </p>
 
 <P>
 Benson DA, Karsch-Mizrachi I, Lipman DJ, Ostell J, Wheeler DL.
 <A HREF="https://academic.oup.com/nar/article/32/suppl_1/D23/2505202/GenBank-update"
 TARGET=_blank>GenBank: update</A>.
 <em>Nucleic Acids Res</em>. 2004 Jan 1;32(Database issue):D23-6.
 PMID: <a href="https://www.ncbi.nlm.nih.gov/pubmed/14681350" target="_blank">14681350</a>; PMC: <a
 href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC308779/" target="_blank">PMC308779</a>
 </p>
 
 <P>
 Kent WJ.
 <A HREF="https://genome.cshlp.org/content/12/4/656.abstract"
 TARGET=_blank>BLAT - the BLAST-like alignment tool</A>.
 <em>Genome Res</em>. 2002 Apr;12(4):656-64.
 PMID: <a href="https://www.ncbi.nlm.nih.gov/pubmed/11932250" target="_blank">11932250</a>; PMC: <a
 href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC187518/" target="_blank">PMC187518</a>
 </p>
 
 _EOF_
    ;