docs: def sphere_selector_using_residues(self, radius, force_rerun=False):
          """Select spheres based on binding site residues
  
          Args:
              radius (int, float): Radius around binding residues to dock to
              force_rerun (bool): If method should be rerun even if output file exists
  
          """
          log.debug('{}: running sphere selector...'.format(self.id))
  
          if not self.sphgen_path or not self.bindingsite_path:
              return ValueError('Please run sphgen and binding_site_mol2')
  
          selsph = op.join(self.dock_dir, '{}_selsph_binding.sph'.format(self.id))
  
          if ssbio.utils.force_rerun(flag=force_rerun, outfile=selsph):
              cmd = "sphere_selector {} {} {}".format(self.sphgen_path, self.bindingsite_path, radius)
              rename = "mv selected_spheres.sph {}".format(selsph)
  
              os.system(cmd)
              os.system(rename)
  
          if ssbio.utils.is_non_zero_file(selsph):
              self.sphsel_path = selsph
              log.debug('{}: successful sphere selection'.format(self.sphsel_path))
          else:
              log.critical('{}: sphere_selector_using_residues failed to run on sph file'.format(self.sphgen_path))