Skip to content

Commit dfb96d7

Browse files
committed
Moving components of Kalman filter into appropriate modules and packages
1 parent 323e79c commit dfb96d7

File tree

7 files changed

+31
-28
lines changed

7 files changed

+31
-28
lines changed
File renamed without changes.
File renamed without changes.

firstOrderdlm/KFilter.scala renamed to dynaml-core/src/main/scala-2.11/io/github/mandar2812/dynaml/models/lm/KFilter.scala

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
1+
package io.github.mandar2812.dynaml.models.lm
2+
3+
import java.io.{File, PrintWriter}
4+
15
import breeze.stats.distributions.Gaussian
2-
import generalDLM._
3-
import java.io.{PrintWriter, File}
6+
import io.github.mandar2812.dynaml.models.lm.generalDLM._
7+
8+
import scala.io.Source
49

510
object KFilter {
611

@@ -54,17 +59,17 @@ object KFilter {
5459
val runKFilter = {
5560
val p = Parameters(3.0, 0.5, 0.0, 10.0)
5661
// simulate 16 different realisations of 100 observations, representing 16 stations
57-
val observations = (1 to 16) map (id => (id -> simulate(p).take(100).toVector))
62+
val observations = (1 to 16) map (id => id -> simulate(p).take(100).toVector)
5863

5964
// filter for one station, using simulated data
6065
observations.
6166
filter{ case (id, _) => id == 1 }.
6267
flatMap{ case (_, d) => filterSeries(d)(p) }
6368

6469
// or, read in data from the file we previously wrote
65-
val data = io.Source.fromFile("firstOrderdlm.csv").getLines.toList.
70+
val data = Source.fromFile("data/firstOrderdlmRes.csv").getLines.toList.
6671
map(l => l.split(",")).
67-
map(r => (r(0).toInt -> Data(r(1).toDouble, r(2).toDouble, None)))
72+
map(r => r(0).toInt -> Data(r(1).toDouble, r(2).toDouble, None))
6873

6974
// filter for all stations, using data from file
7075
val filtered = data.
@@ -75,7 +80,7 @@ object KFilter {
7580
(id, filterSeries(data.sortBy(_.time))(p)) } // apply the filter to the sorted data
7681

7782
// write the filter for all stations to a file
78-
val pw = new PrintWriter(new File("filteredDlm.csv"))
83+
val pw = new PrintWriter(new File("data/filteredDlmRes.csv"))
7984
pw.write(filtered.
8085
flatMap{ case (id, data) =>
8186
data map (x => id + ", " + x.toString)}.

firstOrderdlm/generalDLM.scala renamed to dynaml-core/src/main/scala-2.11/io/github/mandar2812/dynaml/models/lm/generalDLM.scala

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import scalaz._
2-
import Scalaz._
1+
package io.github.mandar2812.dynaml.models.lm
2+
33
import java.io.{File, PrintWriter}
4+
import java.lang.Math.sqrt
5+
46
import breeze.stats.distributions.Gaussian
5-
import Math.sqrt
6-
import KFilter._
7+
8+
import scalaz.Scalaz._
9+
710

811
object generalDLM {
912
type Loglikelihood = Double
@@ -34,7 +37,7 @@ object generalDLM {
3437
// simulate 16 different realisations of 100 observations, representing 16 stations
3538
val observations = (1 to 16) map (id => (id, simulate(p).take(100).toVector))
3639

37-
val pw = new PrintWriter(new File("firstOrderdlm.csv"))
40+
val pw = new PrintWriter(new File("data/firstOrderdlmRes.csv"))
3841
pw.write(
3942
observations.
4043
flatMap{ case (id, data) =>

firstOrderdlm/mcmc.scala renamed to dynaml-core/src/main/scala-2.11/io/github/mandar2812/dynaml/optimization/mcmc.scala

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import breeze.stats.distributions.{Uniform, Gaussian, Gamma}
2-
import generalDLM._
3-
import KFilter._
1+
package io.github.mandar2812.dynaml.optimization
2+
43
import java.io.{File, PrintWriter}
54
import breeze.numerics.log
6-
import breeze.linalg.{DenseMatrix, DenseVector, diag}
7-
import scalaz._
8-
import Scalaz._
5+
import breeze.stats.distributions.{Gaussian, Uniform}
6+
import io.github.mandar2812.dynaml.models.lm.KFilter
7+
import io.github.mandar2812.dynaml.models.lm.generalDLM._
8+
import KFilter._
9+
import scalaz.Scalaz._
910

1011
object mcmc {
1112
case class MetropolisState(params: Parameters, accepted: Int, ll: Loglikelihood)
@@ -56,7 +57,7 @@ object mcmc {
5657
println(s"Accepted: ${iters.last.accepted.toDouble/n}")
5758

5859
// write the parameters to file
59-
val pw = new PrintWriter(new File("mcmcOut.csv"))
60+
val pw = new PrintWriter(new File("data/mcmcOutRes.csv"))
6061
pw.write(iters.map(_.params).mkString("\n"))
6162
pw.close()
6263
}

firstOrderdlm/build.sbt

Lines changed: 0 additions & 7 deletions
This file was deleted.

project/Dependencies.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ object Dependencies {
1414
"com.github.tototoshi" % "scala-csv_2.11" % "1.1.2" % "compile",
1515
"org.scala-lang" % "jline" % "2.11.0-M3" % "compile",
1616
"org.scalaforge" % "scalax" % "0.1" % "compile",
17-
"org.scala-lang" % "scala-pickling_2.11" % "0.9.1" % "compile"
18-
17+
"org.scala-lang" % "scala-pickling_2.11" % "0.9.1" % "compile",
18+
"org.scalaz" %% "scalaz-core" % "7.2.0"
1919
)
2020

2121
val apacheSpark = Seq(
@@ -27,7 +27,8 @@ object Dependencies {
2727

2828
val linearAlgebraDependencies = Seq(
2929
"org.scalanlp" % "breeze_2.11" % "0.11.2" % "compile",
30-
"org.scalanlp" % "breeze-natives_2.11" % "0.11.2" % "compile")
30+
"org.scalanlp" % "breeze-natives_2.11" % "0.11.2" % "compile"/*,
31+
"org.spire-math" %% "spire" % "0.11.0"*/)
3132

3233
val chartsDependencies = Seq(
3334
"com.github.wookietreiber" % "scala-chart_2.11" % "0.4.2" % "compile",

0 commit comments

Comments
 (0)