aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scalam/io/package.scala
blob: a5217dee07a3748d827b9e0b75c0e15c9faa6758 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package scalam

import scalax.file.Path
import breeze.linalg._

package object io {
  
  def load(path: Path, separator: String = "\\s"): DenseMatrix[Double] = {
    val lines = path.lines().dropWhile(_.isEmpty).toArray
    val elements: Array[Array[String]] = lines map (_.split(separator))
    require(elements.forall(_.length == elements(0).length), "Cannot load non-rectangular matrix. Check your data file.")
    
    val rows: Array[Array[Double]] = elements.map(_.map(_.toDouble))
    DenseMatrix(rows: _*)
  }
  
  def save(path: Path, m: DenseMatrix[Double]): Unit = {
    path.createFile(createParents = true, failIfExists = false)
    for (processor <- path.outputProcessor; out = processor.asOutput)
      for (i <- 0 until m.rows) m(i, ::).valuesIterator.mkString(""," ","\n")
  }
  
}