Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 11:20

    mforets on gh-pages

    build based on 93fab9b (compare)

  • 11:09

    mforets on gh-pages

    build based on 3947b22 (compare)

  • 10:37
    mforets synchronize #555
  • 10:37

    mforets on lgg09_symbol

    Update LGG09.jl (compare)

  • 10:24

    mforets on homogeneize

    (compare)

  • 10:24

    mforets on master

    update homog methods updates homog Merge pull request #556 from Ju… (compare)

  • 10:24
    mforets closed #556
  • 05:22
    schillic review_requested #2879
  • 04:33
    schillic synchronize #2879
  • 04:33

    schillic on exponential_map

    concrete exponential map add concretize for ExponentialM… (compare)

  • 03:46

    mforets on gh-pages

    build based on ba9fb8a (compare)

  • 03:42

    mforets on gh-pages

    build based on 5c7deae (compare)

  • 03:02
    mforets opened #556
  • 03:01
    mforets opened #555
  • 03:00

    mforets on lgg09_symbol

    add test (compare)

  • 02:52

    mforets on homogeneize

    update homog methods updates homog (compare)

  • Sep 27 20:14
    schillic synchronize #2879
  • Sep 27 20:14

    schillic on exponential_map

    add concretize for ExponentialM… (compare)

  • Sep 27 20:06
    schillic opened #2879
  • Sep 27 20:06

    schillic on exponential_map

    concrete exponential map (compare)

Dale-Black
@Dale-Black
Thanks for your reply @mforets, is there any reason LazySets couldnt be utilized for these types of problems or are there any libraries out there better suited for this? Just want to double check before building from scratch? Specifically, just looking for the initial level set initialization like the link i posted above
Marcelo Forets
@mforets

is there any reason LazySets couldnt be utilized for these types of problems or are there any libraries out there better suited for this?

we (LazySets devs) don't work on image analysis problems like the one you indicate.

if you have questions about how to use the library for the application we're happy to help
Marcelo Forets
@mforets
ellipsoids are available in LazySets (type ?Ellipsoid)
iiuc you would have to implement ellipsoid_level_set(image_shape, E::Ellipsoid)
to get the center of E there is center, and for the semi-axes, there is no getter function i think (but it shouldn't be hard to add)
Marcelo Forets
@mforets
.. well those can be obtained directly from the (inverse) of the extremal singular values of the shape matrix ( https://tcg.mae.cornell.edu/pubs/Pope_FDA_08.pdf )
Marcelo Forets
@mforets
like this:
using LazySets, Plots, LinearAlgebra
using LazySets: center

E = Ellipsoid([1.0, 1.0], [2.0 0.0; 0.0 0.5])

vals = E |> shape_matrix |> svdvals
rmin = 1/sqrt(vals[1])
rmax = 1/sqrt(vals[end]);

rmin, rmax
(0.7071067811865475, 1.414213562373095)

b = box_approximation(E) # since E is axis-aligned, its axes match the radius of the enclosing box
Hyperrectangle{Float64, Vector{Float64}, Vector{Float64}}([1.0, 1.0], [1.414213562373095, 0.7071067811865475])
Marcelo Forets
@mforets
in fact ellipsoid_level_set receives the center and axes and creates the ellipsoid, so it is the other way round:
function ellipsoid_level_set(image_shape, center=nothing, semi_axis=nothing)

    if isnothing(center)
        center = [i/2 for i in image_shape]
    end

    if isnothing(semi_axis)
        semi_axis = [i/2 for i in image_shape]
    end

    length(center) == length(image_shape) || throw(ArgumentError("`center` and `image_shape` must have the same length."))

    length(semi_axis) == length(image_shape) || throw(ArgumentError("`semi_axis` and `image_shape` must have the same length."))

    rx, ry = semi_axis
    return Ellipsoid(center, Diagonal([rx^2, ry^2]))
end
Dale-Black
@Dale-Black
Thank you! I’ll be working on utilizing LazySets for all of the various ways to initialize a level set now!
Marcelo Forets
@mforets
:thumbsup: if you get those "snake" plots let us know!
Dale-Black
@Dale-Black
Is there a way to convert a LazySets type like Ellipsoid to an array? Say, a binary array or something similar?
Marcelo Forets
@mforets
what would the array represent?
if a region is inside the ellipsoid or not?

that can be done with the membership function:

E = Ellipsoid([1.0, 1.0], [2.0 0.0; 0.0 0.5])
B = box_approximation(E)
Bs = split(B, [30, 30])

res = [center(Bi) ∈ E for Bi in Bs]
M = reshape(res, (30, 30))

produces

plot(E)
plot!(Bs)
Marcelo Forets
@mforets
Screenshot from 2021-07-01 00-37-46.png
and the M matrix is
30×30 Matrix{Bool}:
 0  0  0  0  0  0  0  0  0  0  0  1  11  0  0  0  0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0  1  1  1  1  1     1  1  1  1  0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  1  1  1  1  1  1     1  1  1  1  1  0  0  0  0  0  0  0
 0  0  0  0  0  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  0  0  0  0  0
 0  0  0  0  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  0  0  0  0
 0  0  0  1  1  1  1  1  1  1  1  1  11  1  1  1  1  1  1  1  1  0  0  0
 0  0  0  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  0  0  0
 0  0  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  0  0
 0  1  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  1  0
 0  1  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  1  0
 0  1  1  1  1  1  1  1  1  1  1  1  11  1  1  1  1  1  1  1  1  1  1  0
 1  1  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  1  1
 1  1  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  1  1
 ⋮              ⋮              ⋮        ⋱        ⋮              ⋮           
 1  1  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  1  1
 0  1  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  1  0
 0  1  1  1  1  1  1  1  1  1  1  1  11  1  1  1  1  1  1  1  1  1  1  0
 0  1  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  1  0
 0  0  1  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  1  0  0
 0  0  0  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  0  0  0
 0  0  0  1  1  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  1  1  0  0  0
 0  0  0  0  1  1  1  1  1  1  1  1  11  1  1  1  1  1  1  1  0  0  0  0
 0  0  0  0  0  1  1  1  1  1  1  1  1     1  1  1  1  1  1  1  0  0  0  0  0
 0  0  0  0  0  0  0  1  1  1  1  1  1     1  1  1  1  1  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0  1  1  1  1  1     1  1  1  1  0  0  0  0  0  0  0  0
 0  0  0  0  0  0  0  0  0  0  0  1  1     1  0  0  0  0  0  0  0  0  0  0  0
and
plot(E)
plot!(Bs[res])
Screenshot from 2021-07-01 00-39-58.png
Dale-Black
@Dale-Black
Yes that's exactly what I am looking for. Thanks again
Marcelo Forets
@mforets
:thumbsup:
Christian Schilling
@schillic
:O
Marcelo Forets
@mforets
in the #javis.jl stream on zulip i got feedback from the Javis developers and made a quick animation
Javis is a pure julia package to make animations
it has many features that i didn';t try yet, such as sets following a path
Marcelo Forets
@mforets

today i tried running the Lazysets docs and tests in Julia v1.6 .. and it takes no more than 2 minutes :tada:

in the past it used to take much longer i think

$ time julia --color=yes docs/make.jl  && julia --color=yes test/runtests.jl

Test Summary:     | Pass  Total
LazySets.plotting |    2      2
 21.167309 seconds (31.84 M allocations: 1.854 GiB, 2.67% gc time, 19.44% compilation time)
[ Info: SetupBuildDirectory: setting up build directory.
[ Info: Doctest: running doctests.
[ Info: Skipped ExpandTemplates step (doctest only).
[ Info: Skipped CrossReferences step (doctest only).
[ Info: Skipped CheckDocument step (doctest only).
[ Info: Skipped Populate step (doctest only).
[ Info: Skipped RenderDocument step (doctest only).
Test Summary:     | Pass  Total
LazySets.doctests |    1      1
 50.646803 seconds (79.67 M allocations: 5.673 GiB, 2.96% gc time, 4.86% compilation time)
so its 20 sec for tests and 50 sec for doctests and actually building the docs
just rebased to master the branch JuliaReach/LazySets.jl#2753
Christian Schilling
@schillic
the time you show here is just the doctests. the building happens in the first command and does not print the time (you should have gotten the result of time for everything at the very end)
also, you are only showing the time for the plot tests and doctests. there are a lot more of them
what is true is that most of the time is spent in precompilation. running the tests a second time is fast
Marcelo Forets
@mforets
:thumbsup:
Christian Schilling
@schillic
building the docs takes 5:30 and running the tests takes 11:00 on a github server
Christian Schilling
@schillic
Christian Schilling
@schillic
the time for using LazySets increased by 2 seconds compared to v1.6.1 :(
Marcelo Forets
@mforets
ohh
2 seconds is a lot. you tried v1.7 the other day. it also has that additional latency? (i guess so? )
there is supposed to be a workshop / talk about how to use tools to reduce latency
Christian Schilling
@schillic
in v1.7.0-beta3.0 it's 1 second faster compared to v1.6.2 :)
Marcelo Forets
@mforets
the workshop It's all Set: A hands-on introduction to JuliaReach
has been announced
and also the minisymposium Set Propagation Methods in Julia: Techniques and Applications
https://pretalx.com/juliacon2021/talk/DRMPLU/
Christian Schilling
@schillic
@mforets: about the recent segmentation fault when building the docs: it's not just us: JuliaPolyhedra/Polyhedra.jl#265
Marcelo Forets
@mforets
i feel like adding the content of the notebooks to the packages docs
i also like the guided introduction to NNA
can we also trim the youtube video? i mean, the last 15 mins with the NNA presentation
so we can link that directly from the NNA docs