@@ -28,7 +28,7 @@ import io.github.mandar2812.dynaml.modelpipe.GPRegressionPipe2
2828import io .github .mandar2812 .dynaml .models .gp .AbstractGPRegressionModel
2929
3030import scala .reflect .ClassTag
31- import io .github .mandar2812 .dynaml .pipes .{DataPipe , MetaPipe , ParallelPipe }
31+ import io .github .mandar2812 .dynaml .pipes .{DataPipe , Encoder , MetaPipe , ParallelPipe }
3232import io .github .mandar2812 .dynaml .probability .{MatrixNormalRV , MultGaussianPRV }
3333
3434/**
@@ -46,7 +46,8 @@ import io.github.mandar2812.dynaml.probability.{MatrixNormalRV, MultGaussianPRV}
4646 * */
4747abstract class GaussianProcessPrior [I : ClassTag , MeanFuncParams ](
4848 val covariance : LocalScalarKernel [I ],
49- val noiseCovariance : LocalScalarKernel [I ]) extends
49+ val noiseCovariance : LocalScalarKernel [I ],
50+ val trendParamsEncoder : Encoder [MeanFuncParams , Map [String , Double ]]) extends
5051 StochasticProcessPrior [
5152 I , Double , PartitionedVector ,
5253 MultGaussianPRV , MultGaussianPRV ,
@@ -138,6 +139,7 @@ abstract class GaussianProcessPrior[I: ClassTag, MeanFuncParams](
138139 ScaledKernel [I ](self.covariance, scalingFunc),
139140 ScaledKernel [I ](self.noiseCovariance, scalingFunc),
140141 MetaPipe ((p : MeanFuncParams ) => (x : I ) => self.meanFunctionPipe(p)(x)* scalingFunc(x)),
142+ self.trendParamsEncoder,
141143 self._meanFuncParams)
142144
143145}
@@ -151,8 +153,9 @@ object GaussianProcessPrior {
151153 covariance : LocalScalarKernel [I ],
152154 noiseCovariance : LocalScalarKernel [I ],
153155 meanFPipe : MetaPipe [MeanFuncParams , I , Double ],
156+ trendParamsEncoder : Encoder [MeanFuncParams , Map [String , Double ]],
154157 initialParams : MeanFuncParams ): GaussianProcessPrior [I , MeanFuncParams ] =
155- new GaussianProcessPrior [I , MeanFuncParams ](covariance, noiseCovariance) {
158+ new GaussianProcessPrior [I , MeanFuncParams ](covariance, noiseCovariance, trendParamsEncoder ) {
156159
157160 private var params = initialParams
158161
@@ -173,9 +176,10 @@ object GaussianProcessPrior {
173176 * */
174177class LinearTrendGaussianPrior [I : ClassTag ](
175178 cov : LocalScalarKernel [I ], n : LocalScalarKernel [I ],
179+ trendParamsEncoder : Encoder [(I , Double ), Map [String , Double ]],
176180 trendParams : I , intercept : Double )(
177181 implicit inner : InnerProductSpace [I , Double ]) extends
178- GaussianProcessPrior [I , (I , Double )](cov, n) with
182+ GaussianProcessPrior [I , (I , Double )](cov, n, trendParamsEncoder ) with
179183 LinearTrendStochasticPrior [I , MultGaussianPRV , MultGaussianPRV , AbstractGPRegressionModel [Seq [(I , Double )], I ]]{
180184
181185 override val innerProduct = inner
@@ -210,8 +214,12 @@ class LinearTrendGaussianPrior[I: ClassTag](
210214 * */
211215abstract class CoRegGPPrior [I : ClassTag , J : ClassTag , MeanFuncParams ](
212216 covarianceI : LocalScalarKernel [I ], covarianceJ : LocalScalarKernel [J ],
213- noiseCovarianceI : LocalScalarKernel [I ], noiseCovarianceJ : LocalScalarKernel [J ]) extends
214- GaussianProcessPrior [(I ,J ), MeanFuncParams ](covarianceI:* covarianceJ, noiseCovarianceI:* noiseCovarianceJ) {
217+ noiseCovarianceI : LocalScalarKernel [I ], noiseCovarianceJ : LocalScalarKernel [J ],
218+ trendParamsEncoder : Encoder [MeanFuncParams , Map [String , Double ]]) extends
219+ GaussianProcessPrior [(I ,J ), MeanFuncParams ](
220+ covarianceI:* covarianceJ,
221+ noiseCovarianceI:* noiseCovarianceJ,
222+ trendParamsEncoder) {
215223
216224 self =>
217225
@@ -243,6 +251,7 @@ abstract class CoRegGPPrior[I: ClassTag, J: ClassTag, MeanFuncParams](
243251 MetaPipe ((p : MeanFuncParams ) => (x : (I , J )) => {
244252 self.meanFunctionPipe(p)(x)* scalingFunc._1(x._1)* scalingFunc._2(x._2)
245253 }),
254+ self.trendParamsEncoder,
246255 self._meanFuncParams
247256 )
248257}
@@ -268,8 +277,12 @@ object CoRegGPPrior {
268277 covarianceI : LocalScalarKernel [I ], covarianceJ : LocalScalarKernel [J ],
269278 noiseCovarianceI : LocalScalarKernel [I ], noiseCovarianceJ : LocalScalarKernel [J ])(
270279 meanFPipe : MetaPipe [MeanFuncParams , (I , J ), Double ],
280+ trendParamsEncoder : Encoder [MeanFuncParams , Map [String , Double ]],
271281 initialParams : MeanFuncParams ) =
272- new CoRegGPPrior [I , J , MeanFuncParams ](covarianceI, covarianceJ, noiseCovarianceI, noiseCovarianceJ) {
282+ new CoRegGPPrior [I , J , MeanFuncParams ](
283+ covarianceI, covarianceJ,
284+ noiseCovarianceI, noiseCovarianceJ,
285+ trendParamsEncoder) {
273286
274287 private var params = initialParams
275288
0 commit comments