137d847d5d74037f32026ad75a55d219c2abbb1f
hiram
  Thu Jan 30 17:21:31 2020 -0800
protect against empty result refs #23891

diff --git src/hg/utils/automation/doSimpleRepeat.pl src/hg/utils/automation/doSimpleRepeat.pl
index 1512371..2325f74 100755
--- src/hg/utils/automation/doSimpleRepeat.pl
+++ src/hg/utils/automation/doSimpleRepeat.pl
@@ -335,66 +335,78 @@
 
   # Use symbolic link created in cluster step:
   my $partDir = "$buildDir/TrfPart";
   if ($useCluster) {
     $bossScript->add(<<_EOF_
 cat $partDir/???/*.bed > simpleRepeat.bed
 endsInLf simpleRepeat.bed
 if (\$status) then
   echo Uh-oh -- simpleRepeat.bed fails endsInLf.  Look at $partDir/ bed files.
   exit 1
 endif
 _EOF_
     );
   }
   $bossScript->add(<<_EOF_
+if ( -s simpleRepeat.bed ) then
   awk '{if (\$5 <= 12) print;}' simpleRepeat.bed > trfMask.bed
   awk 'BEGIN{OFS="\\t"}{name=substr(\$16,0,16);\$4=name;printf "%s\\n", \$0}' \\
     simpleRepeat.bed | sort -k1,1 -k2,2n > simpleRepeat.bed16.bed
   twoBitInfo $unmaskedSeq stdout | sort -k2nr > tmp.chrom.sizes
   bedToBigBed -tab -type=bed4+12 -as=\$HOME/kent/src/hg/lib/simpleRepeat.as \\
     simpleRepeat.bed16.bed tmp.chrom.sizes simpleRepeat.bb
   rm -f tmp.chrom.sizes simpleRepeat.bed16.bed tmp.chrom.sizes
+else
+  echo empty simpleRepeat.bed - no repeats found
+endif
 _EOF_
   );
   if ($chromBased) {
     $bossScript->add(<<_EOF_
+if ( -s trfMask.bed ) then
   splitFileByColumn trfMask.bed trfMaskChrom/
+else
+  echo empty trfMask.bed - no repeats found
+endif
 _EOF_
     );
   }
 
   $bossScript->execute();
 } # doFilter
 
 
 #########################################################################
 # * step: load [dbHost]
 sub doLoad {
   my $runDir = "$buildDir";
   &HgAutomate::checkExistsUnlessDebug('filter', 'load',
 				      "$buildDir/simpleRepeat.bed");
 
   my $whatItDoes = "It loads simpleRepeat.bed into the simpleRepeat table.";
   my $bossScript = new HgRemoteScript("$runDir/doLoad.csh", $dbHost,
 				      $runDir, $whatItDoes);
 
   $bossScript->add(<<_EOF_
+if ( -s "simpleRepeat.bed" ) then
   hgLoadBed $db simpleRepeat simpleRepeat.bed \\
         -sqlTable=\$HOME/kent/src/hg/lib/simpleRepeat.sql
   featureBits $db simpleRepeat >& fb.simpleRepeat
   cat fb.simpleRepeat
+else
+  echo empty simpleRepeat.bed - no repeats found
+endif
 _EOF_
   );
   $bossScript->execute();
 } # doLoad
 
 
 #########################################################################
 # * step: cleanup [fileServer]
 sub doCleanup {
   my $runDir = "$buildDir";
   my $whatItDoes = "It cleans up or compresses intermediate files.";
   my $fileServer = &HgAutomate::chooseFileServer($runDir);
   my $bossScript = new HgRemoteScript("$runDir/doCleanup.csh", $fileServer,
 				      $runDir, $whatItDoes);
   $bossScript->add(<<_EOF_