code: def label_contours(self, intervals, window=150, hop=30):
          
          window /= 1000.0
          hop /= 1000.0
          exposure = int(window / hop)
  
          boundary = window - hop
          final_index = utils.find_nearest_index(self.pitch_obj.timestamps,
                                                 self.pitch_obj.timestamps[-1] - boundary)
  
          interval = np.median(np.diff(self.pitch_obj.timestamps))
          #interval = 0.00290254832393
          window_step = window / interval
          hop_step = hop / interval
          start_index = 0
          end_index = window_step
          contour_labels = {}
          means = []
          while end_index < final_index:
              temp = self.pitch_obj.pitch[start_index:end_index][self.pitch_obj.pitch[start_index:end_index] > -10000]
              means.append(np.mean(temp))
              start_index = start_index + hop_step
              end_index = start_index + window_step
  
          for i in xrange(exposure, len(means) - exposure + 1):
              _median = np.median(means[i - exposure:i])
              if _median < -5000:
                  continue
              ind = utils.find_nearest_index(_median, intervals)
              contour_end = (i - exposure) * hop_step + window_step
              contour_start = contour_end - hop_step
              #print sliceBegin, sliceEnd, JICents[ind]
              #newPitch[sliceBegin:sliceEnd] = JICents[ind]
              if intervals[ind] in contour_labels.keys():
                  contour_labels[intervals[ind]].append([contour_start, contour_end])
              else:
                  contour_labels[intervals[ind]] = [[contour_start, contour_end]]
  
          self.contour_labels = contour_labels
docs: In a very flowy contour, it is not trivial to say which pitch value corresponds
           to what interval. This function labels pitch contours with intervals by guessing
           from the characteristics of the contour and its melodic context.
  
          :param window: the size of window over which the context is gauged, in milliseconds.
          :param hop: hop size in milliseconds.