c84cfb3709fec4c63ae72505aba7cc32dd359039
braney
  Mon Jan 16 11:41:46 2017 -0800
add maskBed option to twoBitInfo to get a bed file of masked regions

diff --git src/lib/twoBit.c src/lib/twoBit.c
index 77399b4..06cc295 100644
--- src/lib/twoBit.c
+++ src/lib/twoBit.c
@@ -1141,30 +1141,44 @@
 struct twoBitSpec *spec = *specPtr;
 if (spec != NULL)
     {
     struct twoBitSeqSpec *seq;
     while ((seq = slPopHead(&spec->seqs)) != NULL)
         {
         freeMem(seq->name);
         freeMem(seq);
         }
     freeMem(spec->fileName);
     freeMem(spec);
     *specPtr = NULL;
     }
 }
 
+void twoBitOutMaskBeds(struct twoBitFile *tbf, char *seqName, FILE *outF)
+/* output a series of bed3's that enumerate the number of masked bases in a sequence*/
+{
+struct twoBit *header = readTwoBitSeqHeader(tbf, seqName);
+
+int ii;
+for (ii = 0; ii < header->maskBlockCount; ++ii)
+    {
+    fprintf(outF, "%s\t%d\t%d\n", seqName, header->maskStarts[ii], header->maskStarts[ii] + header->maskSizes[ii]);
+    }
+
+twoBitFree(&header);
+}
+
 void twoBitOutNBeds(struct twoBitFile *tbf, char *seqName, FILE *outF)
 /* output a series of bed3's that enumerate the number of N's in a sequence*/
 {
 int nBlockCount;
 
 twoBitSeekTo(tbf, seqName);
 
 (*tbf->ourReadBits32)(tbf->f, tbf->isSwapped);
 
 /* Read in blocks of N. */
 nBlockCount = (*tbf->ourReadBits32)(tbf->f, tbf->isSwapped);
 
 if (nBlockCount > 0)
     {
     bits32 *nStarts = NULL, *nSizes = NULL;