docs: def parametrize_peaks(self, intervals, max_peakwidth=50, min_peakwidth=25, symmetric_bounds=True):
          """
          Computes and stores the intonation profile of an audio recording.
  
          :param intervals: these will be the reference set of intervals to which peak positions
           correspond to. For each interval, the properties of corresponding peak, if exists,
           will be computed and stored as intonation profile.
          :param max_peakwidth: the maximum allowed width of the peak at the base for computing
          parameters of the distribution.
          :param min_peakwidth: the minimum allowed width of the peak at the base for computing
          parameters of the distribution.
          """
          assert isinstance(self.pitch_obj.pitch, np.ndarray)
          valid_pitch = self.pitch_obj.pitch
          valid_pitch = [i for i in valid_pitch if i > -10000]
          valid_pitch = np.array(valid_pitch)
  
          parameters = {}
          for i in xrange(len(self.histogram.peaks["peaks"][0])):
              peak_pos = self.histogram.peaks["peaks"][0][i]
              #Set left and right bounds of the distribution.
              max_leftbound = peak_pos - max_peakwidth
              max_rightbound = peak_pos + max_peakwidth
              leftbound = max_leftbound
              rightbound = max_rightbound
              nearest_valleyindex = utils.find_nearest_index(self.histogram.peaks["valleys"][0], peak_pos)
              if peak_pos > self.histogram.peaks["valleys"][0][nearest_valleyindex]:
                  leftbound = self.histogram.peaks["valleys"][0][nearest_valleyindex]
                  if len(self.histogram.peaks["valleys"][0][nearest_valleyindex + 1:]) == 0:
                      rightbound = peak_pos + max_peakwidth
                  else:
                      offset = nearest_valleyindex + 1
                      nearest_valleyindex = utils.find_nearest_index(
                          self.histogram.peaks["valleys"][0][offset:], peak_pos)
                      rightbound = self.histogram.peaks["valleys"][0][offset + nearest_valleyindex]
              else:
                  rightbound = self.histogram.peaks["valleys"][0][nearest_valleyindex]
                  if len(self.histogram.peaks["valleys"][0][:nearest_valleyindex]) == 0:
                      leftbound = peak_pos - max_peakwidth
                  else:
                      nearest_valleyindex = utils.find_nearest_index(
                          self.histogram.peaks["valleys"][0][:nearest_valleyindex], peak_pos)
                      leftbound = self.histogram.peaks["valleys"][0][nearest_valleyindex]
  
              #In terms of x-axis, leftbound should be at least min_peakwidth
              # less than peak_pos, and at max max_peakwidth less than peak_pos,
              # and viceversa for the rightbound.
              if leftbound < max_leftbound:
                  leftbound = max_leftbound
              elif leftbound > peak_pos - min_peakwidth:
                  leftbound = peak_pos - min_peakwidth
  
              if rightbound > max_rightbound:
                  rightbound = max_rightbound
              elif rightbound < peak_pos + min_peakwidth:
                  rightbound = peak_pos + min_peakwidth
  
              #If symmetric bounds are asked for, then make the bounds symmetric
              if symmetric_bounds:
                  if peak_pos - leftbound < rightbound - peak_pos:
                      imbalance = (rightbound - peak_pos) - (peak_pos - leftbound)
                      rightbound -= imbalance
                  else:
                      imbalance = (peak_pos - leftbound) - (rightbound - peak_pos)
                      leftbound += imbalance
  
              #extract the distribution and estimate the parameters
              distribution = valid_pitch[valid_pitch >= leftbound]
              distribution = distribution[distribution <= rightbound]
              #print peak_pos, "\t", len(distribution), "\t", leftbound, "\t", rightbound
  
              interval_index = utils.find_nearest_index(intervals, peak_pos)
              interval = intervals[interval_index]
              _mean = float(np.mean(distribution))
              _variance = float(variation(distribution))
              _skew = float(skew(distribution))
              _kurtosis = float(kurtosis(distribution))
              pearson_skew = float(3.0 * (_mean - peak_pos) / np.sqrt(abs(_variance)))
              parameters[interval] = {"position": float(peak_pos),
                                      "mean": _mean,
                                      "amplitude": float(self.histogram.peaks["peaks"][1][i]),
                                      "variance": _variance,
                                      "skew1": _skew,
                                      "skew2": pearson_skew,
                                      "kurtosis": _kurtosis}
  
          self.intonation_profile = parameters