docs: def closest_allzero_pixel(self, pixel, direction, w=13, t=0.5):
          """Starting at pixel, moves pixel by direction * t until all
          zero pixels within a radius w of pixel. Then, returns pixel.
  
          Parameters
          ----------
          pixel : :obj:`numpy.ndarray` of float
              The initial pixel location at which to start.
  
          direction : :obj:`numpy.ndarray` of float
              The 2D direction vector in which to move pixel.
  
          w : int
              A circular diameter in which to check for zero pixels.
              As soon as the current pixel has all zero pixels with a diameter
              w of it, this function returns the current pixel location.
  
          t : float
              The step size with which to move pixel along direction.
  
          Returns
          -------
          :obj:`numpy.ndarray` of float
              The first pixel location along the direction vector at which there
              exists all zero pixels within a radius w.
          """
          # create circular structure for checking clearance
          y, x = np.meshgrid(np.arange(w) - w / 2, np.arange(w) - w / 2)
  
          cur_px_y = np.ravel(y + pixel[0]).astype(np.uint16)
          cur_px_x = np.ravel(x + pixel[1]).astype(np.uint16)
          
          # Check if all pixels in radius are in bounds and zero-valued
          empty = False
          if np.all(
              cur_px_y >= 0) and np.all(
              cur_px_y < self.height) and np.all(
              cur_px_x >= 0) and np.all(
                  cur_px_x < self.width):
              empty = np.all(self[cur_px_y, cur_px_x] <= self._threshold)
          else:
              return None
          
          # If some nonzero pixels, continue incrementing along direction
          # and checking for empty space
          while not empty:
              pixel = pixel + t * direction
              cur_px_y = np.ravel(y + pixel[0]).astype(np.uint16)
              cur_px_x = np.ravel(x + pixel[1]).astype(np.uint16)
              if np.all(
                  cur_px_y >= 0) and np.all(
                  cur_px_y < self.height) and np.all(
                  cur_px_x >= 0) and np.all(
                      cur_px_x < self.width):
                  empty = np.all(self[cur_px_y, cur_px_x] <= self._threshold)
              else:
                  return None
                  
          return pixel