docs: def precompute(self, distance_modulus_array=None):
          """
          DEPRECATED: ADW 20170627
  
          Precompute color probabilities for background ('u_background')
          and signal ('u_color') for each star in catalog.  Precompute
          observable fraction in each ROI pixel.  # Precompute still
          operates over the full ROI, not just the likelihood region
  
          Parameters:
          -----------
          distance_modulus_array : Array of distance moduli 
          
          Returns:
          --------
          None
          """
          msg = "'%s.precompute': ADW 2017-09-20"%self.__class__.__name__
          DeprecationWarning(msg)
  
          if distance_modulus_array is not None:
              self.distance_modulus_array = distance_modulus_array
          else:
              self.distance_modulus_array = sel
  
          # Observable fraction for each pixel
          self.u_color_array = [[]] * len(self.distance_modulus_array)
          self.observable_fraction_sparse_array = [[]] * len(self.distance_modulus_array)
  
          logger.info('Looping over distance moduli in precompute ...')
          for ii, distance_modulus in enumerate(self.distance_modulus_array):
              logger.info('  (%i/%i) Distance Modulus = %.2f ...'%(ii+1, len(self.distance_modulus_array), distance_modulus))
  
              self.u_color_array[ii] = False
              if self.config['scan']['color_lut_infile'] is not None:
                  DeprecationWarning("'color_lut' is deprecated")
                  logger.info('  Precomputing signal color from %s'%(self.config['scan']['color_lut_infile']))
                  self.u_color_array[ii] = ugali.analysis.color_lut.readColorLUT(self.config['scan']['color_lut_infile'],
                                                                                 distance_modulus,
                                                                                 self.loglike.catalog.mag_1,
                                                                                 self.loglike.catalog.mag_2,
                                                                                 self.loglike.catalog.mag_err_1,
                                                                                 self.loglike.catalog.mag_err_2)
              if not np.any(self.u_color_array[ii]):
                  logger.info('  Precomputing signal color on the fly...')
                  self.u_color_array[ii] = self.loglike.calc_signal_color(distance_modulus) 
              
              # Calculate over all pixels in ROI
              self.observable_fraction_sparse_array[ii] = self.loglike.calc_observable_fraction(distance_modulus)
  
          self.u_color_array = np.array(self.u_color_array)