docs: def compressBWTPoolProcess(tup):
      '''
      During compression, each available process will calculate a subportion of the BWT independently using this 
      function.  This process takes the chunk and rewrites it into a given filename using the technique described
      in the compressBWT(...) function header
      '''
      #pull the tuple info
      inputFN = tup[0]
      startIndex = tup[1]
      endIndex = tup[2]
      tempFN = tup[3]
      
      #this shouldn't happen
      if startIndex == endIndex:
          print 'ERROR: EQUAL INDICES'
          return None
      
      #load the file
      bwt = np.load(inputFN, 'r')
      
      #create bit spacings
      letterBits = 3
      numberBits = 8-letterBits
      numPower = 2**numberBits
      mask = 255 >> letterBits
      
      #search for the places they're different
      whereSol = np.add(startIndex+1, np.where(bwt[startIndex:endIndex-1] != bwt[startIndex+1:endIndex])[0])
      
      #this is the difference between two adjacent ones
      deltas = np.zeros(dtype='<u4', shape=(whereSol.shape[0]+1,))
      if whereSol.shape[0] == 0:
          deltas[0] = endIndex-startIndex
      else:
          deltas[0] = whereSol[0]-startIndex
          deltas[1:-1] = np.subtract(whereSol[1:], whereSol[0:-1])
          deltas[-1] = endIndex - whereSol[-1]
      
      #calculate the number of bytes we need to store this information
      size = 0
      byteCount = 0
      lastCount = 1
      while lastCount > 0:
          lastCount = np.where(deltas >= 2**(numberBits*byteCount))[0].shape[0]
          size += lastCount
          byteCount += 1
      
      #create the file
      ret = np.lib.format.open_memmap(tempFN, 'w+', '<u1', (size,))
      retIndex = 0
      c = bwt[startIndex]
      startChar = c
      delta = deltas[0]
      while delta > 0:
          ret[retIndex] = ((delta & mask) << letterBits)+c
          delta /= numPower
          retIndex += 1
      
      #fill in the values based on the bit functions
      for i in xrange(0, whereSol.shape[0]):
          c = bwt[whereSol[i]]
          delta = deltas[i+1]
          while delta > 0:
              ret[retIndex] = ((delta & mask) << letterBits)+c
              delta /= numPower
              retIndex += 1
      endChar = c
      
      #return a lot of information so we can easily combine the results
      return (size, startChar, deltas[0], endChar, deltas[-1], tempFN)