override def prepare()

in core/src/main/scala/com/spotify/featran/transformers/MDL.scala [134:150]


      override def prepare(input: MDLRecord[T]): B[T] =
        if (rng.nextDouble() < sampleRate) ArraySeq(input) else ArraySeq.empty[MDLRecord[T]]

      override def semigroup: Semigroup[B[T]] = _ ++ _

      override def present(reduction: B[T]): C = {
        val ranges = new MDLPDiscretizer[T](
          reduction.iterator.map(l => (l.label, l.value)).toSeq,
          stoppingCriterion,
          minBinPercentage
        ).discretize(maxBins)

        val m = new C()
        ranges.tail.zipWithIndex.map { case (v, i) => m.put(v, i) }

        m
      }