Skip to content

Commit

Permalink
add Makie integration (#143)
Browse files Browse the repository at this point in the history
* add Makie integration

* fix for earlier julia versions
  • Loading branch information
aplavin committed Jul 2, 2024
1 parent 0006227 commit 8fcaef7
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 4 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
julia-version: ['1.6']
julia-version: ['1.6', '1']
os: [ubuntu-latest]
steps:
- uses: actions/checkout@v2
Expand Down
10 changes: 9 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,18 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[weakdeps]
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"

[extensions]
MakieExt = "Makie"

[compat]
Distributions = "0.17,0.18,0.19,0.20,0.21, 0.22, 0.23, 0.24, 0.25"
ForwardDiff = "0.10"
GenericSchur = "0.5"
MacroTools = "<0.6"
Makie = "0.21"
RecipesBase = "<0.8, 0.8, 1.0"
Requires = "<0.6, 1.0"
SLEEFPirates = "0.4, 0.5, 0.6"
Expand All @@ -34,10 +41,11 @@ julia = "1.6"

[extras]
ControlSystemsBase = "aaaaaaaa-a6ca-5380-bf3e-84a91bcd477e"
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"

[targets]
test = ["ControlSystemsBase", "Measurements", "Test", "Plots", "Unitful"]
test = ["ControlSystemsBase", "Makie", "Measurements", "Test", "Plots", "Unitful"]
16 changes: 16 additions & 0 deletions ext/MakieExt.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module MakieExt

using Makie
using MonteCarloMeasurements

Makie.used_attributes(::Type{<:Series}, ::AbstractVector, ::AbstractVector{<:Particles}) = (:N,)
Makie.used_attributes(::Type{<:Series}, ::AbstractVector{<:Tuple{<:Real,<:Particles}}) = (:N,)
Makie.convert_arguments(ct::Type{<:Series}, x::AbstractVector, y::AbstractVector{<:Particles}; N=7) = convert_arguments(ct, x, Matrix(y)[1:min(N, end), :])
Makie.used_attributes(::Type{<:Union{Rangebars,Band}}, ::AbstractVector, ::AbstractVector{<:Particles}) = (:q,)
Makie.used_attributes(::Type{<:Union{Rangebars,Band}}, ::AbstractVector{<:Tuple{<:Real,<:Particles}}) = (:q,)
Makie.convert_arguments(p::Type{<:Union{Hist,Density}}, x::Particles) = convert_arguments(p, Vector(x))
Makie.convert_arguments(ct::Type{<:Union{Rangebars,Band}}, x::AbstractVector, y::AbstractVector{<:Particles}; q=0.16) = convert_arguments(ct, x, pquantile.(y, q), pquantile.(y, 1-q))
Makie.convert_arguments(ct::Type{<:AbstractPlot}, X::AbstractVector{<:Tuple{<:Real,<:Particles}}; kwargs...) = convert_arguments(ct, first.(X), last.(X); kwargs...)
Makie.convert_arguments(ct::PointBased, x::AbstractVector{<:Real}, y::AbstractVector{<:Particles}) = convert_arguments(ct, x, pmean.(y))

end
22 changes: 20 additions & 2 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
using MonteCarloMeasurements, Distributions
using Test, LinearAlgebra, Statistics, Random, GenericSchur
import MonteCarloMeasurements: , gradient, optimize, DEFAULT_NUM_PARTICLES
@info "import Plots"
@info "import Plots, Makie"
import Plots
@info "import Plots done"
import Makie
@info "import plotting packages done"

Random.seed!(0)

Expand Down Expand Up @@ -655,6 +656,23 @@ Random.seed!(0)
@test_nowarn MonteCarloMeasurements.print_functions_to_extend()
end

VERSION v"1.9" && @time @testset "Makie" begin
p1 = Particles(10^2)
Makie.hist(p1)
Makie.density(p1)

xs = 1:20
ys = Particles.(Normal.(sqrt.(1:20), sqrt.(1:20)./5))

Makie.scatter(xs, ys)
Makie.scatter(tuple.(xs, ys))
Makie.band(xs, ys)
Makie.band(tuple.(xs, ys); q=0.01)
Makie.rangebars(tuple.(xs, ys); q=0.16)
Makie.series(xs, ys)
Makie.series(tuple.(xs, ys); N=5)
end

@time @testset "optimize" begin
@info "Testing optimization"
function rosenbrock2d(x)
Expand Down

0 comments on commit 8fcaef7

Please sign in to comment.