diff options
Diffstat (limited to 'src/main/scala/scalam/io/package.scala')
-rw-r--r-- | src/main/scala/scalam/io/package.scala | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/main/scala/scalam/io/package.scala b/src/main/scala/scalam/io/package.scala index a5217de..4f1ef09 100644 --- a/src/main/scala/scalam/io/package.scala +++ b/src/main/scala/scalam/io/package.scala @@ -4,20 +4,16 @@ 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 load[A: Loadable](path: Path): A = { + val loadable = implicitly[Loadable[A]] + loadable.load(path) } - - def save(path: Path, m: DenseMatrix[Double]): Unit = { + + def save[A <% Saveable](objectToSave: A, path: Path) = { path.createFile(createParents = true, failIfExists = false) for (processor <- path.outputProcessor; out = processor.asOutput) - for (i <- 0 until m.rows) m(i, ::).valuesIterator.mkString(""," ","\n") + objectToSave.save(out) } }
\ No newline at end of file |