diff --git a/Manifest.toml b/Manifest.toml index 268b94479..544374801 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -34,9 +34,9 @@ version = "0.5.24" [[deps.AbstractMCMC]] deps = ["BangBang", "ConsoleProgressMonitor", "Dates", "Distributed", "FillArrays", "LogDensityProblems", "Logging", "LoggingExtras", "ProgressLogging", "Random", "StatsBase", "TerminalLoggers", "Transducers", "UUIDs"] -git-tree-sha1 = "93bda89bb8d4bd3fb111fc5d8f31c8751fcca72c" +git-tree-sha1 = "b08a913be28a195574d0f9e87b6372709f696e4e" uuid = "80f14c24-f653-4e6a-9b94-39d6b0f70001" -version = "5.11.0" +version = "5.13.0" [deps.AbstractMCMC.extensions] AbstractMCMCOnlineStatsExt = "OnlineStats" @@ -140,9 +140,9 @@ weakdeps = ["Libtask"] [[deps.AdvancedVI]] deps = ["ADTypes", "Accessors", "ChainRulesCore", "DiffResults", "DifferentiationInterface", "Distributions", "DocStringExtensions", "FillArrays", "Functors", "LinearAlgebra", "LogDensityProblems", "Optimisers", "ProgressMeter", "Random", "StatsBase"] -git-tree-sha1 = "a0803d1f1bdb46f051f8b580c639569cc8d09dd5" +git-tree-sha1 = "d69d7d9e1756fff9dd5d3fd26add46ee5ac62be4" uuid = "b5ca4192-6429-45e5-a2d9-87aec30a685c" -version = "0.6.1" +version = "0.6.2" weakdeps = ["Bijectors", "Enzyme", "Mooncake", "ReverseDiff"] [deps.AdvancedVI.extensions] @@ -284,9 +284,9 @@ version = "1.11.0" [[deps.BangBang]] deps = ["Accessors", "ConstructionBase", "InitialValues", "LinearAlgebra"] -git-tree-sha1 = "a49f9342fc60c2a2aaa4e0934f06755464fcf438" +git-tree-sha1 = "7edecc3b90af8373014393e98e8fcfbdf3b52543" uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.4.6" +version = "0.4.7" [deps.BangBang.extensions] BangBangChainRulesCoreExt = "ChainRulesCore" @@ -315,9 +315,9 @@ version = "0.1.1" [[deps.Bijectors]] deps = ["ArgCheck", "ChainRulesCore", "ChangesOfVariables", "Distributions", "DocStringExtensions", "Functors", "InverseFunctions", "IrrationalConstants", "LinearAlgebra", "LogExpFunctions", "MappedArrays", "Random", "Reexport", "Roots", "SparseArrays", "Statistics"] -git-tree-sha1 = "d4933f88f810df3362da9cbd3f1c86ed9e5ed09b" +git-tree-sha1 = "52f3f101c0c541145da25fba9805f3ef076f2d96" uuid = "76274a88-744f-5084-9051-94815aaf08c4" -version = "0.15.15" +version = "0.15.16" weakdeps = ["ChainRules", "DistributionsAD", "EnzymeCore", "ForwardDiff", "LazyArrays", "Mooncake", "ReverseDiff"] [deps.Bijectors.extensions] @@ -694,10 +694,10 @@ uuid = "b429d917-457f-4dbc-8f4c-0cc954292b1d" version = "0.4.0" [[deps.DiffEqBase]] -deps = ["ArrayInterface", "BracketingNonlinearSolve", "ConcreteStructs", "DocStringExtensions", "EnzymeCore", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"] -git-tree-sha1 = "0514bf55835444420ce81f8e32c5e2369d4af456" +deps = ["ArrayInterface", "BracketingNonlinearSolve", "ConcreteStructs", "DocStringExtensions", "FastBroadcast", "FastClosures", "FastPower", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "PrecompileTools", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SciMLStructures", "Setfield", "Static", "StaticArraysCore", "SymbolicIndexingInterface", "TruncatedStacktraces"] +git-tree-sha1 = "c4707e6374210edbad5d2e1be1bd0e38d8106203" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.199.0" +version = "6.200.0" [deps.DiffEqBase.extensions] DiffEqBaseCUDAExt = "CUDA" @@ -773,9 +773,9 @@ version = "7.17.0" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "44d9321761ed99e1d444b5081b3166d3259adcf0" +git-tree-sha1 = "5e6897d988addbfe7d9ad2ee467cc0c91001aae4" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.7.14" +version = "0.7.15" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" @@ -823,9 +823,9 @@ version = "0.7.14" [[deps.DispatchDoctor]] deps = ["MacroTools", "Preferences"] -git-tree-sha1 = "fc5e4798a96c4a7ffa2991bb5b372262578587a9" +git-tree-sha1 = "42cd00edaac86f941815fe557c1d01e11913e07c" uuid = "8d63f2c5-f18a-4cf2-ba9d-b3f60fc568c8" -version = "0.4.27" +version = "0.4.28" weakdeps = ["ChainRulesCore", "EnzymeCore"] [deps.DispatchDoctor.extensions] @@ -891,9 +891,9 @@ version = "3.6.0" [[deps.DynamicPPL]] deps = ["ADTypes", "AbstractMCMC", "AbstractPPL", "Accessors", "BangBang", "Bijectors", "Chairmarks", "Compat", "ConstructionBase", "DifferentiationInterface", "Distributions", "DocStringExtensions", "InteractiveUtils", "LinearAlgebra", "LogDensityProblems", "MacroTools", "OrderedCollections", "Printf", "Random", "Statistics", "Test"] -git-tree-sha1 = "ab44ce7a462be99e4a43c49213ae2e39c8c83693" +git-tree-sha1 = "2094be08e519dd8bca023f16643c0b1db300615f" uuid = "366bfd00-2699-11ea-058f-f148b4cae6d8" -version = "0.39.12" +version = "0.39.13" [deps.DynamicPPL.extensions] DynamicPPLChainRulesCoreExt = ["ChainRulesCore"] @@ -927,9 +927,9 @@ version = "1.0.6" [[deps.Enzyme]] deps = ["CEnum", "EnzymeCore", "Enzyme_jll", "GPUCompiler", "InteractiveUtils", "LLVM", "Libdl", "LinearAlgebra", "ObjectFile", "PrecompileTools", "Preferences", "Printf", "Random", "SparseArrays"] -git-tree-sha1 = "2e255d8a2944ae78ed0fa48ea6570bdc964073f4" +git-tree-sha1 = "ea65d3121f09b5f31102542db9445163b7c99182" uuid = "7da242da-08ed-463a-9acd-ee780be4f1d9" -version = "0.13.118" +version = "0.13.129" [deps.Enzyme.extensions] EnzymeBFloat16sExt = "BFloat16s" @@ -960,9 +960,9 @@ weakdeps = ["Adapt", "ChainRulesCore"] [[deps.Enzyme_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "97d6bfda1bd724fdf2930e66bd74a4b99b1cc822" +git-tree-sha1 = "fea21cfc452db42e3878aab62a76896e76d54d12" uuid = "7cc45869-7501-5eee-bdea-0790c847d4ef" -version = "0.0.238+0" +version = "0.0.249+0" [[deps.EpollShim_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1061,9 +1061,9 @@ uuid = "442a2c76-b920-505d-bb47-c5924d526838" version = "1.1.0" [[deps.FastPower]] -git-tree-sha1 = "1dd291358e0e3a31f77dbbb76ce7abbcca38d410" +git-tree-sha1 = "862831f78c7a48681a074ecc9aac09f2de563f71" uuid = "a4df4552-cc26-4903-aec0-212e50a0e84b" -version = "1.3.0" +version = "1.3.1" [deps.FastPower.extensions] FastPowerEnzymeExt = "Enzyme" @@ -1085,9 +1085,9 @@ version = "1.3.0" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "d60eb76f37d7e5a40cc2e7c36974d864b82dc802" +git-tree-sha1 = "6522cfb3b8fe97bec632252263057996cbd3de20" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.17.1" +version = "1.18.0" weakdeps = ["HTTP"] [deps.FileIO.extensions] @@ -1158,9 +1158,9 @@ version = "1.3.7" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "b2977f86ed76484de6f29d5b36f2fa686f085487" +git-tree-sha1 = "eef4c86803f47dcb61e9b8790ecaa96956fdd8ae" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "1.3.1" +version = "1.3.2" weakdeps = ["StaticArrays"] [deps.ForwardDiff.extensions] @@ -1214,9 +1214,9 @@ version = "3.4.1+0" [[deps.GLM]] deps = ["Distributions", "LinearAlgebra", "Printf", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns", "StatsModels"] -git-tree-sha1 = "c5432ee4f7817ec542fa7cda3d96745880903606" +git-tree-sha1 = "3bcb30438ee1655e3b9c42d97544de7addc9c589" uuid = "38e38edf-8417-5370-95a0-9cbb8c7f171a" -version = "1.9.2" +version = "1.9.3" [[deps.GPUArraysCore]] deps = ["Adapt"] @@ -1226,15 +1226,15 @@ version = "0.2.0" [[deps.GPUCompiler]] deps = ["ExprTools", "InteractiveUtils", "LLVM", "Libdl", "Logging", "PrecompileTools", "Preferences", "Scratch", "Serialization", "TOML", "Tracy", "UUIDs"] -git-tree-sha1 = "7237207d87760307c92c260565f706688229cf6e" +git-tree-sha1 = "966946d226e8b676ca6409454718accb18c34c54" uuid = "61eb1bfa-7361-4325-ad38-22787b887f55" -version = "1.8.1" +version = "1.8.2" [[deps.GR]] deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Qt6Wayland_jll", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "6949039c4db076a5967228bf9d7b6f32f2324328" +git-tree-sha1 = "ee0585b62671ce88e48d3409733230b401c9775c" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.20" +version = "0.73.22" [deps.GR.extensions] IJuliaExt = "IJulia" @@ -1244,9 +1244,9 @@ version = "0.73.20" [[deps.GR_jll]] deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "04a6eb1e57dc3a6992b5af5aa753a2f8d3a1028e" +git-tree-sha1 = "7dd7173f7129a1b6f84e0f03e0890cd1189b0659" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.20+0" +version = "0.73.22+0" [[deps.GenericSchur]] deps = ["LinearAlgebra", "Printf"] @@ -1471,9 +1471,9 @@ version = "0.2.4" [[deps.JumpProcesses]] deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "PoissonRandom", "Random", "RecursiveArrayTools", "Reexport", "SciMLBase", "Setfield", "StaticArrays", "SymbolicIndexingInterface"] -git-tree-sha1 = "0593944281222db3b3f3bc1cfe2c464a17f9eea1" +git-tree-sha1 = "c19bb0be5fe979b4476ab5531393b4fb0752ace5" uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5" -version = "9.21.0" +version = "9.21.1" weakdeps = ["Adapt", "FastBroadcast", "KernelAbstractions"] [deps.JumpProcesses.extensions] @@ -1523,9 +1523,9 @@ version = "4.0.1+0" [[deps.LLVM]] deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Unicode"] -git-tree-sha1 = "ce8614210409eaa54ed5968f4b50aa96da7ae543" +git-tree-sha1 = "69e4739502b7ab5176117e97e1664ed181c35036" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "9.4.4" +version = "9.4.6" [deps.LLVM.extensions] BFloat16sExt = "BFloat16s" @@ -1582,9 +1582,9 @@ version = "0.1.17" [[deps.LazyArrays]] deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "MacroTools", "SparseArrays"] -git-tree-sha1 = "70ebe3bcf87d6a1e7435ef5182c13a91161ba9b8" +git-tree-sha1 = "41d433e5854d7a67e8ab2b04962a713fcbcffcf1" uuid = "5078a376-72f3-5289-bfd5-ec5146d43c02" -version = "2.9.4" +version = "2.9.5" [deps.LazyArrays.extensions] LazyArraysBandedMatricesExt = "BandedMatrices" @@ -1716,9 +1716,9 @@ weakdeps = ["LineSearches"] [[deps.LineSearches]] deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Printf"] -git-tree-sha1 = "9ea3422d03222c6de679934d1c08f0a99405aa03" +git-tree-sha1 = "738bdcacfef25b3a9e4a39c28613717a6b23751e" uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.5.1" +version = "7.6.0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] @@ -1727,9 +1727,9 @@ version = "1.11.0" [[deps.LinearSolve]] deps = ["ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DocStringExtensions", "EnumX", "GPUArraysCore", "InteractiveUtils", "Krylov", "Libdl", "LinearAlgebra", "MKL_jll", "Markdown", "OpenBLAS_jll", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLLogging", "SciMLOperators", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "1fdeafa25801ec2e0caa88fbe0afd7c41d3d087a" +git-tree-sha1 = "7a1b73e0921e3278fce6a6cd80003c063ed937b4" uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "3.57.0" +version = "3.58.0" [deps.LinearSolve.extensions] LinearSolveAMDGPUExt = "AMDGPU" @@ -1750,6 +1750,7 @@ version = "3.57.0" LinearSolveKrylovKitExt = "KrylovKit" LinearSolveMetalExt = "Metal" LinearSolveMooncakeExt = "Mooncake" + LinearSolvePETScExt = ["PETSc", "SparseArrays"] LinearSolvePardisoExt = ["Pardiso", "SparseArrays"] LinearSolveRecursiveFactorizationExt = "RecursiveFactorization" LinearSolveSparseArraysExt = "SparseArrays" @@ -1774,6 +1775,7 @@ version = "3.57.0" LAPACK_jll = "51474c39-65e3-53ba-86ba-03b1b862ec14" Metal = "dde4c033-4e86-420c-a63e-0dd931031962" Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" + PETSc = "ace2c81b-2b5f-4b1e-a30d-d662738edfe0" Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" RecursiveFactorization = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" @@ -1838,9 +1840,9 @@ version = "1.2.0" [[deps.Lux]] deps = ["ADTypes", "Adapt", "ArrayInterface", "ChainRulesCore", "ConcreteStructs", "DiffResults", "DispatchDoctor", "EnzymeCore", "FastClosures", "ForwardDiff", "Functors", "GPUArraysCore", "LinearAlgebra", "LuxCore", "LuxLib", "MLDataDevices", "MacroTools", "Markdown", "NNlib", "Optimisers", "PrecompileTools", "Preferences", "Random", "ReactantCore", "Reexport", "SciMLPublic", "Setfield", "Static", "StaticArraysCore", "Statistics", "UUIDs", "WeightInitializers"] -git-tree-sha1 = "e5ee34d1731d3b343dd3babfcdef33777a946bdd" +git-tree-sha1 = "9d618572621b53dbb7ab47ee97413b2a11e3f1ea" uuid = "b2108857-7c20-44ae-9111-449ecde12c47" -version = "1.29.6" +version = "1.31.1" [deps.Lux.extensions] ComponentArraysExt = "ComponentArrays" @@ -1908,9 +1910,9 @@ version = "1.5.3" [[deps.LuxLib]] deps = ["ArrayInterface", "CPUSummary", "ChainRulesCore", "DispatchDoctor", "EnzymeCore", "FastClosures", "Functors", "KernelAbstractions", "LinearAlgebra", "LuxCore", "MLDataDevices", "Markdown", "NNlib", "Preferences", "Random", "Reexport", "SciMLPublic", "Static", "StaticArraysCore", "Statistics", "UUIDs"] -git-tree-sha1 = "bc4984518909e9c0bf78cc8bb837cb63534ab82c" +git-tree-sha1 = "d93ed9031e8609a63dcd7f158f8565f93a0ab61e" uuid = "82251201-b29d-42c6-8e01-566dec8acb11" -version = "1.15.2" +version = "1.15.4" [deps.LuxLib.extensions] AppleAccelerateExt = "AppleAccelerate" @@ -1922,6 +1924,7 @@ version = "1.15.2" LoopVectorizationExt = ["LoopVectorization", "Polyester"] MKLExt = "MKL" OctavianExt = ["Octavian", "LoopVectorization"] + OneHotArraysExt = ["OneHotArrays"] ReactantExt = ["Reactant", "ReactantCore"] ReverseDiffExt = "ReverseDiff" SLEEFPiratesExt = "SLEEFPirates" @@ -1939,6 +1942,7 @@ version = "1.15.2" LoopVectorization = "bdcacae8-1622-11e9-2a5c-532679323890" MKL = "33e6dc65-8f57-5167-99aa-e5a354878fb2" Octavian = "6fd5a793-0b7e-452c-907f-f8bfe9c57db4" + OneHotArrays = "0b1bfda6-eb8a-41d2-88d8-f5af5cad476f" Polyester = "f517fe37-dbe3-4b94-8317-1923a5111588" Reactant = "3c362404-f566-11ee-1572-e11a4b42c853" ReactantCore = "a3311ec8-5e00-46d5-b541-4f83e724a433" @@ -1973,9 +1977,9 @@ version = "1.0.0" [[deps.MLDataDevices]] deps = ["Adapt", "Functors", "Preferences", "Random", "SciMLPublic"] -git-tree-sha1 = "117dd3d538d0ca82979ebcf15d9ad8bf0431c206" +git-tree-sha1 = "d8ab79840174b85db64214d4140d4be0a9270210" uuid = "7e8f7934-dd98-4c1a-8fe8-92b47a384d40" -version = "1.17.2" +version = "1.17.4" [deps.MLDataDevices.extensions] AMDGPUExt = "AMDGPU" @@ -2194,10 +2198,10 @@ uuid = "6f286f6a-111f-5878-ab1e-185364afe411" version = "0.10.3" [[deps.NLSolversBase]] -deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "25a6638571a902ecfb1ae2a18fc1575f86b1d4df" +deps = ["ADTypes", "DifferentiationInterface", "FiniteDiff", "LinearAlgebra"] +git-tree-sha1 = "b3f76b463c7998473062992b246045e6961a074e" uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.10.0" +version = "8.0.0" [[deps.NLopt]] deps = ["CEnum", "NLopt_jll"] @@ -2268,9 +2272,9 @@ version = "1.0.0" [[deps.NearestNeighbors]] deps = ["AbstractTrees", "Distances", "StaticArrays"] -git-tree-sha1 = "2949f294f82b5ad7192fd544a988a1e785438ee2" +git-tree-sha1 = "e2c3bba08dd6dedfe17a17889131b885b8c082f0" uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.26" +version = "0.4.27" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" @@ -2278,9 +2282,9 @@ version = "1.2.0" [[deps.NonlinearSolve]] deps = ["ADTypes", "ArrayInterface", "BracketingNonlinearSolve", "CommonSolve", "ConcreteStructs", "DifferentiationInterface", "FastClosures", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "NonlinearSolveBase", "NonlinearSolveFirstOrder", "NonlinearSolveQuasiNewton", "NonlinearSolveSpectralMethods", "PrecompileTools", "Preferences", "Reexport", "SciMLBase", "SciMLLogging", "SimpleNonlinearSolve", "StaticArraysCore", "SymbolicIndexingInterface"] -git-tree-sha1 = "5db62e7c18af752a7a5260ed7576e7429ca87be4" +git-tree-sha1 = "da41d5cd90c1118f5a8914392cf561263a1d09cb" uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "4.14.0" +version = "4.15.0" [deps.NonlinearSolve.extensions] NonlinearSolveFastLevenbergMarquardtExt = "FastLevenbergMarquardt" @@ -2311,9 +2315,9 @@ version = "4.14.0" [[deps.NonlinearSolveBase]] deps = ["ADTypes", "Adapt", "ArrayInterface", "CommonSolve", "Compat", "ConcreteStructs", "DifferentiationInterface", "EnzymeCore", "FastClosures", "LinearAlgebra", "Markdown", "MaybeInplace", "Preferences", "Printf", "RecursiveArrayTools", "SciMLBase", "SciMLJacobianOperators", "SciMLLogging", "SciMLOperators", "SciMLStructures", "Setfield", "StaticArraysCore", "SymbolicIndexingInterface", "TimerOutputs"] -git-tree-sha1 = "3e17fdeea0b444b233e9c8265c3bc4f43a0a2e03" +git-tree-sha1 = "9323e063ce69851b28e5c96539b2e2024f9a7e4c" uuid = "be0214bd-f91f-a760-ac4e-3421ce2b2da0" -version = "2.11.0" +version = "2.11.2" weakdeps = ["BandedMatrices", "ChainRulesCore", "Enzyme", "ForwardDiff", "LineSearch", "LinearSolve", "Mooncake", "ReverseDiff", "SparseArrays", "SparseMatrixColorings", "Tracker"] [deps.NonlinearSolveBase.extensions] @@ -2331,9 +2335,9 @@ weakdeps = ["BandedMatrices", "ChainRulesCore", "Enzyme", "ForwardDiff", "LineSe [[deps.NonlinearSolveFirstOrder]] deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConcreteStructs", "FiniteDiff", "ForwardDiff", "LineSearch", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLJacobianOperators", "Setfield", "StaticArraysCore"] -git-tree-sha1 = "bd6bb56e107fe9bea276982a03b8ed13332583b4" +git-tree-sha1 = "df31d105d8e7254447256a44606f2a7e98b61aba" uuid = "5959db7a-ea39-4486-b5fe-2dd0bf03d60d" -version = "1.11.0" +version = "1.11.1" [[deps.NonlinearSolveQuasiNewton]] deps = ["ArrayInterface", "CommonSolve", "ConcreteStructs", "LinearAlgebra", "LinearSolve", "MaybeInplace", "NonlinearSolveBase", "PrecompileTools", "Reexport", "SciMLBase", "SciMLOperators", "StaticArraysCore"] @@ -2405,9 +2409,9 @@ version = "1.6.1" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f19301ae653233bc88b1810ae908194f07f8db9d" +git-tree-sha1 = "c9cbeda6aceffc52d8a0017e71db27c7a7c0beaf" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.5.4+0" +version = "3.5.5+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] @@ -2416,10 +2420,10 @@ uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" version = "0.5.6+0" [[deps.Optim]] -deps = ["Compat", "EnumX", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "48968edaf014f67e58fe4c8a4ce72d392aed3294" +deps = ["ADTypes", "EnumX", "FillArrays", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "PositiveFactorizations", "Printf", "SparseArrays", "Statistics"] +git-tree-sha1 = "e4f98846b70ef55e111ac8c40add135256c0cc47" uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.13.3" +version = "2.0.0" [deps.Optim.extensions] OptimMOIExt = "MathOptInterface" @@ -2482,16 +2486,16 @@ uuid = "4e6fcdb7-1186-4e1f-a706-475e75c168bb" version = "0.3.8" [[deps.OptimizationOptimJL]] -deps = ["Optim", "OptimizationBase", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays"] -git-tree-sha1 = "ba8f23a14d861a303e829afaf67a7b3f75da945f" +deps = ["Optim", "OptimizationBase", "Reexport", "SciMLBase", "SparseArrays"] +git-tree-sha1 = "dffc6cc3dbe32eb370e297e332153198aa4a201c" uuid = "36348300-93cb-4f02-beb5-3c3902f8871e" -version = "0.4.8" +version = "0.4.9" [[deps.Opus_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "39a11854f0cba27aa41efaedf43c77c5daa6be51" +git-tree-sha1 = "e2bb57a313a74b8104064b7efd01406c0a50d2ff" uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.6.0+0" +version = "1.6.1+0" [[deps.OrderedCollections]] git-tree-sha1 = "05868e21324cede2207c6f0f466b4bfef6d5e7ee" @@ -2751,9 +2755,9 @@ version = "1.4.4" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "Unzip"] -git-tree-sha1 = "063ef757a1e0e15af77bbe92be92da672793fd4e" +git-tree-sha1 = "1cc8ad0762e59e713ee3ef28f9b78b2c9f4ca078" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.41.4" +version = "1.41.5" [deps.Plots.extensions] FileIOExt = "FileIO" @@ -2971,9 +2975,9 @@ version = "0.6.12" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "LinearAlgebra", "PrecompileTools", "RecipesBase", "StaticArraysCore", "SymbolicIndexingInterface"] -git-tree-sha1 = "d8fbab1e8a272cc8e73fc24515075e48e6f77034" +git-tree-sha1 = "81750fa442cc5cb3ab1ba89b1cdf8eda543e6905" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "3.45.1" +version = "3.47.0" [deps.RecursiveArrayTools.extensions] RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" @@ -3068,9 +3072,9 @@ version = "2.2.10" [[deps.RuntimeGeneratedFunctions]] deps = ["ExprTools", "SHA", "Serialization"] -git-tree-sha1 = "2f609ec2295c452685d3142bc4df202686e555d2" +git-tree-sha1 = "7257165d5477fd1025f7cb656019dcb6b0512c38" uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" -version = "0.5.16" +version = "0.5.17" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -3089,9 +3093,9 @@ version = "0.6.1" [[deps.SciMLBase]] deps = ["ADTypes", "Accessors", "Adapt", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "Moshi", "PreallocationTools", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLLogging", "SciMLOperators", "SciMLPublic", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface"] -git-tree-sha1 = "9923adc7defeba6a52a99eb493ec317ac6c65942" +git-tree-sha1 = "1b007ef25d4c18da29f956c2cad0a45f1c98f0f3" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "2.134.0" +version = "2.136.0" [deps.SciMLBase.extensions] SciMLBaseChainRulesCoreExt = "ChainRulesCore" @@ -3145,10 +3149,10 @@ uuid = "a6db7da4-7206-11f0-1eab-35f2a5dbe1d1" version = "1.8.0" [[deps.SciMLOperators]] -deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools"] -git-tree-sha1 = "d1d14b15bbebf48dc80e8a7cfe640e2d835e22ea" +deps = ["Accessors", "ArrayInterface", "DocStringExtensions", "LinearAlgebra"] +git-tree-sha1 = "794c760e6aafe9f40dcd7dd30526ea33f0adc8b7" uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "1.14.1" +version = "1.15.1" weakdeps = ["SparseArrays", "StaticArraysCore"] [deps.SciMLOperators.extensions] @@ -3684,9 +3688,9 @@ version = "1.6.0" [[deps.Turing]] deps = ["ADTypes", "AbstractMCMC", "AbstractPPL", "Accessors", "AdvancedHMC", "AdvancedMH", "AdvancedPS", "AdvancedVI", "BangBang", "Bijectors", "Compat", "DataStructures", "Distributions", "DistributionsAD", "DocStringExtensions", "DynamicPPL", "EllipticalSliceSampling", "ForwardDiff", "Libtask", "LinearAlgebra", "LogDensityProblems", "MCMCChains", "NamedArrays", "Optimization", "OptimizationOptimJL", "OrderedCollections", "Printf", "Random", "Reexport", "SciMLBase", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "60cf1c55af3215fcca2b1d6cd2e09f5ea63056a5" +git-tree-sha1 = "923ba6ce1ab6b3d95f5efe1daad92369553aadfe" uuid = "fce5fe82-541a-59a6-adf8-730c64b5f9a0" -version = "0.42.4" +version = "0.42.8" weakdeps = ["DynamicHMC"] [deps.Turing.extensions] diff --git a/core-functionality/index.qmd b/core-functionality/index.qmd index 0f4ae7f8d..13e8e3f65 100755 --- a/core-functionality/index.qmd +++ b/core-functionality/index.qmd @@ -540,19 +540,17 @@ For more details of compositional sampling in Turing.jl, please see [the corresp ### Working with `filldist` and `arraydist` -Turing provides `filldist(dist::Distribution, n::Int)` and `arraydist(dists::AbstractVector{<:Distribution})` as a simplified interface to construct product distributions, e.g., to model a set of variables that share the same structure but vary by group. - -#### Constructing product distributions with filldist +Turing.jl provides convenience wrappers `filldist(dist::Distribution, n::Int)` and `arraydist(dists::AbstractVector{<:Distribution})` to construct product distributions, e.g., to model a set of variables that share the same structure but vary by group. The function `filldist` provides a general interface to construct product distributions over distributions of the same type and parameterisation. -Note that, in contrast to the product distribution interface provided by Distributions.jl (`Product`), `filldist` supports product distributions over univariate or multivariate distributions. -Example usage: +In general, `filldist(dist, sz1, sz2, ...)` constructs a product distribution over an array of size `(sz1, sz2, ...)`, where each element is distributed according to `dist`. +However, `filldist` also uses FillArrays.jl to provide an efficient representation of the product distribution. ```{julia} @model function demo(x, g) k = length(unique(g)) - a ~ filldist(Exponential(), k) # = Product(fill(Exponential(), k)) + a ~ filldist(Exponential(), k) mu = a[g] for i in eachindex(x) x[i] ~ Normal(mu[i]) @@ -561,12 +559,7 @@ Example usage: end ``` -#### Constructing product distributions with `arraydist` - -The function `arraydist` provides a general interface to construct product distributions over distributions of varying type and parameterisation. -Note that in contrast to the product distribution interface provided by Distributions.jl (`Product`), `arraydist` supports product distributions over univariate or multivariate distributions. - -Example usage: +`arraydist` is completely semantically equivalent to [`Distributions.product_distribution`](https://juliastats.org/Distributions.jl/stable/product/), although may have slightly improved performance in some cases. ```{julia} @model function demo(x, g) @@ -582,14 +575,17 @@ end ### Working with MCMCChains.jl -Turing.jl wraps its samples using `MCMCChains.Chain` so that all the functions working for `MCMCChains.Chain` can be re-used in Turing.jl. Two typical functions are `MCMCChains.describe` and `MCMCChains.plot`, which can be used as follows for an obtained chain `chn`. For more information on `MCMCChains`, please see the [GitHub repository](https://github.com/TuringLang/MCMCChains.jl). +Turing.jl wraps its samples using `MCMCChains.Chains` so that all the functions working for `MCMCChains.Chain` can be re-used in Turing.jl. +Two typical functions are `MCMCChains.describe` and `MCMCChains.plot`, which can be used as follows for an obtained chain `chn`. +For more information on `MCMCChains`, please see the [GitHub repository](https://github.com/TuringLang/MCMCChains.jl). ```{julia} describe(chn) # Lists statistics of the samples. plot(chn) # Plots statistics of the samples. ``` -There are numerous functions in addition to `describe` and `plot` in the `MCMCChains` package, such as those used in convergence diagnostics. For more information on the package, please see the [GitHub repository](https://github.com/TuringLang/MCMCChains.jl). +There are numerous functions in addition to `describe` and `plot` in the `MCMCChains` package, such as those used in convergence diagnostics. +For more information on the package, please see the [GitHub repository](https://github.com/TuringLang/MCMCChains.jl). ### Changing Default Settings @@ -606,15 +602,12 @@ For more information on Turing's automatic differentiation backend, please see t #### Progress Logging -`Turing.jl` uses ProgressLogging.jl to log the sampling progress. Progress -logging is enabled as default but might slow down inference. It can be turned on -or off by setting the keyword argument `progress` of `sample` to `true` or `false`. +`Turing.jl` uses ProgressLogging.jl to log the sampling progress. +Progress logging is enabled as default but might slow down inference. +It can be turned on or off by setting the keyword argument `progress` of `sample`; see the [Sampling Options]{{}} page for more details. Moreover, you can enable or disable progress logging globally by calling `setprogress!(true)` or `setprogress!(false)`, respectively. -Turing uses heuristics to select an appropriate visualisation backend. If you -use Jupyter notebooks, the default backend is -[ConsoleProgressMonitor.jl](https://github.com/tkf/ConsoleProgressMonitor.jl). -In all other cases, progress logs are displayed with -[TerminalLoggers.jl](https://github.com/c42f/TerminalLoggers.jl). Alternatively, -if you provide a custom visualisation backend, Turing uses it instead of the -default backend. +Turing uses heuristics to select an appropriate visualisation backend. +If you use Jupyter notebooks, the default backend is [ConsoleProgressMonitor.jl](https://github.com/tkf/ConsoleProgressMonitor.jl). +In all other cases, progress logs are displayed with [TerminalLoggers.jl](https://github.com/c42f/TerminalLoggers.jl). +Alternatively, if you provide a custom visualisation backend, Turing uses it instead of the default backend. diff --git a/usage/mode-estimation/index.qmd b/usage/mode-estimation/index.qmd index 06a1b057e..cbc64530a 100755 --- a/usage/mode-estimation/index.qmd +++ b/usage/mode-estimation/index.qmd @@ -19,22 +19,17 @@ To demonstrate mode estimation, let us load Turing and declare a model: ```{julia} using Turing -@model function gdemo(x) - s² ~ InverseGamma(2, 3) - m ~ Normal(0, sqrt(s²)) - - for i in eachindex(x) - x[i] ~ Normal(m, sqrt(s²)) - end +@model function normal_model(y) + x ~ Normal() + y ~ Normal(x) + return nothing end ``` Once the model is defined, we can construct a model instance as we normally would: ```{julia} -# Instantiate the gdemo model with our data. -data = [1.5, 2.0] -model = gdemo(data) +model = normal_model(2.0) ``` Finding the maximum a posteriori or maximum likelihood parameters is as simple as @@ -47,16 +42,19 @@ mle_estimate = maximum_likelihood(model) map_estimate = maximum_a_posteriori(model) ``` -The estimates are returned as instances of the `ModeResult` type. It has the fields `values` for the parameter values found and `lp` for the log probability at the optimum, as well as `f` for the objective function and `optim_result` for more detailed results of the optimisation procedure. +The estimates are returned as instances of the `ModeResult` type. +It has the fields `params` (which stores a mapping of `VarName`s to the parameter values found) and `lp` for the log probability at the optimum. +For mode information, please see the docstring of `ModeResult`. ```{julia} -@show mle_estimate.values +@show mle_estimate.params @show mle_estimate.lp; ``` ## Controlling the optimisation process -Under the hood `maximum_likelihood` and `maximum_a_posteriori` use the [Optimisation.jl](https://github.com/SciML/Optimisation.jl) package, which provides a unified interface to many other optimisation packages. By default Turing typically uses the [LBFGS](https://en.wikipedia.org/wiki/Limited-memory_BFGS) method from [Optim.jl](https://github.com/JuliaNLSolvers/Optim.jl) to find the mode estimate, but we can easily change that: +Under the hood `maximum_likelihood` and `maximum_a_posteriori` use the [Optimisation.jl](https://github.com/SciML/Optimisation.jl) package, which provides a unified interface to many other optimisation packages. +By default Turing uses the [LBFGS](https://en.wikipedia.org/wiki/Limited-memory_BFGS) method from [Optim.jl](https://github.com/JuliaNLSolvers/Optim.jl) to find the mode estimate, but we can easily change that: ```{julia} using OptimizationOptimJL: NelderMead @@ -68,31 +66,31 @@ using OptimizationNLopt: NLopt.LD_TNEWTON_PRECOND_RESTART The above are just two examples, Optimisation.jl supports [many more](https://docs.sciml.ai/Optimisation/stable/). -We can also help the optimisation by giving it a starting point we know is close to the final solution, or by specifying an automatic differentiation method +We can also help the optimisation by giving it a starting point we know is close to the final solution (`initial_params`), or by specifying an automatic differentiation method (`adtype`). ```{julia} +using OptimizationOptimJL: LBFGS import Mooncake -maximum_likelihood( - model, NelderMead(); initial_params=[0.1, 2], adtype=AutoMooncake() -) +maximum_likelihood(model, LBFGS(); initial_params=[0.1], adtype=AutoMooncake()) ``` When providing values to arguments like `initial_params` the parameters are typically specified in the order in which they appear in the code of the model, so in this case first `s²` then `m`. More precisely it's the order returned by `Turing.Inference.getparams(model, DynamicPPL.VarInfo(model))`. ::: {.callout-note} -## Initialisation strategies and consistency with MCMC sampling +## Upcoming changes to the optimisation API + +In Turing v0.43, the `initial_params` argument for optimisation will be changed to be a `DynamicPPL.AbstractInitStrategy` as described in [the sampling options page]({{< meta usage-sampling-options >}}#specifying-initial-parameters)). -Since Turing v0.41, for MCMC sampling, the `initial_params` argument must be a `DynamicPPL.AbstractInitStrategy` as described in [the sampling options page]({{< meta usage-sampling-options >}}#specifying-initial-parameters)). -The optimisation interface has not yet been updated to use this; thus, initial parameters are still specified as Vectors. -We expect that this will be changed in the near future. +Furthermore, constraints must be specified as (ideally) a [`VarNamedTuple`]({{< meta usage-varnamedtuple >}}). +All constraints specified will be interpreted as being in untransformed space. ::: We can also do constrained optimisation, by providing either intervals within which the parameters must stay, or constraint functions that they need to respect. -For instance, here's how one can find the MLE with the constraint that the variance must be less than 0.01 and the mean must be between -1 and 1.: +For instance, here's how one can find the MLE with the constraint that `x` must be between `0.0` and `0.2`: ```{julia} -maximum_likelihood(model; lb=[0.0, -1.0], ub=[0.01, 1.0]) +maximum_likelihood(model; lb=[0.0], ub=[0.2]) ``` The arguments for lower (`lb`) and upper (`ub`) bounds follow the arguments of `Optimisation.OptimizationProblem`, as do other parameters for providing [constraints](https://docs.sciml.ai/Optimisation/stable/tutorials/constraints/), such as `cons`.