STOR-i / GaussianProcesses.jl

A Julia package for Gaussian Processes
https://stor-i.github.io/GaussianProcesses.jl/latest/
Other
308 stars 53 forks source link

plotting error #150

Closed juliebuard closed 4 years ago

juliebuard commented 4 years ago

Hi, when trying to plot a gp, I am getting the below error on julia 1.3:

ERROR: AssertionError: gp.dim ∈ (1, 2)
Stacktrace:
 [1] macro expansion at /Users/jbuard/.julia/packages/GaussianProcesses/sed6i/src/plot.jl:8 [inlined]
 [2] apply_recipe(::Dict{Symbol,Any}, ::GPE{Array{Float64,2},Array{Float64,1},MeanZero,RQIso{Float64},GaussianProcesses.FullCovariance,GaussianProcesses.IsotropicData{Array{Float64,2}},PDMats.PDMat{Float64,Array{Float64,2}},GaussianProcesses.Scalar{Float64}}) at /Users/jbuard/.julia/packages/RecipesBase/zBoFG/src/RecipesBase.jl:275
 [3] _process_userrecipes(::Plots.Plot{Plots.PyPlotBackend}, ::Dict{Symbol,Any}, ::Tuple{GPE{Array{Float64,2},Array{Float64,1},MeanZero,RQIso{Float64},GaussianProcesses.FullCovariance,GaussianProcesses.IsotropicData{Array{Float64,2}},PDMats.PDMat{Float64,Array{Float64,2}},GaussianProcesses.Scalar{Float64}}}) at /Users/jbuard/.julia/packages/Plots/qZHsp/src/pipeline.jl:83
 [4] _plot!(::Plots.Plot{Plots.PyPlotBackend}, ::Dict{Symbol,Any}, ::Tuple{GPE{Array{Float64,2},Array{Float64,1},MeanZero,RQIso{Float64},GaussianProcesses.FullCovariance,GaussianProcesses.IsotropicData{Array{Float64,2}},PDMats.PDMat{Float64,Array{Float64,2}},GaussianProcesses.Scalar{Float64}}}) at /Users/jbuard/.julia/packages/Plots/qZHsp/src/plot.jl:178
 [5] #plot#138(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(plot), ::GPE{Array{Float64,2},Array{Float64,1},MeanZero,RQIso{Float64},GaussianProcesses.FullCovariance,GaussianProcesses.IsotropicData{Array{Float64,2}},PDMats.PDMat{Float64,Array{Float64,2}},GaussianProcesses.Scalar{Float64}}) at /Users/jbuard/.julia/packages/Plots/qZHsp/src/plot.jl:57
 [6] plot(::GPE{Array{Float64,2},Array{Float64,1},MeanZero,RQIso{Float64},GaussianProcesses.FullCovariance,GaussianProcesses.IsotropicData{Array{Float64,2}},PDMats.PDMat{Float64,Array{Float64,2}},GaussianProcesses.Scalar{Float64}}) at /Users/jbuard/.julia/packages/Plots/qZHsp/src/plot.jl:51
 [7] top-level scope at none:0
chris-nemeth commented 4 years ago

Hi @juliebuard, I haven't this type of error before. Do you also get the same error for 1-dimensional GPs? If the issue is only with the 2-dimensional GP, then for a quick workaround you could directly use the Plots.jl package (our plotting functions are essentially calling this package).

using Plots

xmin, xmax = (minimum(gp.x[1,:]), maximum(gp.x[1,:])); ymin, ymax = (minimum(gp.x[2,:]), maximum(gp.x[2,:])); x = range(xmin, stop=xmax, length=50); y = range(ymin, stop=ymax, length=50); xgrid = repeat(x', 50, 1); ygrid = repeat(y, 1, 50); μ, Σ = predict_f(gp,[vec(xgrid)';vec(ygrid)']) zgrid = reshape(μ,50,50); p1 = contour(x, y, zgrid); plot(p1)

juliebuard commented 4 years ago

Thanks! I have indeed used this week this source code from the function itself to be able to extract what I needed to deal with bigger dimension.