code: def _set_SNR_grids(self):
          
          if self.SNR_prior == 'unif':
              SNR_grids = np.linspace(0, 1, self.SNR_bins)
              SNR_weights = np.ones(self.SNR_bins) / (self.SNR_bins - 1)
              SNR_weights[0] = SNR_weights[0] / 2.0
              SNR_weights[-1] = SNR_weights[-1] / 2.0
          elif self.SNR_prior == 'lognorm':
              dist = scipy.stats.lognorm
              alphas = np.arange(np.mod(self.SNR_bins, 2),
                                 self.SNR_bins + 2, 2) / self.SNR_bins
              # The goal here is to divide the area under the pdf curve
              # to segments representing equal probabilities.
              bounds = dist.interval(alphas, (self.logS_range,))
              bounds = np.unique(bounds)
              # bounds contain the boundaries which equally separate
              # the probability mass of the distribution
              SNR_grids = np.zeros(self.SNR_bins)
              for i in np.arange(self.SNR_bins):
                  SNR_grids[i] = dist.expect(
                      lambda x: x, args=(self.logS_range,),
                      lb=bounds[i], ub=bounds[i + 1]) * self.SNR_bins
              # Center of mass of each segment between consecutive
              # bounds are set as the grids for SNR.
              SNR_weights = np.ones(self.SNR_bins) / self.SNR_bins
          elif self.SNR_prior == 'exp':
              SNR_grids = self._bin_exp(self.SNR_bins)
              SNR_weights = np.ones(self.SNR_bins) / self.SNR_bins
          else:
              SNR_grids = np.ones(1)
              SNR_weights = np.ones(1)
          SNR_weights = SNR_weights / np.sum(SNR_weights)
          return SNR_grids, SNR_weights
docs: Set the grids and weights for SNR used in numerical integration
              of SNR parameters.