def multiFeatureDimension()

in core/src/main/scala/com/spotify/featran/FeatureSpec.scala [473:498]


  def multiFeatureDimension(c: ARRAY): Array[Int] = {
    require(n == c.length)
    val sums = Array.fill[Int](dims)(0)
    var i = 0
    val maps = Array.fill(dims)(mutable.Map.empty[String, Int])
    while (i < n) {
      val f = features(i)
      val size = f.unsafeFeatureDimension(c(i))
      val tName = f.transformer.name
      val idx = mapping(tName)
      sums(idx) += size
      if (crossings.keys.contains(tName)) {
        maps(idx)(tName) = size
      }
      i += 1
    }
    var idx = 0
    while (idx < dims) {
      val m = maps(idx).withDefaultValue(0)
      crossings.map.keys.foreach { case (n1, n2) =>
        sums(idx) += m(n1) * m(n2)
      }
      idx += 1
    }
    sums
  }