diff --git a/OmegaExamples/Manifest.toml b/OmegaExamples/Manifest.toml index 20923a4..e169668 100644 --- a/OmegaExamples/Manifest.toml +++ b/OmegaExamples/Manifest.toml @@ -1,1107 +1,469 @@ # This file is machine-generated - editing it directly is not advised -[[Adapt]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "af92965fb30777147966f58acb05da51c5616b5f" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.3.3" +julia_version = "1.7.2" +manifest_format = "2.0" -[[AndTraits]] -path = "../../AndTraits.jl" +[[deps.AndTraits]] +git-tree-sha1 = "27dcc4fc1189d57ba0f8e880b8e7c3848f73f057" uuid = "fb24a613-cb95-4ee3-a029-2b7ba7763d4b" version = "0.1.0" -[[ArgTools]] +[[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -[[Artifacts]] +[[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" -[[Base64]] +[[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" -[[Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+0" - -[[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 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.16.1+1" - -[[Cassette]] -git-tree-sha1 = "6ce3cd755d4130d43bab24ea5181e77b89b51839" +[[deps.Cassette]] +git-tree-sha1 = "063b2e77c5537a548c5bf2f44161f1d3e1ab3227" uuid = "7057c7e9-c182-5462-911a-8362d720325c" -version = "0.3.9" +version = "0.3.10" -[[CategoricalArrays]] +[[deps.CategoricalArrays]] deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "c308f209870fdbd84cb20332b6dfaf14bf3387f8" +git-tree-sha1 = "109664d3a6f2202b1225478335ea8fea3cd8706b" uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.2" +version = "0.10.5" -[[ChainRulesCore]] +[[deps.ChainRulesCore]] deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "f9982ef575e19b0e5c7a98c6e75ee496c0f73a93" +git-tree-sha1 = "9489214b993cd42d17f44c36e359bf6a7c919abf" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.12.0" +version = "1.15.0" -[[ChangesOfVariables]] +[[deps.ChangesOfVariables]] deps = ["ChainRulesCore", "LinearAlgebra", "Test"] -git-tree-sha1 = "bf98fa45a0a4cee295de98d4c1462be26345b9a1" +git-tree-sha1 = "1e315e3f4b0b7ce40feded39c73049692126cf53" uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" -version = "0.1.2" - -[[ColorSchemes]] -deps = ["ColorTypes", "Colors", "FixedPointNumbers", "Random"] -git-tree-sha1 = "6b6f04f93710c71550ec7e16b650c1b9a612d0b6" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.16.0" - -[[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" - -[[Combinatorics]] +version = "0.1.3" + +[[deps.Combinatorics]] git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" version = "1.0.2" -[[Compat]] +[[deps.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 = "44c37b4636bc54afac5c574d2d02b625349d6582" +git-tree-sha1 = "b153278a25dd42c65abbf4e62344f9d22e59191b" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "3.41.0" +version = "3.43.0" -[[CompilerSupportLibraries_jll]] +[[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -[[Conda]] -deps = ["Downloads", "JSON", "VersionParsing"] -git-tree-sha1 = "6cdc8832ba11c7695f494c9d9a1c31e90959ce0f" -uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" -version = "1.6.0" - -[[Contour]] -deps = ["StaticArrays"] -git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.5.7" - -[[Crayons]] +[[deps.Crayons]] git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" version = "4.1.1" -[[DataAPI]] -git-tree-sha1 = "cc70b17275652eb47bc9e5f81635981f13cea5c8" +[[deps.DataAPI]] +git-tree-sha1 = "fb5f5316dd3fd4c5e7c30a24d50643b73e37cd40" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.9.0" - -[[DataFrames]] -deps = ["Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Reexport", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "ae02104e835f219b8930c7664b8012c93475c340" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.3.2" +version = "1.10.0" -[[DataStructures]] +[[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "3daef5523dd2e769dad2365274f760ff5f282c7d" +git-tree-sha1 = "cc1a8e22627f33c789ab60b36a9132ac050bbf75" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.11" +version = "0.18.12" -[[DataValueInterfaces]] +[[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" version = "1.0.0" -[[Dates]] +[[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" -[[DelimitedFiles]] +[[deps.DelimitedFiles]] deps = ["Mmap"] uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -[[DensityInterface]] -deps = ["InverseFunctions", "Test"] -git-tree-sha1 = "80c3e8639e3353e5d2912fb3a1916b8455e2494b" -uuid = "b429d917-457f-4dbc-8f4c-0cc954292b1d" -version = "0.4.0" - -[[Distributed]] +[[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" -[[Distributions]] -deps = ["ChainRulesCore", "DensityInterface", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Test"] -git-tree-sha1 = "2e97190dfd4382499a4ac349e8d316491c9db341" +[[deps.Distributions]] +deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "StaticArrays", "Statistics", "StatsBase", "StatsFuns"] +git-tree-sha1 = "501c11d708917ca09ce357bed163dbaf0f30229f" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.46" +version = "0.23.12" -[[DocStringExtensions]] +[[deps.DocStringExtensions]] deps = ["LibGit2"] git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" version = "0.8.6" -[[Downloads]] +[[deps.Downloads]] deps = ["ArgTools", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -[[EarCut_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3f3a2501fa7236e9b911e0f7a588c657e822bb6d" -uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" -version = "2.2.3+0" - -[[Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ae13fcbc7ab8f16b0856729b050ef0c446aa3492" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.4.4+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", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "Pkg", "Zlib_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "d8a578692e3077ac998b50c0217dfd67f21d1e5f" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.0+0" - -[[FillArrays]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "8756f9935b7ccc9064c6eef0bff0ad643df733a3" +[[deps.FillArrays]] +deps = ["LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "502b3de6039d5b78c76118423858d981349f3823" uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.12.7" - -[[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 = "21efd19106a55620a188615da6d3d06cd7f6ee03" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.93+0" - -[[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 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.10.4+0" +version = "0.9.7" -[[FreqTables]] +[[deps.FreqTables]] deps = ["CategoricalArrays", "Missings", "NamedArrays", "Tables"] git-tree-sha1 = "488ad2dab30fd2727ee65451f790c81ed454666d" uuid = "da1fdf0e-e0ff-5433-a45f-9bb5ff651cb1" version = "0.4.5" -[[FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.10+0" - -[[Future]] +[[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" -[[GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "51d2dfe8e590fbd74e7a842cf6d13d8a2f45dc01" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.6+0" - -[[GR]] -deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Printf", "Random", "RelocatableFolders", "Serialization", "Sockets", "Test", "UUIDs"] -git-tree-sha1 = "4a740db447aae0fbeb3ee730de1afbb14ac798a1" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.63.1" - -[[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 = "aa22e1ee9e722f1da183eb33370df4c1aeb6c2cd" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.63.1+0" - -[[GeometryBasics]] -deps = ["EarCut_jll", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "58bcdf5ebc057b085e58d95c138725628dd7453c" -uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.4.1" - -[[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 = "a32d672ac2c967f3deb8a81d828afc739c838a06" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.68.3+2" - -[[Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+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 = "0fa77022fe4b511826b39c894c90daf5fce3334a" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "0.9.17" - -[[HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[InferenceBase]] +[[deps.InferenceBase]] deps = ["OmegaCore"] path = "../InferenceBase" uuid = "5213bc24-6d0f-4e1b-8b55-aef4cfc4ccc3" version = "0.1.0" -[[IniFile]] -deps = ["Test"] -git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" -uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.0" - -[[InteractiveUtils]] +[[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[InverseFunctions]] +[[deps.InverseFunctions]] deps = ["Test"] -git-tree-sha1 = "a7254c0acd8e62f1ac75ad24d5db43f5f19f3c65" +git-tree-sha1 = "336cc738f03e069ef2cac55a104eb823455dca75" uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.2" +version = "0.1.4" -[[InvertedIndices]] +[[deps.InvertedIndices]] git-tree-sha1 = "bee5f1ef5bf65df56bdd2e40447590b272a5471f" uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" version = "1.1.0" -[[IrrationalConstants]] +[[deps.IrrationalConstants]] git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" version = "0.1.1" -[[IterTools]] -git-tree-sha1 = "fa6287a4469f5e048d763df38279ee729fbd44e5" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.4.0" - -[[IteratorInterfaceExtensions]] +[[deps.IteratorInterfaceExtensions]] git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" -[[JLLWrappers]] +[[deps.JLLWrappers]] deps = ["Preferences"] git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" version = "1.4.1" -[[JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "8076680b162ada2a031f707ac7b4953e30667a37" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.2" - -[[JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "d735490ac75c5cb9f1b00d8b5509c11984dc6943" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.0+0" - -[[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 = "f2355693d6778a178ade15952b7ac47a4ff97996" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" - -[[Latexify]] -deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "Printf", "Requires"] -git-tree-sha1 = "a8f4f279b6fa3c3c4f1adadd78a621b13a506bce" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.15.9" - -[[LibCURL]] +[[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -[[LibCURL_jll]] +[[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -[[LibGit2]] +[[deps.LibGit2]] deps = ["Base64", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" -[[LibSSH2_jll]] +[[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -[[Libdl]] +[[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" -[[Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[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.LinearAlgebra]] deps = ["Libdl", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -[[LogExpFunctions]] +[[deps.LogExpFunctions]] deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "e5718a00af0ab9756305a0392832c8952c7426c1" +git-tree-sha1 = "09e4b894ce6a976c354a69041a04748180d43637" uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.6" +version = "0.3.15" -[[Logging]] +[[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -[[MLStyle]] -git-tree-sha1 = "594e189325f66e23a8818e5beb11c43bb0141bcd" +[[deps.MLStyle]] +git-tree-sha1 = "e49789e5eb7b2d5577aaea395bfcac769df64bb8" uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.10" - -[[MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.9" +version = "0.4.11" -[[Markdown]] +[[deps.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.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.Missings]] deps = ["DataAPI"] git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f" uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" version = "1.0.2" -[[Mmap]] +[[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" -[[MozillaCACerts_jll]] +[[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -[[NaNMath]] -git-tree-sha1 = "b086b7ea07f8e38cf122f5016af580881ac914fe" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "0.3.7" - -[[NamedArrays]] +[[deps.NamedArrays]] deps = ["Combinatorics", "DataStructures", "DelimitedFiles", "InvertedIndices", "LinearAlgebra", "Random", "Requires", "SparseArrays", "Statistics"] git-tree-sha1 = "2fd5787125d1a93fbe30961bd841707b8a80d75b" uuid = "86f7a689-2022-50b4-a561-43c23ac3c673" version = "0.9.6" -[[NetworkOptions]] +[[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -[[Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[Omega]] +[[deps.Omega]] deps = ["AndTraits", "Distributions", "InferenceBase", "OmegaCore", "OmegaDistributions", "OmegaMH", "OmegaSoftPredicates", "Reexport", "ReplicaExchange", "SoftPredicates"] path = ".." uuid = "1af16e33-887a-59b3-8344-18f1671b3ade" version = "0.2.0" -[[OmegaCore]] +[[deps.OmegaCore]] deps = ["AndTraits", "Future", "Random", "Reexport", "Spec"] path = "../OmegaCore" uuid = "84d23798-d00f-4e9b-a82e-be69778c030a" version = "0.1.0" -[[OmegaDistributions]] +[[deps.OmegaDistributions]] deps = ["Distributions", "OmegaCore"] path = "../connectors/OmegaDistributions" uuid = "4ee16af8-c862-4b7a-9514-3b66b113c005" version = "0.1.0" -[[OmegaMH]] +[[deps.OmegaMH]] deps = ["InferenceBase", "OmegaCore", "SoftPredicates"] path = "../OmegaMH" uuid = "89eb2d39-e1f3-436d-870a-9a4679d6d79e" version = "0.1.0" -[[OmegaSoftPredicates]] +[[deps.OmegaSoftPredicates]] deps = ["InferenceBase", "OmegaCore", "SoftPredicates"] path = "../connectors/OmegaSoftPredicates" uuid = "ffc32627-273f-428b-9998-33a39d288549" version = "0.1.0" -[[OpenBLAS_jll]] +[[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -[[OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" - -[[OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "648107615c15d4e09f7eca16307bc821c1f718d8" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.13+0" - -[[OpenSpecFun_jll]] +[[deps.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]] +[[deps.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 = "ee26b350276c51697c9c2d88a072b339f9f03d73" +[[deps.PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse", "Test"] +git-tree-sha1 = "95a4038d1011dfdbde7cecd2ad0ac411e53ab1bc" uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.5" +version = "0.10.1" -[[Parameters]] +[[deps.Parameters]] deps = ["OrderedCollections", "UnPack"] git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" version = "0.12.3" -[[Parsers]] -deps = ["Dates"] -git-tree-sha1 = "0b5cfbb704034b5b4c1869e36634438a047df065" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.2.1" - -[[Pixman_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.40.1+0" - -[[Pkg]] +[[deps.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 = "6f1b25e8ea06279b5689263cc538f51331d7ca17" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.1.3" - -[[Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "GeometryBasics", "JSON", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "Unzip"] -git-tree-sha1 = "7e4920a7d4323b8ffc3db184580598450bde8a8e" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.25.7" - -[[PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "db3a23166af8aebf4db5ef87ac5b00d36eb771e2" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.0" - -[[Preferences]] +[[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "2cf929d64681236a2e074ffafb8d568733d2e6af" +git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.2.3" - -[[PrettyTables]] -deps = ["Crayons", "Formatting", "Markdown", "Reexport", "Tables"] -git-tree-sha1 = "dfb54c4e414caa595a1f2ed759b160f5a3ddcba5" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "1.3.1" +version = "1.3.0" -[[Printf]] +[[deps.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.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] git-tree-sha1 = "78aadffb3efd2155af139781b8a8df1ef279ea39" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" version = "2.4.2" -[[RCall]] -deps = ["CategoricalArrays", "Conda", "DataFrames", "DataStructures", "Dates", "Libdl", "Missings", "REPL", "Random", "Requires", "StatsModels", "WinReg"] -git-tree-sha1 = "72fddd643785ec1f36581cbc3d288529b96e99a7" -uuid = "6f49c342-dc21-5d91-9882-a32aef131414" -version = "0.13.13" - -[[REPL]] +[[deps.REPL]] deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" -[[Random]] +[[deps.Random]] deps = ["SHA", "Serialization"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -[[RecipesBase]] -git-tree-sha1 = "6bf3f380ff52ce0832ddd3a2a7b9538ed1bcca7d" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.2.1" - -[[RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase"] -git-tree-sha1 = "37c1631cb3cc36a535105e6d5557864c82cd8c2b" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.5.0" - -[[Reexport]] +[[deps.Reexport]] git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" uuid = "189a3867-3050-52da-a836-e630ba90ab69" version = "1.2.2" -[[RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "cdbd3b1338c72ce29d9584fdbe9e9b70eeb5adca" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "0.1.3" - -[[ReplicaExchange]] +[[deps.ReplicaExchange]] deps = ["InferenceBase", "OmegaCore", "Spec"] path = "../ReplicaExchange" uuid = "5ad4e244-73e6-47c5-b007-45e12ac3dae1" version = "0.1.0" -[[Requires]] +[[deps.Requires]] deps = ["UUIDs"] git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" uuid = "ae029012-a4dd-5104-9daa-d747884805df" version = "1.3.0" -[[Rmath]] +[[deps.Rmath]] deps = ["Random", "Rmath_jll"] git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f" uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" version = "0.7.0" -[[Rmath_jll]] +[[deps.Rmath_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "68db32dff12bb6127bac73c209881191bf0efbb7" uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" version = "0.3.0+0" -[[SHA]] +[[deps.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]] +[[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" -[[SharedArrays]] +[[deps.SharedArrays]] deps = ["Distributed", "Mmap", "Random", "Serialization"] uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" -[[ShiftedArrays]] -git-tree-sha1 = "22395afdcf37d6709a5a0766cc4a5ca52cb85ea0" -uuid = "1277b4bf-5013-50f5-be3d-901d8477a67a" -version = "1.0.0" - -[[Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[Sockets]] +[[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" -[[SoftPredicates]] +[[deps.SoftPredicates]] deps = ["Cassette", "DocStringExtensions", "InferenceBase", "LinearAlgebra", "Spec"] path = "../SoftPredicates" uuid = "5345b20a-9614-40c4-b281-8f4998fc0f3b" version = "0.1.0" -[[SortingAlgorithms]] +[[deps.SortingAlgorithms]] deps = ["DataStructures"] git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508" uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" version = "1.0.1" -[[SparseArrays]] +[[deps.SparseArrays]] deps = ["LinearAlgebra", "Random"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -[[Spec]] +[[deps.Spec]] deps = ["Cassette", "MLStyle", "Parameters", "Pkg", "Random", "Test"] git-tree-sha1 = "8747d1a0032266bc7e9b795f85062dfa680311cf" uuid = "b8ccf107-3a88-5e0f-823b-b838c6a0f327" version = "0.3.0" -[[SpecialFunctions]] -deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "a4116accb1c84f0a8e1b9932d873654942b2364b" +[[deps.SpecialFunctions]] +deps = ["OpenSpecFun_jll"] +git-tree-sha1 = "d8d8b8a9f4119829410ecd706da4cc8594a1e020" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.1.1" +version = "0.10.3" -[[StaticArrays]] +[[deps.StaticArrays]] deps = ["LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "a635a9333989a094bddc9f940c04c549cd66afcf" +git-tree-sha1 = "da4cf579416c81994afd6322365d00916c79b8ae" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.3.4" +version = "0.12.5" -[[Statistics]] +[[deps.Statistics]] deps = ["LinearAlgebra", "SparseArrays"] uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -[[StatsAPI]] -git-tree-sha1 = "d88665adc9bcf45903013af0982e2fd05ae3d0a6" +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "c82aaa13b44ea00134f8c9c89819477bd3986ecd" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.2.0" +version = "1.3.0" -[[StatsBase]] +[[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "51383f2d367eb3b444c961d485c565e4c0cf4ba0" +git-tree-sha1 = "8977b17906b0a1cc74ab2e3a05faa16cf08a8291" uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.14" +version = "0.33.16" -[[StatsFuns]] +[[deps.StatsFuns]] deps = ["ChainRulesCore", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f35e1879a71cca95f4826a14cdbf0b9e253ed918" +git-tree-sha1 = "5950925ff997ed6fb3e985dcce8eb1ba42a0bbe7" uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "0.9.15" +version = "0.9.18" -[[StatsModels]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Printf", "REPL", "ShiftedArrays", "SparseArrays", "StatsBase", "StatsFuns", "Tables"] -git-tree-sha1 = "677488c295051568b0b79a77a8c44aa86e78b359" -uuid = "3eaba693-59b7-5ba5-a881-562e759f1c8d" -version = "0.6.28" - -[[StructArrays]] -deps = ["Adapt", "DataAPI", "StaticArrays", "Tables"] -git-tree-sha1 = "d21f2c564b21a202f4677c0fba5b5ee431058544" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.4" - -[[SuiteSparse]] +[[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" -[[TOML]] +[[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -[[TableTraits]] +[[deps.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 = "bb1064c9a84c52e277f1096cf41434b675cd368b" +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] +git-tree-sha1 = "5ce79ce186cc678bbb5c5681ca3379d1ddae11a1" uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.6.1" +version = "1.7.0" -[[Tar]] +[[deps.Tar]] deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -[[Test]] +[[deps.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.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -[[UnPack]] +[[deps.UnPack]] git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" version = "1.0.2" -[[Unicode]] +[[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" -[[UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[UnicodePlots]] -deps = ["Contour", "Crayons", "Dates", "SparseArrays", "StatsBase"] -git-tree-sha1 = "62595983da672758a96f89e07f7fd3735f16c18c" +[[deps.UnicodePlots]] +deps = ["Crayons", "Dates", "SparseArrays", "StatsBase"] +git-tree-sha1 = "dc9c7086d41783f14d215ea0ddcca8037a8691e9" uuid = "b8865327-cd53-5732-bb35-84acbb429228" -version = "2.7.0" - -[[Unzip]] -git-tree-sha1 = "34db80951901073501137bdbc3d5a8e7bbd06670" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.1.2" - -[[VersionParsing]] -git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" -uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" -version = "1.3.0" - -[[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"] -git-tree-sha1 = "66d72dc6fcc86352f01676e8f0f698562e60510f" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.23.0+0" - -[[WinReg]] -deps = ["Test"] -git-tree-sha1 = "808380e0a0483e134081cc54150be4177959b5f4" -uuid = "1b915085-20d7-51cf-bf83-8f477d6f5128" -version = "0.3.1" - -[[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" +version = "1.4.0" -[[Zlib_jll]] +[[deps.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" - -[[libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[libblastrampoline_jll]] +[[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -[[libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[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 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[nghttp2_jll]] +[[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -[[p7zip_jll]] +[[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" - -[[x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[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/OmegaExamples/Project.toml b/OmegaExamples/Project.toml index 96507b5..95d5c81 100644 --- a/OmegaExamples/Project.toml +++ b/OmegaExamples/Project.toml @@ -7,6 +7,4 @@ version = "0.1.0" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" FreqTables = "da1fdf0e-e0ff-5433-a45f-9bb5ff651cb1" Omega = "1af16e33-887a-59b3-8344-18f1671b3ade" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -RCall = "6f49c342-dc21-5d91-9882-a32aef131414" UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" diff --git a/OmegaExamples/src/OmegaExamples.jl b/OmegaExamples/src/OmegaExamples.jl index 2bda841..7fc8583 100644 --- a/OmegaExamples/src/OmegaExamples.jl +++ b/OmegaExamples/src/OmegaExamples.jl @@ -1,2 +1,5 @@ module OmegaExamples -end + +include("probmods/probmods_helper.jl") + +end # module diff --git a/OmegaExamples/src/probmods/generative-models.jl b/OmegaExamples/src/probmods/generative-models.jl new file mode 100644 index 0000000..a0ebbd3 --- /dev/null +++ b/OmegaExamples/src/probmods/generative-models.jl @@ -0,0 +1,619 @@ +### A Pluto.jl notebook ### +# v0.18.4 + +using Markdown +using InteractiveUtils + +# ╔═╡ ec0d1440-51ea-11ec-0aef-1f9c2da69ffd +begin + import Pkg + # activate the shared project environment + Pkg.activate(Base.current_project()) + using Omega, Distributions, OmegaExamples, UnicodePlots +end + +# ╔═╡ ce896412-97f8-4102-9ed5-bc74dfdb26d4 +md"### Models, simulation, and degrees of belief" + +# ╔═╡ cd268cc7-e246-4254-94eb-4809e96b224b +md"One view of knowledge is that the mind maintains working models of parts of the world. ‘Model’ in the sense that it captures some of the structure in the world, but not all (and what it captures need not be exactly what is in the world—just what is useful). ‘Working’ in the sense that it can be used to simulate this part of the world, imagining what will follow from different initial conditions." + +# ╔═╡ f68ca668-e238-4aa2-82be-c2320336e2e9 +md"# Building Generative Models" + +# ╔═╡ 2cd7584f-5c78-4d3a-93dc-16da97146e98 +md"We wish to describe in formal terms how to generate states of the world. That is, we wish to describe the causal process, or steps that unfold, leading to some potentially observable states. The key idea of this section is that these generative processes can be described as computations—computations that involve random choices to capture uncertainty about the process. +Programming languages are formal systems for describing what (deterministic) computation a computer should do. Modern programming languages offer a wide variety of different ways to describe computation; each makes some processes simple to describe and others more complex. However, a key tenet of computer science is that all of these languages have the same fundamental power: any computation that can be described with one programming language can be described by another. (More technically this Church-Turing thesis posits that many specific computational systems capture the set of all effectively computable procedures. These are called universal systems.)" + +# ╔═╡ cb28a5c4-a721-4a53-a179-adedf4f71237 +md""" +[Omega](https://github.com/zenna/Omega.jl) is a programming language that describes probabilistic computation. +The key idea is that in Omega you can express stochastic processes (random variables) and not just deterministic functions (like logical AND gate). Deterministic models return unique values for the same set of inputs whereas stochastic models have random variables as inputs, which result in random outputs. Most models we encounter are better described by random variables, for example, tossing a coin. We can simulate a coin toss in Omega, unlike in a deterministic programming language. +""" + +# ╔═╡ 0ce18f90-f2ef-490a-a7c4-40a6ccfa214a +md""" +A basic object in Omega is a class representing random variables, from which you can generate random variables. For instance, a random variable that is of Bernoulli distribution is generated by - +""" + +# ╔═╡ 354e3b5a-4d1e-43ee-b1bb-e8620fba49e7 +a = @~ Bernoulli() + +# ╔═╡ 4c915901-e987-4552-b5f7-bc25ee6edeec +md"Here, `Bernoulli()` is a random class and to get a member (a random variable, which we can sample from) of the class we use `@~`. The long-form of writing this expression is -" + +# ╔═╡ 5b5b728e-295a-4d64-ad3a-56fb2a35f3b6 +id = 0 + +# ╔═╡ 0aeabe86-bd40-4adb-8771-83c2efc56c32 +a_ = id ~ Bernoulli() + +# ╔═╡ 4902ba14-865b-4106-a3e3-6f67d13fd3b2 +md"where `0` is an ID, which is used to refer to the particular random variable in Omega. IDs may be tuples, numbers, strings or julia symbols. `@~` is a syntactic sugar that automatically selects an ID." + +# ╔═╡ 7d3c8448-090d-46b4-a6b6-ba20ff617be8 +md"A class is analogous to a [*plate*](https://en.wikipedia.org/wiki/Plate_notation) in Bayesian networks." + +# ╔═╡ 9dca3d31-8ace-4c64-996c-d9d9e87e6ee4 +md"### Sampling " + +# ╔═╡ cc0c0d70-5197-4b2f-b32d-6ac52b8daf27 +md"`randsample` is used to sample from a random variable:" + +# ╔═╡ d607d2e0-84a5-4dfd-a281-f5c64cfe1e2d +randsample(a) + +# ╔═╡ 5a10bc0d-d676-4941-a1d5-41790ef255ec +md"Run this program a few times. You will get back a different sample on each execution." + +# ╔═╡ 02ca238e-5a17-42dc-92a1-be975db0e7cd +md"To know how random variables are constructed, a key concept to know is the Ω object in Omega.jl." + +# ╔═╡ 4ea27371-2e73-4a69-887c-b9f519fbf583 +md""" +There are a few perspectives on what Ω is: + +1. The sample space in probability theory (often denoted $\Omega$) +2. Space of exogenous variables in as causal graphical modelling nomenclature (often denoted $U$) +3. The random number generator [`rng::Random.AbstractRNG`](https://docs.julialang.org/en/v1/stdlib/Random/#Random.AbstractRNG). Implementation wise, Omega.jl tries to be compatible with any model written as a function `f(rng::AbstractRNG)` +""" + +# ╔═╡ d70b97b5-af55-46f9-904e-309713603155 +md""" +Random variables in Omega are functions of the form - `f(ω::Ω)` and `randsample` can used to sample from them. +""" + +# ╔═╡ 0360ccef-ccf4-4284-80a9-ee5ed40becc4 +md"### Primitive and Composite Classes in Omega" + +# ╔═╡ 9998d466-eb74-476f-a768-d378bbe83f1b +md"""##### Primitive Classes +Omega comes with a set of built-in primitive random variable classes, such as `StdNormal` and `StdUniform`. There are parameterless infinite sets of random variables. +""" + +# ╔═╡ a0d64a28-e4f9-4003-b69d-7b27bd757c24 +As = StdUniform{Float64}() + +# ╔═╡ 84acb184-1c92-4761-a44e-bd1503f8255d +rv = @~ As + +# ╔═╡ 4e80ce71-6757-4908-8cd0-e382b11b70c3 +randsample(rv) + +# ╔═╡ 5fd22c50-4c81-41b2-a959-fe3dec00a6fd +md""" +##### Composite Class + +A class in Omega is actually just a function of the form `f(id, ω)`. Of course, you can specify your own classes simply by constructing a function. +""" + +# ╔═╡ 8ac4cad4-eb4c-4e33-815c-e365668b3810 +μ = @~ StdNormal{Float64}() + +# ╔═╡ 5fcf6c97-6f81-4be2-b27a-25b2abcabca1 +x(id, ω) = (id ~ Normal(μ(ω), 1))(ω) + +# ╔═╡ 1b4d9047-abb0-4fb7-ab72-0a4f790b1515 +x_ = @~ x + +# ╔═╡ 0fe48b01-e908-4e6c-8c4c-b68cf8c172dc +md"`x_` is a random variable of the class `x`" + +# ╔═╡ 0a2c3c83-8a67-4666-80c0-f580233dc019 +randsample((μ, x_)) + +# ╔═╡ f2a20f84-b2e6-4e6c-ab51-6e7ea045954e +md"Alternatively, `@joint` is used to create the joint distribution of variables:" + +# ╔═╡ 7d5587d1-c4b4-48f0-971c-677fbe268e73 +joint = @joint μ x_ + +# ╔═╡ ae0ad1df-ab2a-4704-a121-623e05f079da +randsample(joint) + +# ╔═╡ 0ae343fa-bc62-48ac-a34e-d21028531530 +md""" +Every time we create a new (independent) random variable, we need to provide a unique id to it. We could instead use `@~` to generate `id`s automatically. For example, to simulate a (possibly biased) coin toss, we can simply write: +""" + +# ╔═╡ 3c73f032-eedf-4d99-8489-a98ccf4b8805 +coin_toss = @~ Bernoulli() + +# ╔═╡ 61f4d77b-eecf-4cca-ac01-944efe58d9bb +randsample(coin_toss) + +# ╔═╡ 2ad90265-8ef2-480f-81b0-7ed1a674011b +md"If you run the program many times, and collect the values in a histogram, you can see what a typical sample looks like:" + +# ╔═╡ 9504162b-52e1-476d-8218-0afc2555e278 +viz(randsample(coin_toss, 1000)) + +# ╔═╡ 15920581-2258-42e1-ba73-da82b2baa7e0 +md"As you can see, the result is an approximately uniform distribution over `true` and `false`. +This way we can construct more complex expressions that describe more complicated random variables. For instance, here we describe a process that samples a number adding up several independent Bernoulli distributions:" + +# ╔═╡ 3f04b226-a38a-4804-8691-59332bfc8728 +b_sum = (@~ Bernoulli()) .+ (@~ Bernoulli()) .+ (@~ Bernoulli()) + +# ╔═╡ 26cff114-b994-4362-8902-20a46deb9955 +md"`.+` is used to add two random variables as we have done above." + +# ╔═╡ db8d667c-5ad7-4deb-b020-13d645bedbf9 +randsample(b_sum) + +# ╔═╡ 5444fd8d-8ff3-4b30-9942-067dca8a1126 +md"We have constructed a random variable that is a sum of three random variables and sampled from it. We can construct such complex random variables from the primitive ones." + +# ╔═╡ 09595cc9-b08a-4465-a3e0-5d8e280530a2 +viz(randsample(b_sum, 1000)) + +# ╔═╡ 6aa46f74-b3e2-4d12-abd0-90759023ecc5 +md"Complex functions can also have other arguments. Here is a random variable that will only sometimes double its input:" + +# ╔═╡ 0974a6a9-859f-44a9-a17a-5ef90c789ce5 +noisy_double(x) = ifelse.((@~ Bernoulli()), 2*x, x) + +# ╔═╡ 317cf40e-bafd-43f3-b855-9bfcf53c0f3a +md""" +To perform pointwise operation, which is defined on the function `ifelse` here, we use `.` operator. This can also be done in the following way - +``` +pw(ifelse, (@~ Bernoulli()), 2*x, x) +``` +""" + +# ╔═╡ 11c2d2b5-0c14-4b23-9282-083ac6f07f6f +randsample(noisy_double(3)) + +# ╔═╡ c697307c-9d49-43a7-a379-f383780a1248 +md"By using higher-order functions we can construct and manipulate complex sampling processes. We use the `ifelse` function: `ifelse.(condition, if-true, if-false)` to induce hierarchy. A good example comes from coin flipping…" + +# ╔═╡ 277b383e-c909-4424-91f1-f0f00b3531b4 +md"## Example: Flipping Coins" + +# ╔═╡ f58cd6ff-9023-4dc7-9213-2279f5aebf72 +md"The following program defines a fair coin, and flips it $20$ times:" + +# ╔═╡ 3c5e0f1d-0379-4c92-817d-4e6ef2d7ed8e +fair_coin = ifelse.((@~ Bernoulli()), 'h', 't') + +# ╔═╡ b7d24774-2f2b-4da8-9257-6fe3a424a869 +viz(randsample(fair_coin, 20)) + +# ╔═╡ a54a2d2f-4c4b-46b1-aa7a-2ca5e6203067 +md"This program defines a “trick” coin that comes up heads most of the time ($95\%$), and flips it $20$ times:" + +# ╔═╡ 5657d115-ebad-4731-b8e2-5d66da76f600 +trick_coin = ifelse.((@~ Bernoulli(0.95)), 'h', 't') + +# ╔═╡ 83f9117e-2c5b-47e8-a78f-3bd679ad95dc +viz(randsample(trick_coin, 20)) + +# ╔═╡ 65e02cf5-bfd2-4d79-899c-57a64624dd71 +md"The higher-order function `make_coin` takes in a weight and outputs a function describing a coin with that weight. Then we can use `make_coin` to make the coins above, or others." + +# ╔═╡ 65119d8b-a0d9-403f-9d42-ec6ef0ab3072 +make_coin(weight) = ifelse.((@~ Bernoulli(weight)), 'h', 't') + +# ╔═╡ 7fb8ded9-629a-4084-ba5b-779dbe251841 +begin + fair_coin1 = make_coin(0.5) + trick_coin1 = make_coin(0.95) + bent_coin = make_coin(0.25) +end + +# ╔═╡ 7ff75111-cdde-466f-8b85-572a0e8a68bd +viz(randsample(fair_coin1, 20)) + +# ╔═╡ 31f991a8-eb5e-413b-a3db-3058a6bde18d +viz(randsample(trick_coin1, 20)) + +# ╔═╡ 8c354058-4168-4591-9a16-778031ec1d3a +viz(randsample(bent_coin, 20)) + +# ╔═╡ 15dacfed-9db5-4a3e-ba21-edbfcb3dc690 +md"We can also define a higher-order function that takes a “coin” and “bends it”:" + +# ╔═╡ 56304079-fc6c-474b-b257-9db330475786 +bend(coin) = ifelse.((coin .== 'h'), make_coin(0.7), make_coin(0.1)) + +# ╔═╡ 4c343506-221d-4e8f-9398-725643bd74fc +bent_coin1 = bend(fair_coin) + +# ╔═╡ 0d487cd0-e3d6-4623-98ea-a4dc649a0d9e +viz(randsample(bent_coin1, 100)) + +# ╔═╡ 7d668805-db8f-4d76-812f-d9d86f44668e +md"Here we visualize the number of heads we expect to see if we flip a weighted coin ($weight = 0.8$) $10$ times. We’ll repeat this experiment 1000 times and then visualize the results. Try varying the coin weight or the number of repetitions to see how the expected distribution changes." + +# ╔═╡ 7a7711ba-65ea-459e-be55-da5f3e36a990 +begin + make_coin_binary(weight, n) = n ~ Bernoulli(weight) + coin(n) = make_coin_binary(0.8, n) +end + +# ╔═╡ 500b46f9-f081-46d1-9fbf-5704c1068a75 +c = pw(+, [coin(i) for i in 1:10]...) + +# ╔═╡ 83b2661d-a893-44a8-8138-13779356a7c0 +viz(randsample(c, 1000)) + +# ╔═╡ deb917d9-f885-4b7f-a85e-f2fcfab91183 +md"## Example: Causal Models in Medical Diagnosis" + +# ╔═╡ 4ef4f0dc-eb00-4fd0-a951-7e7d508cab06 +md"Generative knowledge is often causal knowledge that describes how events or states of the world are related to each other. As an example of how causal knowledge can be encoded in Omega, consider a simplified medical scenario:" + +# ╔═╡ 74534019-62ee-494f-8ece-ac2d096543d9 +let + lung_cancer = @~ Bernoulli(0.01) + cold = @~ Bernoulli(0.2) + cough = cold .| lung_cancer + randsample(cough) +end + +# ╔═╡ 4c21551f-75c3-4e9d-ac9f-aed939481c2e +md"This program models the diseases and symptoms of a patient in a doctor’s office. It first specifies the base rates of two diseases the patient could have: lung cancer is rare while a cold is common, and there is an independent chance of having each disease. The program then specifies a process for generating a common symptom of these diseases – an effect with two possible causes: The patient coughs if they have a cold or lung cancer (or both). +Here is a more complex version of this causal model:" + +# ╔═╡ 17701d52-161b-447d-892f-3ca89d461ebd +begin + lung_cancer = @~ Bernoulli(0.01) + TB = @~ Bernoulli(0.005) + stomach_flu = @~ Bernoulli(0.1) + cold = @~ Bernoulli(0.2) + other = @~ Bernoulli(0.1) +end + +# ╔═╡ 24a06c1c-29ac-45b3-b8fa-774ca2e4619e +cough = pw(|, + (cold .& (@~ Bernoulli())), + (lung_cancer .& (@~ Bernoulli(0.3))), + (TB .& (@~ Bernoulli(0.7))), + (other .& (@~ Bernoulli(0.1))) +) + +# ╔═╡ f5600317-7a50-4f16-9716-c4e3e24515bb +fever = pw(|, + (cold .& (@~ Bernoulli(0.3))), + (stomach_flu .& (@~ Bernoulli())), + (TB .& (@~ Bernoulli(0.1))), + (other .& (@~ Bernoulli(0.01))) +) + +# ╔═╡ f005e508-db7f-4d3d-997e-3bdbe0c4bb7e +chest_pain = pw(|, + (lung_cancer .& (@~ Bernoulli())), + (TB .& (@~ Bernoulli())), + (other .& (@~ Bernoulli(0.01))) +) + +# ╔═╡ 3dfc6973-f996-4020-b461-016b46f87659 +shortness_of_breath = pw(|, + (lung_cancer .& (@~ Bernoulli())), + (TB .& (@~ Bernoulli(0.2))), + (other .& (@~ Bernoulli(0.01))) +) + +# ╔═╡ 47807da5-e1b6-49aa-849b-39d5cce05471 +symptoms = @joint cough fever chest_pain shortness_of_breath + +# ╔═╡ f755a265-1b88-47e2-97ee-5269964ff809 +randsample(symptoms) + +# ╔═╡ ceb6e5a8-8093-425e-b40d-9bd345c23e66 +md"Now there are four possible diseases and four symptoms. Each disease causes a different pattern of symptoms. The causal relations are now probabilistic: Only some patients with a cold have a cough ($50\%$), or a fever ($30\%$). There is also a catch-all disease category “other”, which has a low probability of causing any symptom. Noisy logical functions—functions built from and (`&ₚ`), or (`|ₚ`), and distributions —provide a simple but expressive way to describe probabilistic causal dependencies between Boolean (true-false valued) variables. +When you run the above code, the program generates a list of symptoms for a hypothetical patient. Most likely all the symptoms will be false, as (thankfully) each of these diseases is rare. Experiment with running the program multiple times. Now try modifying the function for one of the diseases, setting it to be true, to simulate only patients known to have that disease. For example, replace `lung_cancer = @~ Bernoulli(0.01)` with `lung_cancer = true`. Run the program several times to observe the characteristic patterns of symptoms for that disease." + +# ╔═╡ 83aa6c42-a846-42d7-b9d0-c5b9e783c2cc +md"## Prediction, Simulation, and Probabilities" + +# ╔═╡ 2cf11ab5-0fdf-43da-8987-2bed91ef3f14 +md"Suppose that we flip two fair coins, and return the tuple of their values:" + +# ╔═╡ 54890932-a472-4ad4-a904-bc847551bfcb +randsample(((@~ Bernoulli()), (@~ Bernoulli()))) + +# ╔═╡ 1721f226-8d1d-4803-a445-925874e236c8 +md"How can we predict the return value of this program? For instance, how likely is it that we will see `(true, false)`? A probability is a number between $0$ and $1$ that expresses the answer to such a question: it is a degree of belief that we will see a given outcome, such as `(true, false)`. The probability of an event $A$ (such as the above program returning `(true, false)`) is usually written as $P(A)$. +A probability distribution is the probability of each possible outcome of an event. For instance, we can examine the probability distribution on values that can be returned by the above program by sampling many times and examining the histogram of return values:" + +# ╔═╡ f2fd33e0-3451-44cb-9e69-8b627abf7729 +begin + random_pair = ((@~ Bernoulli()), (@~ Bernoulli())) + viz(string.(randsample(random_pair, 1000))) +end + +# ╔═╡ a066a0a9-e28f-45ef-bfba-ef23eaf75f96 +md"We see by examining this histogram that `(true, false)` comes out about $25\%$ of the time. We may define the probability of a return value to be the fraction of times (in the long run) that this value is returned from evaluating the program – then the probability of `(true, false)` from the above program is $0.25$." + +# ╔═╡ 98da911f-1338-4651-9e20-aaeab6c81c50 +md"## The rules of probability" + +# ╔═╡ 27fe69b6-ba83-4b79-8f30-df5841650e23 +md"We can derive marginal distributions with the “rules of probability”. This is intractable for complex processes, but can help us build intuition for how distributions work." + +# ╔═╡ 10e3b2f2-68ec-4c19-b473-469a47815205 +md"#### Product Rule" + +# ╔═╡ 8283c98e-23eb-4a34-b4f2-14722a4afbe7 +md"In the above example, we take three steps to compute the output value: we create the first Bernoulli random variable, then the second, then we make a tuple of random variables and sample from it. To make this more clear let us re-write the program as:" + +# ╔═╡ 0add56e4-adba-448b-a6bc-8c17284bda01 +let + A = @~ Bernoulli() + B = @~ Bernoulli() + C = @joint A B + randsample(C) +end + +# ╔═╡ 547eeca0-202d-4b43-8fc8-7d81c054bd02 +md"We can directly observe (as we did above) that the probability of true for $A$ is $0.5$, and the probability of false from $B$ is $0.5$. Can we use these two probabilities to arrive at the probability of $0.25$ for the overall outcome `C = (true, false)`? Yes, using the product rule of probabilities: The probability of two random choices is the product of their individual probabilities. The probability of several random choices together is often called the joint probability and written as $P(A,B)$. Since the first and second random choices must each have their specified values in order to get `(true, false)` in the example, the joint probability is their product: $0.25$. + +We must be careful when applying this rule, since the probability of a choice can depend on the probabilities of previous choices. For instance, we can visualize the the exact probability of `(true, false)` resulting from this program by defining a new random variable as follows -" + +# ╔═╡ 25276e86-a816-4d37-baf2-6761971a9090 +A = @~ Bernoulli() + +# ╔═╡ 1c260eff-636c-429d-992f-b7854f4398e1 +B = @~ Bernoulli.(ifelse.(A, 0.3, 0.7)) + +# ╔═╡ d57d23a3-7626-4b23-b1df-994951f5a12b +rs = randsample((A, B), 1000) + +# ╔═╡ 4a0255be-6b88-4f1b-80c0-eec1d70c0da6 +viz(string.(rs)) + +# ╔═╡ 4fc6e919-7026-4c13-88fe-bd7956e1bb6e +md"In general, the joint probability of two random choices $A$ and $B$ made sequentially, in that order, can be written as $P(A,B)=P(A)P(B|A)$. This is read as the product of the probability of $A$ and the probability of “$B$ given $A$”, or “$B$ conditioned on $A$”. That is, the probability of making choice $B$ given that choice $A$ has been made in a certain way. Only when the second choice does not depend on (or “look at”) the first choice does this expression reduce to a simple product of the probabilities of each choice individually: $P(A,B)=P(A)P(B)$. +What is the relation between $P(A,B)$ and $P(B,A)$, the joint probability of the same choices written in the opposite order? The only logically consistent definitions of probability require that these two probabilities be equal, so $P(A)P(B|A)=P(B)P(A|B)$. This is the basis of Bayes’ theorem, which we will encounter later." + +# ╔═╡ 099b62b4-3b0a-4f78-a1c0-2cb04cb4d35c +md"#### Sum Rule" + +# ╔═╡ fad672e1-3888-40dc-8358-b75a1b71c628 +md"Now let’s consider an example where we can’t determine from the overall return value the sequence of random choices that were made:" + +# ╔═╡ d744dba4-580b-4795-95c6-e4197c4217d6 +s = (@~ Bernoulli()) .| (@~ Bernoulli()) + +# ╔═╡ ebdc9cec-32db-4770-9fc8-8400280a48cb +randsample(s) + +# ╔═╡ 21400744-aa27-4360-91ed-63f397d475ee +md"We can sample from this program and determine that the probability of returning true is about $0.75$. +We cannot simply use the product rule to determine this probability because we don’t know the sequence of random choices that led to this return value. However we can notice that the program will return true if the two-component choices are `(true, true)`, or `(true, false)`, or `(false, true)`. To combine these possibilities we use another rule for probabilities: If there are two alternative sequences of choices that lead to the same return value, the probability of this return value is the sum of the probabilities of the sequences. We can write this using probability notation as: $P(A)=∑P(A,B)$ over all $B$, where we view $A$ as the final value and $B$ as a random choice on the way to that value. Using the product rule we can determine that the probability in the example above is $0.25$ for each sequence that leads to return value true, then, by the sum rule, the probability of true is $0.25+0.25+0.25=0.75$. +Using the sum rule to compute the probability of a final value is called is sometimes called marginalization, because the final distribution is the marginal distribution on final values. From the point of view of sampling processes marginalization is simply ignoring (or not looking at) intermediate random values that are created on the way to a final return value. From the point of view of directly computing probabilities, marginalization is summing over all the possible “histories” that could lead to a return value. Putting the product and sum rules together, the marginal probability of return values from a program that we have explored above is the sum over sampling histories of the product over choice probabilities—a computation that can quickly grow unmanageable, but can be approximated." + +# ╔═╡ 548d888e-2dd7-4a3d-b43c-21955283a920 +md"#### Stochastic Recursion" + +# ╔═╡ 24263dd7-8700-479c-a49a-0a311571af7e +md"Recursive functions are a powerful way to structure computation in deterministic systems. In Omega it is possible to have a stochastic recursion that randomly decides whether to stop. For example, the geometric distribution is a probability distribution over the non-negative integers. We imagine flipping a (weighted) coin, returning $N−1$ if the first true is on the $N$th flip (that is, we return the number of times we get false before our first true):" + +# ╔═╡ 4bc21863-2b27-4eeb-86e4-7a2e85db26e1 +geometric(p, ω, n = 0) = (n ~ Bernoulli(p))(ω) ? 0 : 1 + geometric(p, ω, n + 1) + +# ╔═╡ 0f25507b-23d1-4cbf-8669-c90fab519fe9 +randsample(ω -> geometric(0.6, ω)) + +# ╔═╡ f31df26e-0f92-4957-8569-05c10f4adec8 +md"There is no upper bound on how long the computation can go on, although the probability of reaching some number declines quickly as we go. Indeed, stochastic recursions must be constructed to halt eventually (with probability $1$)." + +# ╔═╡ 073f84a2-8cc8-4683-bff5-a2849806ecb7 +md"## Persistent Randomness" + +# ╔═╡ bfd0556a-9363-4040-bcfa-bec0ce28ba4a +md"In Omega, random variables are pure: reapplication to the same context (or ω) produces the same result." + +# ╔═╡ 7238ccd2-68c8-4839-bec2-de26dbe6a473 +ω = defω() + +# ╔═╡ 18438de3-24e6-4d21-a008-951bda316f46 +f = 1 ~ Bernoulli() + +# ╔═╡ cbe819fc-d2f3-49dd-bef2-55fef0e8210b +g = 1 ~ Bernoulli() + +# ╔═╡ 82a6be03-71fe-48d7-a2fa-53427f951cd2 +f(ω) == g(ω) # Always returns true + +# ╔═╡ 8c06cba6-e1bc-4dc0-b6c2-a2b625313d6c +md"Independent random variables of a random class can be created in Omega by changing the `id` as follows -" + +# ╔═╡ a9d291a1-ab41-4756-937b-ae44a44012e4 +let + iid_1 = 1 ~ Bernoulli() + iid_2 = 2 ~ Bernoulli() + ω = defω() + iid_1(ω) == iid_2(ω) # Does not always return true +end + +# ╔═╡ cb5cd097-1632-46ab-b311-ab89bc827034 +md"Sometimes we require the results of the stochastic process to be random but persistent, for example: Eye colour of a person. We can represent the notion that eye color is random, but each person has a fixed eye colour as follows:" + +# ╔═╡ 17a5049b-68f4-4ef1-9abe-4a669a3dcdc5 +function eye_colour(n, ω) + d = (n ~ DiscreteUniform(1, 3))(ω) + if d == 1 + return :blue + elseif d == 2 + return :green + else + return :brown + end +end + +# ╔═╡ c91c4ccf-253b-4507-86af-975986032f9f +randsample(ω -> [eye_colour(:bob, ω), eye_colour(:alice, ω), eye_colour(:bob, ω)]) + +# ╔═╡ 72c80751-7a95-4e2d-9415-83129c934bcc +md"Bob's eye colour is consistent every time we call the above `randsample`." + +# ╔═╡ 7c838e1b-9ff7-45eb-8e7b-656435671e4e +md"This type of modeling is called random world style ([McAllester et al., 2008](https://dspace.mit.edu/handle/1721.1/41516)). Note that we don’t have to specify ahead of time the people whose eye color we will ask about: the distribution on eye colors is implicitly defined over the infinite set of possible people, but only constructed “lazily” when needed." + +# ╔═╡ 434defef-1ec7-420b-8699-34be75cf08b2 +md"As another example, here we define a function `flip_a_lot` that maps from an integer (or any other value) to a coin flip. We could use it to implicitly represent the $n$th flip of a particular coin, without having to actually flip the coin $n$ times." + +# ╔═╡ ceca9345-4a5e-4766-bd54-ab4f2d4c0a6e +flip_a_lot(n, ω) = (n ~ Bernoulli())(ω) + +# ╔═╡ b10cf079-1995-4af6-8ec0-f772d0e9d359 +let + randsample(ω -> [ + [flip_a_lot(1, ω), flip_a_lot(12, ω), flip_a_lot(47, ω), flip_a_lot(1548, ω)], + [flip_a_lot(1, ω), flip_a_lot(12, ω), flip_a_lot(47, ω), flip_a_lot(1548, ω)] + ]) +end + +# ╔═╡ 45d75c36-5af8-4211-9432-99cabe1e1aeb +md"There are a countably infinite number of such flips, each independent of all the others. The outcome of each, once determined, will always have the same value." + +# ╔═╡ Cell order: +# ╠═ec0d1440-51ea-11ec-0aef-1f9c2da69ffd +# ╟─ce896412-97f8-4102-9ed5-bc74dfdb26d4 +# ╟─cd268cc7-e246-4254-94eb-4809e96b224b +# ╟─f68ca668-e238-4aa2-82be-c2320336e2e9 +# ╟─2cd7584f-5c78-4d3a-93dc-16da97146e98 +# ╟─cb28a5c4-a721-4a53-a179-adedf4f71237 +# ╟─0ce18f90-f2ef-490a-a7c4-40a6ccfa214a +# ╠═354e3b5a-4d1e-43ee-b1bb-e8620fba49e7 +# ╟─4c915901-e987-4552-b5f7-bc25ee6edeec +# ╠═5b5b728e-295a-4d64-ad3a-56fb2a35f3b6 +# ╠═0aeabe86-bd40-4adb-8771-83c2efc56c32 +# ╟─4902ba14-865b-4106-a3e3-6f67d13fd3b2 +# ╟─7d3c8448-090d-46b4-a6b6-ba20ff617be8 +# ╟─9dca3d31-8ace-4c64-996c-d9d9e87e6ee4 +# ╟─cc0c0d70-5197-4b2f-b32d-6ac52b8daf27 +# ╠═d607d2e0-84a5-4dfd-a281-f5c64cfe1e2d +# ╟─5a10bc0d-d676-4941-a1d5-41790ef255ec +# ╟─02ca238e-5a17-42dc-92a1-be975db0e7cd +# ╟─4ea27371-2e73-4a69-887c-b9f519fbf583 +# ╟─d70b97b5-af55-46f9-904e-309713603155 +# ╟─0360ccef-ccf4-4284-80a9-ee5ed40becc4 +# ╟─9998d466-eb74-476f-a768-d378bbe83f1b +# ╠═a0d64a28-e4f9-4003-b69d-7b27bd757c24 +# ╠═84acb184-1c92-4761-a44e-bd1503f8255d +# ╠═4e80ce71-6757-4908-8cd0-e382b11b70c3 +# ╟─5fd22c50-4c81-41b2-a959-fe3dec00a6fd +# ╠═8ac4cad4-eb4c-4e33-815c-e365668b3810 +# ╠═5fcf6c97-6f81-4be2-b27a-25b2abcabca1 +# ╠═1b4d9047-abb0-4fb7-ab72-0a4f790b1515 +# ╟─0fe48b01-e908-4e6c-8c4c-b68cf8c172dc +# ╠═0a2c3c83-8a67-4666-80c0-f580233dc019 +# ╟─f2a20f84-b2e6-4e6c-ab51-6e7ea045954e +# ╠═7d5587d1-c4b4-48f0-971c-677fbe268e73 +# ╠═ae0ad1df-ab2a-4704-a121-623e05f079da +# ╟─0ae343fa-bc62-48ac-a34e-d21028531530 +# ╠═3c73f032-eedf-4d99-8489-a98ccf4b8805 +# ╠═61f4d77b-eecf-4cca-ac01-944efe58d9bb +# ╟─2ad90265-8ef2-480f-81b0-7ed1a674011b +# ╠═9504162b-52e1-476d-8218-0afc2555e278 +# ╟─15920581-2258-42e1-ba73-da82b2baa7e0 +# ╠═3f04b226-a38a-4804-8691-59332bfc8728 +# ╟─26cff114-b994-4362-8902-20a46deb9955 +# ╠═db8d667c-5ad7-4deb-b020-13d645bedbf9 +# ╟─5444fd8d-8ff3-4b30-9942-067dca8a1126 +# ╠═09595cc9-b08a-4465-a3e0-5d8e280530a2 +# ╟─6aa46f74-b3e2-4d12-abd0-90759023ecc5 +# ╠═0974a6a9-859f-44a9-a17a-5ef90c789ce5 +# ╟─317cf40e-bafd-43f3-b855-9bfcf53c0f3a +# ╠═11c2d2b5-0c14-4b23-9282-083ac6f07f6f +# ╟─c697307c-9d49-43a7-a379-f383780a1248 +# ╟─277b383e-c909-4424-91f1-f0f00b3531b4 +# ╟─f58cd6ff-9023-4dc7-9213-2279f5aebf72 +# ╠═3c5e0f1d-0379-4c92-817d-4e6ef2d7ed8e +# ╠═b7d24774-2f2b-4da8-9257-6fe3a424a869 +# ╟─a54a2d2f-4c4b-46b1-aa7a-2ca5e6203067 +# ╠═5657d115-ebad-4731-b8e2-5d66da76f600 +# ╠═83f9117e-2c5b-47e8-a78f-3bd679ad95dc +# ╟─65e02cf5-bfd2-4d79-899c-57a64624dd71 +# ╠═65119d8b-a0d9-403f-9d42-ec6ef0ab3072 +# ╠═7fb8ded9-629a-4084-ba5b-779dbe251841 +# ╠═7ff75111-cdde-466f-8b85-572a0e8a68bd +# ╠═31f991a8-eb5e-413b-a3db-3058a6bde18d +# ╠═8c354058-4168-4591-9a16-778031ec1d3a +# ╟─15dacfed-9db5-4a3e-ba21-edbfcb3dc690 +# ╠═56304079-fc6c-474b-b257-9db330475786 +# ╠═4c343506-221d-4e8f-9398-725643bd74fc +# ╠═0d487cd0-e3d6-4623-98ea-a4dc649a0d9e +# ╟─7d668805-db8f-4d76-812f-d9d86f44668e +# ╠═7a7711ba-65ea-459e-be55-da5f3e36a990 +# ╠═500b46f9-f081-46d1-9fbf-5704c1068a75 +# ╠═83b2661d-a893-44a8-8138-13779356a7c0 +# ╟─deb917d9-f885-4b7f-a85e-f2fcfab91183 +# ╟─4ef4f0dc-eb00-4fd0-a951-7e7d508cab06 +# ╠═74534019-62ee-494f-8ece-ac2d096543d9 +# ╟─4c21551f-75c3-4e9d-ac9f-aed939481c2e +# ╠═17701d52-161b-447d-892f-3ca89d461ebd +# ╠═24a06c1c-29ac-45b3-b8fa-774ca2e4619e +# ╠═f5600317-7a50-4f16-9716-c4e3e24515bb +# ╠═f005e508-db7f-4d3d-997e-3bdbe0c4bb7e +# ╠═3dfc6973-f996-4020-b461-016b46f87659 +# ╠═47807da5-e1b6-49aa-849b-39d5cce05471 +# ╠═f755a265-1b88-47e2-97ee-5269964ff809 +# ╟─ceb6e5a8-8093-425e-b40d-9bd345c23e66 +# ╟─83aa6c42-a846-42d7-b9d0-c5b9e783c2cc +# ╟─2cf11ab5-0fdf-43da-8987-2bed91ef3f14 +# ╠═54890932-a472-4ad4-a904-bc847551bfcb +# ╟─1721f226-8d1d-4803-a445-925874e236c8 +# ╠═f2fd33e0-3451-44cb-9e69-8b627abf7729 +# ╟─a066a0a9-e28f-45ef-bfba-ef23eaf75f96 +# ╟─98da911f-1338-4651-9e20-aaeab6c81c50 +# ╟─27fe69b6-ba83-4b79-8f30-df5841650e23 +# ╟─10e3b2f2-68ec-4c19-b473-469a47815205 +# ╟─8283c98e-23eb-4a34-b4f2-14722a4afbe7 +# ╠═0add56e4-adba-448b-a6bc-8c17284bda01 +# ╟─547eeca0-202d-4b43-8fc8-7d81c054bd02 +# ╠═25276e86-a816-4d37-baf2-6761971a9090 +# ╠═1c260eff-636c-429d-992f-b7854f4398e1 +# ╠═d57d23a3-7626-4b23-b1df-994951f5a12b +# ╠═4a0255be-6b88-4f1b-80c0-eec1d70c0da6 +# ╟─4fc6e919-7026-4c13-88fe-bd7956e1bb6e +# ╟─099b62b4-3b0a-4f78-a1c0-2cb04cb4d35c +# ╟─fad672e1-3888-40dc-8358-b75a1b71c628 +# ╠═d744dba4-580b-4795-95c6-e4197c4217d6 +# ╠═ebdc9cec-32db-4770-9fc8-8400280a48cb +# ╟─21400744-aa27-4360-91ed-63f397d475ee +# ╟─548d888e-2dd7-4a3d-b43c-21955283a920 +# ╟─24263dd7-8700-479c-a49a-0a311571af7e +# ╠═4bc21863-2b27-4eeb-86e4-7a2e85db26e1 +# ╠═0f25507b-23d1-4cbf-8669-c90fab519fe9 +# ╟─f31df26e-0f92-4957-8569-05c10f4adec8 +# ╟─073f84a2-8cc8-4683-bff5-a2849806ecb7 +# ╟─bfd0556a-9363-4040-bcfa-bec0ce28ba4a +# ╠═7238ccd2-68c8-4839-bec2-de26dbe6a473 +# ╠═18438de3-24e6-4d21-a008-951bda316f46 +# ╠═cbe819fc-d2f3-49dd-bef2-55fef0e8210b +# ╠═82a6be03-71fe-48d7-a2fa-53427f951cd2 +# ╟─8c06cba6-e1bc-4dc0-b6c2-a2b625313d6c +# ╠═a9d291a1-ab41-4756-937b-ae44a44012e4 +# ╟─cb5cd097-1632-46ab-b311-ab89bc827034 +# ╠═17a5049b-68f4-4ef1-9abe-4a669a3dcdc5 +# ╠═c91c4ccf-253b-4507-86af-975986032f9f +# ╟─72c80751-7a95-4e2d-9415-83129c934bcc +# ╟─7c838e1b-9ff7-45eb-8e7b-656435671e4e +# ╟─434defef-1ec7-420b-8699-34be75cf08b2 +# ╠═ceca9345-4a5e-4766-bd54-ab4f2d4c0a6e +# ╠═b10cf079-1995-4af6-8ec0-f772d0e9d359 +# ╟─45d75c36-5af8-4211-9432-99cabe1e1aeb diff --git a/OmegaExamples/src/probmods/probmods_helper.jl b/OmegaExamples/src/probmods/probmods_helper.jl new file mode 100644 index 0000000..d73e1de --- /dev/null +++ b/OmegaExamples/src/probmods/probmods_helper.jl @@ -0,0 +1,12 @@ +# Helper functions for probmods +using UnicodePlots, Distributions, Omega, FreqTables + +export viz + +"To visualize the generated samples of a random variable" +viz(var::Vector{T} where {T<:Union{String,Char, Symbol}}) = + barplot(Dict(freqtable(var))) +viz(var::Vector{<:Real}) = histogram(var, symbols = ["■"]) +viz(var::Vector{Bool}) = viz(string.(var)) +viz(var::Vector{NamedTuple{U, V}}) where {U, V} = + barplot(Dict(freqtable(var)), ylabel = string(U[1], ", ", U[2]), xlabel = "Frequency") \ No newline at end of file