All Downloads are FREE. Search and download functionalities are using the official Maven repository.

epic.util.WeightsCache.scala Maven / Gradle / Ivy

There is a newer version: 0.4.4
Show newest version
package epic.util

import breeze.util.Index
import java.io.{FileInputStream, FileOutputStream, PrintStream, File}
import breeze.linalg.DenseVector
import java.util.zip.{GZIPInputStream, GZIPOutputStream}
import scala.io.Source

/**
 * TODO
 *
 * @author dlwh
 **/
object WeightsCache {

  def write[A](file: File, index: Index[A], weights: DenseVector[Double], threshold: Double = 1E-4) {
    require(weights.length == index.size)
    val out = new PrintStream(new GZIPOutputStream(new FileOutputStream(file), 1024))
    var i = 0
    while(i < index.size) {
      if(weights(i).abs > threshold)
        out.println(index.get(i) + "\t" + weights(i))
      i += 1
    }
    out.close()
  }

  def read[A](file: File, index: Index[A]):DenseVector[Double] = {
    val in = (for(line <- Source.fromInputStream(new GZIPInputStream(new FileInputStream(file), 1024)).getLines()) yield {
      val arr = line.split("\t")
      arr(0) -> arr(1).toDouble
    }).toMap
    DenseVector.tabulate(index.size)(i => in.getOrElse(index.get(i).toString, 0.0))
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy