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;