Skip to content

Commit c7a8c92

Browse files
committed
Version 1.4.3 begun!
- Added feature in ParallelPipe to access individual pipes - Added scaling function for CoRegGPPrior
1 parent be23f41 commit c7a8c92

File tree

4 files changed

+35
-6
lines changed

4 files changed

+35
-6
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ packageDescription := "DynaML is a scala library/repl for implementing and worki
1212
"which can be extended easily to implement advanced models for small and large scale applications.\n\n"+
1313
"But the library can also be used as an educational/research tool for data analysis."
1414

15-
val mainVersion = "v1.4.2"
15+
val mainVersion = "v1.4.3-beta.1"
1616

1717
val dataDirectory = settingKey[File]("The directory holding the data files for running example scripts")
1818

copy-docs.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#! /bin/bash
22

3-
cp -R dynaml-core/target/scala-2.11/api/* docs/api_docs/v1.4.2/dynaml-core/
4-
cp -R dynaml-pipes/target/scala-2.11/api/* docs/api_docs/v1.4.2/dynaml-pipes/
5-
cp -R dynaml-examples/target/scala-2.11/api/* docs/api_docs/v1.4.2/dynaml-examples/
6-
cp -R target/scala-2.11/api/* docs/api_docs/v1.4.2/dynaml-repl/
3+
cp -R dynaml-core/target/scala-2.11/api/* docs/api_docs/v1.4.3/dynaml-core/
4+
cp -R dynaml-pipes/target/scala-2.11/api/* docs/api_docs/v1.4.3/dynaml-pipes/
5+
cp -R dynaml-examples/target/scala-2.11/api/* docs/api_docs/v1.4.3/dynaml-examples/
6+
cp -R target/scala-2.11/api/* docs/api_docs/v1.4.3/dynaml-repl/

dynaml-core/src/main/scala-2.11/io/github/mandar2812/dynaml/models/bayes/GaussianProcessPrior.scala

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import io.github.mandar2812.dynaml.modelpipe.GPRegressionPipe2
2828
import io.github.mandar2812.dynaml.models.gp.AbstractGPRegressionModel
2929

3030
import scala.reflect.ClassTag
31-
import io.github.mandar2812.dynaml.pipes.{DataPipe, MetaPipe}
31+
import io.github.mandar2812.dynaml.pipes.{DataPipe, MetaPipe, ParallelPipe}
3232
import io.github.mandar2812.dynaml.probability.{MatrixNormalRV, MultGaussianPRV}
3333

3434
/**
@@ -213,6 +213,7 @@ abstract class CoRegGPPrior[I: ClassTag, J: ClassTag, MeanFuncParams](
213213
noiseCovarianceI: LocalScalarKernel[I], noiseCovarianceJ: LocalScalarKernel[J]) extends
214214
GaussianProcessPrior[(I,J), MeanFuncParams](covarianceI:*covarianceJ, noiseCovarianceI:*noiseCovarianceJ) {
215215

216+
self =>
216217

217218
def priorDistribution[U <: Seq[I], V <: Seq[J]](d1: U, d2: V): MatrixNormalRV = {
218219

@@ -224,6 +225,26 @@ abstract class CoRegGPPrior[I: ClassTag, J: ClassTag, MeanFuncParams](
224225
MatrixNormalRV(m, u, v)
225226
}
226227

228+
/**
229+
* Define a prior over the process which is a scaled version of the base GP.
230+
*
231+
* z ~ GP(m(.), K(.,.))
232+
*
233+
* y = g(x)&times;z
234+
*
235+
* y ~ GP(g(x)&times;m(x), g(x)K(x,x')g(x'))
236+
**/
237+
def *(scalingFunc: ParallelPipe[I, Double, J, Double]) =
238+
CoRegGPPrior(
239+
ScaledKernel[I](self.covarianceI, scalingFunc._1),
240+
ScaledKernel[J](self.covarianceJ, scalingFunc._2),
241+
ScaledKernel[I](self.noiseCovarianceI, scalingFunc._1),
242+
ScaledKernel[J](self.noiseCovarianceJ, scalingFunc._2))(
243+
MetaPipe((p: MeanFuncParams) => (x: (I, J)) => {
244+
self.meanFunctionPipe(p)(x)*scalingFunc._1(x._1)*scalingFunc._2(x._2)
245+
}),
246+
self._meanFuncParams
247+
)
227248
}
228249

229250
object CoRegGPPrior {

dynaml-pipes/src/main/scala-2.11/io/github/mandar2812/dynaml/pipes/DataPipe.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,21 @@ object DataPipe {
9898
trait ParallelPipe[-Source1, +Result1, -Source2, +Result2]
9999
extends DataPipe[(Source1, Source2), (Result1, Result2)] {
100100

101+
val _1: DataPipe[Source1, Result1]
102+
val _2: DataPipe[Source2, Result2]
103+
101104
}
102105

103106
object ParallelPipe {
104107
def apply[S1, D1, S2, D2](func1: (S1) => D1, func2: (S2) => D2):
105108
ParallelPipe[S1, D1, S2, D2] = {
106109
new ParallelPipe[S1, D1, S2, D2] {
110+
107111
def run(data: (S1, S2)) = (func1(data._1), func2(data._2))
112+
113+
override val _1 = DataPipe(func1)
114+
115+
override val _2 = DataPipe(func2)
108116
}
109117
}
110118
}

0 commit comments

Comments
 (0)