class_docstr: Ball
  
  Searchlight shape which is a ball
  inscribed in a cube of size (2*rad+1,2*rad+1,2*rad+1).
  Any location in the cube which has a Euclidean distance of equal to or
  less than rad from the center point is set to True.
  
  Parameters
  ----------
  
  rad: radius, in voxels, of the sphere inscribed in the
       searchlight cube, not counting the center voxel
class_docstr_tok: ["Ball","Searchlight","shape","which","is","a","ball","inscribed","in","a","cube","of","size","(","2","*","rad+1,2","*","rad+1,2","*","rad+1",")",".","Any","location","in","the","cube","which","has","a","Euclidean","distance","of","equal","to","or","less","than","rad","from","the","center","point","is","set","to","True",".","Parameters","--","--","--","--","--","rad",":","radius",",","in","voxels",",","of","the","sphere","inscribed","in","the","searchlight","cube",",","not","counting","the","center","voxel"]
code: def __init__(self, rad):
      super().__init__(rad)
      self.mask_ = np.zeros(
          (2 * rad + 1, 2 * rad + 1, 2 * rad + 1), dtype=bool
      )
      for r1 in range(2 * self.rad + 1):
          for r2 in range(2 * self.rad + 1):
              for r3 in range(2 * self.rad + 1):
                  if (
                      euclidean(
                          (r1, r2, r3), (self.rad, self.rad, self.rad)
                      )
                      <= self.rad
                  ):
                      self.mask_[r1, r2, r3] = True
  
imports: from multiprocessing import Pool
  import numpy
  from mpi4py import MPI
  from scipy.spatial.distance import cityblock, euclidean
  from ..utils.utils import usable_cpu_count
label_desc: Use image node_id 1 to create a new Ball object from inherited base classes: Shape with example: obj = Ball(rad)