From 40881938ea949c1328cc6f2bcf7edeeebee1106e Mon Sep 17 00:00:00 2001 From: ST John Date: Wed, 30 Jun 2021 17:02:31 +0300 Subject: [PATCH 01/16] initial version of gaussian process priors example from st/examples (#234) --- .../gaussian-process-priors/Manifest.toml | 909 ++++++++++++++++++ examples/gaussian-process-priors/Project.toml | 11 + examples/gaussian-process-priors/script.jl | 89 ++ 3 files changed, 1009 insertions(+) create mode 100644 examples/gaussian-process-priors/Manifest.toml create mode 100644 examples/gaussian-process-priors/Project.toml create mode 100644 examples/gaussian-process-priors/script.jl diff --git a/examples/gaussian-process-priors/Manifest.toml b/examples/gaussian-process-priors/Manifest.toml new file mode 100644 index 000000000..82ff2a879 --- /dev/null +++ b/examples/gaussian-process-priors/Manifest.toml @@ -0,0 +1,909 @@ +# This file is machine-generated - editing it directly is not advised + +[[Adapt]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "84918055d15b3114ede17ac6a7182f68870c16f7" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "3.3.1" + +[[ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c3598e525718abcc440f69cc6d5f60dda0a1b61e" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.6+5" + +[[Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "e2f47f6d8337369411569fd45ae5753ca10394c6" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.16.0+6" + +[[ChainRulesCore]] +deps = ["Compat", "LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "be770c08881f7bb928dfd86d1ba83798f76cf62a" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "0.10.9" + +[[ColorSchemes]] +deps = ["ColorTypes", "Colors", "FixedPointNumbers", "Random", "StaticArrays"] +git-tree-sha1 = "c8fd01e4b736013bc61b704871d20503b33ea402" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.12.1" + +[[ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "024fe24d83e4a5bf5fc80501a314ce0d1aa35597" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.11.0" + +[[Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] +git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.8" + +[[Compat]] +deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] +git-tree-sha1 = "dc7dedc2c2aa9faf59a55c622760a25cbefbe941" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "3.31.0" + +[[CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" + +[[CompositionsBase]] +git-tree-sha1 = "f3955eb38944e5dd0fabf8ca1e267d94941d34a5" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.0" + +[[Contour]] +deps = ["StaticArrays"] +git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.5.7" + +[[DataAPI]] +git-tree-sha1 = "ee400abb2298bd13bfc3df1c412ed228061a2385" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.7.0" + +[[DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "4437b64df1e0adccc3e5d1adbc3ac741095e4677" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.9" + +[[DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[DelimitedFiles]] +deps = ["Mmap"] +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" + +[[Distances]] +deps = ["LinearAlgebra", "Statistics", "StatsAPI"] +git-tree-sha1 = "abe4ad222b26af3337262b8afb28fab8d215e9f8" +uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" +version = "0.10.3" + +[[Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[Distributions]] +deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns"] +git-tree-sha1 = "2733323e5c02a9d7f48e7a3c4bc98d764fb704da" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.6" + +[[DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "a32185f5428d3986f47c2ab78b1f216d5e6cc96f" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.8.5" + +[[Downloads]] +deps = ["ArgTools", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" + +[[EarCut_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "92d8f9f208637e8d2d28c664051a00569c01493d" +uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" +version = "2.1.5+1" + +[[Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b3bfd02e98aedfa5cf885665493c5598c350cd2f" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.2.10+0" + +[[FFMPEG]] +deps = ["FFMPEG_jll"] +git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.1" + +[[FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "LibVPX_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "Pkg", "Zlib_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "3cc57ad0a213808473eafef4845a74766242e05f" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.3.1+4" + +[[FillArrays]] +deps = ["LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "a603e79b71bb3c1efdb58f0ee32286efe2d1a255" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "0.11.8" + +[[FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "35895cf184ceaab11fd778b4590144034a167a2f" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.13.1+14" + +[[Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "cbd58c9deb1d304f5a245a0b7eb841a2560cfec6" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.10.1+5" + +[[FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.10+0" + +[[Functors]] +deps = ["MacroTools"] +git-tree-sha1 = "a7bb2af991c43dcf5c3455d276dd83976799634f" +uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" +version = "0.2.1" + +[[GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] +git-tree-sha1 = "dba1e8614e98949abfa60480b13653813d8f0157" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.3.5+0" + +[[GR]] +deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Printf", "Random", "Serialization", "Sockets", "Test", "UUIDs"] +git-tree-sha1 = "b83e3125048a9c3158cbb7ca423790c7b1b57bea" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.57.5" + +[[GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Pkg", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "e14907859a1d3aee73a019e7b3c98e9e7b8b5b3e" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.57.3+0" + +[[GeometryBasics]] +deps = ["EarCut_jll", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] +git-tree-sha1 = "15ff9a14b9e1218958d3530cc288cf31465d9ae2" +uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" +version = "0.3.13" + +[[Gettext_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" +uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" +version = "0.21.0+0" + +[[Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "47ce50b742921377301e15005c96e979574e130b" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.68.1+0" + +[[Grisu]] +git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.2" + +[[HTTP]] +deps = ["Base64", "Dates", "IniFile", "Logging", "MbedTLS", "NetworkOptions", "Sockets", "URIs"] +git-tree-sha1 = "99c6bc381e98c5331f34b9ce949aebea209bd0db" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "0.9.11" + +[[IniFile]] +deps = ["Test"] +git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" +uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" +version = "0.5.0" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[IterTools]] +git-tree-sha1 = "05110a2ab1fc5f932622ffea2a003221f4782c18" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.3.0" + +[[IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[JLLWrappers]] +deps = ["Preferences"] +git-tree-sha1 = "642a199af8b68253517b80bd3bfd17eb4e84df6e" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.3.0" + +[[JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "81690084b6198a2e1da36fcfda16eeca9f9f24e4" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.1" + +[[JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "d735490ac75c5cb9f1b00d8b5509c11984dc6943" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "2.1.0+0" + +[[KernelFunctions]] +deps = ["ChainRulesCore", "Compat", "CompositionsBase", "Distances", "FillArrays", "Functors", "LinearAlgebra", "Random", "Requires", "SpecialFunctions", "StatsBase", "StatsFuns", "TensorCore", "Test", "ZygoteRules"] +git-tree-sha1 = "e8b5ba31b6d18695fd46bfcd8557682839023195" +uuid = "ec8451be-7e33-11e9-00cf-bbf324bd1392" +version = "0.10.6" + +[[LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.1+0" + +[[LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.1+0" + +[[LaTeXStrings]] +git-tree-sha1 = "c7f1c695e06c01b95a67f0cd1d34994f3e7db104" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.2.1" + +[[Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "Printf", "Requires"] +git-tree-sha1 = "a4b12a1bd2ebade87891ab7e36fdbce582301a92" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.15.6" + +[[LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" + +[[LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" + +[[LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" + +[[LibVPX_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "12ee7e23fa4d18361e7c2cde8f8337d4c3101bc7" +uuid = "dd192d2f-8180-539f-9fb4-cc70b1dcf69a" +version = "1.10.0+0" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "761a393aeccd6aa92ec3515e428c26bf99575b3b" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.2+0" + +[[Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.8.7+0" + +[[Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "7739f837d6447403596a75d19ed01fd08d6f56bf" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.3.0+3" + +[[Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.42.0+0" + +[[Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "42b62845d70a619f063a7da093d995ec8e15e778" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.16.1+1" + +[[Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.35.0+0" + +[[Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "340e257aada13f95f98ee352d316c3bed37c8ab9" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.3.0+0" + +[[Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.36.0+0" + +[[LinearAlgebra]] +deps = ["Libdl"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[LogExpFunctions]] +deps = ["DocStringExtensions", "LinearAlgebra"] +git-tree-sha1 = "1ba664552f1ef15325e68dc4c05c3ef8c2d5d885" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.2.4" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "6a8a2a625ab0dea913aba95c11370589e0239ff0" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.6" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "Random", "Sockets"] +git-tree-sha1 = "1c38e51c3d08ef2278062ebceade0e46cefc96fe" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.0.3" + +[[MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" + +[[Measures]] +git-tree-sha1 = "e498ddeee6f9fdb4551ce855a46f54dbd900245f" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.1" + +[[Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "4ea90bd5d3985ae1f9a908bd4500ae88921c5ce7" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.0.0" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" + +[[NaNMath]] +git-tree-sha1 = "bfe47e760d60b82b66b61d2d44128b62e3a369fb" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "0.3.5" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" + +[[Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7937eda4681660b4d6aeeecc2f7e1c81c8ee4e2f" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.5+0" + +[[OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "15003dcb7d8db3c6c857fda14891a539a8f2705a" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "1.1.10+0" + +[[OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.3.2+0" + +[[OrderedCollections]] +git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.4.1" + +[[PCRE_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b2a7af664e098055a7529ad1a900ded962bca488" +uuid = "2f80f16e-611a-54ab-bc61-aa92de5b98fc" +version = "8.44.0+0" + +[[PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "4dd403333bcf0909341cfe57ec115152f937d7d8" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.1" + +[[Parsers]] +deps = ["Dates"] +git-tree-sha1 = "c8abc88faa3f7a3950832ac5d6e690881590d6dc" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "1.1.0" + +[[Pixman_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.40.1+0" + +[[Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[PlotThemes]] +deps = ["PlotUtils", "Requires", "Statistics"] +git-tree-sha1 = "a3a964ce9dc7898193536002a6dd892b1b5a6f1d" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "2.0.1" + +[[PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "Statistics"] +git-tree-sha1 = "ae9a295ac761f64d8c2ec7f9f24d21eb4ffba34d" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.0.10" + +[[Plots]] +deps = ["Base64", "Contour", "Dates", "FFMPEG", "FixedPointNumbers", "GR", "GeometryBasics", "JSON", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs"] +git-tree-sha1 = "df601eed7c9637235a26b26f9f648deccd277178" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.16.7" + +[[Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00cfd92944ca9c760982747e9a1d0d5d86ab1e5a" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.2.2" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[Qt5Base_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] +git-tree-sha1 = "ad368663a5e20dbb8d6dc2fddeefe4dae0781ae8" +uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" +version = "5.15.3+0" + +[[QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "12fbe86da16df6679be7521dfb39fbc861e1dc7b" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.4.1" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[RecipesBase]] +git-tree-sha1 = "b3fb709f3c97bfc6e948be68beeecb55a0b340ae" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.1.1" + +[[RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase"] +git-tree-sha1 = "9b8e57e3cca8828a1bc759840bfe48d64db9abfb" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.3.3" + +[[Reexport]] +git-tree-sha1 = "5f6c21241f0f655da3952fd60aa18477cf96c220" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.1.0" + +[[Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "4036a3bd08ac7e968e27c203d45f5fff15020621" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.1.3" + +[[Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.7.0" + +[[Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "68db32dff12bb6127bac73c209881191bf0efbb7" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.3.0+0" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[Scratch]] +deps = ["Dates"] +git-tree-sha1 = "0b4b7f1393cff97c33891da2a0bf69c6ed241fda" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.1.0" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "1.0.3" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "2ec1962eba973f383239da22e75218565c390a96" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.0.0" + +[[SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[SpecialFunctions]] +deps = ["ChainRulesCore", "LogExpFunctions", "OpenSpecFun_jll"] +git-tree-sha1 = "a50550fa3164a8c46747e62063b4d774ac1bcf49" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "1.5.1" + +[[StaticArrays]] +deps = ["LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "745914ebcd610da69f3cb6bf76cb7bb83dcb8c9a" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.2.4" + +[[Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[StatsAPI]] +git-tree-sha1 = "1958272568dc176a1d881acb797beb909c785510" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.0.0" + +[[StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "2f6792d523d7448bbe2fec99eca9218f06cc746d" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.33.8" + +[[StatsFuns]] +deps = ["LogExpFunctions", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "30cd8c360c54081f806b1ee14d2eecbef3c04c49" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "0.9.8" + +[[StructArrays]] +deps = ["Adapt", "DataAPI", "StaticArrays", "Tables"] +git-tree-sha1 = "000e168f5cc9aded17b6999a560b7c11dda69095" +uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" +version = "0.6.0" + +[[SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" + +[[TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] +git-tree-sha1 = "8ed4a3ea724dac32670b062be3ef1c1de6773ae8" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.4.4" + +[[Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" + +[[TensorCore]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" +uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" +version = "0.1.1" + +[[Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[URIs]] +git-tree-sha1 = "97bbe755a53fe859669cd907f2d96aee8d2c1355" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.3.0" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[Wayland_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "3e61f0b86f90dacb0bc0e73a0c5a83f6a8636e23" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.19.0+0" + +[[Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll"] +git-tree-sha1 = "2839f1c1296940218e35df0bbb220f2a79686670" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.18.0+4" + +[[XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "1acf5bdf07aa0907e0a37d3718bb88d4b687b74a" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.9.12+0" + +[[XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] +git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.34+0" + +[[Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.6.9+4" + +[[Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.9+4" + +[[Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.0+4" + +[[Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.3+4" + +[[Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.4+4" + +[[Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "5.0.3+4" + +[[Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.7.10+4" + +[[Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] +git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.4+4" + +[[Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.10+4" + +[[Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.0+3" + +[[Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.13.0+3" + +[[Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.0+4" + +[[Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.0+1" + +[[Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] +git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.0+1" + +[[Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.0+1" + +[[Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.9+1" + +[[Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.1+1" + +[[Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.2+4" + +[[Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.27.0+4" + +[[Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.4.0+3" + +[[Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" + +[[Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "cc4bf3fdde8b7e3e9fa0351bdeedba1cf3b7f6e6" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.5.0+0" + +[[ZygoteRules]] +deps = ["MacroTools"] +git-tree-sha1 = "9e7a1e8ca60b742e508a315c17eef5211e7fbfd7" +uuid = "700de1a5-db45-46bc-99cf-38207098b444" +version = "0.2.1" + +[[libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "acc685bcf777b2202a904cdcb49ad34c2fa1880c" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.14.0+4" + +[[libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7a5780a0d9c6864184b3a2eeeb833a0c871f00ab" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "0.1.6+4" + +[[libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.38+0" + +[[libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] +git-tree-sha1 = "c45f4e40e7aafe9d086379e5578947ec8b95a8fb" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.7+0" + +[[nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" + +[[p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" + +[[x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "d713c1ce4deac133e3334ee12f4adff07f81778f" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "2020.7.14+2" + +[[x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "487da2f8f2f0c8ee0e83f39d13037d6bbf0a45ab" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "3.0.0+3" + +[[xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "ece2350174195bb31de1a63bea3a41ae1aa593b6" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "0.9.1+5" diff --git a/examples/gaussian-process-priors/Project.toml b/examples/gaussian-process-priors/Project.toml new file mode 100644 index 000000000..0f4d1cde0 --- /dev/null +++ b/examples/gaussian-process-priors/Project.toml @@ -0,0 +1,11 @@ +[deps] +Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" +KernelFunctions = "ec8451be-7e33-11e9-00cf-bbf324bd1392" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[compat] +Distributions = "0.25" +KernelFunctions = "0.10" +Plots = "1" diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl new file mode 100644 index 000000000..eebc5ff9a --- /dev/null +++ b/examples/gaussian-process-priors/script.jl @@ -0,0 +1,89 @@ +# # Gaussian process prior samples +# +# The kernels defined in this package can also be used to specify the +# covariance of a Gaussian process prior. +# A Gaussian process (GP) is defined by its mean function $m(\cdot)$ and its covariance function or kernel $k(\cdot, \cdot')$: +# ```math +# f \sim \mathcal{GP}\big(m(\cdot), k(\cdot, \cdot')\big) +# ``` +# The function values of the GP at a finite number of points $X = \{x_n\}_{n=1}^N$ follow a multivariate normal distribution with mean vector $\mathbf{m}$ and covariance matrix $\mathrm{K}$, where +# ```math +# \begin{aligned} +# \mathbf{m}_i &= m(x_i) \\ +# \mathrm{K}_{i,j} &= k(x_i, x_j) +# \end{aligned} +# ``` +# where $1 \le i, j \le N$. +# +# In this notebook we show samples from zero-mean GPs with different kernels. + +## Load required packages +using KernelFunctions +using LinearAlgebra +using Distributions +using Plots +default(; lw=1.0, legendfontsize=15.0) +using Random: seed! +seed!(42); + +# We now define a function that visualizes a kernel +# for us. We use the same randomness to obtain +# comparable samples. + +num_inputs = 101 +xlim = (-5, 5) +X = reshape(collect(range(xlim...; length=num_inputs)), :, 1) +num_samples = 11 +v = randn(num_inputs, num_samples); + +function visualize(k::Kernel; xref=0.0) + K = kernelmatrix(k, X; obsdim=1) + L = cholesky(K + 1e-6 * I) + f = L.L * v + + p_kernel_2d = heatmap( + K; + yflip=true, + colorbar=false, + ylabel=string(k), + framestyle=:none, + #color=:blues, + vlim=(0, 1), + title=raw"$k(x, x')$", + ) + + p_kernel_cut = plot( + X, + k.(X, xref); + title=string(raw"$k(x, ", xref, raw")$"), + xlim=xlim, + xticks=(xlim, xlim), + label=nothing, + ) + + p_samples = plot( + X, + f; + c="blue", + title=raw"$f(x)$", + ylim=(-3, 3), + xlim=xlim, + xticks=(xlim, xlim), + label=nothing, + ) + + return plot(p_kernel_2d, p_kernel_cut, p_samples; layout=(1, 3), xlabel=raw"$x$") +end + +# We can now visualize a kernel and show samples from +# a Gaussian process with this kernel: + +visualize(SqExponentialKernel()) + +# This also allows us to compare different kernels: + +kernel_classes = [Matern12Kernel, Matern32Kernel, Matern52Kernel, SqExponentialKernel] +plot( + [visualize(k()) for k in kernel_classes]..., + #layout=(length(kernel_classes), 1) +) From a56ed476f6dd13d9e0d9b6abb7f478a95a40e4fe Mon Sep 17 00:00:00 2001 From: ST John Date: Wed, 30 Jun 2021 17:22:11 +0300 Subject: [PATCH 02/16] include Literate in dependencies --- examples/gaussian-process-priors/Manifest.toml | 12 ++++++++++++ examples/gaussian-process-priors/Project.toml | 2 ++ 2 files changed, 14 insertions(+) diff --git a/examples/gaussian-process-priors/Manifest.toml b/examples/gaussian-process-priors/Manifest.toml index 82ff2a879..1b421a0ce 100644 --- a/examples/gaussian-process-priors/Manifest.toml +++ b/examples/gaussian-process-priors/Manifest.toml @@ -235,6 +235,12 @@ git-tree-sha1 = "99c6bc381e98c5331f34b9ce949aebea209bd0db" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" version = "0.9.11" +[[IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "f7be53659ab06ddc986428d3a9dcc95f6fa6705a" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.2" + [[IniFile]] deps = ["Test"] git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" @@ -379,6 +385,12 @@ version = "2.36.0+0" deps = ["Libdl"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +[[Literate]] +deps = ["Base64", "IOCapture", "JSON", "REPL"] +git-tree-sha1 = "501a1a74a0c825037860d36d87d703e987d39dbc" +uuid = "98b081ad-f1c9-55d3-8b20-4c87d4299306" +version = "2.8.1" + [[LogExpFunctions]] deps = ["DocStringExtensions", "LinearAlgebra"] git-tree-sha1 = "1ba664552f1ef15325e68dc4c05c3ef8c2d5d885" diff --git a/examples/gaussian-process-priors/Project.toml b/examples/gaussian-process-priors/Project.toml index 0f4d1cde0..44e7d9f0d 100644 --- a/examples/gaussian-process-priors/Project.toml +++ b/examples/gaussian-process-priors/Project.toml @@ -2,10 +2,12 @@ Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" KernelFunctions = "ec8451be-7e33-11e9-00cf-bbf324bd1392" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +Literate = "98b081ad-f1c9-55d3-8b20-4c87d4299306" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [compat] Distributions = "0.25" KernelFunctions = "0.10" +Literate = "2" Plots = "1" From b92654b33efda746e2283b67769511459fa577b4 Mon Sep 17 00:00:00 2001 From: ST John Date: Fri, 2 Jul 2021 10:49:56 +0300 Subject: [PATCH 03/16] clean up GP prior script --- examples/gaussian-process-priors/script.jl | 89 ++++++++++++---------- 1 file changed, 48 insertions(+), 41 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index eebc5ff9a..5d90e8b0e 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -6,84 +6,91 @@ # ```math # f \sim \mathcal{GP}\big(m(\cdot), k(\cdot, \cdot')\big) # ``` -# The function values of the GP at a finite number of points $X = \{x_n\}_{n=1}^N$ follow a multivariate normal distribution with mean vector $\mathbf{m}$ and covariance matrix $\mathrm{K}$, where +# In this notebook we show how the choice of kernel affects the samples from a GP (with zero mean). + +## Load required packages +using KernelFunctions, LinearAlgebra +using Plots +default(; lw = 1.0, legendfontsize = 15.0) +using Random: seed! +seed!(42); # reproducibility + +# The function values $\mathbf{f} = \{f(x_n)\}_{n=1}^N$ of the GP at a finite number $N$ of points $X = \{x_n\}_{n=1}^N$ follow a multivariate normal distribution $\mathbf{f} \sim \mathcal{MVN}(\mathbf{m}, \mathrm{K})$ with mean vector $\mathbf{m}$ and covariance matrix $\mathrm{K}$, where # ```math # \begin{aligned} # \mathbf{m}_i &= m(x_i) \\ # \mathrm{K}_{i,j} &= k(x_i, x_j) # \end{aligned} # ``` -# where $1 \le i, j \le N$. +# with $1 \le i, j \le N$. # -# In this notebook we show samples from zero-mean GPs with different kernels. +# We can visualize the infinite-dimensional GP by evaluating it on a fine grid to approximate the dense real line: +num_inputs = 101 +xlim = (-5, 5) +X = collect(range(xlim...; length = num_inputs)); -## Load required packages -using KernelFunctions -using LinearAlgebra -using Distributions -using Plots -default(; lw=1.0, legendfontsize=15.0) -using Random: seed! -seed!(42); +# To sample from the multivariate normal distribution $p(\mathbf{f}) = \mathcal{MVN}(0, \mathrm{K})$, we could make use of Distributions.jl and call `rand(MvNormal(K))`. -# We now define a function that visualizes a kernel -# for us. We use the same randomness to obtain -# comparable samples. +# Here, we will explicitly construct samples using the Cholesky factorization $\mathrm{L} = \operatorname{cholesky}(\mathrm{K})$, +# with $\mathbf{f} = \mathrm{L} \mathbf{v}$, where $\mathbf{v} \sim \mathcal{N}(0, \mathbf{I})$ is a vector of standard-normal random variables. -num_inputs = 101 -xlim = (-5, 5) -X = reshape(collect(range(xlim...; length=num_inputs)), :, 1) +# We will use the same randomness $\mathbf{v}$ to generate comparable samples across different kernels. num_samples = 11 v = randn(num_inputs, num_samples); -function visualize(k::Kernel; xref=0.0) - K = kernelmatrix(k, X; obsdim=1) +# Mathematically, a kernel matrix is by definition positive semi-definite, but due to finite-precision inaccuracies, the computed kernel matrix might not be exactly positive definite. To avoid Cholesky errors, we add a small "nugget" term on the diagonal: +function mvn_sample(K) L = cholesky(K + 1e-6 * I) f = L.L * v + return f +end; + +# We now define a function that visualizes a kernel for us. + +function visualize(k::Kernel; xref = 0.0) + K = kernelmatrix(k, X) + f = mvn_sample(K) p_kernel_2d = heatmap( K; - yflip=true, - colorbar=false, - ylabel=string(k), - framestyle=:none, + yflip = true, + colorbar = false, + ylabel = string(nameof(typeof(k))), + framestyle = :none, #color=:blues, - vlim=(0, 1), - title=raw"$k(x, x')$", + vlim = (0, 1), + title = raw"$k(x, x')$", ) p_kernel_cut = plot( X, k.(X, xref); - title=string(raw"$k(x, ", xref, raw")$"), - xlim=xlim, - xticks=(xlim, xlim), - label=nothing, + title = string(raw"$k(x, ", xref, raw")$"), + xlim = xlim, + xticks = (xlim, xlim), + label = nothing, ) p_samples = plot( X, f; - c="blue", - title=raw"$f(x)$", - ylim=(-3, 3), - xlim=xlim, - xticks=(xlim, xlim), - label=nothing, + c = "blue", + title = raw"$f(x)$", + ylim = (-3, 3), + xlim = xlim, + xticks = (xlim, xlim), + label = nothing, ) - return plot(p_kernel_2d, p_kernel_cut, p_samples; layout=(1, 3), xlabel=raw"$x$") + return plot(p_kernel_2d, p_kernel_cut, p_samples; layout = (1, 3), xlabel = raw"$x$") end # We can now visualize a kernel and show samples from -# a Gaussian process with this kernel: +# a Gaussian process with a given kernel: visualize(SqExponentialKernel()) # This also allows us to compare different kernels: kernel_classes = [Matern12Kernel, Matern32Kernel, Matern52Kernel, SqExponentialKernel] -plot( - [visualize(k()) for k in kernel_classes]..., - #layout=(length(kernel_classes), 1) -) +plot([visualize(k()) for k in kernel_classes]..., layout = (length(kernel_classes), 1)) From f4c14e077ec4eccad1b56ffee4bc00d84f83e772 Mon Sep 17 00:00:00 2001 From: ST John Date: Fri, 2 Jul 2021 10:58:25 +0300 Subject: [PATCH 04/16] update --- examples/gaussian-process-priors/script.jl | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 5d90e8b0e..d9d14c41a 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -15,6 +15,8 @@ default(; lw = 1.0, legendfontsize = 15.0) using Random: seed! seed!(42); # reproducibility +# ## Evaluation at finite set of points +# # The function values $\mathbf{f} = \{f(x_n)\}_{n=1}^N$ of the GP at a finite number $N$ of points $X = \{x_n\}_{n=1}^N$ follow a multivariate normal distribution $\mathbf{f} \sim \mathcal{MVN}(\mathbf{m}, \mathrm{K})$ with mean vector $\mathbf{m}$ and covariance matrix $\mathrm{K}$, where # ```math # \begin{aligned} @@ -29,7 +31,12 @@ num_inputs = 101 xlim = (-5, 5) X = collect(range(xlim...; length = num_inputs)); +# Given a kernel `k`, we can compute the kernel matrix as `K = kernelmatrix(k, X)`.` + +# ## Random samples +# # To sample from the multivariate normal distribution $p(\mathbf{f}) = \mathcal{MVN}(0, \mathrm{K})$, we could make use of Distributions.jl and call `rand(MvNormal(K))`. +# Alternatively, we could use the AbstractGPs.jl package and construct a `GP` object which we evaluate at the points of interest and from which we can then sample: `rand(GP(k)(X))`. # Here, we will explicitly construct samples using the Cholesky factorization $\mathrm{L} = \operatorname{cholesky}(\mathrm{K})$, # with $\mathbf{f} = \mathrm{L} \mathbf{v}$, where $\mathbf{v} \sim \mathcal{N}(0, \mathbf{I})$ is a vector of standard-normal random variables. @@ -45,6 +52,7 @@ function mvn_sample(K) return f end; +# ## Visualization # We now define a function that visualizes a kernel for us. function visualize(k::Kernel; xref = 0.0) @@ -83,7 +91,7 @@ function visualize(k::Kernel; xref = 0.0) ) return plot(p_kernel_2d, p_kernel_cut, p_samples; layout = (1, 3), xlabel = raw"$x$") -end +end; # We can now visualize a kernel and show samples from # a Gaussian process with a given kernel: @@ -93,4 +101,4 @@ visualize(SqExponentialKernel()) # This also allows us to compare different kernels: kernel_classes = [Matern12Kernel, Matern32Kernel, Matern52Kernel, SqExponentialKernel] -plot([visualize(k()) for k in kernel_classes]..., layout = (length(kernel_classes), 1)) +plot([visualize(k()) for k in kernel_classes]..., layout = (length(kernel_classes), 1), size=(600, 1000)) From d474b48a422f90b2b002ec09f89c6093ba9dd6b6 Mon Sep 17 00:00:00 2001 From: st-- Date: Fri, 2 Jul 2021 10:59:10 +0300 Subject: [PATCH 05/16] Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- examples/gaussian-process-priors/script.jl | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index d9d14c41a..5203d66f2 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -11,7 +11,7 @@ ## Load required packages using KernelFunctions, LinearAlgebra using Plots -default(; lw = 1.0, legendfontsize = 15.0) +default(; lw=1.0, legendfontsize=15.0) using Random: seed! seed!(42); # reproducibility @@ -29,7 +29,7 @@ seed!(42); # reproducibility # We can visualize the infinite-dimensional GP by evaluating it on a fine grid to approximate the dense real line: num_inputs = 101 xlim = (-5, 5) -X = collect(range(xlim...; length = num_inputs)); +X = collect(range(xlim...; length=num_inputs)); # Given a kernel `k`, we can compute the kernel matrix as `K = kernelmatrix(k, X)`.` @@ -55,42 +55,42 @@ end; # ## Visualization # We now define a function that visualizes a kernel for us. -function visualize(k::Kernel; xref = 0.0) +function visualize(k::Kernel; xref=0.0) K = kernelmatrix(k, X) f = mvn_sample(K) p_kernel_2d = heatmap( K; - yflip = true, - colorbar = false, - ylabel = string(nameof(typeof(k))), - framestyle = :none, + yflip=true, + colorbar=false, + ylabel=string(nameof(typeof(k))), + framestyle=:none, #color=:blues, - vlim = (0, 1), - title = raw"$k(x, x')$", + vlim=(0, 1), + title=raw"$k(x, x')$", ) p_kernel_cut = plot( X, k.(X, xref); - title = string(raw"$k(x, ", xref, raw")$"), - xlim = xlim, - xticks = (xlim, xlim), - label = nothing, + title=string(raw"$k(x, ", xref, raw")$"), + xlim=xlim, + xticks=(xlim, xlim), + label=nothing, ) p_samples = plot( X, f; - c = "blue", - title = raw"$f(x)$", - ylim = (-3, 3), - xlim = xlim, - xticks = (xlim, xlim), - label = nothing, + c="blue", + title=raw"$f(x)$", + ylim=(-3, 3), + xlim=xlim, + xticks=(xlim, xlim), + label=nothing, ) - return plot(p_kernel_2d, p_kernel_cut, p_samples; layout = (1, 3), xlabel = raw"$x$") + return plot(p_kernel_2d, p_kernel_cut, p_samples; layout=(1, 3), xlabel=raw"$x$") end; # We can now visualize a kernel and show samples from From f8be32fc11aee368cdaa5004a98b48d2fb988a2b Mon Sep 17 00:00:00 2001 From: st-- Date: Fri, 2 Jul 2021 11:00:23 +0300 Subject: [PATCH 06/16] Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- examples/gaussian-process-priors/script.jl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 5203d66f2..152ae5bb0 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -101,4 +101,8 @@ visualize(SqExponentialKernel()) # This also allows us to compare different kernels: kernel_classes = [Matern12Kernel, Matern32Kernel, Matern52Kernel, SqExponentialKernel] -plot([visualize(k()) for k in kernel_classes]..., layout = (length(kernel_classes), 1), size=(600, 1000)) +plot( + [visualize(k()) for k in kernel_classes]...; + layout=(length(kernel_classes), 1), + size=(600, 1000), +) From fc52f88601ba224ecdc03ec65200b70ca604a7bf Mon Sep 17 00:00:00 2001 From: ST John Date: Fri, 2 Jul 2021 11:27:45 +0300 Subject: [PATCH 07/16] add heading --- examples/gaussian-process-priors/script.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 152ae5bb0..83b58dac3 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -98,6 +98,7 @@ end; visualize(SqExponentialKernel()) +# ## Kernel comparison # This also allows us to compare different kernels: kernel_classes = [Matern12Kernel, Matern32Kernel, Matern52Kernel, SqExponentialKernel] From 3d5b0b10d5a9bfe74d2694d78aa03ae3eb86c717 Mon Sep 17 00:00:00 2001 From: ST John Date: Fri, 2 Jul 2021 12:37:47 +0300 Subject: [PATCH 08/16] cell break markers for VSCode --- examples/gaussian-process-priors/script.jl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 83b58dac3..bfc6c9dcf 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -15,6 +15,8 @@ default(; lw=1.0, legendfontsize=15.0) using Random: seed! seed!(42); # reproducibility +## + # ## Evaluation at finite set of points # # The function values $\mathbf{f} = \{f(x_n)\}_{n=1}^N$ of the GP at a finite number $N$ of points $X = \{x_n\}_{n=1}^N$ follow a multivariate normal distribution $\mathbf{f} \sim \mathcal{MVN}(\mathbf{m}, \mathrm{K})$ with mean vector $\mathbf{m}$ and covariance matrix $\mathrm{K}$, where @@ -33,6 +35,8 @@ X = collect(range(xlim...; length=num_inputs)); # Given a kernel `k`, we can compute the kernel matrix as `K = kernelmatrix(k, X)`.` +## + # ## Random samples # # To sample from the multivariate normal distribution $p(\mathbf{f}) = \mathcal{MVN}(0, \mathrm{K})$, we could make use of Distributions.jl and call `rand(MvNormal(K))`. @@ -52,6 +56,8 @@ function mvn_sample(K) return f end; +## + # ## Visualization # We now define a function that visualizes a kernel for us. @@ -93,10 +99,14 @@ function visualize(k::Kernel; xref=0.0) return plot(p_kernel_2d, p_kernel_cut, p_samples; layout=(1, 3), xlabel=raw"$x$") end; +## + # We can now visualize a kernel and show samples from # a Gaussian process with a given kernel: -visualize(SqExponentialKernel()) +plot(visualize(SqExponentialKernel()), size=(600, 220)) + +## # ## Kernel comparison # This also allows us to compare different kernels: From f1d9e8629a88c9e800014759aad2c613b7e84e1d Mon Sep 17 00:00:00 2001 From: st-- Date: Fri, 2 Jul 2021 12:50:16 +0300 Subject: [PATCH 09/16] Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- examples/gaussian-process-priors/script.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index bfc6c9dcf..5362203fc 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -104,7 +104,7 @@ end; # We can now visualize a kernel and show samples from # a Gaussian process with a given kernel: -plot(visualize(SqExponentialKernel()), size=(600, 220)) +plot(visualize(SqExponentialKernel()); size=(600, 220)) ## From a5c336145b26cf436e39769b48aedc215ca23fa4 Mon Sep 17 00:00:00 2001 From: ST John Date: Thu, 8 Jul 2021 11:54:45 +0300 Subject: [PATCH 10/16] clean up plots, add more kernels --- examples/gaussian-process-priors/script.jl | 41 ++++++++++++++-------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 5362203fc..5fa0de38a 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -10,13 +10,12 @@ ## Load required packages using KernelFunctions, LinearAlgebra -using Plots +using Plots, Plots.PlotMeasures default(; lw=1.0, legendfontsize=15.0) using Random: seed! seed!(42); # reproducibility ## - # ## Evaluation at finite set of points # # The function values $\mathbf{f} = \{f(x_n)\}_{n=1}^N$ of the GP at a finite number $N$ of points $X = \{x_n\}_{n=1}^N$ follow a multivariate normal distribution $\mathbf{f} \sim \mathcal{MVN}(\mathbf{m}, \mathrm{K})$ with mean vector $\mathbf{m}$ and covariance matrix $\mathrm{K}$, where @@ -31,12 +30,11 @@ seed!(42); # reproducibility # We can visualize the infinite-dimensional GP by evaluating it on a fine grid to approximate the dense real line: num_inputs = 101 xlim = (-5, 5) -X = collect(range(xlim...; length=num_inputs)); +X = range(xlim...; length=num_inputs); # Given a kernel `k`, we can compute the kernel matrix as `K = kernelmatrix(k, X)`.` ## - # ## Random samples # # To sample from the multivariate normal distribution $p(\mathbf{f}) = \mathcal{MVN}(0, \mathrm{K})$, we could make use of Distributions.jl and call `rand(MvNormal(K))`. @@ -46,7 +44,7 @@ X = collect(range(xlim...; length=num_inputs)); # with $\mathbf{f} = \mathrm{L} \mathbf{v}$, where $\mathbf{v} \sim \mathcal{N}(0, \mathbf{I})$ is a vector of standard-normal random variables. # We will use the same randomness $\mathbf{v}$ to generate comparable samples across different kernels. -num_samples = 11 +num_samples = 7 v = randn(num_inputs, num_samples); # Mathematically, a kernel matrix is by definition positive semi-definite, but due to finite-precision inaccuracies, the computed kernel matrix might not be exactly positive definite. To avoid Cholesky errors, we add a small "nugget" term on the diagonal: @@ -57,7 +55,6 @@ function mvn_sample(K) end; ## - # ## Visualization # We now define a function that visualizes a kernel for us. @@ -66,14 +63,20 @@ function visualize(k::Kernel; xref=0.0) f = mvn_sample(K) p_kernel_2d = heatmap( + X, + X, K; yflip=true, colorbar=false, ylabel=string(nameof(typeof(k))), - framestyle=:none, - #color=:blues, + xlim=xlim, + ylim=xlim, + xticks=(xlim, xlim), + yticks=(xlim, xlim), vlim=(0, 1), title=raw"$k(x, x')$", + aspect_ratio=:equal, + left_margin=5mm, ) p_kernel_cut = plot( @@ -100,20 +103,28 @@ function visualize(k::Kernel; xref=0.0) end; ## - # We can now visualize a kernel and show samples from # a Gaussian process with a given kernel: plot(visualize(SqExponentialKernel()); size=(600, 220)) ## - # ## Kernel comparison # This also allows us to compare different kernels: -kernel_classes = [Matern12Kernel, Matern32Kernel, Matern52Kernel, SqExponentialKernel] +kernels = [ + Matern12Kernel(), + Matern32Kernel(), + Matern52Kernel(), + SqExponentialKernel(), + WhiteKernel(), + ConstantKernel(), + LinearKernel(), + PeriodicKernel(), + NeuralNetworkKernel(), +] plot( - [visualize(k()) for k in kernel_classes]...; - layout=(length(kernel_classes), 1), - size=(600, 1000), -) + [visualize(k) for k in kernels]...; + layout=(length(kernels), 1), + size=(800, 220*length(kernels)+100), +) \ No newline at end of file From 871a830652b206ca84fb771561f718264d854f12 Mon Sep 17 00:00:00 2001 From: st-- Date: Thu, 8 Jul 2021 11:57:18 +0300 Subject: [PATCH 11/16] Update examples/gaussian-process-priors/script.jl Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- examples/gaussian-process-priors/script.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 5fa0de38a..b54777fd0 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -126,5 +126,5 @@ kernels = [ plot( [visualize(k) for k in kernels]...; layout=(length(kernels), 1), - size=(800, 220*length(kernels)+100), -) \ No newline at end of file + size=(800, 220 * length(kernels) + 100), +) From 262676a75f32389e6853c369257ab41a13acb5c7 Mon Sep 17 00:00:00 2001 From: ST John Date: Thu, 8 Jul 2021 17:25:35 +0300 Subject: [PATCH 12/16] minor fixes --- examples/gaussian-process-priors/script.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index b54777fd0..9567ea939 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -32,13 +32,13 @@ num_inputs = 101 xlim = (-5, 5) X = range(xlim...; length=num_inputs); -# Given a kernel `k`, we can compute the kernel matrix as `K = kernelmatrix(k, X)`.` +# Given a kernel `k`, we can compute the kernel matrix as `K = kernelmatrix(k, X)`. ## # ## Random samples # # To sample from the multivariate normal distribution $p(\mathbf{f}) = \mathcal{MVN}(0, \mathrm{K})$, we could make use of Distributions.jl and call `rand(MvNormal(K))`. -# Alternatively, we could use the AbstractGPs.jl package and construct a `GP` object which we evaluate at the points of interest and from which we can then sample: `rand(GP(k)(X))`. +# Alternatively, we could use the [AbstractGPs.jl](https://github.com/JuliaGaussianProcesses/AbstractGPs.jl) package and construct a `GP` object which we evaluate at the points of interest and from which we can then sample: `rand(GP(k)(X))`. # Here, we will explicitly construct samples using the Cholesky factorization $\mathrm{L} = \operatorname{cholesky}(\mathrm{K})$, # with $\mathbf{f} = \mathrm{L} \mathbf{v}$, where $\mathbf{v} \sim \mathcal{N}(0, \mathbf{I})$ is a vector of standard-normal random variables. From 52a5d8ed02b86cfb31f2b67d3ebe81dcba7dd4fc Mon Sep 17 00:00:00 2001 From: ST John Date: Thu, 8 Jul 2021 17:30:12 +0300 Subject: [PATCH 13/16] two xrefs for kernel cut plots --- examples/gaussian-process-priors/script.jl | 28 ++++++++++------------ 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 9567ea939..3bdbd37b2 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -58,7 +58,7 @@ end; # ## Visualization # We now define a function that visualizes a kernel for us. -function visualize(k::Kernel; xref=0.0) +function visualize(k::Kernel) K = kernelmatrix(k, X) f = mvn_sample(K) @@ -69,9 +69,7 @@ function visualize(k::Kernel; xref=0.0) yflip=true, colorbar=false, ylabel=string(nameof(typeof(k))), - xlim=xlim, ylim=xlim, - xticks=(xlim, xlim), yticks=(xlim, xlim), vlim=(0, 1), title=raw"$k(x, x')$", @@ -81,25 +79,25 @@ function visualize(k::Kernel; xref=0.0) p_kernel_cut = plot( X, - k.(X, xref); - title=string(raw"$k(x, ", xref, raw")$"), + k.(X, 0.0); + title=string(raw"$k(x, x_\text{ref})$"), + label=raw"$x_\text{ref}=0.0$", xlim=xlim, xticks=(xlim, xlim), - label=nothing, ) + plot!(X, k.(X, 1.0); label=raw"$x_\text{ref}=1.0$") - p_samples = plot( - X, - f; - c="blue", - title=raw"$f(x)$", - ylim=(-3, 3), + p_samples = plot(X, f; c="blue", title=raw"$f(x)$", ylim=(-3, 3), label=nothing) + + return plot( + p_kernel_2d, + p_kernel_cut, + p_samples; + layout=(1, 3), + xlabel=raw"$x$", xlim=xlim, xticks=(xlim, xlim), - label=nothing, ) - - return plot(p_kernel_2d, p_kernel_cut, p_samples; layout=(1, 3), xlabel=raw"$x$") end; ## From 75043b47952203452cb90f032b72eceb5aafd4fa Mon Sep 17 00:00:00 2001 From: ST John Date: Thu, 8 Jul 2021 23:53:53 +0300 Subject: [PATCH 14/16] fix plotting --- examples/gaussian-process-priors/script.jl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 3bdbd37b2..9bce36838 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -80,12 +80,13 @@ function visualize(k::Kernel) p_kernel_cut = plot( X, k.(X, 0.0); - title=string(raw"$k(x, x_\text{ref})$"), - label=raw"$x_\text{ref}=0.0$", + title=string(raw"$k(x, x_\mathrm{ref})$"), + label=raw"$x_\mathrm{ref}=0.0$", xlim=xlim, xticks=(xlim, xlim), + legendfontsize=8, ) - plot!(X, k.(X, 1.0); label=raw"$x_\text{ref}=1.0$") + plot!(X, k.(X, 1.0); label=raw"$x_\mathrm{ref}=1.0$") p_samples = plot(X, f; c="blue", title=raw"$f(x)$", ylim=(-3, 3), label=nothing) From 242356b9617a5831f1c8e7384a95b9bde4ea9f04 Mon Sep 17 00:00:00 2001 From: ST John Date: Thu, 8 Jul 2021 23:55:59 +0300 Subject: [PATCH 15/16] more plotting changes --- examples/gaussian-process-priors/script.jl | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 9bce36838..4197c5965 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -11,7 +11,7 @@ ## Load required packages using KernelFunctions, LinearAlgebra using Plots, Plots.PlotMeasures -default(; lw=1.0, legendfontsize=15.0) +default(; lw=1.0, legendfontsize=8.0) using Random: seed! seed!(42); # reproducibility @@ -84,9 +84,8 @@ function visualize(k::Kernel) label=raw"$x_\mathrm{ref}=0.0$", xlim=xlim, xticks=(xlim, xlim), - legendfontsize=8, ) - plot!(X, k.(X, 1.0); label=raw"$x_\mathrm{ref}=1.0$") + plot!(X, k.(X, 1.5); label=raw"$x_\mathrm{ref}=1.5$") p_samples = plot(X, f; c="blue", title=raw"$f(x)$", ylim=(-3, 3), label=nothing) From 10d443d6f2209fc1629d5be0819ccda8915120ff Mon Sep 17 00:00:00 2001 From: ST John Date: Fri, 9 Jul 2021 13:48:04 +0300 Subject: [PATCH 16/16] plotting cleanup --- examples/gaussian-process-priors/script.jl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/gaussian-process-priors/script.jl b/examples/gaussian-process-priors/script.jl index 4197c5965..b1ba3dcee 100644 --- a/examples/gaussian-process-priors/script.jl +++ b/examples/gaussian-process-priors/script.jl @@ -70,7 +70,7 @@ function visualize(k::Kernel) colorbar=false, ylabel=string(nameof(typeof(k))), ylim=xlim, - yticks=(xlim, xlim), + yticks=([xlim[1], 0, xlim[end]], ["\u22125", raw"$x'$", "5"]), vlim=(0, 1), title=raw"$k(x, x')$", aspect_ratio=:equal, @@ -82,8 +82,8 @@ function visualize(k::Kernel) k.(X, 0.0); title=string(raw"$k(x, x_\mathrm{ref})$"), label=raw"$x_\mathrm{ref}=0.0$", - xlim=xlim, - xticks=(xlim, xlim), + legend=:topleft, + foreground_color_legend=nothing, ) plot!(X, k.(X, 1.5); label=raw"$x_\mathrm{ref}=1.5$") @@ -96,7 +96,7 @@ function visualize(k::Kernel) layout=(1, 3), xlabel=raw"$x$", xlim=xlim, - xticks=(xlim, xlim), + xticks=collect(xlim), ) end; @@ -104,7 +104,7 @@ end; # We can now visualize a kernel and show samples from # a Gaussian process with a given kernel: -plot(visualize(SqExponentialKernel()); size=(600, 220)) +plot(visualize(SqExponentialKernel()); size=(800, 210), bottommargin=5mm, topmargin=5mm) ## # ## Kernel comparison @@ -118,7 +118,7 @@ kernels = [ WhiteKernel(), ConstantKernel(), LinearKernel(), - PeriodicKernel(), + compose(PeriodicKernel(), ScaleTransform(0.2)), NeuralNetworkKernel(), ] plot(