diff --git a/.github/workflows/julia-tests.yaml b/.github/workflows/julia-tests.yaml index 410ecd4..2651026 100644 --- a/.github/workflows/julia-tests.yaml +++ b/.github/workflows/julia-tests.yaml @@ -15,7 +15,8 @@ jobs: - uses: actions/checkout@v2 - uses: julia-actions/setup-julia@v1 with: - version: '1.9.0' + version: '1.9' + - uses: julia-actions/cache@v1 - uses: julia-actions/julia-buildpkg@v1 - uses: julia-actions/julia-runtest@v1 - uses: julia-actions/julia-processcoverage@v1 diff --git a/.gitignore b/.gitignore index 42afd83..f8ddecf 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ api.env ### Julia ### test/logs/ +Manifest.toml ### Project ### # Config diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md deleted file mode 100644 index de4a5b7..0000000 --- a/ARCHITECTURE.md +++ /dev/null @@ -1,20 +0,0 @@ -# Architecture - -The Simulation Service (soon to be renamed SciML Service) is a REST API that wraps -specific SciML tasks. The service should match the spec [here](https://github.com/DARPA-ASKEM/simulation-api-spec) -since PyCIEMSS Service and SciML Service ideally are hot swappable. - -The API creates a job using the JobSchedulers.jl library and updates the Terarium Data Service (TDS) with the status -of the job throughout its execution. Once the job completes, the results are written to S3. With most of the output artifacts, we do little postprocessing -after completing the SciML portion. - -## Layout - -Source is split into 5 major components: -- `SimulationService.jl`: Contains the start and stop functions for the service -- `Settings.jl`: Enumerates the environment variables used by the project -- `service`: Job scheduling, pre/post-processing, endpoints, etc. Handled by TA4. -- `contracts`: Location where TA3 and TA4 agree on an interface between the SciML Operations and the rest of the service. - - `Available.jl`: The operations available to the API are here. Generally, the operations just wrap around by the exposed SciML - operations. -- `operations`: JuliaHub primarily focuses here. \ No newline at end of file diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index 7175674..0000000 --- a/Manifest.toml +++ /dev/null @@ -1,3155 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.9.2" -manifest_format = "2.0" -project_hash = "767c093e67fdab416f979f052b06bf048b75f0ac" - -[[deps.ACSets]] -deps = ["CompTime", "JSON", "MLStyle", "OrderedCollections", "Pkg", "PrettyTables", "Reexport", "StaticArrays", "StructEquality", "Tables"] -git-tree-sha1 = "935a09f5a40d199ac9c7fb55357e2164b1ef8671" -uuid = "227ef7b5-1206-438b-ac65-934d6da304b8" -version = "0.2.3" - -[[deps.ADTypes]] -git-tree-sha1 = "e58c18d2312749847a74f5be80bb0fa53da102bd" -uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "0.1.5" - -[[deps.AMQPClient]] -deps = ["Logging", "MbedTLS", "Sockets"] -git-tree-sha1 = "508457ed7a2afb432590247dc363fffc51f242fc" -uuid = "79c8b4cd-a41a-55fa-907c-fab5288e1383" -version = "0.5.1" - -[[deps.ASL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6252039f98492252f9e47c312c8ffda0e3b9e78d" -uuid = "ae81ac8f-d209-56e5-92de-9978fef736f9" -version = "0.1.3+0" - -[[deps.AbstractAlgebra]] -deps = ["GroupsCore", "InteractiveUtils", "LinearAlgebra", "MacroTools", "Preferences", "Random", "RandomExtensions", "SparseArrays", "Test"] -git-tree-sha1 = "1bd8a536c949eb3de9b58042d57790ded6b70fa6" -uuid = "c3fe647b-3220-5bb0-a1ea-a7954cac585d" -version = "0.30.9" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "cad4c758c0038eea30394b1b671526921ca85b21" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.4.0" -weakdeps = ["ChainRulesCore"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - -[[deps.AbstractMCMC]] -deps = ["BangBang", "ConsoleProgressMonitor", "Distributed", "LogDensityProblems", "Logging", "LoggingExtras", "ProgressLogging", "Random", "StatsBase", "TerminalLoggers", "Transducers"] -git-tree-sha1 = "87e63dcb990029346b091b170252f3c416568afc" -uuid = "80f14c24-f653-4e6a-9b94-39d6b0f70001" -version = "4.4.2" - -[[deps.AbstractPPL]] -deps = ["AbstractMCMC", "DensityInterface", "Random", "Setfield", "SparseArrays"] -git-tree-sha1 = "33ea6c6837332395dbf3ba336f273c9f7fcf4db9" -uuid = "7a57a42e-76ec-4ea3-a279-07e840d6d9cf" -version = "0.5.4" - -[[deps.AbstractTrees]] -git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.4" - -[[deps.Accessors]] -deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Requires", "Test"] -git-tree-sha1 = "954634616d5846d8e216df1298be2298d55280b2" -uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" -version = "0.1.32" - - [deps.Accessors.extensions] - AccessorsAxisKeysExt = "AxisKeys" - AccessorsIntervalSetsExt = "IntervalSets" - AccessorsStaticArraysExt = "StaticArrays" - AccessorsStructArraysExt = "StructArrays" - - [deps.Accessors.weakdeps] - AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "76289dc51920fdc6e0013c872ba9551d54961c24" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.6.2" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AdvancedHMC]] -deps = ["AbstractMCMC", "ArgCheck", "DocStringExtensions", "InplaceOps", "LinearAlgebra", "LogDensityProblems", "LogDensityProblemsAD", "ProgressMeter", "Random", "Requires", "Setfield", "SimpleUnPack", "Statistics", "StatsBase", "StatsFuns"] -git-tree-sha1 = "3bf24030e85b1d6d298e4f483f6aeff6f38462db" -uuid = "0bf59076-c3b1-5ca4-86bd-e02cd72cde3d" -version = "0.4.6" - - [deps.AdvancedHMC.extensions] - AdvancedHMCCUDAExt = "CUDA" - AdvancedHMCMCMCChainsExt = "MCMCChains" - AdvancedHMCOrdinaryDiffEqExt = "OrdinaryDiffEq" - - [deps.AdvancedHMC.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - MCMCChains = "c7f686f2-ff18-58e9-bc7b-31028e88f75d" - OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" - -[[deps.AdvancedMH]] -deps = ["AbstractMCMC", "Distributions", "LogDensityProblems", "Random", "Requires"] -git-tree-sha1 = "165af834eee68d0a96c58daa950ddf0b3f45f608" -uuid = "5b7e9947-ddc0-4b3f-9b55-0d8042f74170" -version = "0.7.4" -weakdeps = ["DiffResults", "ForwardDiff", "MCMCChains", "StructArrays"] - - [deps.AdvancedMH.extensions] - AdvancedMHForwardDiffExt = ["DiffResults", "ForwardDiff"] - AdvancedMHMCMCChainsExt = "MCMCChains" - AdvancedMHStructArraysExt = "StructArrays" - -[[deps.AdvancedPS]] -deps = ["AbstractMCMC", "Distributions", "Libtask", "Random", "Random123", "StatsFuns"] -git-tree-sha1 = "4d73400b3583147b1b639794696c78202a226584" -uuid = "576499cb-2369-40b2-a588-c64705576edc" -version = "0.4.3" - -[[deps.AdvancedVI]] -deps = ["Bijectors", "Distributions", "DistributionsAD", "DocStringExtensions", "ForwardDiff", "LinearAlgebra", "ProgressMeter", "Random", "Requires", "StatsBase", "StatsFuns", "Tracker"] -git-tree-sha1 = "67fcc7d46c26250e89fc62798fbe07b5ee264c6f" -uuid = "b5ca4192-6429-45e5-a2d9-87aec30a685c" -version = "0.1.6" - -[[deps.AlgebraicPetri]] -deps = ["Catlab", "GeneralizedGenerated", "LabelledArrays"] -git-tree-sha1 = "d798c838e065927a09edf431791d34fd5a709023" -uuid = "4f99eebe-17bf-4e98-b6a1-2c4f205a959b" -version = "0.9.0" - - [deps.AlgebraicPetri.extensions] - AlgebraicPetriCatalystExt = "Catalyst" - AlgebraicPetriModelingToolkitExt = "ModelingToolkit" - AlgebraicPetriOrdinaryDiffEqExt = "OrdinaryDiffEq" - - [deps.AlgebraicPetri.weakdeps] - Catalyst = "479239e8-5488-4da2-87a7-35f2df7eef83" - ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" - OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" - -[[deps.AlphaStableDistributions]] -deps = ["Distributions", "FileIO", "Interpolations", "JLD2", "LinearAlgebra", "Random", "SpecialFunctions", "StaticArrays", "Statistics", "StatsBase", "ToeplitzMatrices"] -git-tree-sha1 = "ad5789d4d1a7e38a9fb1e5e02369eeb799833b2e" -uuid = "f20549b4-2d50-407f-863c-cdd202ba59a3" -version = "1.1.6" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.ArnoldiMethod]] -deps = ["LinearAlgebra", "Random", "StaticArrays"] -git-tree-sha1 = "62e51b39331de8911e4a7ff6f5aaf38a5f4cc0ae" -uuid = "ec485272-7323-5ecc-a04f-4719b315124d" -version = "0.2.0" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "f83ec24f76d4c8f525099b2ac475fc098138ec31" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.4.11" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ArrayInterfaceCore]] -deps = ["LinearAlgebra", "SnoopPrecompile", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "e5f08b5689b1aad068e01751889f2f615c7db36d" -uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2" -version = "0.1.29" - -[[deps.ArrayLayouts]] -deps = ["FillArrays", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "9e5ad0f651c1be8a355e4d327e9cb3bc135d1b73" -uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.0.8" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Atomix]] -deps = ["UnsafeAtomics"] -git-tree-sha1 = "c06a868224ecba914baa6942988e2f2aade419be" -uuid = "a9b6321e-bd34-4604-b9c9-b65b8de01458" -version = "0.1.0" - -[[deps.AxisAlgorithms]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "66771c8d21c8ff5e3a93379480a2307ac36863f7" -uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.0.1" - -[[deps.AxisArrays]] -deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] -git-tree-sha1 = "1dd4d9f5beebac0c03446918741b1a03dc5e5788" -uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9" -version = "0.4.6" - -[[deps.BandedMatrices]] -deps = ["ArrayLayouts", "FillArrays", "LinearAlgebra", "PrecompileTools", "SparseArrays"] -git-tree-sha1 = "3c63ab5fb851444fb018b97883cfd79ae044e888" -uuid = "aae01518-5342-5314-be14-df237901396f" -version = "0.17.29" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables"] -git-tree-sha1 = "e28912ce94077686443433c2800104b061a827ed" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.39" - - [deps.BangBang.extensions] - BangBangChainRulesCoreExt = "ChainRulesCore" - BangBangDataFramesExt = "DataFrames" - BangBangStaticArraysExt = "StaticArrays" - BangBangStructArraysExt = "StructArrays" - BangBangTypedTablesExt = "TypedTables" - - [deps.BangBang.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" - TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.BenchmarkTools]] -deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] -git-tree-sha1 = "d9a9701b899b30332bbcb3e1679c41cce81fb0e8" -uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "1.3.2" - -[[deps.Bijections]] -git-tree-sha1 = "fe4f8c5ee7f76f2198d5c2a06d3961c249cce7bd" -uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" -version = "0.1.4" - -[[deps.Bijectors]] -deps = ["ArgCheck", "ChainRulesCore", "ChangesOfVariables", "Compat", "Distributions", "Functors", "InverseFunctions", "IrrationalConstants", "LinearAlgebra", "LogExpFunctions", "MappedArrays", "Random", "Reexport", "Requires", "Roots", "SparseArrays", "Statistics"] -git-tree-sha1 = "1234b03e94938e6f2b14834dfd3ef45698d5e14f" -uuid = "76274a88-744f-5084-9051-94815aaf08c4" -version = "0.10.8" - -[[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" - -[[deps.BitTwiddlingConvenienceFunctions]] -deps = ["Static"] -git-tree-sha1 = "0c5f81f47bbbcf4aea7b2959135713459170798b" -uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b" -version = "0.1.5" - -[[deps.BlackBoxOptim]] -deps = ["CPUTime", "Compat", "Distributed", "Distributions", "HTTP", "JSON", "LinearAlgebra", "Printf", "Random", "SpatialIndexing", "StatsBase"] -git-tree-sha1 = "136079f37e3514ec691926093924b591a8842f5d" -uuid = "a134a8b2-14d6-55f6-9291-3336d3ab0209" -version = "0.6.2" - -[[deps.BoundaryValueDiffEq]] -deps = ["BandedMatrices", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "NLsolve", "Reexport", "SciMLBase", "SparseArrays"] -git-tree-sha1 = "ed8e837bfb3d1e3157022c9636ec1c722b637318" -uuid = "764a87c0-6b3e-53db-9096-fe964310641d" -version = "2.11.0" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+0" - -[[deps.CEnum]] -git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.2" - -[[deps.CPUSummary]] -deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] -git-tree-sha1 = "89e0654ed8c7aebad6d5ad235d6242c2d737a928" -uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.3" - -[[deps.CPUTime]] -git-tree-sha1 = "2dcc50ea6a0a1ef6440d6eecd0fe3813e5671f45" -uuid = "a9c8d775-2e2e-55fc-8582-045d282d599e" -version = "1.0.0" - -[[deps.CRlibm]] -deps = ["CRlibm_jll"] -git-tree-sha1 = "32abd86e3c2025db5172aa182b982debed519834" -uuid = "96374032-68de-5a5b-8d9e-752f78720389" -version = "1.0.1" - -[[deps.CRlibm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc" -uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0" -version = "1.0.1+0" - -[[deps.CSTParser]] -deps = ["Tokenize"] -git-tree-sha1 = "3ddd48d200eb8ddf9cb3e0189fc059fd49b97c1f" -uuid = "00ebfdb7-1f24-5e51-bd34-a7502290713f" -version = "3.3.6" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "44dbf560808d49041989b8a96cae4cffbeb7966a" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.11" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_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" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.Catlab]] -deps = ["ACSets", "Colors", "CompTime", "Compose", "DataStructures", "GeneralizedGenerated", "JSON", "LightXML", "LinearAlgebra", "Logging", "MLStyle", "PrettyTables", "Random", "Reexport", "SparseArrays", "StaticArrays", "Statistics", "StructEquality", "Tables"] -git-tree-sha1 = "c610008c7dc9907a0112b3d48f75a6de806e1aeb" -uuid = "134e5e36-593f-5add-ad60-77f754baafbe" -version = "0.15.1" - - [deps.Catlab.extensions] - CatlabConvexExt = "Convex" - CatlabDataFramesExt = "DataFrames" - CatlabGraphsExt = "Graphs" - CatlabGraphvizExt = "Graphviz_jll" - CatlabMetaGraphsExt = "MetaGraphs" - CatlabSCSExt = "SCS" - CatlabTikzPicturesExt = "TikzPictures" - - [deps.Catlab.weakdeps] - Convex = "f65535da-76fb-5f13-bab9-19810c17039a" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - Graphs = "86223c79-3864-5bf0-83f7-82e725a168b6" - Graphviz_jll = "3c863552-8265-54e4-a6dc-903eb78fde85" - MetaGraphs = "626554b9-1ddb-594c-aa3c-2596fe9399a5" - SCS = "c946c3f1-0d1f-5ce8-9dea-7daa1f7e2d13" - TikzPictures = "37f6aa50-8035-52d0-81c2-5a1d08754b2d" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "Statistics", "StructArrays"] -git-tree-sha1 = "2afc496e94d15a1af5502625246d172361542133" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.52.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "e30f2f4e20f7f186dc36529910beaedc60cfa644" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.16.0" - -[[deps.ChangesOfVariables]] -deps = ["LinearAlgebra", "Test"] -git-tree-sha1 = "2fba81a302a7be671aefe194f0525ef231104e7f" -uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" -version = "0.1.8" -weakdeps = ["InverseFunctions"] - - [deps.ChangesOfVariables.extensions] - ChangesOfVariablesInverseFunctionsExt = "InverseFunctions" - -[[deps.CloseOpenIntervals]] -deps = ["Static", "StaticArrayInterface"] -git-tree-sha1 = "70232f82ffaab9dc52585e0dd043b5e0c6b714f1" -uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9" -version = "0.1.12" - -[[deps.CodeTracking]] -deps = ["InteractiveUtils", "UUIDs"] -git-tree-sha1 = "d730914ef30a06732bdd9f763f6cc32e92ffbff1" -uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" -version = "1.3.1" - -[[deps.CodecBzip2]] -deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] -git-tree-sha1 = "2e62a725210ce3c3c2e1a3080190e7ca491f18d7" -uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" -version = "0.7.2" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "9c209fb7536406834aa938fb149964b985de6c83" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.1" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "be6ab11021cd29f0344d5c4357b163af05a48cba" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.21.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] -git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.9.10" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.10" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonMark]] -deps = ["Crayons", "JSON", "PrecompileTools", "URIs"] -git-tree-sha1 = "532c4185d3c9037c0237546d817858b23cf9e071" -uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" -version = "0.8.12" - -[[deps.CommonSolve]] -git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" -uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.4" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.CompTime]] -deps = ["MLStyle", "MacroTools"] -git-tree-sha1 = "8c05059bc293a17f71cae4cd58b1fc18d4ede271" -uuid = "0fb5dd42-039a-4ca4-a1d7-89a96eae6d39" -version = "0.1.2" - -[[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "4e88377ae7ebeaf29a047aa1ee40826e0b708a5d" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.7.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" - -[[deps.Compose]] -deps = ["Base64", "Colors", "DataStructures", "Dates", "IterTools", "JSON", "LinearAlgebra", "Measures", "Printf", "Random", "Requires", "Statistics", "UUIDs"] -git-tree-sha1 = "bf6570a34c850f99407b494757f5d7ad233a7257" -uuid = "a81c6b42-2e10-5240-aca2-a61377ecd94b" -version = "0.9.5" - -[[deps.CompositeTypes]] -git-tree-sha1 = "02d2316b7ffceff992f3096ae48c7829a8aa0638" -uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" -version = "0.1.3" - -[[deps.CompositionsBase]] -git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.2" -weakdeps = ["InverseFunctions"] - - [deps.CompositionsBase.extensions] - CompositionsBaseInverseFunctionsExt = "InverseFunctions" - -[[deps.ConcreteStructs]] -git-tree-sha1 = "f749037478283d372048690eb3b5f92a79432b34" -uuid = "2569d6c7-a4a2-43d3-a901-331e8e4be471" -version = "0.2.3" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "96d823b94ba8d187a6d8f0826e731195a74b90e9" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.2.0" - -[[deps.ConsoleProgressMonitor]] -deps = ["Logging", "ProgressMeter"] -git-tree-sha1 = "3ab7b2136722890b9af903859afcf457fa3059e8" -uuid = "88cd18e8-d9cc-4ea6-8889-5259c0d15c8b" -version = "0.1.2" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "738fec4d684a9a6ee9598a8bfee305b26831f28c" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.2" -weakdeps = ["IntervalSets", "StaticArrays"] - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - -[[deps.Contour]] -git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.2" - -[[deps.Copulas]] -deps = ["AlphaStableDistributions", "Cubature", "Distributions", "ForwardDiff", "GSL", "MvNormalCDF", "Random", "Roots", "SpecialFunctions", "StatsBase", "TaylorSeries"] -git-tree-sha1 = "bf5b74cd9b240eea4b713bf3b04211dabf827688" -uuid = "ae264745-0b69-425e-9d9d-cf662c5eec93" -version = "0.1.10" - -[[deps.CpuId]] -deps = ["Markdown"] -git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406" -uuid = "adafc99b-e345-5852-983c-f28acb93d879" -version = "0.3.1" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.Cubature]] -deps = ["Cubature_jll"] -git-tree-sha1 = "c3f4b3b38abd7b5c3ccf59adab2568212e7530d3" -uuid = "667455a9-e2ce-5579-9412-b964f529a492" -version = "1.5.1" - -[[deps.Cubature_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0fe9efb84e3eb7b14f885a95aaa0ed50c7e839c8" -uuid = "7bc98958-0e37-5d67-a6ac-a3a19030071a" -version = "1.0.5+0" - -[[deps.DSP]] -deps = ["Compat", "FFTW", "IterTools", "LinearAlgebra", "Polynomials", "Random", "Reexport", "SpecialFunctions", "Statistics"] -git-tree-sha1 = "da8b06f89fce9996443010ef92572b193f8dca1f" -uuid = "717857b8-e6f2-59f4-9121-6e50c889abd2" -version = "0.7.8" - -[[deps.DataAPI]] -git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.15.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SnoopPrecompile", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "aa51303df86f8626a962fccb878430cdb0a97eee" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.5.0" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "cf25ccb972fec4e4817764d01c82386ae94f77b4" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.14" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelayDiffEq]] -deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "LinearAlgebra", "Logging", "OrdinaryDiffEq", "Printf", "RecursiveArrayTools", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SimpleUnPack"] -git-tree-sha1 = "89f3fbfe78f9d116d1ed0721d65b0b2cf9b36169" -uuid = "bcd4f6db-9728-5f36-b5f7-82caef46ccdb" -version = "5.42.0" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.DensityInterface]] -deps = ["InverseFunctions", "Test"] -git-tree-sha1 = "80c3e8639e3353e5d2912fb3a1916b8455e2494b" -uuid = "b429d917-457f-4dbc-8f4c-0cc954292b1d" -version = "0.4.0" - -[[deps.DiffEqBase]] -deps = ["ArrayInterface", "ChainRulesCore", "DataStructures", "DocStringExtensions", "EnumX", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "Printf", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces", "ZygoteRules"] -git-tree-sha1 = "62c41421bd0facc43dfe4e9776135fe21fd1e1b9" -uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.126.0" - - [deps.DiffEqBase.extensions] - DiffEqBaseDistributionsExt = "Distributions" - DiffEqBaseGeneralizedGeneratedExt = "GeneralizedGenerated" - DiffEqBaseMPIExt = "MPI" - DiffEqBaseMeasurementsExt = "Measurements" - DiffEqBaseMonteCarloMeasurementsExt = "MonteCarloMeasurements" - DiffEqBaseReverseDiffExt = "ReverseDiff" - DiffEqBaseTrackerExt = "Tracker" - DiffEqBaseUnitfulExt = "Unitful" - DiffEqBaseZygoteExt = "Zygote" - - [deps.DiffEqBase.weakdeps] - Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" - GeneralizedGenerated = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" - MPI = "da04e1cc-30fd-572f-bb4f-1f8673147195" - Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" - MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.DiffEqCallbacks]] -deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "LinearAlgebra", "Markdown", "NLsolve", "Parameters", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "63b6be7b396ad395825f3cc48c56b53bfaf7e69d" -uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "2.26.1" - -[[deps.DiffEqNoiseProcess]] -deps = ["DiffEqBase", "Distributions", "GPUArraysCore", "LinearAlgebra", "Markdown", "Optim", "PoissonRandom", "QuadGK", "Random", "Random123", "RandomNumbers", "RecipesBase", "RecursiveArrayTools", "Requires", "ResettableStacks", "SciMLBase", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "26594c6ec8416fb6ef3ed8828fd29c98b10bfaad" -uuid = "77a26b50-5914-5dd7-bc55-306e6241c503" -version = "5.17.2" - - [deps.DiffEqNoiseProcess.extensions] - DiffEqNoiseProcessReverseDiffExt = "ReverseDiff" - - [deps.DiffEqNoiseProcess.weakdeps] - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.DifferentialEquations]] -deps = ["BoundaryValueDiffEq", "DelayDiffEq", "DiffEqBase", "DiffEqCallbacks", "DiffEqNoiseProcess", "JumpProcesses", "LinearAlgebra", "LinearSolve", "NonlinearSolve", "OrdinaryDiffEq", "Random", "RecursiveArrayTools", "Reexport", "SciMLBase", "SteadyStateDiffEq", "StochasticDiffEq", "Sundials"] -git-tree-sha1 = "1cfe0178410e1bb4b14058c537d0f347eb9d95dc" -uuid = "0c46a032-eb83-5123-abaf-570d42b7fbaa" -version = "7.8.0" - -[[deps.Distances]] -deps = ["LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "49eba9ad9f7ead780bfb7ee319f962c811c6d3b2" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.8" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns", "Test"] -git-tree-sha1 = "e76a3281de2719d7c81ed62c6ea7057380c87b1d" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.98" -weakdeps = ["ChainRulesCore", "DensityInterface"] - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - -[[deps.DistributionsAD]] -deps = ["Adapt", "ChainRules", "ChainRulesCore", "Compat", "Distributions", "FillArrays", "LinearAlgebra", "PDMats", "Random", "Requires", "SpecialFunctions", "StaticArrays", "StatsFuns", "ZygoteRules"] -git-tree-sha1 = "1fb4fedd5a407243d535cc50c8c803c2fce0dc26" -uuid = "ced4e74d-a319-5a8a-b0ac-84af2272839c" -version = "0.6.49" - - [deps.DistributionsAD.extensions] - DistributionsADForwardDiffExt = "ForwardDiff" - DistributionsADLazyArraysExt = "LazyArrays" - DistributionsADReverseDiffExt = "ReverseDiff" - DistributionsADTrackerExt = "Tracker" - - [deps.DistributionsAD.weakdeps] - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.DomainSets]] -deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays", "Statistics"] -git-tree-sha1 = "51b4b84d33ec5e0955b55ff4b748b99ce2c3faa9" -uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" -version = "0.6.7" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.DynamicPPL]] -deps = ["AbstractMCMC", "AbstractPPL", "BangBang", "Bijectors", "ChainRulesCore", "ConstructionBase", "Distributions", "DocStringExtensions", "LinearAlgebra", "LogDensityProblems", "MacroTools", "OrderedCollections", "Random", "Setfield", "Test", "ZygoteRules"] -git-tree-sha1 = "932f5f977b04db019cc72ebd1f4161a6e7bded14" -uuid = "366bfd00-2699-11ea-058f-f148b4cae6d8" -version = "0.21.6" - -[[deps.DynamicPolynomials]] -deps = ["DataStructures", "Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] -git-tree-sha1 = "8b84876e31fa39479050e2d3395c4b3b210db8b0" -uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" -version = "0.4.6" - -[[deps.EasyModelAnalysis]] -deps = ["DifferentialEquations", "Distributions", "GlobalSensitivity", "LinearAlgebra", "ModelingToolkit", "NLopt", "Optimization", "OptimizationBBO", "OptimizationMOI", "OptimizationNLopt", "Plots", "Reexport", "SciMLBase", "SciMLExpectations", "Turing"] -git-tree-sha1 = "62ccc0ec19dff1ce722810b78b01ab459e47d1b6" -uuid = "ef4b24a4-a090-4686-a932-e7e56a5a83bd" -version = "0.1.9" - -[[deps.EllipticalSliceSampling]] -deps = ["AbstractMCMC", "ArrayInterface", "Distributions", "Random", "Statistics"] -git-tree-sha1 = "973b4927d112559dc737f55d6bf06503a5b3fc14" -uuid = "cad2338a-1db2-11e9-3401-43bc07c9ede2" -version = "1.1.0" - -[[deps.EnumX]] -git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" -uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" -version = "1.0.4" - -[[deps.ErrorfreeArithmetic]] -git-tree-sha1 = "d6863c556f1142a061532e79f611aa46be201686" -uuid = "90fa49ef-747e-5e6f-a989-263ba693cf1a" -version = "0.5.2" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.9" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.5.0+0" - -[[deps.ExponentialUtilities]] -deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "Printf", "SnoopPrecompile", "SparseArrays", "libblastrampoline_jll"] -git-tree-sha1 = "fb7dbef7d2631e2d02c49e2750f7447648b0ec9b" -uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" -version = "1.24.0" - -[[deps.ExprTools]] -git-tree-sha1 = "c1d06d129da9f55715c6c212866f5b1bddc5fa00" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.9" - -[[deps.EzXML]] -deps = ["Printf", "XML2_jll"] -git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" -uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" -version = "1.1.0" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.2+2" - -[[deps.FFTW]] -deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "b4fbdd20c889804969571cc589900803edda16b7" -uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.7.1" - -[[deps.FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" -uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+0" - -[[deps.FastBroadcast]] -deps = ["ArrayInterface", "LinearAlgebra", "Polyester", "Static", "StaticArrayInterface", "StrideArraysCore"] -git-tree-sha1 = "d1248fceea0b26493fd33e8e9e8c553270da03bd" -uuid = "7034ab61-46d4-4ed7-9d0f-46aef9175898" -version = "0.2.5" - -[[deps.FastClosures]] -git-tree-sha1 = "acebe244d53ee1b461970f8910c235b259e772ef" -uuid = "9aa1b823-49e4-5ca5-8b0f-3971ec8bab6a" -version = "0.3.2" - -[[deps.FastLapackInterface]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "b12f05108e405dadcc2aff0008db7f831374e051" -uuid = "29a986be-02c6-4525-aec4-84b980013641" -version = "2.0.0" - -[[deps.FastRounding]] -deps = ["ErrorfreeArithmetic", "LinearAlgebra"] -git-tree-sha1 = "6344aa18f654196be82e62816935225b3b9abe44" -uuid = "fa42c844-2597-5d31-933b-ebd51ab2693f" -version = "0.3.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "299dc33549f68299137e51e6d49a13b5b1da9673" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.1" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "e27c4ebe80e8699540f2d6c805cc12203b614f12" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.20" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "2250347838b28a108d1967663cba57bfb3c02a58" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.3.0" - -[[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] -git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.21.1" - - [deps.FiniteDiff.extensions] - FiniteDiffBandedMatricesExt = "BandedMatrices" - FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" - FiniteDiffStaticArraysExt = "StaticArrays" - - [deps.FiniteDiff.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" - -[[deps.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" - -[[deps.Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "00e252f4d706b3d55a8863432e742bf5717b498d" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.35" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.1+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.10+0" - -[[deps.FunctionWrappers]] -git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" -uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" -version = "1.1.3" - -[[deps.FunctionWrappersWrappers]] -deps = ["FunctionWrappers"] -git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" -uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" -version = "0.1.3" - -[[deps.Functors]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "a2657dd0f3e8a61dbe70fc7c122038bd33790af5" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.3.0" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.8+0" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "2e57b4a4f9cc15e85a24d603256fe08e527f48d1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "8.8.1" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.5" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] -git-tree-sha1 = "8b8a2fd4536ece6e554168c21860b6820a8a83db" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.72.7" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "19fad9cd9ae44847fe842558a744748084a722d1" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.72.7+0" - -[[deps.GSL]] -deps = ["GSL_jll", "Libdl", "Markdown"] -git-tree-sha1 = "3ebd07d519f5ec318d5bc1b4971e2472e14bd1f0" -uuid = "92c85e6c-cbff-5e0c-80f7-495c94daaecd" -version = "1.0.1" - -[[deps.GSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "56f1e2c9e083e0bb7cf9a7055c280beb08a924c0" -uuid = "1b77fbbe-d8ee-58f0-85f9-836ddc23a7a4" -version = "2.7.2+0" - -[[deps.GeneralizedGenerated]] -deps = ["DataStructures", "JuliaVariables", "MLStyle", "Serialization"] -git-tree-sha1 = "60f1fa1696129205873c41763e7d0920ac7d6f1f" -uuid = "6b9d7cbe-bcb9-11e9-073f-15a7a543e2eb" -version = "0.3.3" - -[[deps.GenericSchur]] -deps = ["LinearAlgebra", "Printf"] -git-tree-sha1 = "fb69b2a645fa69ba5f474af09221b9308b160ce6" -uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e" -version = "0.5.3" - -[[deps.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" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.74.0+2" - -[[deps.Glob]] -git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" -uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" -version = "1.3.1" - -[[deps.GlobalSensitivity]] -deps = ["Combinatorics", "Copulas", "Distributions", "FFTW", "ForwardDiff", "KernelDensity", "LinearAlgebra", "Parameters", "QuasiMonteCarlo", "Random", "RecursiveArrayTools", "Statistics", "StatsBase", "ThreadsX", "Trapz"] -git-tree-sha1 = "e5484bc811d0335814e3f7d3815dcea19d261fbc" -uuid = "af5da776-676b-467e-8baf-acd8249e4f0f" -version = "2.2.1" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Graphs]] -deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] -git-tree-sha1 = "1cf1d7dcb4bc32d7b4a5add4232db3750c27ecb4" -uuid = "86223c79-3864-5bf0-83f7-82e725a168b6" -version = "1.8.0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.Groebner]] -deps = ["AbstractAlgebra", "Combinatorics", "Logging", "MultivariatePolynomials", "Primes", "Random", "SnoopPrecompile"] -git-tree-sha1 = "c8b55b624a83f60bcd6574cc999ad148d0a47dd6" -uuid = "0b43b601-686d-58a3-8a1c-6623616c7cd4" -version = "0.3.6" - -[[deps.GroupsCore]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "9e1a5e9f3b81ad6a5c613d181664a0efc6fe6dd7" -uuid = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120" -version = "0.4.0" - -[[deps.HCubature]] -deps = ["Combinatorics", "DataStructures", "LinearAlgebra", "QuadGK", "StaticArrays"] -git-tree-sha1 = "e95b36755023def6ebc3d269e6483efa8b2f7f65" -uuid = "19dc6840-f33b-545b-b366-655c7e3ffd49" -version = "1.5.1" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "7f5ef966a02a8fdf3df2ca03108a88447cb3c6f0" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.8" - -[[deps.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" - -[[deps.Highlights]] -deps = ["DocStringExtensions", "InteractiveUtils", "REPL"] -git-tree-sha1 = "0341077e8a6b9fc1c2ea5edc1e93a956d2aec0c7" -uuid = "eafb193a-b7ab-5a9e-9068-77385905fa72" -version = "0.5.2" - -[[deps.HostCPUFeatures]] -deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"] -git-tree-sha1 = "d38bd0d9759e3c6cfa19bdccc314eccf8ce596cc" -uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0" -version = "0.1.15" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "0ec02c648befc2f94156eaef13b0f38106212f3f" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.17" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools", "Test"] -git-tree-sha1 = "eac00994ce3229a464c2847e956d77a2c64ad3a5" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.10" - -[[deps.IfElse]] -git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" -uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" -version = "0.1.1" - -[[deps.Inflate]] -git-tree-sha1 = "5cd07aab533df5170988219191dfad0519391428" -uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" -version = "0.1.3" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.InplaceOps]] -deps = ["LinearAlgebra", "Test"] -git-tree-sha1 = "50b41d59e7164ab6fda65e71049fee9d890731ff" -uuid = "505f98c9-085e-5b2c-8e89-488be7bf1f34" -version = "0.3.0" - -[[deps.IntegerMathUtils]] -git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" -uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" -version = "0.1.2" - -[[deps.Integrals]] -deps = ["CommonSolve", "HCubature", "LinearAlgebra", "MonteCarloIntegration", "QuadGK", "Reexport", "Requires", "SciMLBase"] -git-tree-sha1 = "f8f24a73621e9063f696ffeaa83f7a725ab5ae23" -uuid = "de52edbc-65ea-441a-8357-d3a637375a31" -version = "3.8.0" - - [deps.Integrals.extensions] - IntegralsFastGaussQuadratureExt = "FastGaussQuadrature" - IntegralsForwardDiffExt = "ForwardDiff" - IntegralsZygoteExt = ["Zygote", "ChainRulesCore"] - - [deps.Integrals.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - FastGaussQuadrature = "442a2c76-b920-505d-bb47-c5924d526838" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0cb9352ef2e01574eeebdb102948a58740dcaf83" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2023.1.0+0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.Interpolations]] -deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "721ec2cf720536ad005cb38f50dbba7b02419a15" -uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.14.7" - -[[deps.IntervalArithmetic]] -deps = ["CRlibm", "FastRounding", "LinearAlgebra", "Markdown", "Random", "RecipesBase", "RoundingEmulator", "SetRounding", "StaticArrays"] -git-tree-sha1 = "5ab7744289be503d76a944784bac3f2df7b809af" -uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "0.20.9" - -[[deps.IntervalSets]] -deps = ["Dates", "Random", "Statistics"] -git-tree-sha1 = "16c0cc91853084cb5f58a78bd209513900206ce6" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.4" - -[[deps.InverseFunctions]] -deps = ["Test"] -git-tree-sha1 = "edd1c1ac227767c75e8518defdf6e48dbfa7c3b0" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.10" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.Ipopt_jll]] -deps = ["ASL_jll", "Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "MUMPS_seq_jll", "OpenBLAS32_jll", "Pkg"] -git-tree-sha1 = "e3e202237d93f18856b6ff1016166b0f172a49a8" -uuid = "9cc047cb-c261-5740-88fc-0cf96f7bdcc7" -version = "300.1400.400+0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLD2]] -deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "Pkg", "Printf", "Reexport", "Requires", "TranscodingStreams", "UUIDs"] -git-tree-sha1 = "42c17b18ced77ff0be65957a591d34f4ed57c631" -uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.4.31" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "f377670cda23b6b7c1c0b3893e37451c5c1a2185" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.5" - -[[deps.JLLWrappers]] -deps = ["Preferences"] -git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.4.1" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JSON3]] -deps = ["Dates", "Mmap", "Parsers", "PrecompileTools", "StructTypes", "UUIDs"] -git-tree-sha1 = "5b62d93f2582b09e469b3099d839c2d2ebf5066d" -uuid = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -version = "1.13.1" - -[[deps.JSONSchema]] -deps = ["Downloads", "HTTP", "JSON", "URIs"] -git-tree-sha1 = "58cb291b01508293f7a9dc88325bc00d797cf04d" -uuid = "7d188eb4-7ad8-530c-ae41-71a32a6d4692" -version = "1.1.0" - -[[deps.JSONTables]] -deps = ["JSON3", "StructTypes", "Tables"] -git-tree-sha1 = "13f7485bb0b4438bb5e83e62fcadc65c5de1d1bb" -uuid = "b9914132-a727-11e9-1322-f18e41205b0b" -version = "1.0.3" - -[[deps.JobSchedulers]] -deps = ["Dates", "JLD2", "JSON", "Logging", "OrderedCollections", "Pipelines", "PrettyTables", "Printf", "Reexport", "Term", "Terming", "Test"] -git-tree-sha1 = "568c4fe4c1ae76ada68604c9a1ea6f76e6030104" -uuid = "eeff360b-c02d-44d3-ab26-4013c616a17e" -version = "0.8.1" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.91+0" - -[[deps.JuliaFormatter]] -deps = ["CSTParser", "CommonMark", "DataStructures", "Glob", "Pkg", "PrecompileTools", "Tokenize"] -git-tree-sha1 = "60567b51bd9e1e19ae2fd8a54dcd6bc5994727f0" -uuid = "98e50ef6-434e-11e9-1051-2b60c6c9e899" -version = "1.0.34" - -[[deps.JuliaVariables]] -deps = ["MLStyle", "NameResolution"] -git-tree-sha1 = "49fb3cb53362ddadb4415e9b73926d6b40709e70" -uuid = "b14d175d-62b4-44ba-8fb7-3064adc8c3ec" -version = "0.2.4" - -[[deps.JumpProcesses]] -deps = ["ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "FunctionWrappers", "Graphs", "LinearAlgebra", "Markdown", "PoissonRandom", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "StaticArrays", "TreeViews", "UnPack"] -git-tree-sha1 = "50bd271af7f6cc23be7d24c8c4804809bb5d05ae" -uuid = "ccbc3e58-028d-4f4c-8cd5-9ae44345cda5" -version = "9.6.3" - -[[deps.KLU]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] -git-tree-sha1 = "764164ed65c30738750965d55652db9c94c59bfe" -uuid = "ef3ab10e-7fda-4108-b977-705223b18434" -version = "0.4.0" - -[[deps.KernelAbstractions]] -deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] -git-tree-sha1 = "b48617c5d764908b5fac493cd907cf33cc11eec1" -uuid = "63c18a36-062a-441e-b654-da1e3ab1ce7c" -version = "0.9.6" - -[[deps.KernelDensity]] -deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] -git-tree-sha1 = "90442c50e202a5cdf21a7899c66b240fdef14035" -uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" -version = "0.6.7" - -[[deps.Krylov]] -deps = ["LinearAlgebra", "Printf", "SparseArrays"] -git-tree-sha1 = "0356a64062656b0cbb43c504ad5de338251f4bda" -uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -version = "0.9.1" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.1+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Printf", "Unicode"] -git-tree-sha1 = "8695a49bfe05a2dc0feeefd06b4ca6361a018729" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "6.1.0" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "c35203c1e1002747da220ffc3c0762ce7754b08c" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.23+0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.4+0" - -[[deps.LRUCache]] -git-tree-sha1 = "48c10e3cc27e30de82463c27bef0b8bdbd1dc634" -uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" -version = "1.4.1" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.1+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" - -[[deps.LabelledArrays]] -deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"] -git-tree-sha1 = "cd04158424635efd05ff38d5f55843397b7416a9" -uuid = "2ee39098-c373-598a-b85f-a56591580800" -version = "1.14.0" - -[[deps.LambertW]] -git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648" -uuid = "984bce1d-4616-540c-a9ee-88d1112d94c9" -version = "0.4.6" - -[[deps.Latexify]] -deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] -git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.1" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LatticeRules]] -deps = ["Random"] -git-tree-sha1 = "7f5b02258a3ca0221a6a9710b0a0a2e8fb4957fe" -uuid = "73f95e8e-ec14-4e6a-8b18-0d2e271c4e55" -version = "0.0.1" - -[[deps.LayoutPointers]] -deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "88b8f66b604da079a627b6fb2860d3704a6729a1" -uuid = "10f19ff3-798f-405d-979b-55457f8fc047" -version = "0.1.14" - -[[deps.Lazy]] -deps = ["MacroTools"] -git-tree-sha1 = "1370f8202dac30758f3c345f9909b97f53d87d3f" -uuid = "50d2b5c4-7a5e-59d5-8109-a42b560f39c0" -version = "0.15.1" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LeftChildRightSiblingTrees]] -deps = ["AbstractTrees"] -git-tree-sha1 = "fb6803dafae4a5d62ea5cab204b1e657d9737e7f" -uuid = "1d6d02ad-be62-4b6b-8a6d-2f90e265016e" -version = "0.2.0" - -[[deps.LevyArea]] -deps = ["LinearAlgebra", "Random", "SpecialFunctions"] -git-tree-sha1 = "56513a09b8e0ae6485f34401ea9e2f31357958ec" -uuid = "2d8b4e74-eb68-11e8-0fb9-d5eb67b50637" -version = "1.0.0" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.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" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.42.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.35.0+0" - -[[deps.Libtask]] -deps = ["FunctionWrappers", "LRUCache", "LinearAlgebra", "Statistics"] -git-tree-sha1 = "345a40c746404dd9cb1bbc368715856838ab96f2" -uuid = "6f1fad26-d15e-5dc8-ae53-837a1d7b8c9f" -version = "0.8.6" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "3eb79b0ca5764d4799c06699573fd8f533259713" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.4.0+0" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.36.0+0" - -[[deps.LightXML]] -deps = ["Libdl", "XML2_jll"] -git-tree-sha1 = "e129d9391168c677cd4800f5c0abb1ed8cb3794f" -uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" -version = "0.9.0" - -[[deps.LineSearches]] -deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.2.0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LinearSolve]] -deps = ["ArrayInterface", "DocStringExtensions", "EnumX", "FastLapackInterface", "GPUArraysCore", "InteractiveUtils", "KLU", "Krylov", "LinearAlgebra", "PrecompileTools", "Preferences", "RecursiveFactorization", "Reexport", "Requires", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Sparspak", "SuiteSparse", "UnPack"] -git-tree-sha1 = "93f3a0d88c8f5498bed3ad37ddd844b939fdf899" -uuid = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae" -version = "2.3.0" - - [deps.LinearSolve.extensions] - LinearSolveCUDAExt = "CUDA" - LinearSolveHYPREExt = "HYPRE" - LinearSolveIterativeSolversExt = "IterativeSolvers" - LinearSolveKrylovKitExt = "KrylovKit" - LinearSolvePardisoExt = "Pardiso" - - [deps.LinearSolve.weakdeps] - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - HYPRE = "b5ffcf37-a2bd-41ab-a3da-4bd9bc8ad771" - IterativeSolvers = "42fd0dbc-a981-5370-80f2-aaf504508153" - KrylovKit = "0b1a1467-8014-51b9-945f-bf0ae24f4b77" - Pardiso = "46dd5b70-b6fb-5a00-ae2d-e8fea33afaf2" - -[[deps.LogDensityProblems]] -deps = ["ArgCheck", "DocStringExtensions", "Random"] -git-tree-sha1 = "f9a11237204bc137617194d79d813069838fcf61" -uuid = "6fdf6af0-433a-55f7-b3ed-c6c6e0b8df7c" -version = "2.1.1" - -[[deps.LogDensityProblemsAD]] -deps = ["DocStringExtensions", "LogDensityProblems", "Requires", "SimpleUnPack"] -git-tree-sha1 = "a0512ad65f849536b5a52e59b05c59c25cdad943" -uuid = "996a588d-648d-4e1f-a8f0-a84b347e47b1" -version = "1.5.0" - - [deps.LogDensityProblemsAD.extensions] - LogDensityProblemsADEnzymeExt = "Enzyme" - LogDensityProblemsADFiniteDifferencesExt = "FiniteDifferences" - LogDensityProblemsADForwardDiffBenchmarkToolsExt = ["BenchmarkTools", "ForwardDiff"] - LogDensityProblemsADForwardDiffExt = "ForwardDiff" - LogDensityProblemsADReverseDiffExt = "ReverseDiff" - LogDensityProblemsADTrackerExt = "Tracker" - LogDensityProblemsADZygoteExt = "Zygote" - - [deps.LogDensityProblemsAD.weakdeps] - BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - FiniteDifferences = "26cc04aa-876d-5657-8c51-4c34ba976000" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "c3ce8e7420b3a6e071e0fe4745f5d4300e37b13f" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.24" -weakdeps = ["ChainRulesCore", "ChangesOfVariables", "InverseFunctions"] - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "cedb76b37bc5a6c702ade66be44f831fa23c681e" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.0" - -[[deps.LoopVectorization]] -deps = ["ArrayInterface", "ArrayInterfaceCore", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"] -git-tree-sha1 = "e4eed22d70ac91d7a4bf9e0f6902383061d17105" -uuid = "bdcacae8-1622-11e9-2a5c-532679323890" -version = "0.12.162" -weakdeps = ["ChainRulesCore", "ForwardDiff", "SpecialFunctions"] - - [deps.LoopVectorization.extensions] - ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"] - SpecialFunctionsExt = "SpecialFunctions" - -[[deps.MCMCChains]] -deps = ["AbstractMCMC", "AxisArrays", "Dates", "Distributions", "Formatting", "IteratorInterfaceExtensions", "KernelDensity", "LinearAlgebra", "MCMCDiagnosticTools", "MLJModelInterface", "NaturalSort", "OrderedCollections", "PrettyTables", "Random", "RecipesBase", "Statistics", "StatsBase", "StatsFuns", "TableTraits", "Tables"] -git-tree-sha1 = "8778ea7283a0bf0d7e507a0235adfff38071493b" -uuid = "c7f686f2-ff18-58e9-bc7b-31028e88f75d" -version = "6.0.3" - -[[deps.MCMCDiagnosticTools]] -deps = ["AbstractFFTs", "DataAPI", "DataStructures", "Distributions", "LinearAlgebra", "MLJModelInterface", "Random", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Tables"] -git-tree-sha1 = "695e91605361d1932c3e89a812be78480a4a4595" -uuid = "be115224-59cd-429b-ad48-344e309966f0" -version = "0.3.4" - -[[deps.METIS_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "1fd0a97409e418b78c53fac671cf4622efdf0f21" -uuid = "d00139f3-1899-568f-a2f0-47f597d42d70" -version = "5.1.2+0" - -[[deps.MIMEs]] -git-tree-sha1 = "65f28ad4b594aebe22157d6fac869786a255b7eb" -uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" -version = "0.1.4" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "154d7aaa82d24db6d8f7e4ffcfe596f40bff214b" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2023.1.0+0" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "c8b7e632d6754a5e36c0d94a4b466a5ba3a30128" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.8.0" - -[[deps.MLStyle]] -git-tree-sha1 = "bc38dff0548128765760c79eb7388a4b37fae2c8" -uuid = "d8e11817-5142-5d16-987a-aa16d5891078" -version = "0.4.17" - -[[deps.MUMPS_seq_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "METIS_jll", "OpenBLAS32_jll", "Pkg"] -git-tree-sha1 = "29de2841fa5aefe615dea179fcde48bb87b58f57" -uuid = "d7ed1dd3-d0ae-5e8e-bfb4-87a502085b8d" -version = "5.4.1+0" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "42324d08725e200c23d4dfb549e0d5d89dede2d2" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.10" - -[[deps.ManualMemory]] -git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd" -uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667" -version = "0.1.8" - -[[deps.MappedArrays]] -git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" -uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.2" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MathML]] -deps = ["AbstractTrees", "DocStringExtensions", "EzXML", "IfElse", "SpecialFunctions", "Statistics", "Symbolics"] -git-tree-sha1 = "f9d5b2895734a699b51249ebb90ca9b4b6a6e12c" -uuid = "abcecc63-2b08-419c-80c4-c63dca6fa478" -version = "0.1.14" - -[[deps.MathOptInterface]] -deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] -git-tree-sha1 = "5c5cd501ae1d76d3ccd7c7e6b4325a15dde7f31c" -uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" -version = "1.18.0" - -[[deps.MathProgBase]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "9abbe463a1e9fc507f12a69e7f29346c2cdc472c" -uuid = "fdba3010-5040-5b88-9595-932c9decdf73" -version = "0.7.8" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "03a9b9718f5682ecb107ac9f7308991db4ce395b" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.7" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "629afd7d10dbc6935ec59b32daeb33bc4460a42e" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.4" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "4cc0c5a83933648b615c36c2b956d94fda70641e" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.7" - -[[deps.ModelingToolkit]] -deps = ["AbstractTrees", "ArrayInterface", "Combinatorics", "Compat", "ConstructionBase", "DataStructures", "DiffEqBase", "DiffEqCallbacks", "DiffRules", "Distributed", "Distributions", "DocStringExtensions", "DomainSets", "ForwardDiff", "FunctionWrappersWrappers", "Graphs", "IfElse", "InteractiveUtils", "JuliaFormatter", "JumpProcesses", "LabelledArrays", "Latexify", "Libdl", "LinearAlgebra", "MLStyle", "MacroTools", "NaNMath", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLBase", "Serialization", "Setfield", "SimpleNonlinearSolve", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "SymbolicUtils", "Symbolics", "URIs", "UnPack", "Unitful"] -git-tree-sha1 = "cad27947bc85b1a3136f395f22a7dd5c382b7209" -uuid = "961ee093-0014-501f-94e3-6117800e7a78" -version = "8.62.0" - - [deps.ModelingToolkit.extensions] - MTKDeepDiffsExt = "DeepDiffs" - - [deps.ModelingToolkit.weakdeps] - DeepDiffs = "ab62b9b5-e342-54a8-a765-a90f495de1a6" - -[[deps.MonteCarloIntegration]] -deps = ["Distributions", "Random"] -git-tree-sha1 = "3f78ebce296c927d5c854e83cccdb5dcb1845629" -uuid = "4886b29c-78c9-11e9-0a6e-41e1f4161f7b" -version = "0.0.3" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" - -[[deps.MuladdMacro]] -git-tree-sha1 = "cac9cc5499c25554cba55cd3c30543cff5ca4fab" -uuid = "46d2c3a1-f734-5fdb-9937-b9b9aeba4221" -version = "0.2.4" - -[[deps.MultivariatePolynomials]] -deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] -git-tree-sha1 = "eaa98afe2033ffc0629f9d0d83961d66a021dfcc" -uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" -version = "0.4.7" - -[[deps.MutableArithmetics]] -deps = ["LinearAlgebra", "SparseArrays", "Test"] -git-tree-sha1 = "964cb1a7069723727025ae295408747a0b36a854" -uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" -version = "1.3.0" - -[[deps.MvNormalCDF]] -deps = ["Distributions", "FillArrays", "LinearAlgebra", "Primes", "Random", "StatsBase"] -git-tree-sha1 = "e472ed20dfe9f68d9aebc02258dfe31d69deb8eb" -uuid = "37188c8d-bc69-4638-b057-733e744175ec" -version = "0.2.6" - -[[deps.MyterialColors]] -git-tree-sha1 = "01d8466fb449436348999d7c6ad740f8f853a579" -uuid = "1c23619d-4212-4747-83aa-717207fae70f" -version = "0.3.0" - -[[deps.NLSolversBase]] -deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.3" - -[[deps.NLopt]] -deps = ["MathOptInterface", "MathProgBase", "NLopt_jll"] -git-tree-sha1 = "5a7e32c569200a8a03c3d55d286254b0321cd262" -uuid = "76087f3c-5699-56af-9a33-bf431cd00edd" -version = "0.6.5" - -[[deps.NLopt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9b1f15a08f9d00cdb2761dcfa6f453f5d0d6f973" -uuid = "079eb43e-fd8e-5478-9966-2cf3e3edb778" -version = "2.7.1+0" - -[[deps.NLsolve]] -deps = ["Distances", "LineSearches", "LinearAlgebra", "NLSolversBase", "Printf", "Reexport"] -git-tree-sha1 = "019f12e9a1a7880459d0173c182e6a99365d7ac1" -uuid = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" -version = "4.5.1" - -[[deps.NNlib]] -deps = ["Adapt", "Atomix", "ChainRulesCore", "GPUArraysCore", "KernelAbstractions", "LinearAlgebra", "Pkg", "Random", "Requires", "Statistics"] -git-tree-sha1 = "ec9858db6fcd07f63aeeed105420cc573ce2685a" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.9.1" - - [deps.NNlib.extensions] - NNlibAMDGPUExt = "AMDGPU" - NNlibCUDACUDNNExt = ["CUDA", "cuDNN"] - NNlibCUDAExt = "CUDA" - - [deps.NNlib.weakdeps] - AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - cuDNN = "02a925ec-e4fe-4b08-9a7e-0d78e3d38ccd" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NameResolution]] -deps = ["PrettyPrint"] -git-tree-sha1 = "1a0fa0e9613f46c9b8c11eee38ebb4f590013c5e" -uuid = "71a1bf82-56d0-4bbc-8a3c-48b961074391" -version = "0.1.5" - -[[deps.NamedArrays]] -deps = ["Combinatorics", "DataStructures", "DelimitedFiles", "InvertedIndices", "LinearAlgebra", "Random", "Requires", "SparseArrays", "Statistics"] -git-tree-sha1 = "b84e17976a40cb2bfe3ae7edb3673a8c630d4f95" -uuid = "86f7a689-2022-50b4-a561-43c23ac3c673" -version = "0.9.8" - -[[deps.NamedTupleTools]] -git-tree-sha1 = "90914795fc59df44120fe3fff6742bb0d7adb1d0" -uuid = "d9ec5142-1e00-5aa0-9d6a-321866360f50" -version = "0.14.3" - -[[deps.NaturalSort]] -git-tree-sha1 = "eda490d06b9f7c00752ee81cfa451efe55521e21" -uuid = "c020b1a1-e9b0-503a-9c33-f039bfc54a85" -version = "1.0.0" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.NonlinearSolve]] -deps = ["ArrayInterface", "DiffEqBase", "EnumX", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "LinearSolve", "PrecompileTools", "RecursiveArrayTools", "Reexport", "SciMLBase", "SimpleNonlinearSolve", "SparseArrays", "SparseDiffTools", "StaticArraysCore", "UnPack"] -git-tree-sha1 = "2a7f28c62eb2c16b9c375c38f664cdcf22313cf5" -uuid = "8913a72c-1f9b-4ce2-8d82-65094dcecaec" -version = "1.8.0" - -[[deps.OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.10" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OpenAPI]] -deps = ["Base64", "Dates", "Downloads", "HTTP", "JSON", "LibCURL", "MbedTLS", "TimeZones", "URIs"] -git-tree-sha1 = "6e497e6245770817a7821a2d1d32f8f465166a99" -uuid = "d5e62ea6-ddf3-4d43-8e4c-ad5e6c8bfd7d" -version = "0.1.11" - -[[deps.OpenBLAS32_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "2fb9ee2dc14d555a6df2a714b86b7125178344c2" -uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" -version = "0.3.21+0" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.1" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1aa4b74f80b01c6bc2b89992b861b5f210e665b5" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.21+0" - -[[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" - -[[deps.Optim]] -deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "e3a6546c1577bfd701771b477b794a52949e7594" -uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.7.6" - -[[deps.Optimisers]] -deps = ["ChainRulesCore", "Functors", "LinearAlgebra", "Random", "Statistics"] -git-tree-sha1 = "e5a1825d3d53aa4ad4fb42bd4927011ad4a78c3d" -uuid = "3bd65402-5787-11e9-1adc-39752487f4e2" -version = "0.2.15" - -[[deps.Optimization]] -deps = ["ADTypes", "ArrayInterface", "ConsoleProgressMonitor", "DocStringExtensions", "LinearAlgebra", "Logging", "LoggingExtras", "Pkg", "Printf", "ProgressLogging", "Reexport", "Requires", "SciMLBase", "SparseArrays", "TerminalLoggers"] -git-tree-sha1 = "80005bc7d96d4d00e56b8a58c5240a35bd638d4a" -uuid = "7f7a1694-90dd-40f0-9382-eb1efda571ba" -version = "3.15.2" - - [deps.Optimization.extensions] - OptimizationEnzymeExt = "Enzyme" - OptimizationFinitediffExt = "FiniteDiff" - OptimizationForwarddiffExt = "ForwardDiff" - OptimizationMTKExt = "ModelingToolkit" - OptimizationReversediffExt = "ReverseDiff" - OptimizationTrackerExt = "Tracker" - OptimizationZygoteExt = "Zygote" - - [deps.Optimization.weakdeps] - Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" - FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41" - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.OptimizationBBO]] -deps = ["BlackBoxOptim", "Optimization", "Reexport"] -git-tree-sha1 = "5f653f29459f2aba3c1961dff265b727bd1ed5be" -uuid = "3e6eede4-6085-4f62-9a71-46d9bc1eb92b" -version = "0.1.4" - -[[deps.OptimizationMOI]] -deps = ["Ipopt_jll", "MathOptInterface", "ModelingToolkit", "Optimization", "Reexport", "SparseArrays", "Symbolics"] -git-tree-sha1 = "32c99127e8caf6b50856d676b56a9382bd5650c6" -uuid = "fd9f6733-72f4-499f-8506-86b2bdd0dea1" -version = "0.1.14" - -[[deps.OptimizationNLopt]] -deps = ["NLopt", "Optimization", "Reexport"] -git-tree-sha1 = "105de2db4fad2750921fb59507b8ebf3ccebdd91" -uuid = "4e6fcdb7-1186-4e1f-a706-475e75c168bb" -version = "0.1.6" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "d321bf2de576bf25ec4d3e4360faca399afca282" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.0" - -[[deps.OrdinaryDiffEq]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "IfElse", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "LoopVectorization", "MacroTools", "MuladdMacro", "NLsolve", "NonlinearSolve", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLNLSolve", "SciMLOperators", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "SparseDiffTools", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] -git-tree-sha1 = "4f1ab68f236fa846d0c30718c6b29c1665b019c0" -uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -version = "6.53.3" - -[[deps.Oxygen]] -deps = ["Dates", "HTTP", "JSON3", "MIMEs", "Sockets"] -git-tree-sha1 = "dca31e833aafb6277e5aff9fdcb5029be5045255" -uuid = "df9a0d86-3283-4920-82dc-4555fc0d1d8b" -version = "1.1.11" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+0" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "67eae2738d63117a196f497d7db789821bce61d1" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.17" - -[[deps.Parameters]] -deps = ["OrderedCollections", "UnPack"] -git-tree-sha1 = "34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbe" -uuid = "d96e819e-fc66-5662-9728-84c9c7592b0a" -version = "0.12.3" - -[[deps.Parsers]] -deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "4b2e829ee66d4218e0cef22c0a64ee37cf258c29" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.7.1" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pipelines]] -deps = ["Dates", "FilePathsBase", "Logging", "OrderedCollections", "Printf", "Reexport", "Test", "UUIDs"] -git-tree-sha1 = "b870d8e0354361e38b0d9fc1997e96c299e948ae" -uuid = "ef544631-5c6f-4e9b-994c-12e7a4cd724c" -version = "0.10.4" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.42.2+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.2" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.1.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.3.5" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "75ca67b2c6512ad2d0c767a7cfc55e75075f8bbc" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.38.16" - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - - [deps.Plots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" - IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.PoissonRandom]] -deps = ["Random"] -git-tree-sha1 = "a0f1159c33f846aa77c3f30ebbc69795e5327152" -uuid = "e409e4f3-bfea-5376-8464-e040bb5c01ab" -version = "0.4.4" - -[[deps.Polyester]] -deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Requires", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] -git-tree-sha1 = "0fe4e7c4d8ff4c70bfa507f0dd96fa161b115777" -uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" -version = "0.7.3" - -[[deps.PolyesterWeave]] -deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] -git-tree-sha1 = "240d7170f5ffdb285f9427b92333c3463bf65bf6" -uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad" -version = "0.2.1" - -[[deps.Polynomials]] -deps = ["LinearAlgebra", "RecipesBase"] -git-tree-sha1 = "3aa2bb4982e575acd7583f01531f241af077b163" -uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" -version = "3.2.13" - - [deps.Polynomials.extensions] - PolynomialsChainRulesCoreExt = "ChainRulesCore" - PolynomialsMakieCoreExt = "MakieCore" - PolynomialsMutableArithmeticsExt = "MutableArithmetics" - - [deps.Polynomials.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b" - MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.2" - -[[deps.PositiveFactorizations]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" -uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" -version = "0.2.4" - -[[deps.PreallocationTools]] -deps = ["Adapt", "ArrayInterface", "ForwardDiff", "Requires"] -git-tree-sha1 = "f739b1b3cc7b9949af3b35089931f2b58c289163" -uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" -version = "0.4.12" - - [deps.PreallocationTools.extensions] - PreallocationToolsReverseDiffExt = "ReverseDiff" - - [deps.PreallocationTools.weakdeps] - ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "9673d39decc5feece56ef3940e5dafba15ba0f81" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.1.2" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "7eb1686b4f04b82f96ed7a4ea5890a4f0c7a09f1" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.0" - -[[deps.PrettyPrint]] -git-tree-sha1 = "632eb4abab3449ab30c5e1afaa874f0b98b586e4" -uuid = "8162dcfd-2161-5ef2-ae6c-7681170c5f98" -version = "0.2.0" - -[[deps.PrettyTables]] -deps = ["Crayons", "Formatting", "LaTeXStrings", "Markdown", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "213579618ec1f42dea7dd637a42785a608b1ea9c" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.2.4" - -[[deps.Primes]] -deps = ["IntegerMathUtils"] -git-tree-sha1 = "311a2aa90a64076ea0fac2ad7492e914e6feeb81" -uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.3" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.Profile]] -deps = ["Printf"] -uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "d7a7aef8f8f2d537104f170139553b14dfe39fe9" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.7.2" - -[[deps.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 = "0c03844e2231e12fda4d0086fd7cbe4098ee8dc5" -uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" -version = "5.15.3+2" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "6ec7ac8412e83d57e313393220879ede1740f9ee" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.8.2" - -[[deps.QuasiMonteCarlo]] -deps = ["Accessors", "ConcreteStructs", "Distributions", "LatticeRules", "LinearAlgebra", "Primes", "Random", "Sobol", "StatsBase"] -git-tree-sha1 = "e23bba76fbb0a71991a57b3190126988bc64212a" -uuid = "8a4e6c94-4038-4cdc-81c3-7e6ffdb2a71b" -version = "0.3.1" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA", "Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.Random123]] -deps = ["Random", "RandomNumbers"] -git-tree-sha1 = "552f30e847641591ba3f39fd1bed559b9deb0ef3" -uuid = "74087812-796a-5b5d-8853-05524746bad3" -version = "1.6.1" - -[[deps.RandomExtensions]] -deps = ["Random", "SparseArrays"] -git-tree-sha1 = "062986376ce6d394b23d5d90f01d81426113a3c9" -uuid = "fb686558-2515-59ef-acaa-46db3789a887" -version = "0.4.3" - -[[deps.RandomNumbers]] -deps = ["Random", "Requires"] -git-tree-sha1 = "043da614cc7e95c703498a491e2c21f58a2b8111" -uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" -version = "1.5.3" - -[[deps.RangeArrays]] -git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" -uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d" -version = "0.3.2" - -[[deps.Ratios]] -deps = ["Requires"] -git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" -uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" -version = "0.4.5" -weakdeps = ["FixedPointNumbers"] - - [deps.Ratios.extensions] - RatiosFixedPointNumbersExt = "FixedPointNumbers" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.RecursiveArrayTools]] -deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "02ef02926f30d53b94be443bfaea010c47f6b556" -uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.38.5" - - [deps.RecursiveArrayTools.extensions] - RecursiveArrayToolsMeasurementsExt = "Measurements" - RecursiveArrayToolsTrackerExt = "Tracker" - RecursiveArrayToolsZygoteExt = "Zygote" - - [deps.RecursiveArrayTools.weakdeps] - Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" - -[[deps.RecursiveFactorization]] -deps = ["LinearAlgebra", "LoopVectorization", "Polyester", "SnoopPrecompile", "StrideArraysCore", "TriangularSolve"] -git-tree-sha1 = "9088515ad915c99026beb5436d0a09cd8c18163e" -uuid = "f2c3362d-daeb-58d1-803e-2bc74f2840b4" -version = "0.2.18" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.Referenceables]] -deps = ["Adapt"] -git-tree-sha1 = "e681d3bfa49cd46c3c161505caddf20f0e62aaa9" -uuid = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" -version = "0.1.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "90bc7a7c96410424509e4263e277e43250c05691" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.0" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.ResettableStacks]] -deps = ["StaticArrays"] -git-tree-sha1 = "256eeeec186fa7f26f2801732774ccf277f05db9" -uuid = "ae5879a3-cd67-5da8-be7f-38c6eb64a37b" -version = "1.1.1" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.0+0" - -[[deps.Roots]] -deps = ["ChainRulesCore", "CommonSolve", "Printf", "Setfield"] -git-tree-sha1 = "de432823e8aab4dd1a985be4be768f95acf152d4" -uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" -version = "2.0.17" - - [deps.Roots.extensions] - RootsForwardDiffExt = "ForwardDiff" - RootsIntervalRootFindingExt = "IntervalRootFinding" - RootsSymPyExt = "SymPy" - - [deps.Roots.weakdeps] - ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" - IntervalRootFinding = "d2bf35a9-74e0-55ec-b149-d360ff49b807" - SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" - -[[deps.RoundingEmulator]] -git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" -uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" -version = "0.2.1" - -[[deps.RuntimeGeneratedFunctions]] -deps = ["ExprTools", "SHA", "Serialization"] -git-tree-sha1 = "0b9b18d6236e9ab2b092defaacdffd929d572642" -uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" -version = "0.5.9" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SIMDTypes]] -git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c" -uuid = "94e857df-77ce-4151-89e5-788b33177be4" -version = "0.1.0" - -[[deps.SLEEFPirates]] -deps = ["IfElse", "Static", "VectorizationBase"] -git-tree-sha1 = "4b8586aece42bee682399c4c4aee95446aa5cd19" -uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" -version = "0.6.39" - -[[deps.SafeTestsets]] -git-tree-sha1 = "81ec49d645af090901120a1542e67ecbbe044db3" -uuid = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" -version = "0.1.0" - -[[deps.SciMLBase]] -deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] -git-tree-sha1 = "a22a12db91f6a921e28a7ae39a9546eed93fd92e" -uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "1.93.0" - -[[deps.SciMLExpectations]] -deps = ["DiffEqBase", "Distributions", "Integrals", "KernelDensity", "LinearAlgebra", "Parameters", "Random", "RecursiveArrayTools", "Reexport", "StaticArrays", "Statistics", "Zygote"] -git-tree-sha1 = "6b784198e634859eced71c782115853b9f58b6d3" -uuid = "afe9f18d-7609-4d0e-b7b7-af0cb72b8ea8" -version = "2.0.1" - -[[deps.SciMLNLSolve]] -deps = ["DiffEqBase", "LineSearches", "NLsolve", "Reexport", "SciMLBase"] -git-tree-sha1 = "9dfc8e9e3d58c0c74f1a821c762b5349da13eccf" -uuid = "e9a6253c-8580-4d32-9898-8661bb511710" -version = "0.1.8" - -[[deps.SciMLOperators]] -deps = ["ArrayInterface", "DocStringExtensions", "Lazy", "LinearAlgebra", "Setfield", "SparseArrays", "StaticArraysCore", "Tricks"] -git-tree-sha1 = "b1fe33c9984c6789b58419e62e7a2b92f9aa813e" -uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" -version = "0.3.3" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "30449ee12237627992a99d5e30ae63e4d78cd24a" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.0" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "04bdff0b09c65ff3e06a05e3eb7b120223da3d39" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.0" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.SetRounding]] -git-tree-sha1 = "d7a25e439d07a17b7cdf97eecee504c50fedf5f6" -uuid = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" -version = "0.2.1" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleNonlinearSolve]] -deps = ["ArrayInterfaceCore", "DiffEqBase", "FiniteDiff", "ForwardDiff", "LinearAlgebra", "Reexport", "SciMLBase", "SnoopPrecompile", "StaticArraysCore"] -git-tree-sha1 = "3f558105e8ef4aac1e22bf30bd1f1e95698bfc95" -uuid = "727e6d20-b764-4bd8-a329-72de5adea6c7" -version = "0.1.10" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.SimpleUnPack]] -git-tree-sha1 = "58e6353e72cde29b90a69527e56df1b5c3d8c437" -uuid = "ce78b400-467f-4804-87d8-8f486da07d0a" -version = "1.1.0" - -[[deps.SnoopPrecompile]] -deps = ["Preferences"] -git-tree-sha1 = "e760a70afdcd461cf01a575947738d359234665c" -uuid = "66db9d55-30c0-4569-8b51-7e840670fc0c" -version = "1.0.3" - -[[deps.Sobol]] -deps = ["DelimitedFiles", "Random"] -git-tree-sha1 = "5a74ac22a9daef23705f010f72c81d6925b19df8" -uuid = "ed01d8cd-4d21-5b2a-85b4-cc3bdc58bad4" -version = "1.5.0" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "c60ec5c62180f27efea3ba2908480f8055e17cee" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.1.1" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.SparseDiffTools]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "Reexport", "Requires", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "VertexSafeGraphs"] -git-tree-sha1 = "4c1a57bcbc0b795fbfdc2009e70f9c2fd2815bfe" -uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.4.1" -weakdeps = ["Zygote"] - - [deps.SparseDiffTools.extensions] - SparseDiffToolsZygoteExt = "Zygote" - -[[deps.Sparspak]] -deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"] -git-tree-sha1 = "342cf4b449c299d8d1ceaf00b7a49f4fbc7940e7" -uuid = "e56a9233-b9d6-4f03-8d0f-1825330902ac" -version = "0.3.9" - -[[deps.SpatialIndexing]] -git-tree-sha1 = "bacf5065cd7c0d6449b8bba6fa8e75b3087356b0" -uuid = "d4ead438-fe20-5cc5-a293-4fd39a41b74c" -version = "0.1.5" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "7beb031cf8145577fbccacd94b8a8f4ce78428d3" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.3.0" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "e08a62abc517eb79667d0a29dc08a3b589516bb5" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.15" - -[[deps.Static]] -deps = ["IfElse"] -git-tree-sha1 = "dbde6766fc677423598138a5951269432b0fcc90" -uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3" -version = "0.8.7" - -[[deps.StaticArrayInterface]] -deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "Requires", "SnoopPrecompile", "SparseArrays", "Static", "SuiteSparse"] -git-tree-sha1 = "33040351d2403b84afce74dae2e22d3f5b18edcb" -uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718" -version = "1.4.0" -weakdeps = ["OffsetArrays", "StaticArrays"] - - [deps.StaticArrayInterface.extensions] - StaticArrayInterfaceOffsetArraysExt = "OffsetArrays" - StaticArrayInterfaceStaticArraysExt = "StaticArrays" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore"] -git-tree-sha1 = "0da7e6b70d1bb40b1ace3b576da9ea2992f76318" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.0" -weakdeps = ["Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.0" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "30b9236691858e13f167ce829490a68e1a597782" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.2.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.21" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.0" -weakdeps = ["ChainRulesCore", "InverseFunctions"] - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - -[[deps.SteadyStateDiffEq]] -deps = ["DiffEqBase", "DiffEqCallbacks", "LinearAlgebra", "NLsolve", "Reexport", "SciMLBase"] -git-tree-sha1 = "6e801d0da4c81d9cd6a05d97340404f9892fba85" -uuid = "9672c7b4-1e72-59bd-8a11-6ac3964bc41f" -version = "1.16.0" - -[[deps.StochasticDiffEq]] -deps = ["Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DiffEqNoiseProcess", "DocStringExtensions", "FillArrays", "FiniteDiff", "ForwardDiff", "JumpProcesses", "LevyArea", "LinearAlgebra", "Logging", "MuladdMacro", "NLsolve", "OrdinaryDiffEq", "Random", "RandomNumbers", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLOperators", "SparseArrays", "SparseDiffTools", "StaticArrays", "UnPack"] -git-tree-sha1 = "ccf744171b3a83879158a4b3f3a430c1bc585123" -uuid = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" -version = "6.61.1" - -[[deps.StrideArraysCore]] -deps = ["ArrayInterface", "CloseOpenIntervals", "IfElse", "LayoutPointers", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface", "ThreadingUtilities"] -git-tree-sha1 = "26316a9a43d32ecd0c5b342cb36dc86305c73e53" -uuid = "7792a7ef-975c-4747-a70f-980b88e8d1da" -version = "0.4.16" - -[[deps.StringEncodings]] -deps = ["Libiconv_jll"] -git-tree-sha1 = "33c0da881af3248dafefb939a21694b97cfece76" -uuid = "69024149-9ee7-55f6-a4c4-859efe599b68" -version = "0.3.6" - -[[deps.StringManipulation]] -git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.0" - -[[deps.StructArrays]] -deps = ["Adapt", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] -git-tree-sha1 = "521a0e828e98bb69042fec1809c1b5a680eb7389" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.15" - -[[deps.StructEquality]] -deps = ["Compat"] -git-tree-sha1 = "192a9f1de3cfef80ab1a4ba7b150bb0e11ceedcf" -uuid = "6ec83bb0-ed9f-11e9-3b4c-2b04cb4e219c" -version = "2.1.0" - -[[deps.StructTypes]] -deps = ["Dates", "UUIDs"] -git-tree-sha1 = "ca4bccb03acf9faaf4137a9abc1881ed1841aa70" -uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" -version = "1.10.0" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" - -[[deps.Sundials]] -deps = ["CEnum", "DataStructures", "DiffEqBase", "Libdl", "LinearAlgebra", "Logging", "PrecompileTools", "Reexport", "SciMLBase", "SparseArrays", "Sundials_jll"] -git-tree-sha1 = "4931f9013c53128337ce8df54a2d38c79fe58d4c" -uuid = "c3572dad-4567-51f8-b174-8c6c989267f4" -version = "4.19.3" - -[[deps.Sundials_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg", "SuiteSparse_jll"] -git-tree-sha1 = "04777432d74ec5bc91ca047c9e0e0fd7f81acdb6" -uuid = "fb77eaff-e24c-56d4-86b1-d163f2edb164" -version = "5.2.1+0" - -[[deps.SwaggerMarkdown]] -deps = ["JSON", "JSONSchema", "Test", "UUIDs", "YAML"] -git-tree-sha1 = "ea2513768e67b5ca27bbbab19e34179714a78cab" -uuid = "1b6eb727-ad4b-44eb-9669-b9596a6e760f" -version = "0.2.1" - -[[deps.SymbolicIndexingInterface]] -deps = ["DocStringExtensions"] -git-tree-sha1 = "f8ab052bfcbdb9b48fad2c80c873aa0d0344dfe5" -uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -version = "0.2.2" - -[[deps.SymbolicUtils]] -deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "TimerOutputs", "Unityper"] -git-tree-sha1 = "5cb1f963f82e7b81305102dd69472fcd3e0e1483" -uuid = "d1185830-fcd6-423d-90d6-eec64667417b" -version = "1.0.5" - -[[deps.Symbolics]] -deps = ["ArrayInterface", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "Groebner", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "MacroTools", "Markdown", "NaNMath", "RecipesBase", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicUtils", "TreeViews"] -git-tree-sha1 = "c4e5688a9a5a2f4088cd1a779b0742be31cbe9aa" -uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" -version = "5.5.0" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] -git-tree-sha1 = "1544b926975372da01227b382066ab70e574a3ec" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.10.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TaylorSeries]] -deps = ["IntervalArithmetic", "LinearAlgebra", "Markdown", "Requires", "SparseArrays"] -git-tree-sha1 = "b123e0614b0f366e2073c4da7b1367cebda3f579" -uuid = "6aa5eb33-94cf-58f4-a9d0-e4b2c4fc25ea" -version = "0.14.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Term]] -deps = ["AbstractTrees", "CodeTracking", "Dates", "Highlights", "InteractiveUtils", "Logging", "Markdown", "MyterialColors", "OrderedCollections", "Parameters", "PrecompileTools", "ProgressLogging", "REPL", "Tables", "UUIDs", "Unicode", "UnicodeFun"] -git-tree-sha1 = "ffac67f6fbcbb32027d924b93ba91b7633af9220" -uuid = "22787eb5-b846-44ae-b979-8e399b8463ab" -version = "2.0.5" - -[[deps.TerminalLoggers]] -deps = ["LeftChildRightSiblingTrees", "Logging", "Markdown", "Printf", "ProgressLogging", "UUIDs"] -git-tree-sha1 = "f133fab380933d042f6796eda4e130272ba520ca" -uuid = "5d786b92-1e48-4d6f-9151-6b4477ca9bed" -version = "0.1.7" - -[[deps.Terming]] -deps = ["REPL", "Test"] -git-tree-sha1 = "9ef2648010c3a74ab4ea44a88e8640f0d1034d1f" -uuid = "5a1048b7-9ca6-4e8a-8e2e-1f932e78ac4e" -version = "0.2.6" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.ThreadingUtilities]] -deps = ["ManualMemory"] -git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27" -uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5" -version = "0.5.2" - -[[deps.ThreadsX]] -deps = ["ArgCheck", "BangBang", "ConstructionBase", "InitialValues", "MicroCollections", "Referenceables", "Setfield", "SplittablesBase", "Transducers"] -git-tree-sha1 = "34e6bcf36b9ed5d56489600cf9f3c16843fa2aa2" -uuid = "ac1d9e8a-700a-412c-b207-f0111f4b6c0d" -version = "0.1.11" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "LazyArtifacts", "Mocking", "Printf", "RecipesBase", "Scratch", "Unicode"] -git-tree-sha1 = "cdaa0c2a4449724aded839550eca7d7240bb6938" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.10.0" - -[[deps.TimerOutputs]] -deps = ["ExprTools", "Printf"] -git-tree-sha1 = "f548a9e9c490030e545f72074a41edfd0e5bcdd7" -uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" -version = "0.5.23" - -[[deps.ToeplitzMatrices]] -deps = ["AbstractFFTs", "DSP", "LinearAlgebra", "StatsBase"] -git-tree-sha1 = "326388c0c53565fb21eecafb6176b1cc5d225d34" -uuid = "c751599d-da0a-543b-9d20-d0a503d91d24" -version = "0.8.1" - -[[deps.Tokenize]] -git-tree-sha1 = "90538bf898832b6ebd900fa40f223e695970e3a5" -uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624" -version = "0.5.25" - -[[deps.Tracker]] -deps = ["Adapt", "DiffRules", "ForwardDiff", "Functors", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NNlib", "NaNMath", "Optimisers", "Printf", "Random", "Requires", "SpecialFunctions", "Statistics"] -git-tree-sha1 = "92364c27aa35c0ee36e6e010b704adaade6c409c" -uuid = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" -version = "0.2.26" -weakdeps = ["PDMats"] - - [deps.Tracker.extensions] - TrackerPDMatsExt = "PDMats" - -[[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "a66fb81baec325cf6ccafa243af573b031e87b00" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.77" - - [deps.Transducers.extensions] - TransducersBlockArraysExt = "BlockArrays" - TransducersDataFramesExt = "DataFrames" - TransducersLazyArraysExt = "LazyArrays" - TransducersOnlineStatsBaseExt = "OnlineStatsBase" - TransducersReferenceablesExt = "Referenceables" - - [deps.Transducers.weakdeps] - BlockArrays = "8e7c35d0-a365-5155-bbbb-fb81a777f24e" - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - LazyArrays = "5078a376-72f3-5289-bfd5-ec5146d43c02" - OnlineStatsBase = "925886fa-5bf2-5e8e-b522-a9147a512338" - Referenceables = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" - -[[deps.Trapz]] -git-tree-sha1 = "79eb0ed763084a3e7de81fe1838379ac6a23b6a0" -uuid = "592b5752-818d-11e9-1e9a-2b8ca4a44cd1" -version = "2.0.3" - -[[deps.TreeViews]] -deps = ["Test"] -git-tree-sha1 = "8d0d7a3fe2f30d6a7f833a5f19f7c7a5b396eae6" -uuid = "a2a6695c-b41b-5b7d-aed9-dbfdeacea5d7" -version = "0.3.0" - -[[deps.TriangularSolve]] -deps = ["CloseOpenIntervals", "IfElse", "LayoutPointers", "LinearAlgebra", "LoopVectorization", "Polyester", "Static", "VectorizationBase"] -git-tree-sha1 = "31eedbc0b6d07c08a700e26d31298ac27ef330eb" -uuid = "d5829a12-d9aa-46ab-831f-fb7c9ab06edf" -version = "0.1.19" - -[[deps.Tricks]] -git-tree-sha1 = "aadb748be58b492045b4f56166b5188aa63ce549" -uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.7" - -[[deps.TruncatedStacktraces]] -deps = ["InteractiveUtils", "MacroTools", "Preferences"] -git-tree-sha1 = "ea3e54c2bdde39062abf5a9758a23735558705e1" -uuid = "781d530d-4396-4725-bb49-402e4bee1e77" -version = "1.4.0" - -[[deps.Turing]] -deps = ["AbstractMCMC", "AdvancedHMC", "AdvancedMH", "AdvancedPS", "AdvancedVI", "BangBang", "Bijectors", "DataStructures", "Distributions", "DistributionsAD", "DocStringExtensions", "DynamicPPL", "EllipticalSliceSampling", "ForwardDiff", "Libtask", "LinearAlgebra", "LogDensityProblems", "LogDensityProblemsAD", "MCMCChains", "NamedArrays", "Printf", "Random", "Reexport", "Requires", "SciMLBase", "Setfield", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Tracker"] -git-tree-sha1 = "26cdfce1cc0301fe832eaa419a5d0edd6a554004" -uuid = "fce5fe82-541a-59a6-adf8-730c64b5f9a0" -version = "0.24.4" - -[[deps.URIs]] -git-tree-sha1 = "074f993b0ca030848b897beff716d93aca60f06a" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.4.2" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "c4d2a349259c8eba66a00a540d550f122a3ab228" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.15.0" -weakdeps = ["ConstructionBase", "InverseFunctions"] - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.Unityper]] -deps = ["ConstructionBase"] -git-tree-sha1 = "d5f4ec8c22db63bd3ccb239f640e895cfde145aa" -uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" -version = "0.1.2" - -[[deps.UnsafeAtomics]] -git-tree-sha1 = "6331ac3440856ea1988316b46045303bef658278" -uuid = "013be700-e6cd-48c3-b4a1-df204f14c38f" -version = "0.2.1" - -[[deps.UnsafeAtomicsLLVM]] -deps = ["LLVM", "UnsafeAtomics"] -git-tree-sha1 = "323e3d0acf5e78a56dfae7bd8928c989b4f3083e" -uuid = "d80eeb9a-aca5-4d75-85e5-170c8b632249" -version = "0.1.3" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.VectorizationBase]] -deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"] -git-tree-sha1 = "b182207d4af54ac64cbc71797765068fdeff475d" -uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f" -version = "0.21.64" - -[[deps.VertexSafeGraphs]] -deps = ["Graphs"] -git-tree-sha1 = "8351f8d73d7e880bfc042a8b6922684ebeafb35c" -uuid = "19fa3120-7c27-5ec5-8db8-b0b0aa330d6f" -version = "0.2.0" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "ed8d92d9774b077c53e1da50fd81a36af3744c1c" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+0" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.25.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.WoodburyMatrices]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "de67fa59e33ad156a590055375a30b23c40299d3" -uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "0.5.5" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "93c41695bc1c08c46c5899f4fe06d6ead504bb73" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.10.3+0" - -[[deps.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" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.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" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.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" - -[[deps.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" - -[[deps.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" - -[[deps.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" - -[[deps.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" - -[[deps.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" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.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" - -[[deps.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" - -[[deps.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" - -[[deps.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" - -[[deps.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" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.YAML]] -deps = ["Base64", "Dates", "Printf", "StringEncodings"] -git-tree-sha1 = "e6330e4b731a6af7959673621e91645eb1356884" -uuid = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" -version = "0.4.9" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.5+0" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "5be3ddb88fc992a7d8ea96c3f10a49a7e98ebc7b" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.62" -weakdeps = ["Colors", "Distances", "Tracker"] - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "977aed5d006b840e2e40c0b48984f7463109046d" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.3" - -[[deps.fzf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "868e669ccb12ba16eaf50cb2957ee2ff61261c56" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.29.0+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.4.0+0" - -[[deps.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" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.38+0" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9ebfc140cc56e8c2156a15ceac2f0302e327ac0a" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+0" diff --git a/Project.toml b/Project.toml index 9b2bdba..55c87a3 100644 --- a/Project.toml +++ b/Project.toml @@ -1,47 +1,49 @@ name = "SimulationService" uuid = "e66378d9-a322-4933-8764-0ce0bcab4993" authors = ["Five Grant <5@fivegrant.com>"] -version = "0.6.0" +version = "0.7.0" [deps] AMQPClient = "79c8b4cd-a41a-55fa-907c-fab5288e1383" -AlgebraicPetri = "4f99eebe-17bf-4e98-b6a1-2c4f205a959b" -Bijections = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -Catlab = "134e5e36-593f-5add-ad60-77f754baafbe" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" -DiffEqCallbacks = "459566f4-90b8-5000-8ac3-15dfb0a30def" DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa" Downloads = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -EasyModelAnalysis = "ef4b24a4-a090-4686-a932-e7e56a5a83bd" -ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" +EasyConfig = "acab07b0-f158-46d4-8913-50acef6d41fe" HTTP = "cd3eb016-35fb-5094-929b-558a96fad6f3" -JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1" -JSONTables = "b9914132-a727-11e9-1322-f18e41205b0b" JobSchedulers = "eeff360b-c02d-44d3-ab26-4013c616a17e" -LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" MathML = "abcecc63-2b08-419c-80c4-c63dca6fa478" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" -NamedTupleTools = "d9ec5142-1e00-5aa0-9d6a-321866360f50" OpenAPI = "d5e62ea6-ddf3-4d43-8e4c-ad5e6c8bfd7d" -OpenBLAS32_jll = "656ef2d0-ae68-5445-9ca0-591084a874a2" -OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" Oxygen = "df9a0d86-3283-4920-82dc-4555fc0d1d8b" -Pipelines = "ef544631-5c6f-4e9b-994c-12e7a4cd724c" -Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -Preferences = "21216c6a-2e73-6563-6e65-726566657250" -Reexport = "189a3867-3050-52da-a836-e630ba90ab69" -SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" SwaggerMarkdown = "1b6eb727-ad4b-44eb-9669-b9596a6e760f" -SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5" -Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" -TerminalLoggers = "5d786b92-1e48-4d6f-9151-6b4477ca9bed" -Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" UUIDs = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" -UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" + +[compat] +AMQPClient = "0.5" +CSV = "0.10" +DataFrames = "1.6" +DifferentialEquations = "7.8" +EasyConfig = "0.1.15" +HTTP = "1.9" +JSON3 = "1.13" +JobSchedulers = "0.8" +MathML = "0.1" +ModelingToolkit = "8.62" +OpenAPI = "0.1" +Oxygen = "1.1" +SciMLBase = "1.93" +SwaggerMarkdown = "0.2" +YAML = "0.4" +julia = "1.9" + +[extras] +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[targets] +test = ["Test"] diff --git a/README.md b/README.md index cbc6b1a..8e4c6bf 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,109 @@ -# Simulation Service -Simulation Service provides an interface and job runner for [ASKEM models](https://github.com/DARPA-ASKEM/Model-Representations). +# SimulationService.jl -See example payload at [./examples/request.json](./examples/request.json) +Simulation Service runs a REST API for running jobs in the [ASKEM Model Representation](https://github.com/DARPA-ASKEM/Model-Representations). -## Usage +See example payloads in the `./examples` directory. + +## Development Environment + +```julia +using Revise # auto-update the server with your changes +using SimulationService +SimulationService.SIMSERVICE_ENABLE_TDS = false # opt out of Terrarium Data Service + +start!() # run server + +# make code changes that you want to test... + +start!() # Replaces the running server with your changes +``` + +## Run Server via Docker -With docker compose: ``` docker compose --file docker/docker-compose.yml up --build ``` -With Julia REPL assuming you want to run it standalone: +## Example Request with Local Server in Julia + +```julia +using SimulationService, HTTP, JSON3, EasyConfig + +# Start the server/job scheduler without Terrarium Data Service +SimulationService.SIMSERVICE_ENABLE_TDS = false +start!() + +url = SimulationService.server_url[] # server url +@info JSON3.read(HTTP.get(url).body) # Is server running? (status == "ok") + +# JSON in ASKEM Model Representation +model = JSON3.read(read("./examples/BIOMD0000000955_askenet.json"), Config) + +# You can directly provide AMR JSON with the `test_amr` key +# (Note: this does not look like a request that would be seen in production) +json = Config(model = model, timespan=(0, 90)) + +body = JSON3.write(json) + +# Kick off the simulation job +res = HTTP.post("$url/simulate", ["Content-Type" => "application/json"]; body=body) +# Get the `job_id` so we can query the job status and get results +job_id = JSON3.read(res.body).simulation_id + +# Re-run this until `status_obj.status == "done"` +status = JSON3.read(HTTP.get("$url/jobs/status/$job_id").body) + +# close down server and scheduler +stop!() ``` ->> export ENABLE_TDS=false # Include if you would like to disable backend services ->> julia --project --threads 15 # We need multithreading -julia> using SimulationService, HTTP -julia> import JSON3 as JSON -julia> start!() -julia> model_json = String(read("./examples/BIOMD0000000955_askenet.json")) -julia> # Let's do a simulate -julia> operation = "simulate" -julia> operation_args = Dict(:model=> model_json, :timespan => Dict("start" => 0, "end" => 90)) # should match up to what's in Availble.jl -julia> simulation = SimulationService.make_deterministic_run(operation_args, operation) -julia> simulation_id = JSON.read(String(simulation.body)).simulation_id -julia> status = SimulationService.retrieve_job(nothing, simulation_id, "status") # rerun until complete -julia> result = SimulationService.retrieve_job(nothing, simulation_id, "result") -julia> # output of REST API and Scheduler -julia> stop!() -julia> # you may safely leave the repl or rerun `start!` -```` - -To check available endpoints, try checking [localhost:8080/docs](localhost:8080/docs) + +## Incoming Requests + +The OpenAPI spec [here](https://raw.githubusercontent.com/DARPA-ASKEM/simulation-api-spec/main/openapi.yaml) is the source of truth. See the JSON files in `./examples` that begin with `request-...`. + +Here's a summary of what the JSON should like in a request: + +1. Every request should contain `"engine": "sciml"` +2. Endpoint-specific keys: + - `/simulate` + - Required: `model_config_id`, `timespan` + - Optional: `extra` + - `/calibrate` + - Required: `model_config_id`, `dataset` + - Optional: `extra`, `timespan` + - `/ensemble` + - Required: `model_config_ids`, `timespan` + - Optional: `extra` +3. Additional keys (for testing/when TDS is disabled). + - `csv`: A String containing the contents of a CSV file. + - `local_csv`: The file path of a CSV file, local to where the server is running. + - `model`: JSON object in the The ASKEM Model Representation (AMR) format. + +### How Incoming Requests are Processed + +An incoming `HTTP.Request` gets turned into a `SimulationService.OperationRequest` object that holds +all the necessary info for running/solving the model and returning results. + + +1. Request arrives +2. We process the keys into useful things for `OperationRequest` + - `model_config_id(s)` --> Retrieve model(s) in AMR format from TDS (`model::Config` in `OperationRequest`). + - `dataset` --> Retrieve dataset from TDS (`df::DataFrame` in `OperationRequest`). +3. We start the job via JobSchedulers.jl, which performs: + - Update job status in TDS to "running". + - Run/solve the model/simulation. + - Upload results to S3. + - Update job status in TDS to "complete". +4. Return a 201 response (above job runs async) with JSON that holds the `simulation_id` (client's term), which we call `job_id`. + + +## Architecture + +The Simulation Service (soon to be renamed SciML Service) is a REST API that wraps +specific SciML tasks. The service should match the spec [here](https://github.com/DARPA-ASKEM/simulation-api-spec) +since PyCIEMSS Service and SciML Service ideally are hot swappable. + +The API creates a job using the JobSchedulers.jl library and updates the Terarium Data Service (TDS) with the status +of the job throughout its execution. Once the job completes, the results are written to S3. With most of the output artifacts, we do little postprocessing +after completing the SciML portion. diff --git a/examples/BIOMD0000000955_askenet.json b/examples/BIOMD0000000955_askenet.json index a1b78f7..afa448f 100644 --- a/examples/BIOMD0000000955_askenet.json +++ b/examples/BIOMD0000000955_askenet.json @@ -1,693 +1,693 @@ { - "name": "Giordano2020 - SIDARTHE model of COVID-19 spread in Italy", - "schema": "https://raw.githubusercontent.com/DARPA-ASKEM/Model-Representations/petrinet_v0.5/petrinet/petrinet_schema.json", - "schema_name": "petrinet", - "description": "Giordano2020 - SIDARTHE model of COVID-19 spread in Italy", - "model_version": "0.1", - "properties": {}, - "model": { - "states": [ - { - "id": "Susceptible", - "name": "Susceptible", - "grounding": { - "identifiers": { - "ido": "0000514" - }, - "modifiers": {} - }, - "units": { - "expression": "1", - "expression_mathml": "1" - } - }, - { - "id": "Diagnosed", - "name": "Diagnosed", - "grounding": { - "identifiers": { - "ido": "0000511" - }, - "modifiers": { - "diagnosis": "ncit:C15220" - } - }, - "units": { - "expression": "1", - "expression_mathml": "1" - } - }, - { - "id": "Infected", - "name": "Infected", - "grounding": { - "identifiers": { - "ido": "0000511" - }, - "modifiers": {} - }, - "units": { - "expression": "1", - "expression_mathml": "1" - } - }, - { - "id": "Ailing", - "name": "Ailing", - "grounding": { - "identifiers": { - "ido": "0000511" - }, - "modifiers": { - "disease_severity": "ncit:C25269", - "diagnosis": "ncit:C113725" - } - }, - "units": { - "expression": "1", - "expression_mathml": "1" - } - }, - { - "id": "Recognized", - "name": "Recognized", - "grounding": { - "identifiers": { - "ido": "0000511" - }, - "modifiers": { - "diagnosis": "ncit:C15220" - } - }, - "units": { - "expression": "1", - "expression_mathml": "1" - } - }, - { - "id": "Healed", - "name": "Healed", - "grounding": { - "identifiers": { - "ido": "0000592" - }, - "modifiers": {} - }, - "units": { - "expression": "1", - "expression_mathml": "1" - } - }, - { - "id": "Threatened", - "name": "Threatened", - "grounding": { - "identifiers": { - "ido": "0000511" - }, - "modifiers": { - "disease_severity": "ncit:C25467" - } - }, - "units": { - "expression": "1", - "expression_mathml": "1" - } - }, - { - "id": "Extinct", - "name": "Extinct", - "grounding": { - "identifiers": { - "ncit": "C28554" - }, - "modifiers": {} - }, - "units": { - "expression": "1", - "expression_mathml": "1" - } - } - ], - "transitions": [ - { - "id": "t1", - "input": [ - "Diagnosed", - "Susceptible" - ], - "output": [ - "Diagnosed", - "Infected" - ], - "properties": { - "name": "t1" - } - }, - { - "id": "t2", - "input": [ - "Ailing", - "Susceptible" - ], - "output": [ - "Ailing", - "Infected" - ], - "properties": { - "name": "t2" - } - }, - { - "id": "t3", - "input": [ - "Recognized", - "Susceptible" - ], - "output": [ - "Recognized", - "Infected" - ], - "properties": { - "name": "t3" - } - }, - { - "id": "t4", - "input": [ - "Infected", - "Susceptible" - ], - "output": [ - "Infected", - "Infected" - ], - "properties": { - "name": "t4" - } - }, - { - "id": "t5", - "input": [ - "Infected" - ], - "output": [ - "Diagnosed" - ], - "properties": { - "name": "t5" - } - }, - { - "id": "t6", - "input": [ - "Infected" - ], - "output": [ - "Ailing" - ], - "properties": { - "name": "t6" - } - }, - { - "id": "t7", - "input": [ - "Infected" - ], - "output": [ - "Healed" - ], - "properties": { - "name": "t7" - } - }, - { - "id": "t8", - "input": [ - "Diagnosed" - ], - "output": [ - "Recognized" - ], - "properties": { - "name": "t8" - } - }, - { - "id": "t9", - "input": [ - "Diagnosed" - ], - "output": [ - "Healed" - ], - "properties": { - "name": "t9" - } - }, - { - "id": "t10", - "input": [ - "Ailing" - ], - "output": [ - "Recognized" - ], - "properties": { - "name": "t10" - } - }, - { - "id": "t11", - "input": [ - "Ailing" - ], - "output": [ - "Healed" - ], - "properties": { - "name": "t11" - } - }, - { - "id": "t12", - "input": [ - "Ailing" - ], - "output": [ - "Threatened" - ], - "properties": { - "name": "t12" - } - }, - { - "id": "t13", - "input": [ - "Recognized" - ], - "output": [ - "Threatened" - ], - "properties": { - "name": "t13" - } - }, - { - "id": "t14", - "input": [ - "Recognized" - ], - "output": [ - "Healed" - ], - "properties": { - "name": "t14" - } - }, - { - "id": "t15", - "input": [ - "Threatened" - ], - "output": [ - "Extinct" - ], - "properties": { - "name": "t15" - } - }, - { - "id": "t16", - "input": [ - "Threatened" - ], - "output": [ - "Healed" - ], - "properties": { - "name": "t16" - } - } - ] - }, - "semantics": { - "ode": { - "rates": [ - { - "target": "t1", - "expression": "Diagnosed*Susceptible*beta", - "expression_mathml": "DiagnosedSusceptiblebeta" - }, - { - "target": "t2", - "expression": "Ailing*Susceptible*gamma", - "expression_mathml": "AilingSusceptiblegamma" - }, - { - "target": "t3", - "expression": "Recognized*Susceptible*delta", - "expression_mathml": "RecognizedSusceptibledelta" - }, - { - "target": "t4", - "expression": "Infected*Susceptible*alpha", - "expression_mathml": "InfectedSusceptiblealpha" - }, - { - "target": "t5", - "expression": "Infected*epsilon", - "expression_mathml": "Infectedepsilon" - }, - { - "target": "t6", - "expression": "Infected*zeta", - "expression_mathml": "Infectedzeta" - }, - { - "target": "t7", - "expression": "Infected*lambda", - "expression_mathml": "Infectedlambda" - }, - { - "target": "t8", - "expression": "Diagnosed*eta", - "expression_mathml": "Diagnosedeta" - }, - { - "target": "t9", - "expression": "Diagnosed*rho", - "expression_mathml": "Diagnosedrho" - }, - { - "target": "t10", - "expression": "Ailing*theta", - "expression_mathml": "Ailingtheta" - }, - { - "target": "t11", - "expression": "Ailing*kappa", - "expression_mathml": "Ailingkappa" - }, - { - "target": "t12", - "expression": "Ailing*mu", - "expression_mathml": "Ailingmu" - }, - { - "target": "t13", - "expression": "Recognized*nu", - "expression_mathml": "Recognizednu" - }, - { - "target": "t14", - "expression": "Recognized*xi", - "expression_mathml": "Recognizedxi" - }, - { - "target": "t15", - "expression": "Threatened*tau", - "expression_mathml": "Threatenedtau" - }, - { - "target": "t16", - "expression": "Threatened*sigma", - "expression_mathml": "Threatenedsigma" - } - ], - "initials": [ - { - "target": "Susceptible", - "expression": "0.999996300000000", - "expression_mathml": "0.99999629999999995" - }, - { - "target": "Diagnosed", - "expression": "3.33333333000000e-7", - "expression_mathml": "3.33333333e-7" - }, - { - "target": "Infected", - "expression": "3.33333333000000e-6", - "expression_mathml": "3.3333333299999999e-6" - }, - { - "target": "Ailing", - "expression": "1.66666666000000e-8", - "expression_mathml": "1.6666666599999999e-8" - }, - { - "target": "Recognized", - "expression": "3.33333333000000e-8", - "expression_mathml": "3.33333333e-8" - }, - { - "target": "Healed", - "expression": "0.0", - "expression_mathml": "0.0" - }, - { - "target": "Threatened", - "expression": "0.0", - "expression_mathml": "0.0" - }, - { - "target": "Extinct", - "expression": "0.0", - "expression_mathml": "0.0" - } - ], - "parameters": [ - { - "id": "beta", - "value": 0.011, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.008799999999999999, - "maximum": 0.0132 + "name": "Giordano2020 - SIDARTHE model of COVID-19 spread in Italy", + "schema": "https://raw.githubusercontent.com/DARPA-ASKEM/Model-Representations/petrinet_v0.5/petrinet/petrinet_schema.json", + "schema_name": "petrinet", + "description": "Giordano2020 - SIDARTHE model of COVID-19 spread in Italy", + "model_version": "0.1", + "properties": {}, + "model": { + "states": [ + { + "id": "Susceptible", + "name": "Susceptible", + "grounding": { + "identifiers": { + "ido": "0000514" + }, + "modifiers": {} + }, + "units": { + "expression": "1", + "expression_mathml": "1" + } + }, + { + "id": "Diagnosed", + "name": "Diagnosed", + "grounding": { + "identifiers": { + "ido": "0000511" + }, + "modifiers": { + "diagnosis": "ncit:C15220" + } + }, + "units": { + "expression": "1", + "expression_mathml": "1" + } + }, + { + "id": "Infected", + "name": "Infected", + "grounding": { + "identifiers": { + "ido": "0000511" + }, + "modifiers": {} + }, + "units": { + "expression": "1", + "expression_mathml": "1" + } + }, + { + "id": "Ailing", + "name": "Ailing", + "grounding": { + "identifiers": { + "ido": "0000511" + }, + "modifiers": { + "disease_severity": "ncit:C25269", + "diagnosis": "ncit:C113725" + } + }, + "units": { + "expression": "1", + "expression_mathml": "1" + } + }, + { + "id": "Recognized", + "name": "Recognized", + "grounding": { + "identifiers": { + "ido": "0000511" + }, + "modifiers": { + "diagnosis": "ncit:C15220" + } + }, + "units": { + "expression": "1", + "expression_mathml": "1" + } + }, + { + "id": "Healed", + "name": "Healed", + "grounding": { + "identifiers": { + "ido": "0000592" + }, + "modifiers": {} + }, + "units": { + "expression": "1", + "expression_mathml": "1" + } + }, + { + "id": "Threatened", + "name": "Threatened", + "grounding": { + "identifiers": { + "ido": "0000511" + }, + "modifiers": { + "disease_severity": "ncit:C25467" + } + }, + "units": { + "expression": "1", + "expression_mathml": "1" + } + }, + { + "id": "Extinct", + "name": "Extinct", + "grounding": { + "identifiers": { + "ncit": "C28554" + }, + "modifiers": {} + }, + "units": { + "expression": "1", + "expression_mathml": "1" + } } - } - }, - { - "id": "gamma", - "value": 0.456, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.3648, - "maximum": 0.5472 + ], + "transitions": [ + { + "id": "t1", + "input": [ + "Diagnosed", + "Susceptible" + ], + "output": [ + "Diagnosed", + "Infected" + ], + "properties": { + "name": "t1" + } + }, + { + "id": "t2", + "input": [ + "Ailing", + "Susceptible" + ], + "output": [ + "Ailing", + "Infected" + ], + "properties": { + "name": "t2" + } + }, + { + "id": "t3", + "input": [ + "Recognized", + "Susceptible" + ], + "output": [ + "Recognized", + "Infected" + ], + "properties": { + "name": "t3" + } + }, + { + "id": "t4", + "input": [ + "Infected", + "Susceptible" + ], + "output": [ + "Infected", + "Infected" + ], + "properties": { + "name": "t4" + } + }, + { + "id": "t5", + "input": [ + "Infected" + ], + "output": [ + "Diagnosed" + ], + "properties": { + "name": "t5" + } + }, + { + "id": "t6", + "input": [ + "Infected" + ], + "output": [ + "Ailing" + ], + "properties": { + "name": "t6" + } + }, + { + "id": "t7", + "input": [ + "Infected" + ], + "output": [ + "Healed" + ], + "properties": { + "name": "t7" + } + }, + { + "id": "t8", + "input": [ + "Diagnosed" + ], + "output": [ + "Recognized" + ], + "properties": { + "name": "t8" + } + }, + { + "id": "t9", + "input": [ + "Diagnosed" + ], + "output": [ + "Healed" + ], + "properties": { + "name": "t9" + } + }, + { + "id": "t10", + "input": [ + "Ailing" + ], + "output": [ + "Recognized" + ], + "properties": { + "name": "t10" + } + }, + { + "id": "t11", + "input": [ + "Ailing" + ], + "output": [ + "Healed" + ], + "properties": { + "name": "t11" + } + }, + { + "id": "t12", + "input": [ + "Ailing" + ], + "output": [ + "Threatened" + ], + "properties": { + "name": "t12" + } + }, + { + "id": "t13", + "input": [ + "Recognized" + ], + "output": [ + "Threatened" + ], + "properties": { + "name": "t13" + } + }, + { + "id": "t14", + "input": [ + "Recognized" + ], + "output": [ + "Healed" + ], + "properties": { + "name": "t14" + } + }, + { + "id": "t15", + "input": [ + "Threatened" + ], + "output": [ + "Extinct" + ], + "properties": { + "name": "t15" + } + }, + { + "id": "t16", + "input": [ + "Threatened" + ], + "output": [ + "Healed" + ], + "properties": { + "name": "t16" + } } - } - }, - { - "id": "delta", - "value": 0.011, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.008799999999999999, - "maximum": 0.0132 + ] + }, + "semantics": { + "ode": { + "rates": [ + { + "target": "t1", + "expression": "Diagnosed*Susceptible*beta", + "expression_mathml": "DiagnosedSusceptiblebeta" + }, + { + "target": "t2", + "expression": "Ailing*Susceptible*gamma", + "expression_mathml": "AilingSusceptiblegamma" + }, + { + "target": "t3", + "expression": "Recognized*Susceptible*delta", + "expression_mathml": "RecognizedSusceptibledelta" + }, + { + "target": "t4", + "expression": "Infected*Susceptible*alpha", + "expression_mathml": "InfectedSusceptiblealpha" + }, + { + "target": "t5", + "expression": "Infected*epsilon", + "expression_mathml": "Infectedepsilon" + }, + { + "target": "t6", + "expression": "Infected*zeta", + "expression_mathml": "Infectedzeta" + }, + { + "target": "t7", + "expression": "Infected*lambda", + "expression_mathml": "Infectedlambda" + }, + { + "target": "t8", + "expression": "Diagnosed*eta", + "expression_mathml": "Diagnosedeta" + }, + { + "target": "t9", + "expression": "Diagnosed*rho", + "expression_mathml": "Diagnosedrho" + }, + { + "target": "t10", + "expression": "Ailing*theta", + "expression_mathml": "Ailingtheta" + }, + { + "target": "t11", + "expression": "Ailing*kappa", + "expression_mathml": "Ailingkappa" + }, + { + "target": "t12", + "expression": "Ailing*mu", + "expression_mathml": "Ailingmu" + }, + { + "target": "t13", + "expression": "Recognized*nu", + "expression_mathml": "Recognizednu" + }, + { + "target": "t14", + "expression": "Recognized*xi", + "expression_mathml": "Recognizedxi" + }, + { + "target": "t15", + "expression": "Threatened*tau", + "expression_mathml": "Threatenedtau" + }, + { + "target": "t16", + "expression": "Threatened*sigma", + "expression_mathml": "Threatenedsigma" + } + ], + "initials": [ + { + "target": "Susceptible", + "expression": "0.999996300000000", + "expression_mathml": "0.99999629999999995" + }, + { + "target": "Diagnosed", + "expression": "3.33333333000000e-7", + "expression_mathml": "3.33333333e-7" + }, + { + "target": "Infected", + "expression": "3.33333333000000e-6", + "expression_mathml": "3.3333333299999999e-6" + }, + { + "target": "Ailing", + "expression": "1.66666666000000e-8", + "expression_mathml": "1.6666666599999999e-8" + }, + { + "target": "Recognized", + "expression": "3.33333333000000e-8", + "expression_mathml": "3.33333333e-8" + }, + { + "target": "Healed", + "expression": "0.0", + "expression_mathml": "0.0" + }, + { + "target": "Threatened", + "expression": "0.0", + "expression_mathml": "0.0" + }, + { + "target": "Extinct", + "expression": "0.0", + "expression_mathml": "0.0" + } + ], + "parameters": [ + { + "id": "beta", + "value": 0.011, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.008799999999999999, + "maximum": 0.0132 + } + } + }, + { + "id": "gamma", + "value": 0.456, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.3648, + "maximum": 0.5472 + } + } + }, + { + "id": "delta", + "value": 0.011, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.008799999999999999, + "maximum": 0.0132 + } + } + }, + { + "id": "alpha", + "value": 0.57, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.45599999999999996, + "maximum": 0.6839999999999999 + } + } + }, + { + "id": "epsilon", + "value": 0.171, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.1368, + "maximum": 0.20520000000000002 + } + } + }, + { + "id": "zeta", + "value": 0.125, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.1, + "maximum": 0.15 + } + } + }, + { + "id": "lambda", + "value": 0.034, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.027200000000000002, + "maximum": 0.0408 + } + } + }, + { + "id": "eta", + "value": 0.125, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.1, + "maximum": 0.15 + } + } + }, + { + "id": "rho", + "value": 0.034, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.027200000000000002, + "maximum": 0.0408 + } + } + }, + { + "id": "theta", + "value": 0.371, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.2968, + "maximum": 0.4452 + } + } + }, + { + "id": "kappa", + "value": 0.017, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.013600000000000001, + "maximum": 0.0204 + } + } + }, + { + "id": "mu", + "value": 0.017, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.013600000000000001, + "maximum": 0.0204 + } + } + }, + { + "id": "nu", + "value": 0.027, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.0216, + "maximum": 0.0324 + } + } + }, + { + "id": "xi", + "value": 0.017, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.013600000000000001, + "maximum": 0.0204 + } + } + }, + { + "id": "tau", + "value": 0.01, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.008, + "maximum": 0.012 + } + } + }, + { + "id": "sigma", + "value": 0.017, + "distribution": { + "type": "StandardUniform1", + "parameters": { + "minimum": 0.013600000000000001, + "maximum": 0.0204 + } + } + } + ], + "observables": [ + { + "id": "Cases", + "name": "Cases", + "expression": "Diagnosed + Recognized + Threatened", + "expression_mathml": "DiagnosedRecognizedThreatened" + }, + { + "id": "Hospitalizations", + "name": "Hospitalizations", + "expression": "Recognized + Threatened", + "expression_mathml": "RecognizedThreatened" + }, + { + "id": "Deaths", + "name": "Deaths", + "expression": "Extinct", + "expression_mathml": "Extinct" + } + ], + "time": { + "id": "t", + "units": { + "expression": "day", + "expression_mathml": "day" + } } } }, - { - "id": "alpha", - "value": 0.57, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.45599999999999996, - "maximum": 0.6839999999999999 - } + "metadata": { + "annotations": { + "license": "CC0", + "authors": [], + "references": [ + "pubmed:32322102" + ], + "time_scale": null, + "time_start": null, + "time_end": null, + "locations": [], + "pathogens": [ + "ncbitaxon:2697049" + ], + "diseases": [ + "doid:0080600" + ], + "hosts": [ + "ncbitaxon:9606" + ], + "model_types": [ + "mamo:0000028" + ] } - }, - { - "id": "epsilon", - "value": 0.171, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.1368, - "maximum": 0.20520000000000002 - } - } - }, - { - "id": "zeta", - "value": 0.125, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.1, - "maximum": 0.15 - } - } - }, - { - "id": "lambda", - "value": 0.034, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.027200000000000002, - "maximum": 0.0408 - } - } - }, - { - "id": "eta", - "value": 0.125, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.1, - "maximum": 0.15 - } - } - }, - { - "id": "rho", - "value": 0.034, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.027200000000000002, - "maximum": 0.0408 - } - } - }, - { - "id": "theta", - "value": 0.371, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.2968, - "maximum": 0.4452 - } - } - }, - { - "id": "kappa", - "value": 0.017, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.013600000000000001, - "maximum": 0.0204 - } - } - }, - { - "id": "mu", - "value": 0.017, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.013600000000000001, - "maximum": 0.0204 - } - } - }, - { - "id": "nu", - "value": 0.027, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.0216, - "maximum": 0.0324 - } - } - }, - { - "id": "xi", - "value": 0.017, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.013600000000000001, - "maximum": 0.0204 - } - } - }, - { - "id": "tau", - "value": 0.01, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.008, - "maximum": 0.012 - } - } - }, - { - "id": "sigma", - "value": 0.017, - "distribution": { - "type": "StandardUniform1", - "parameters": { - "minimum": 0.013600000000000001, - "maximum": 0.0204 - } - } - } - ], - "observables": [ - { - "id": "Cases", - "name": "Cases", - "expression": "Diagnosed + Recognized + Threatened", - "expression_mathml": "DiagnosedRecognizedThreatened" - }, - { - "id": "Hospitalizations", - "name": "Hospitalizations", - "expression": "Recognized + Threatened", - "expression_mathml": "RecognizedThreatened" - }, - { - "id": "Deaths", - "name": "Deaths", - "expression": "Extinct", - "expression_mathml": "Extinct" - } - ], - "time": { - "id": "t", - "units": { - "expression": "day", - "expression_mathml": "day" } } - } - }, - "metadata": { - "annotations": { - "license": "CC0", - "authors": [], - "references": [ - "pubmed:32322102" - ], - "time_scale": null, - "time_start": null, - "time_end": null, - "locations": [], - "pathogens": [ - "ncbitaxon:2697049" - ], - "diseases": [ - "doid:0080600" - ], - "hosts": [ - "ncbitaxon:9606" - ], - "model_types": [ - "mamo:0000028" - ] - } - } -} \ No newline at end of file diff --git a/examples/dataset.csv b/examples/dataset.csv deleted file mode 100644 index d8818ec..0000000 --- a/examples/dataset.csv +++ /dev/null @@ -1,92 +0,0 @@ -timestep,S,E,I,R,D -0.0,0.49457800495224524,0.26745259325403603,0.4497387877393193,0.32807705995998604,0.8545934885162726 -1.0,0.4665022246157727,0.15226661609143755,0.282128632173281,0.5819467770808255,0.9115956844605425 -2.0,0.44995568708559147,0.0870753734907285,0.17176626841178605,0.7388229924583731,0.9468196129753799 -3.0,0.4402579969265885,0.049958082609506564,0.10268280170774824,0.8334700316632883,0.9680710215147275 -4.0,0.4345928780439725,0.02873264900876653,0.060681564306912315,0.8897296629609703,0.9807031801012375 -5.0,0.43129133897514976,0.016554961390151432,0.03559634907740039,0.9228561146017267,0.9881411703774309 -6.0,0.42937079614049717,0.00955084027561801,0.020781137104605475,0.9422429917414922,0.9924941691596463 -7.0,0.42825523174624236,0.005515226366193871,0.012094002808321005,0.9535438792052197,0.9950315942958823 -8.0,0.42760803965578864,0.003187203614737658,0.007024405738798128,0.9601135757214116,0.996506709691123 -9.0,0.42723286848143166,0.0018428391922203655,0.004074861364167079,0.9639265223459347,0.9973628430381053 -10.0,0.42701542110237617,0.001065625665672367,0.002361473964384682,0.966138016624911,0.997859397064515 -11.0,0.42688949053651354,0.0006163374574758091,0.0013677486708266896,0.9674192754645957,0.9981470822924473 -12.0,0.4268166164339979,0.0003566562089632792,0.0007921677242322537,0.968160893781643,0.9983136002730226 -13.0,0.426774399020502,0.00020632531989352596,0.0004585439285171233,0.9685905857420082,0.9984100804109383 -14.0,0.4267499641987114,0.00011936317441910912,0.00026537658614250037,0.9688393044325163,0.9984659260300698 -15.0,0.4267358390828414,6.911064486184507e-5,0.00015368573473018547,0.9689830886008763,0.9984982103585492 -16.0,0.42672764295323584,3.995637251879534e-5,8.886936321230337e-5,0.9690665218374893,0.9985169438954028 -17.0,0.42672291793839023,2.315252702782855e-5,5.149885891478391e-5,0.969114621277837,0.9985277438196892 -18.0,0.42672016837248206,1.3374421742842271e-5,2.975169371631378e-5,0.9691426114006284,0.9985340285332894 -19.0,0.4267185903383033,7.76324275234401e-6,1.72697551963783e-5,0.96915867560426,0.9985376354813472 -20.0,0.42671766524571453,4.473700806675521e-6,9.952514996761569e-6,0.9691680929676613,0.9985397499926799 -21.0,0.4267171396866097,2.605039389810057e-6,5.795292710617236e-6,0.9691734431227009,0.9985409512804482 -22.0,0.4267168292213564,1.5011076626621485e-6,3.339530654332321e-6,0.9691766036403886,0.9985416609217972 -23.0,0.4267166503308677,8.650367137104304e-7,1.9244997328791993e-6,0.9691784247361698,0.998542069818375 -24.0,0.4267165513975358,5.133018515249044e-7,1.1418963787668045e-6,0.9691794318721828,0.9985422959539103 -25.0,0.42671648849345345,2.8961248029392266e-7,6.443470300592253e-7,0.9691800722327397,0.9985424397361555 -26.0,0.4267164534150905,1.6488872179188643e-7,3.668730947050761e-7,0.9691804293288433,0.9985425199161089 -27.0,0.4267164363527159,1.0425224374051472e-7,2.3187776609803832e-7,0.9691806030229255,0.9985425589162079 -28.0,0.4267164237650669,5.94635822904114e-8,1.323403435661362e-7,0.969180731164592,0.9985425876882744 -29.0,0.42671641532016785,2.938997840309349e-8,6.558731960133238e-8,0.9691808171332872,0.9985426069911061 -30.0,0.4267164119320277,1.7383990307292018e-8,3.8745941399490847e-8,0.9691808516243932,0.9985426147355065 -31.0,0.42671641142993344,1.567980166379535e-8,3.4693296446806386e-8,0.9691808567356694,0.9985426158831582 -32.0,0.4267164097239014,9.397997811086657e-9,2.141426794359566e-8,0.9691808741029923,0.9985426197826998 -33.0,0.4267164077513253,1.6630451169718799e-9,6.5322673177872115e-9,0.9691808941837284,0.998542624291493 -34.0,0.4267164068327058,-1.7144298561756136e-9,-6.228678598180968e-10,0.969180903535234,0.998542626391217 -35.0,0.42671640713709813,1.995841690399913e-10,9.531889471946351e-10,0.9691809004365325,0.9985426256954555 -36.0,0.4267164080167858,4.441082888563269e-9,6.797923212261653e-9,0.9691808914813484,0.9985426236847188 -37.0,0.42671640835547514,3.2138485814499743e-9,1.190846777114169e-8,0.9691808880335046,0.9985426229105632 -38.0,0.42671641412844163,-2.6272280610911653e-8,1.0758565137248983e-7,0.9691808292649736,0.9985426097150731 -39.0,0.42671642043471775,-5.7124386784960156e-8,2.107435751597396e-7,0.9691807650673759,0.9985425953005771 -40.0,0.42671642069465143,-6.101555879931584e-8,2.1761506634755097e-7,0.9691807624212634,0.9985425947064368 -41.0,0.42671641308224717,-2.98748098503364e-8,9.919283597417899e-8,0.9691808399151859,0.9985426121064 -42.0,0.42671640052516574,2.41129225278762e-8,-9.87705210985136e-8,0.9691809677456914,0.9985426408086006 -43.0,0.4267163907047244,6.850677646347266e-8,-2.557625261850519e-7,0.9691810677173265,0.998542663255558 -44.0,0.42671639824152524,4.377942441187322e-8,-1.4462071904623285e-7,0.9691809909931911,0.9985426460284376 -45.0,0.4267165177761834,-3.5045943998565953e-7,1.6201571649468285e-6,0.9691797741428834,0.9985423728050674 -46.0,0.426716582914649,-5.657635155369028e-7,2.5823127375500367e-6,0.9691791110412861,0.9985422239167021 -47.0,0.426716469373307,-1.9999268662048253e-7,9.147186185214705e-7,0.9691802668813723,0.9985424834412481 -48.0,0.4267162674880653,4.53529758154388e-7,-2.0535417063955472e-6,0.9691823220506339,0.9985429448951083 -49.0,0.42671627788979505,4.201179072135318e-7,-1.900860288767501e-6,0.9691822161561675,0.9985429211182781 -50.0,0.42671649186340843,-2.7150027993614184e-7,1.2440747380756681e-6,0.9691800379462864,0.9985424320377062 -51.0,0.4267164371442758,-9.590264835717333e-8,4.410989446171615e-7,0.9691805949726369,0.9985425571086503 -52.0,0.42671627454943717,4.2799006477805363e-7,-1.9470013902130833e-6,0.9691822501358911,0.9985429287478564 -53.0,0.4267164118674504,-1.515429881156514e-8,7.058019617525471e-8,0.9691808522520705,0.998542614876441 -54.0,0.4267164314292611,-7.842218520117033e-8,3.5813674655576225e-7,0.9691806531145852,0.9985425701634516 -55.0,0.4267163402967335,2.1536057882219336e-7,-9.805249063054177e-7,0.9691815808243099,0.9985427784651432 -56.0,0.4267164064309929,2.026849024044358e-9,-8.917426690141202e-9,0.969180907581668,0.998542627299776 -57.0,0.4267164283592435,-6.872496312372469e-8,3.1325564224967763e-7,0.969180684354161,0.9985425771777755 -58.0,0.4267163726304823,1.1096730955813961e-7,-5.053996636778452e-7,0.9691812516656547,0.9985427045580763 -59.0,0.4267164022669418,1.5383256861379745e-8,-7.001281739503044e-8,0.9691809499676411,0.9985426368168369 -60.0,0.4267164303322644,-7.51289506815351e-8,3.42286373147847e-7,0.9691806642650668,0.9985425726671056 -61.0,0.42671639252407795,4.678946740843496e-8,-2.1312670437383657e-7,0.9691810491487283,0.9985426590862899 -62.0,0.4267163906803671,5.2732295751289435e-8,-2.40207629435881e-7,0.9691810679165382,0.9985426633002876 -63.0,0.42671643093445266,-7.707951798376247e-8,3.51143486333012e-7,0.9691806581331516,0.9985425712902867 -64.0,0.4267164128814658,-1.8863795872089294e-8,8.593863522149074e-8,0.9691808419110224,0.9985426125545317 -65.0,0.42671637686662756,9.727501741359907e-8,-4.4313284520207667e-7,0.9691812085384706,0.9985426948745889 -66.0,0.4267164200453857,-4.196688650706194e-8,1.9118201954589875e-7,0.9691807689818369,0.9985425961795036 -67.0,0.42671643358050243,-8.561468651784963e-8,3.900185546253598e-7,0.9691806311955823,0.9985425652419063 -68.0,0.4267163868830551,6.497344448890763e-8,-2.9598552756642434e-7,0.9691811065713162,0.9985426719795709 -69.0,0.4267163912524428,5.0882866998259076e-8,-2.317959767734765e-7,0.9691810620904003,0.9985426619921258 -70.0,0.42671644043115114,-1.0770701760595323e-7,4.906592850593068e-7,0.969180561455502,0.9985425495829385 -71.0,0.4267164167376279,-3.130102261908867e-8,1.425919497941743e-7,0.9691808026534119,0.9985426037398922 -72.0,0.4267163669919889,1.291167181759515e-7,-5.881901500074731e-7,0.9691813090586004,0.9985427174447016 -73.0,0.4267164200016294,-4.1827178724749095e-8,1.9054393033467677e-7,0.9691807694245668,0.9985425962789112 -74.0,0.42671644240995465,-1.1408876512607039e-7,5.19730932389067e-7,0.9691805413101093,0.9985425450596278 -75.0,0.4267163840322124,7.416555460008109e-8,-3.3786040346975136e-7,0.9691811355893997,0.9985426784950959 -76.0,0.42671638308439874,7.72215823075342e-8,-3.5178174842226147e-7,0.9691811452364474,0.998542680661179 -77.0,0.42671644336728115,-1.1717662911843815e-7,5.337977747629874e-7,0.969180531562473,0.9985425428709592 -78.0,0.42671641776404695,-3.461230115131663e-8,1.5767640473892867e-7,0.9691807922007798,0.9985426013929286 -79.0,0.4267163612928776,1.4749353363619526e-7,-6.719051144173975e-7,0.9691813670703036,0.9985427304702585 -80.0,0.4267164203694237,-4.3014784946728866e-8,1.9595428752147932e-7,0.9691807656757546,0.9985425954371782 -81.0,0.4267164406054988,-1.0827141116253247e-7,4.932300540646792e-7,0.9691805596746412,0.9985425491830761 -82.0,0.4267163787730171,9.112354076019481e-8,-4.151121391980163e-7,0.9691811891224043,0.9985426905150361 -83.0,0.42671638837990683,6.01430724791526e-8,-2.73980456025726e-7,0.9691810913234238,0.998542668555912 -84.0,0.4267164428101249,-1.1538169475281397e-7,5.256211091987005e-7,0.96918053722903,0.9985425441432898 -85.0,0.4267164096512028,-8.452095193740493e-9,3.85038789026454e-8,0.969180874783399,0.9985426199354737 -86.0,0.42671636500544596,1.3551953690584167e-7,-6.173575814057123e-7,0.9691813292713266,0.998542721983131 -87.0,0.42671642647384933,-6.270190499547489e-8,2.856388664368029e-7,0.9691807035280883,0.9985425814829599 -88.0,0.4267164339544428,-8.682512094420266e-8,3.9553170304887336e-7,0.96918062737645,0.998542564384384 -89.0,0.4267163734271133,1.083610174179625e-7,-4.936373932413709e-7,0.9691812435379789,0.9985427027331426 -90.0,0.42671638393595407,7.447198602603216e-8,-3.392558129647435e-7,0.9691811365573083,0.9985426787124235 diff --git a/examples/request-calibrate-no-integration.json b/examples/request-calibrate-no-integration.json index 6552202..1cb9b4a 100644 --- a/examples/request-calibrate-no-integration.json +++ b/examples/request-calibrate-no-integration.json @@ -1,8 +1,8 @@ { - "model": "{\"name\": \"Giordano2020 - SIDARTHE model of COVID-19 spread in Italy\",\"schema\": \"https://raw.githubusercontent.com/DARPA-ASKEM/Model-Representations/petrinet_v0.5/petrinet/petrinet_schema.json\",\"schema_name\": \"petrinet\",\"description\": \"Giordano2020 - SIDARTHE model of COVID-19 spread in Italy\",\"model_version\": \"0.1\",\"properties\": {},\"model\": { \"states\": [ { \"id\": \"Susceptible\", \"name\": \"Susceptible\", \"grounding\": { \"identifiers\": { \"ido\": \"0000514\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Diagnosed\", \"name\": \"Diagnosed\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"diagnosis\": \"ncit:C15220\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Infected\", \"name\": \"Infected\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Ailing\", \"name\": \"Ailing\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"disease_severity\": \"ncit:C25269\", \"diagnosis\": \"ncit:C113725\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Recognized\", \"name\": \"Recognized\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"diagnosis\": \"ncit:C15220\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Healed\", \"name\": \"Healed\", \"grounding\": { \"identifiers\": { \"ido\": \"0000592\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Threatened\", \"name\": \"Threatened\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"disease_severity\": \"ncit:C25467\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Extinct\", \"name\": \"Extinct\", \"grounding\": { \"identifiers\": { \"ncit\": \"C28554\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } } ], \"transitions\": [ { \"id\": \"t1\", \"input\": [ \"Diagnosed\", \"Susceptible\" ], \"output\": [ \"Diagnosed\", \"Infected\" ], \"properties\": { \"name\": \"t1\" } }, { \"id\": \"t2\", \"input\": [ \"Ailing\", \"Susceptible\" ], \"output\": [ \"Ailing\", \"Infected\" ], \"properties\": { \"name\": \"t2\" } }, { \"id\": \"t3\", \"input\": [ \"Recognized\", \"Susceptible\" ], \"output\": [ \"Recognized\", \"Infected\" ], \"properties\": { \"name\": \"t3\" } }, { \"id\": \"t4\", \"input\": [ \"Infected\", \"Susceptible\" ], \"output\": [ \"Infected\", \"Infected\" ], \"properties\": { \"name\": \"t4\" } }, { \"id\": \"t5\", \"input\": [ \"Infected\" ], \"output\": [ \"Diagnosed\" ], \"properties\": { \"name\": \"t5\" } }, { \"id\": \"t6\", \"input\": [ \"Infected\" ], \"output\": [ \"Ailing\" ], \"properties\": { \"name\": \"t6\" } }, { \"id\": \"t7\", \"input\": [ \"Infected\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t7\" } }, { \"id\": \"t8\", \"input\": [ \"Diagnosed\" ], \"output\": [ \"Recognized\" ], \"properties\": { \"name\": \"t8\" } }, { \"id\": \"t9\", \"input\": [ \"Diagnosed\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t9\" } }, { \"id\": \"t10\", \"input\": [ \"Ailing\" ], \"output\": [ \"Recognized\" ], \"properties\": { \"name\": \"t10\" } }, { \"id\": \"t11\", \"input\": [ \"Ailing\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t11\" } }, { \"id\": \"t12\", \"input\": [ \"Ailing\" ], \"output\": [ \"Threatened\" ], \"properties\": { \"name\": \"t12\" } }, { \"id\": \"t13\", \"input\": [ \"Recognized\" ], \"output\": [ \"Threatened\" ], \"properties\": { \"name\": \"t13\" } }, { \"id\": \"t14\", \"input\": [ \"Recognized\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t14\" } }, { \"id\": \"t15\", \"input\": [ \"Threatened\" ], \"output\": [ \"Extinct\" ], \"properties\": { \"name\": \"t15\" } }, { \"id\": \"t16\", \"input\": [ \"Threatened\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t16\" } } ] }, \"semantics\": { \"ode\": { \"rates\": [ { \"target\": \"t1\", \"expression\": \"Diagnosed*Susceptible*beta\", \"expression_mathml\": \"DiagnosedSusceptiblebeta\" }, { \"target\": \"t2\", \"expression\": \"Ailing*Susceptible*gamma\", \"expression_mathml\": \"AilingSusceptiblegamma\" }, { \"target\": \"t3\", \"expression\": \"Recognized*Susceptible*delta\", \"expression_mathml\": \"RecognizedSusceptibledelta\" }, { \"target\": \"t4\", \"expression\": \"Infected*Susceptible*alpha\", \"expression_mathml\": \"InfectedSusceptiblealpha\" }, { \"target\": \"t5\", \"expression\": \"Infected*epsilon\", \"expression_mathml\": \"Infectedepsilon\" }, { \"target\": \"t6\", \"expression\": \"Infected*zeta\", \"expression_mathml\": \"Infectedzeta\" }, { \"target\": \"t7\", \"expression\": \"Infected*lambda\", \"expression_mathml\": \"Infectedlambda\" }, { \"target\": \"t8\", \"expression\": \"Diagnosed*eta\", \"expression_mathml\": \"Diagnosedeta\" }, { \"target\": \"t9\", \"expression\": \"Diagnosed*rho\", \"expression_mathml\": \"Diagnosedrho\" }, { \"target\": \"t10\", \"expression\": \"Ailing*theta\", \"expression_mathml\": \"Ailingtheta\" }, { \"target\": \"t11\", \"expression\": \"Ailing*kappa\", \"expression_mathml\": \"Ailingkappa\" }, { \"target\": \"t12\", \"expression\": \"Ailing*mu\", \"expression_mathml\": \"Ailingmu\" }, { \"target\": \"t13\", \"expression\": \"Recognized*nu\", \"expression_mathml\": \"Recognizednu\" }, { \"target\": \"t14\", \"expression\": \"Recognized*xi\", \"expression_mathml\": \"Recognizedxi\" }, { \"target\": \"t15\", \"expression\": \"Threatened*tau\", \"expression_mathml\": \"Threatenedtau\" }, { \"target\": \"t16\", \"expression\": \"Threatened*sigma\", \"expression_mathml\": \"Threatenedsigma\" } ], \"initials\": [ { \"target\": \"Susceptible\", \"expression\": \"0.999996300000000\", \"expression_mathml\": \"0.99999629999999995\" }, { \"target\": \"Diagnosed\", \"expression\": \"3.33333333000000e-7\", \"expression_mathml\": \"3.33333333e-7\" }, { \"target\": \"Infected\", \"expression\": \"3.33333333000000e-6\", \"expression_mathml\": \"3.3333333299999999e-6\" }, { \"target\": \"Ailing\", \"expression\": \"1.66666666000000e-8\", \"expression_mathml\": \"1.6666666599999999e-8\" }, { \"target\": \"Recognized\", \"expression\": \"3.33333333000000e-8\", \"expression_mathml\": \"3.33333333e-8\" }, { \"target\": \"Healed\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" }, { \"target\": \"Threatened\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" }, { \"target\": \"Extinct\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" } ], \"parameters\": [ { \"id\": \"beta\", \"value\": 0.011, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008799999999999999, \"maximum\": 0.0132 } } }, { \"id\": \"gamma\", \"value\": 0.456, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.3648, \"maximum\": 0.5472 } } }, { \"id\": \"delta\", \"value\": 0.011, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008799999999999999, \"maximum\": 0.0132 } } }, { \"id\": \"alpha\", \"value\": 0.57, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.45599999999999996, \"maximum\": 0.6839999999999999 } } }, { \"id\": \"epsilon\", \"value\": 0.171, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1368, \"maximum\": 0.20520000000000002 } } }, { \"id\": \"zeta\", \"value\": 0.125, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1, \"maximum\": 0.15 } } }, { \"id\": \"lambda\", \"value\": 0.034, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.027200000000000002, \"maximum\": 0.0408 } } }, { \"id\": \"eta\", \"value\": 0.125, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1, \"maximum\": 0.15 } } }, { \"id\": \"rho\", \"value\": 0.034, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.027200000000000002, \"maximum\": 0.0408 } } }, { \"id\": \"theta\", \"value\": 0.371, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.2968, \"maximum\": 0.4452 } } }, { \"id\": \"kappa\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"mu\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"nu\", \"value\": 0.027, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.0216, \"maximum\": 0.0324 } } }, { \"id\": \"xi\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"tau\", \"value\": 0.01, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008, \"maximum\": 0.012 } } }, { \"id\": \"sigma\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } } ], \"observables\": [ { \"id\": \"Cases\", \"name\": \"Cases\", \"expression\": \"Diagnosed + Recognized + Threatened\", \"expression_mathml\": \"DiagnosedRecognizedThreatened\" }, { \"id\": \"Hospitalizations\", \"name\": \"Hospitalizations\", \"expression\": \"Recognized + Threatened\", \"expression_mathml\": \"RecognizedThreatened\" }, { \"id\": \"Deaths\", \"name\": \"Deaths\", \"expression\": \"Extinct\", \"expression_mathml\": \"Extinct\" } ], \"time\": { \"id\": \"t\", \"units\": { \"expression\": \"day\", \"expression_mathml\": \"day\" } } } }, \"metadata\": { \"annotations\": { \"license\": \"CC0\", \"authors\": [], \"references\": [ \"pubmed:32322102\" ], \"time_scale\": null, \"time_start\": null, \"time_end\": null, \"locations\": [], \"pathogens\": [ \"ncbitaxon:2697049\" ], \"diseases\": [ \"doid:0080600\" ], \"hosts\": [ \"ncbitaxon:9606\" ], \"model_types\": [ \"mamo:0000028\" ] } }}", - "dataset": { - "id": "2ea2d39f-866f-46f6-beec-972ed2136ed5", - "filename": "dataset.csv" - }, - "timespan": {"start": 101, "end": 190} -} + "model": "{\"name\": \"Giordano2020 - SIDARTHE model of COVID-19 spread in Italy\",\"schema\": \"https://raw.githubusercontent.com/DARPA-ASKEM/Model-Representations/petrinet_v0.5/petrinet/petrinet_schema.json\",\"schema_name\": \"petrinet\",\"description\": \"Giordano2020 - SIDARTHE model of COVID-19 spread in Italy\",\"model_version\": \"0.1\",\"properties\": {},\"model\": { \"states\": [ { \"id\": \"Susceptible\", \"name\": \"Susceptible\", \"grounding\": { \"identifiers\": { \"ido\": \"0000514\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Diagnosed\", \"name\": \"Diagnosed\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"diagnosis\": \"ncit:C15220\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Infected\", \"name\": \"Infected\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Ailing\", \"name\": \"Ailing\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"disease_severity\": \"ncit:C25269\", \"diagnosis\": \"ncit:C113725\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Recognized\", \"name\": \"Recognized\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"diagnosis\": \"ncit:C15220\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Healed\", \"name\": \"Healed\", \"grounding\": { \"identifiers\": { \"ido\": \"0000592\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Threatened\", \"name\": \"Threatened\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"disease_severity\": \"ncit:C25467\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Extinct\", \"name\": \"Extinct\", \"grounding\": { \"identifiers\": { \"ncit\": \"C28554\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } } ], \"transitions\": [ { \"id\": \"t1\", \"input\": [ \"Diagnosed\", \"Susceptible\" ], \"output\": [ \"Diagnosed\", \"Infected\" ], \"properties\": { \"name\": \"t1\" } }, { \"id\": \"t2\", \"input\": [ \"Ailing\", \"Susceptible\" ], \"output\": [ \"Ailing\", \"Infected\" ], \"properties\": { \"name\": \"t2\" } }, { \"id\": \"t3\", \"input\": [ \"Recognized\", \"Susceptible\" ], \"output\": [ \"Recognized\", \"Infected\" ], \"properties\": { \"name\": \"t3\" } }, { \"id\": \"t4\", \"input\": [ \"Infected\", \"Susceptible\" ], \"output\": [ \"Infected\", \"Infected\" ], \"properties\": { \"name\": \"t4\" } }, { \"id\": \"t5\", \"input\": [ \"Infected\" ], \"output\": [ \"Diagnosed\" ], \"properties\": { \"name\": \"t5\" } }, { \"id\": \"t6\", \"input\": [ \"Infected\" ], \"output\": [ \"Ailing\" ], \"properties\": { \"name\": \"t6\" } }, { \"id\": \"t7\", \"input\": [ \"Infected\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t7\" } }, { \"id\": \"t8\", \"input\": [ \"Diagnosed\" ], \"output\": [ \"Recognized\" ], \"properties\": { \"name\": \"t8\" } }, { \"id\": \"t9\", \"input\": [ \"Diagnosed\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t9\" } }, { \"id\": \"t10\", \"input\": [ \"Ailing\" ], \"output\": [ \"Recognized\" ], \"properties\": { \"name\": \"t10\" } }, { \"id\": \"t11\", \"input\": [ \"Ailing\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t11\" } }, { \"id\": \"t12\", \"input\": [ \"Ailing\" ], \"output\": [ \"Threatened\" ], \"properties\": { \"name\": \"t12\" } }, { \"id\": \"t13\", \"input\": [ \"Recognized\" ], \"output\": [ \"Threatened\" ], \"properties\": { \"name\": \"t13\" } }, { \"id\": \"t14\", \"input\": [ \"Recognized\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t14\" } }, { \"id\": \"t15\", \"input\": [ \"Threatened\" ], \"output\": [ \"Extinct\" ], \"properties\": { \"name\": \"t15\" } }, { \"id\": \"t16\", \"input\": [ \"Threatened\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t16\" } } ] }, \"semantics\": { \"ode\": { \"rates\": [ { \"target\": \"t1\", \"expression\": \"Diagnosed*Susceptible*beta\", \"expression_mathml\": \"DiagnosedSusceptiblebeta\" }, { \"target\": \"t2\", \"expression\": \"Ailing*Susceptible*gamma\", \"expression_mathml\": \"AilingSusceptiblegamma\" }, { \"target\": \"t3\", \"expression\": \"Recognized*Susceptible*delta\", \"expression_mathml\": \"RecognizedSusceptibledelta\" }, { \"target\": \"t4\", \"expression\": \"Infected*Susceptible*alpha\", \"expression_mathml\": \"InfectedSusceptiblealpha\" }, { \"target\": \"t5\", \"expression\": \"Infected*epsilon\", \"expression_mathml\": \"Infectedepsilon\" }, { \"target\": \"t6\", \"expression\": \"Infected*zeta\", \"expression_mathml\": \"Infectedzeta\" }, { \"target\": \"t7\", \"expression\": \"Infected*lambda\", \"expression_mathml\": \"Infectedlambda\" }, { \"target\": \"t8\", \"expression\": \"Diagnosed*eta\", \"expression_mathml\": \"Diagnosedeta\" }, { \"target\": \"t9\", \"expression\": \"Diagnosed*rho\", \"expression_mathml\": \"Diagnosedrho\" }, { \"target\": \"t10\", \"expression\": \"Ailing*theta\", \"expression_mathml\": \"Ailingtheta\" }, { \"target\": \"t11\", \"expression\": \"Ailing*kappa\", \"expression_mathml\": \"Ailingkappa\" }, { \"target\": \"t12\", \"expression\": \"Ailing*mu\", \"expression_mathml\": \"Ailingmu\" }, { \"target\": \"t13\", \"expression\": \"Recognized*nu\", \"expression_mathml\": \"Recognizednu\" }, { \"target\": \"t14\", \"expression\": \"Recognized*xi\", \"expression_mathml\": \"Recognizedxi\" }, { \"target\": \"t15\", \"expression\": \"Threatened*tau\", \"expression_mathml\": \"Threatenedtau\" }, { \"target\": \"t16\", \"expression\": \"Threatened*sigma\", \"expression_mathml\": \"Threatenedsigma\" } ], \"initials\": [ { \"target\": \"Susceptible\", \"expression\": \"0.999996300000000\", \"expression_mathml\": \"0.99999629999999995\" }, { \"target\": \"Diagnosed\", \"expression\": \"3.33333333000000e-7\", \"expression_mathml\": \"3.33333333e-7\" }, { \"target\": \"Infected\", \"expression\": \"3.33333333000000e-6\", \"expression_mathml\": \"3.3333333299999999e-6\" }, { \"target\": \"Ailing\", \"expression\": \"1.66666666000000e-8\", \"expression_mathml\": \"1.6666666599999999e-8\" }, { \"target\": \"Recognized\", \"expression\": \"3.33333333000000e-8\", \"expression_mathml\": \"3.33333333e-8\" }, { \"target\": \"Healed\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" }, { \"target\": \"Threatened\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" }, { \"target\": \"Extinct\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" } ], \"parameters\": [ { \"id\": \"beta\", \"value\": 0.011, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008799999999999999, \"maximum\": 0.0132 } } }, { \"id\": \"gamma\", \"value\": 0.456, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.3648, \"maximum\": 0.5472 } } }, { \"id\": \"delta\", \"value\": 0.011, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008799999999999999, \"maximum\": 0.0132 } } }, { \"id\": \"alpha\", \"value\": 0.57, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.45599999999999996, \"maximum\": 0.6839999999999999 } } }, { \"id\": \"epsilon\", \"value\": 0.171, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1368, \"maximum\": 0.20520000000000002 } } }, { \"id\": \"zeta\", \"value\": 0.125, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1, \"maximum\": 0.15 } } }, { \"id\": \"lambda\", \"value\": 0.034, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.027200000000000002, \"maximum\": 0.0408 } } }, { \"id\": \"eta\", \"value\": 0.125, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1, \"maximum\": 0.15 } } }, { \"id\": \"rho\", \"value\": 0.034, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.027200000000000002, \"maximum\": 0.0408 } } }, { \"id\": \"theta\", \"value\": 0.371, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.2968, \"maximum\": 0.4452 } } }, { \"id\": \"kappa\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"mu\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"nu\", \"value\": 0.027, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.0216, \"maximum\": 0.0324 } } }, { \"id\": \"xi\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"tau\", \"value\": 0.01, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008, \"maximum\": 0.012 } } }, { \"id\": \"sigma\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } } ], \"observables\": [ { \"id\": \"Cases\", \"name\": \"Cases\", \"expression\": \"Diagnosed + Recognized + Threatened\", \"expression_mathml\": \"DiagnosedRecognizedThreatened\" }, { \"id\": \"Hospitalizations\", \"name\": \"Hospitalizations\", \"expression\": \"Recognized + Threatened\", \"expression_mathml\": \"RecognizedThreatened\" }, { \"id\": \"Deaths\", \"name\": \"Deaths\", \"expression\": \"Extinct\", \"expression_mathml\": \"Extinct\" } ], \"time\": { \"id\": \"t\", \"units\": { \"expression\": \"day\", \"expression_mathml\": \"day\" } } } }, \"metadata\": { \"annotations\": { \"license\": \"CC0\", \"authors\": [], \"references\": [ \"pubmed:32322102\" ], \"time_scale\": null, \"time_start\": null, \"time_end\": null, \"locations\": [], \"pathogens\": [ \"ncbitaxon:2697049\" ], \"diseases\": [ \"doid:0080600\" ], \"hosts\": [ \"ncbitaxon:9606\" ], \"model_types\": [ \"mamo:0000028\" ] } }}", + "dataset": { + "id": "2ea2d39f-866f-46f6-beec-972ed2136ed5", + "filename": "dataset.csv" + }, + "timespan": {"start": 101, "end": 190} + } diff --git a/examples/request-simulate-integrated.json b/examples/request-simulate-integrated.json index 1a696c6..3da6c9e 100644 --- a/examples/request-simulate-integrated.json +++ b/examples/request-simulate-integrated.json @@ -1,19 +1,4 @@ { "model_config_id": "f20ea672-bfa4-422b-884f-0a4c09356fd0", - "timespan": {"start": 0, "end": 90}, - "extra": { - "initials": { - "S": 0.49457800495224524, - "E": 0.26745259325403603, - "I": 0.4497387877393193, - "R": 0.32807705995998604, - "D": 0.8545934885162726 - }, - "params": { - "exp": 0.16207166221196045, - "conv": 0.7009195813964052, - "rec": 0.7040317196117394, - "death": 0.15807853921067516 - } - } + "timespan": {"start": 0, "end": 90} } diff --git a/examples/request-simulate-no-integration.json b/examples/request-simulate-no-integration.json index 7b60e7e..ea659df 100644 --- a/examples/request-simulate-no-integration.json +++ b/examples/request-simulate-no-integration.json @@ -1,4 +1,4 @@ { - "model": "{\"name\": \"Giordano2020 - SIDARTHE model of COVID-19 spread in Italy\",\"schema\": \"https://raw.githubusercontent.com/DARPA-ASKEM/Model-Representations/petrinet_v0.5/petrinet/petrinet_schema.json\",\"schema_name\": \"petrinet\",\"description\": \"Giordano2020 - SIDARTHE model of COVID-19 spread in Italy\",\"model_version\": \"0.1\",\"properties\": {},\"model\": { \"states\": [ { \"id\": \"Susceptible\", \"name\": \"Susceptible\", \"grounding\": { \"identifiers\": { \"ido\": \"0000514\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Diagnosed\", \"name\": \"Diagnosed\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"diagnosis\": \"ncit:C15220\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Infected\", \"name\": \"Infected\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Ailing\", \"name\": \"Ailing\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"disease_severity\": \"ncit:C25269\", \"diagnosis\": \"ncit:C113725\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Recognized\", \"name\": \"Recognized\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"diagnosis\": \"ncit:C15220\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Healed\", \"name\": \"Healed\", \"grounding\": { \"identifiers\": { \"ido\": \"0000592\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Threatened\", \"name\": \"Threatened\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"disease_severity\": \"ncit:C25467\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Extinct\", \"name\": \"Extinct\", \"grounding\": { \"identifiers\": { \"ncit\": \"C28554\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } } ], \"transitions\": [ { \"id\": \"t1\", \"input\": [ \"Diagnosed\", \"Susceptible\" ], \"output\": [ \"Diagnosed\", \"Infected\" ], \"properties\": { \"name\": \"t1\" } }, { \"id\": \"t2\", \"input\": [ \"Ailing\", \"Susceptible\" ], \"output\": [ \"Ailing\", \"Infected\" ], \"properties\": { \"name\": \"t2\" } }, { \"id\": \"t3\", \"input\": [ \"Recognized\", \"Susceptible\" ], \"output\": [ \"Recognized\", \"Infected\" ], \"properties\": { \"name\": \"t3\" } }, { \"id\": \"t4\", \"input\": [ \"Infected\", \"Susceptible\" ], \"output\": [ \"Infected\", \"Infected\" ], \"properties\": { \"name\": \"t4\" } }, { \"id\": \"t5\", \"input\": [ \"Infected\" ], \"output\": [ \"Diagnosed\" ], \"properties\": { \"name\": \"t5\" } }, { \"id\": \"t6\", \"input\": [ \"Infected\" ], \"output\": [ \"Ailing\" ], \"properties\": { \"name\": \"t6\" } }, { \"id\": \"t7\", \"input\": [ \"Infected\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t7\" } }, { \"id\": \"t8\", \"input\": [ \"Diagnosed\" ], \"output\": [ \"Recognized\" ], \"properties\": { \"name\": \"t8\" } }, { \"id\": \"t9\", \"input\": [ \"Diagnosed\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t9\" } }, { \"id\": \"t10\", \"input\": [ \"Ailing\" ], \"output\": [ \"Recognized\" ], \"properties\": { \"name\": \"t10\" } }, { \"id\": \"t11\", \"input\": [ \"Ailing\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t11\" } }, { \"id\": \"t12\", \"input\": [ \"Ailing\" ], \"output\": [ \"Threatened\" ], \"properties\": { \"name\": \"t12\" } }, { \"id\": \"t13\", \"input\": [ \"Recognized\" ], \"output\": [ \"Threatened\" ], \"properties\": { \"name\": \"t13\" } }, { \"id\": \"t14\", \"input\": [ \"Recognized\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t14\" } }, { \"id\": \"t15\", \"input\": [ \"Threatened\" ], \"output\": [ \"Extinct\" ], \"properties\": { \"name\": \"t15\" } }, { \"id\": \"t16\", \"input\": [ \"Threatened\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t16\" } } ] }, \"semantics\": { \"ode\": { \"rates\": [ { \"target\": \"t1\", \"expression\": \"Diagnosed*Susceptible*beta\", \"expression_mathml\": \"DiagnosedSusceptiblebeta\" }, { \"target\": \"t2\", \"expression\": \"Ailing*Susceptible*gamma\", \"expression_mathml\": \"AilingSusceptiblegamma\" }, { \"target\": \"t3\", \"expression\": \"Recognized*Susceptible*delta\", \"expression_mathml\": \"RecognizedSusceptibledelta\" }, { \"target\": \"t4\", \"expression\": \"Infected*Susceptible*alpha\", \"expression_mathml\": \"InfectedSusceptiblealpha\" }, { \"target\": \"t5\", \"expression\": \"Infected*epsilon\", \"expression_mathml\": \"Infectedepsilon\" }, { \"target\": \"t6\", \"expression\": \"Infected*zeta\", \"expression_mathml\": \"Infectedzeta\" }, { \"target\": \"t7\", \"expression\": \"Infected*lambda\", \"expression_mathml\": \"Infectedlambda\" }, { \"target\": \"t8\", \"expression\": \"Diagnosed*eta\", \"expression_mathml\": \"Diagnosedeta\" }, { \"target\": \"t9\", \"expression\": \"Diagnosed*rho\", \"expression_mathml\": \"Diagnosedrho\" }, { \"target\": \"t10\", \"expression\": \"Ailing*theta\", \"expression_mathml\": \"Ailingtheta\" }, { \"target\": \"t11\", \"expression\": \"Ailing*kappa\", \"expression_mathml\": \"Ailingkappa\" }, { \"target\": \"t12\", \"expression\": \"Ailing*mu\", \"expression_mathml\": \"Ailingmu\" }, { \"target\": \"t13\", \"expression\": \"Recognized*nu\", \"expression_mathml\": \"Recognizednu\" }, { \"target\": \"t14\", \"expression\": \"Recognized*xi\", \"expression_mathml\": \"Recognizedxi\" }, { \"target\": \"t15\", \"expression\": \"Threatened*tau\", \"expression_mathml\": \"Threatenedtau\" }, { \"target\": \"t16\", \"expression\": \"Threatened*sigma\", \"expression_mathml\": \"Threatenedsigma\" } ], \"initials\": [ { \"target\": \"Susceptible\", \"expression\": \"0.999996300000000\", \"expression_mathml\": \"0.99999629999999995\" }, { \"target\": \"Diagnosed\", \"expression\": \"3.33333333000000e-7\", \"expression_mathml\": \"3.33333333e-7\" }, { \"target\": \"Infected\", \"expression\": \"3.33333333000000e-6\", \"expression_mathml\": \"3.3333333299999999e-6\" }, { \"target\": \"Ailing\", \"expression\": \"1.66666666000000e-8\", \"expression_mathml\": \"1.6666666599999999e-8\" }, { \"target\": \"Recognized\", \"expression\": \"3.33333333000000e-8\", \"expression_mathml\": \"3.33333333e-8\" }, { \"target\": \"Healed\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" }, { \"target\": \"Threatened\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" }, { \"target\": \"Extinct\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" } ], \"parameters\": [ { \"id\": \"beta\", \"value\": 0.011, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008799999999999999, \"maximum\": 0.0132 } } }, { \"id\": \"gamma\", \"value\": 0.456, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.3648, \"maximum\": 0.5472 } } }, { \"id\": \"delta\", \"value\": 0.011, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008799999999999999, \"maximum\": 0.0132 } } }, { \"id\": \"alpha\", \"value\": 0.57, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.45599999999999996, \"maximum\": 0.6839999999999999 } } }, { \"id\": \"epsilon\", \"value\": 0.171, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1368, \"maximum\": 0.20520000000000002 } } }, { \"id\": \"zeta\", \"value\": 0.125, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1, \"maximum\": 0.15 } } }, { \"id\": \"lambda\", \"value\": 0.034, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.027200000000000002, \"maximum\": 0.0408 } } }, { \"id\": \"eta\", \"value\": 0.125, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1, \"maximum\": 0.15 } } }, { \"id\": \"rho\", \"value\": 0.034, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.027200000000000002, \"maximum\": 0.0408 } } }, { \"id\": \"theta\", \"value\": 0.371, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.2968, \"maximum\": 0.4452 } } }, { \"id\": \"kappa\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"mu\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"nu\", \"value\": 0.027, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.0216, \"maximum\": 0.0324 } } }, { \"id\": \"xi\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"tau\", \"value\": 0.01, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008, \"maximum\": 0.012 } } }, { \"id\": \"sigma\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } } ], \"observables\": [ { \"id\": \"Cases\", \"name\": \"Cases\", \"expression\": \"Diagnosed + Recognized + Threatened\", \"expression_mathml\": \"DiagnosedRecognizedThreatened\" }, { \"id\": \"Hospitalizations\", \"name\": \"Hospitalizations\", \"expression\": \"Recognized + Threatened\", \"expression_mathml\": \"RecognizedThreatened\" }, { \"id\": \"Deaths\", \"name\": \"Deaths\", \"expression\": \"Extinct\", \"expression_mathml\": \"Extinct\" } ], \"time\": { \"id\": \"t\", \"units\": { \"expression\": \"day\", \"expression_mathml\": \"day\" } } } }, \"metadata\": { \"annotations\": { \"license\": \"CC0\", \"authors\": [], \"references\": [ \"pubmed:32322102\" ], \"time_scale\": null, \"time_start\": null, \"time_end\": null, \"locations\": [], \"pathogens\": [ \"ncbitaxon:2697049\" ], \"diseases\": [ \"doid:0080600\" ], \"hosts\": [ \"ncbitaxon:9606\" ], \"model_types\": [ \"mamo:0000028\" ] } }}", - "timespan": {"start": 0, "end": 90} -} + "model": "{\"name\": \"Giordano2020 - SIDARTHE model of COVID-19 spread in Italy\",\"schema\": \"https://raw.githubusercontent.com/DARPA-ASKEM/Model-Representations/petrinet_v0.5/petrinet/petrinet_schema.json\",\"schema_name\": \"petrinet\",\"description\": \"Giordano2020 - SIDARTHE model of COVID-19 spread in Italy\",\"model_version\": \"0.1\",\"properties\": {},\"model\": { \"states\": [ { \"id\": \"Susceptible\", \"name\": \"Susceptible\", \"grounding\": { \"identifiers\": { \"ido\": \"0000514\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Diagnosed\", \"name\": \"Diagnosed\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"diagnosis\": \"ncit:C15220\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Infected\", \"name\": \"Infected\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Ailing\", \"name\": \"Ailing\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"disease_severity\": \"ncit:C25269\", \"diagnosis\": \"ncit:C113725\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Recognized\", \"name\": \"Recognized\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"diagnosis\": \"ncit:C15220\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Healed\", \"name\": \"Healed\", \"grounding\": { \"identifiers\": { \"ido\": \"0000592\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Threatened\", \"name\": \"Threatened\", \"grounding\": { \"identifiers\": { \"ido\": \"0000511\" }, \"modifiers\": { \"disease_severity\": \"ncit:C25467\" } }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } }, { \"id\": \"Extinct\", \"name\": \"Extinct\", \"grounding\": { \"identifiers\": { \"ncit\": \"C28554\" }, \"modifiers\": {} }, \"units\": { \"expression\": \"1\", \"expression_mathml\": \"1\" } } ], \"transitions\": [ { \"id\": \"t1\", \"input\": [ \"Diagnosed\", \"Susceptible\" ], \"output\": [ \"Diagnosed\", \"Infected\" ], \"properties\": { \"name\": \"t1\" } }, { \"id\": \"t2\", \"input\": [ \"Ailing\", \"Susceptible\" ], \"output\": [ \"Ailing\", \"Infected\" ], \"properties\": { \"name\": \"t2\" } }, { \"id\": \"t3\", \"input\": [ \"Recognized\", \"Susceptible\" ], \"output\": [ \"Recognized\", \"Infected\" ], \"properties\": { \"name\": \"t3\" } }, { \"id\": \"t4\", \"input\": [ \"Infected\", \"Susceptible\" ], \"output\": [ \"Infected\", \"Infected\" ], \"properties\": { \"name\": \"t4\" } }, { \"id\": \"t5\", \"input\": [ \"Infected\" ], \"output\": [ \"Diagnosed\" ], \"properties\": { \"name\": \"t5\" } }, { \"id\": \"t6\", \"input\": [ \"Infected\" ], \"output\": [ \"Ailing\" ], \"properties\": { \"name\": \"t6\" } }, { \"id\": \"t7\", \"input\": [ \"Infected\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t7\" } }, { \"id\": \"t8\", \"input\": [ \"Diagnosed\" ], \"output\": [ \"Recognized\" ], \"properties\": { \"name\": \"t8\" } }, { \"id\": \"t9\", \"input\": [ \"Diagnosed\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t9\" } }, { \"id\": \"t10\", \"input\": [ \"Ailing\" ], \"output\": [ \"Recognized\" ], \"properties\": { \"name\": \"t10\" } }, { \"id\": \"t11\", \"input\": [ \"Ailing\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t11\" } }, { \"id\": \"t12\", \"input\": [ \"Ailing\" ], \"output\": [ \"Threatened\" ], \"properties\": { \"name\": \"t12\" } }, { \"id\": \"t13\", \"input\": [ \"Recognized\" ], \"output\": [ \"Threatened\" ], \"properties\": { \"name\": \"t13\" } }, { \"id\": \"t14\", \"input\": [ \"Recognized\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t14\" } }, { \"id\": \"t15\", \"input\": [ \"Threatened\" ], \"output\": [ \"Extinct\" ], \"properties\": { \"name\": \"t15\" } }, { \"id\": \"t16\", \"input\": [ \"Threatened\" ], \"output\": [ \"Healed\" ], \"properties\": { \"name\": \"t16\" } } ] }, \"semantics\": { \"ode\": { \"rates\": [ { \"target\": \"t1\", \"expression\": \"Diagnosed*Susceptible*beta\", \"expression_mathml\": \"DiagnosedSusceptiblebeta\" }, { \"target\": \"t2\", \"expression\": \"Ailing*Susceptible*gamma\", \"expression_mathml\": \"AilingSusceptiblegamma\" }, { \"target\": \"t3\", \"expression\": \"Recognized*Susceptible*delta\", \"expression_mathml\": \"RecognizedSusceptibledelta\" }, { \"target\": \"t4\", \"expression\": \"Infected*Susceptible*alpha\", \"expression_mathml\": \"InfectedSusceptiblealpha\" }, { \"target\": \"t5\", \"expression\": \"Infected*epsilon\", \"expression_mathml\": \"Infectedepsilon\" }, { \"target\": \"t6\", \"expression\": \"Infected*zeta\", \"expression_mathml\": \"Infectedzeta\" }, { \"target\": \"t7\", \"expression\": \"Infected*lambda\", \"expression_mathml\": \"Infectedlambda\" }, { \"target\": \"t8\", \"expression\": \"Diagnosed*eta\", \"expression_mathml\": \"Diagnosedeta\" }, { \"target\": \"t9\", \"expression\": \"Diagnosed*rho\", \"expression_mathml\": \"Diagnosedrho\" }, { \"target\": \"t10\", \"expression\": \"Ailing*theta\", \"expression_mathml\": \"Ailingtheta\" }, { \"target\": \"t11\", \"expression\": \"Ailing*kappa\", \"expression_mathml\": \"Ailingkappa\" }, { \"target\": \"t12\", \"expression\": \"Ailing*mu\", \"expression_mathml\": \"Ailingmu\" }, { \"target\": \"t13\", \"expression\": \"Recognized*nu\", \"expression_mathml\": \"Recognizednu\" }, { \"target\": \"t14\", \"expression\": \"Recognized*xi\", \"expression_mathml\": \"Recognizedxi\" }, { \"target\": \"t15\", \"expression\": \"Threatened*tau\", \"expression_mathml\": \"Threatenedtau\" }, { \"target\": \"t16\", \"expression\": \"Threatened*sigma\", \"expression_mathml\": \"Threatenedsigma\" } ], \"initials\": [ { \"target\": \"Susceptible\", \"expression\": \"0.999996300000000\", \"expression_mathml\": \"0.99999629999999995\" }, { \"target\": \"Diagnosed\", \"expression\": \"3.33333333000000e-7\", \"expression_mathml\": \"3.33333333e-7\" }, { \"target\": \"Infected\", \"expression\": \"3.33333333000000e-6\", \"expression_mathml\": \"3.3333333299999999e-6\" }, { \"target\": \"Ailing\", \"expression\": \"1.66666666000000e-8\", \"expression_mathml\": \"1.6666666599999999e-8\" }, { \"target\": \"Recognized\", \"expression\": \"3.33333333000000e-8\", \"expression_mathml\": \"3.33333333e-8\" }, { \"target\": \"Healed\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" }, { \"target\": \"Threatened\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" }, { \"target\": \"Extinct\", \"expression\": \"0.0\", \"expression_mathml\": \"0.0\" } ], \"parameters\": [ { \"id\": \"beta\", \"value\": 0.011, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008799999999999999, \"maximum\": 0.0132 } } }, { \"id\": \"gamma\", \"value\": 0.456, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.3648, \"maximum\": 0.5472 } } }, { \"id\": \"delta\", \"value\": 0.011, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008799999999999999, \"maximum\": 0.0132 } } }, { \"id\": \"alpha\", \"value\": 0.57, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.45599999999999996, \"maximum\": 0.6839999999999999 } } }, { \"id\": \"epsilon\", \"value\": 0.171, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1368, \"maximum\": 0.20520000000000002 } } }, { \"id\": \"zeta\", \"value\": 0.125, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1, \"maximum\": 0.15 } } }, { \"id\": \"lambda\", \"value\": 0.034, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.027200000000000002, \"maximum\": 0.0408 } } }, { \"id\": \"eta\", \"value\": 0.125, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.1, \"maximum\": 0.15 } } }, { \"id\": \"rho\", \"value\": 0.034, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.027200000000000002, \"maximum\": 0.0408 } } }, { \"id\": \"theta\", \"value\": 0.371, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.2968, \"maximum\": 0.4452 } } }, { \"id\": \"kappa\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"mu\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"nu\", \"value\": 0.027, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.0216, \"maximum\": 0.0324 } } }, { \"id\": \"xi\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } }, { \"id\": \"tau\", \"value\": 0.01, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.008, \"maximum\": 0.012 } } }, { \"id\": \"sigma\", \"value\": 0.017, \"distribution\": { \"type\": \"StandardUniform1\", \"parameters\": { \"minimum\": 0.013600000000000001, \"maximum\": 0.0204 } } } ], \"observables\": [ { \"id\": \"Cases\", \"name\": \"Cases\", \"expression\": \"Diagnosed + Recognized + Threatened\", \"expression_mathml\": \"DiagnosedRecognizedThreatened\" }, { \"id\": \"Hospitalizations\", \"name\": \"Hospitalizations\", \"expression\": \"Recognized + Threatened\", \"expression_mathml\": \"RecognizedThreatened\" }, { \"id\": \"Deaths\", \"name\": \"Deaths\", \"expression\": \"Extinct\", \"expression_mathml\": \"Extinct\" } ], \"time\": { \"id\": \"t\", \"units\": { \"expression\": \"day\", \"expression_mathml\": \"day\" } } } }, \"metadata\": { \"annotations\": { \"license\": \"CC0\", \"authors\": [], \"references\": [ \"pubmed:32322102\" ], \"time_scale\": null, \"time_start\": null, \"time_end\": null, \"locations\": [], \"pathogens\": [ \"ncbitaxon:2697049\" ], \"diseases\": [ \"doid:0080600\" ], \"hosts\": [ \"ncbitaxon:9606\" ], \"model_types\": [ \"mamo:0000028\" ] } }}", + "timespan": {"start": 0, "end": 90} + } diff --git a/paths.yaml b/paths.yaml deleted file mode 100644 index c0bb6da..0000000 --- a/paths.yaml +++ /dev/null @@ -1,176 +0,0 @@ -/simulate: - post: - summary: Perform a simulation - operationId: simulateModel - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - engine: - type: string - enum: [sciml, ciemss] - example: sciml - model_config_id: - type: string - example: "ba8da8d4-047d-11ee-be56" - timespan: - type: object - properties: - start: - type: integer - example: 0 - end: - type: integer - example: 0 - items: - type: integer - example: [0, 90] - extra: - description: optional extra system specific arguments for advanced use cases - type: object - required: - - engine - - model_config_id - - timespan - responses: - '200': - description: Simulation created successfully - content: - application/json: - schema: - type: object - properties: - simulation_id: - type: string - example: fc5d80e4-0483-11ee-be56 - -/calibrate: - post: - summary: Calibrate a model to data then simulate - description: Calibrate a model and perform a "fitting" simulation over the time range of the calibration dataset and a simulation of a time range specified in `timespan` if `timespan` is specified. The SciML engine allows for calibration without additional simulation; in that case `timespan` is left off the payload. - operationId: calibratesimulateModel - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - engine: - type: string - enum: [sciml, ciemss] - example: sciml - model_config_id: - type: string - example: "c1cd941a-047d-11ee-be56" - dataset: - type: object - properties: - id: - type: string - example: "cd339570-047d-11ee-be55" - filename: - type: string - example: "dataset.csv" - mappings: - type: object - timespan: - type: object - properties: - start: - type: integer - example: 0 - end: - type: integer - example: 0 - extra: - description: optional extra system specific arguments for advanced use cases - type: object - required: - - engine - - model_config_id - - dataset_id - responses: - '200': - description: Calibration/simulation created successfully - content: - application/json: - schema: - type: object - properties: - simulation_id: - type: string - example: fc5d80e4-0483-11ee-be56 -/ensemble: - post: - summary: Perform an ensemble simulation - operationId: createEnsemble - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - engine: - type: string - enum: [sciml, ciemss] - example: sciml - model_config_ids: - type: array - items: - type: string - example: ["ba8da8d4-047d-11ee-be56", "c1cd941a-047d-11ee-be56", "c4b9f88a-047d-11ee-be56"] - timespan: - type: object - properties: - start: - type: integer - example: 0 - end: - type: integer - example: 0 - extra: - description: optional extra system specific arguments for advanced use cases - type: object - required: - - engine - - model_config_id - - timespan - responses: - '200': - description: Ensemble created successfully - content: - application/json: - schema: - type: object - properties: - simulation_id: - type: string - example: fc5d80e4-0483-11ee-be56 - -/status/{simulation_id}: - get: - summary: Retrieve the status of a simulation - operationId: getStatus - parameters: - - name: simulation_id - in: path - required: true - schema: - type: string - example: fc5d80e4-0483-11ee-be56 - responses: - '200': - description: Status retrieved successfully - content: - application/json: - schema: - type: object - properties: - status: - type: string - enum: [queued, running, complete, error] diff --git a/src/Settings.jl b/src/Settings.jl deleted file mode 100644 index a18fc39..0000000 --- a/src/Settings.jl +++ /dev/null @@ -1,71 +0,0 @@ -""" -Project-wide environment settings -""" -module Settings - -""" -The current settings for the project -""" -settings = Dict{String, Any}() - -""" -Add a setting from the enviroment -""" -macro setting(name::Symbol, type::Union{DataType, Type}, default_value::Any) - fixed_default = isa(default_value, Symbol) ? eval(default_value) : default_value - if !isnothing(fixed_default) - @assert typeof(fixed_default) == type - end - - env_key = String(name) - - function grab_env() - if in(env_key, keys(ENV)) - if type == String - return ENV[env_key] - else - return parse(type, ENV[env_key]) - end - else - if !isnothing(fixed_default) - ENV[env_key] = fixed_default - return fixed_default - else - throw("Variable not in environment and no default provided!") - end - end - end - :(settings[$env_key] = ($grab_env)()) -end - -""" -Coerce `type` from `Symbol` to `Type` -""" -macro setting(name::Symbol, type::Symbol, default_value::Any) - :(@setting(name, eval(type), fixed_default)) -end - -""" -Set an option while inferring the type -""" -macro setting(name::Symbol, default_value::Any) - type = typeof(default_value) - :(@setting($name, $type, $default_value)) -end - -""" -Set a string option -""" -macro setting(name::Symbol) - :(@setting($name, String, nothing)) -end - -@setting RABBITMQ_ENABLED false -@setting RABBITMQ_LOGIN "guest" -@setting RABBITMQ_PASSWORD "guest" -@setting RABBITMQ_ROUTE "terarium" -@setting RABBITMQ_PORT 5672 -@setting ENABLE_TDS true -@setting TDS_URL "http://localhost:8001" - -end # module Settings diff --git a/src/SimulationService.jl b/src/SimulationService.jl index d81a4b4..1805342 100644 --- a/src/SimulationService.jl +++ b/src/SimulationService.jl @@ -1,77 +1,476 @@ -""" -Interface for relevant ASKEM simulation libraries -""" -module SimulationService - -import AlgebraicPetri: LabelledPetriNet -import Symbolics -import Oxygen: serveparallel, resetstate, json, setschema, terminate, @post, @get -import SwaggerMarkdown: build, @swagger, OpenAPI, validate_spec, openApiToDict, DOCS -import YAML -import JSON3 as JSON -import JobSchedulers: scheduler_start, set_scheduler, scheduler_stop, submit!, job_query, result, generate_id, update_queue!, Job, JobSchedulers +module SimulationService -include("./service/Service.jl") -import .Service: make_deterministic_run, retrieve_job -include("./Settings.jl"); import .Settings: settings +import AMQPClient +import CSV +import DataFrames: DataFrame +import Dates +import DifferentialEquations +import Downloads: download +import EasyConfig: EasyConfig, Config +import HTTP +import InteractiveUtils: subtypes +import JobSchedulers +import JSON3 +import MathML +import ModelingToolkit: @parameters, substitute, Differential, Num, @variables, ODESystem, ODEProblem +import OpenAPI +import Oxygen +import SciMLBase: SciMLBase, DiscreteCallback, solve +import SwaggerMarkdown +import UUIDs +import YAML export start!, stop! -OPENAPI_SPEC = "paths.yaml" - -""" -Print out settings -""" -function health_check() - tds_url = settings["TDS_URL"] - mq_route = settings["RABBITMQ_ROUTE"] - - return "Simulation-service. TDS_URL=$tds_url, RABBITMQ_ROUTE=$mq_route" -end - - -""" -Specify endpoint to function mappings -""" -function register!() - @get "/" health_check - @get "/{element}/{uuid}" retrieve_job - @post "/{operation}" make_deterministic_run - - info = Dict("title" => "Simulation Service", "version" => "0.6.0") - openAPI = OpenAPI("3.0.0", info) - openAPI.paths = YAML.load_file(OPENAPI_SPEC) - documentation = build(openAPI) - setschema(documentation) -end - -""" -Load API endpoints and start listening for sim run jobs -""" -function start!() - resetstate() - register!() - if Threads.nthreads() > 1 - set_scheduler( - max_cpu=0.5, - max_mem=0.5, - update_second=0.05, - max_job=5000, +#-----------------------------------------------------------------------------# notes +# Example request to /{operation}: +# { +# "model_config_id": "22739963-0f82-4d6f-aecc-1082712ed299", +# "timespan": {"start":0, "end":90}, +# "engine": "sciml", +# "dataset": { +# "dataset_id": "adfasdf", +# "mappings": [], #optional column mappings... renames column headers +# "filename":"asdfa", +# } +# } + +# ASKEM Model Representation: https://github.com/DARPA-ASKEM/Model-Representations/blob/main/petrinet/petrinet_schema.json + +# pre-rewrite commit: https://github.com/DARPA-ASKEM/simulation-service/tree/8e4dfc515fd6ddf53067fa535e37450daf1cd63c + +# OpenAPI spec: https://raw.githubusercontent.com/DARPA-ASKEM/simulation-api-spec/main/openapi.yaml + +#-----------------------------------------------------------------------------# __init__ +const rabbit_mq_channel = Ref{Any}() # TODO: replace Any with what AMQPClient.channel returns +const server_url = Ref{String}() +const openapi_spec = Ref{Config}() # populated from https://github.com/DARPA-ASKEM/simulation-api-spec + +function __init__() + if Threads.nthreads() == 1 + @warn "SimulationService.jl requires `Threads.nthreads() > 1`. Use e.g. `julia --threads=auto`." + end + + # RabbitMQ Channel to reuse + if SIMSERVICE_RABBITMQ_ENABLED + auth_params = Dict{String,Any}( + "MECHANISM" => "AMQPLAIN", + "LOGIN" => SIMSERVICE_RABBITMQ_LOGIN, + "PASSWORD" => SIMSERVICE_RABBITMQ_PASSWORD, ) - scheduler_start() - serveparallel(host="0.0.0.0", async=true) + conn = AMQPClient.connection(; virtualhost="/", host="localhost", port=SIMSERVICE_RABBITMQ_PORT, auth_params) + rabbitmq_channel[] = AMQPClient.channel(conn, AMQPClient.UNUSED_CHANNEL, true) + end + + server_url[] = "http://$SIMSERVICE_HOST:$SIMSERVICE_PORT" + + spec = download("https://raw.githubusercontent.com/DARPA-ASKEM/simulation-api-spec/main/openapi.yaml") + openapi_spec[] = Config(YAML.load_file(spec)) +end + +#-----------------------------------------------------------------------------# start! +function start!(; host=SIMSERVICE_HOST, port=SIMSERVICE_PORT, kw...) + SIMSERVICE_ENABLE_TDS || @warn "TDS is disabled. Some features will not work." + stop!() # Stop server if it's already running + server_url[] = "http://$host:$port" + JobSchedulers.scheduler_start() + JobSchedulers.set_scheduler(max_cpu=0.5, max_mem=0.5, update_second=0.05, max_job=5000) + Oxygen.resetstate() + # routes: + Oxygen.@get "/" health + Oxygen.@get "/status/{job_id}" job_status + Oxygen.@get "/result/{job_id}" job_result + Oxygen.@post "/{operation_name}" operation + Oxygen.@post "/kill/{job_id}" job_kill + + # Below commented out because of: https://github.com/JuliaData/YAML.jl/issues/117 ???? + # api = SwaggerMarkdown.OpenAPI("3.0", Dict(string(k) => v for (k,v) in openapi_spec[])) + # swagger = SwaggerMarkdown.build(api) + # Oxygen.mergeschema(swagger) + + # server: + if Threads.nthreads() > 1 # true in production + Oxygen.serveparallel(; host, port, async=true, kw...) else - throw("The server is not parallelized. You need to start the REPL like `julia --threads 5`") + @warn "Server starting single-threaded. This should only be used for testing. Try starting Julia via `julia --threads=auto`." + Oxygen.serve(; host, port, async=true, kw...) end - nothing end -""" -Shutdown server -""" +#-----------------------------------------------------------------------------# stop! function stop!() - scheduler_stop() - terminate() + JobSchedulers.scheduler_stop() + Oxygen.terminate() +end + +#-----------------------------------------------------------------------------# settings +# Server +SIMSERVICE_HOST = get(ENV, "SIMSERVICE_HOST", "0.0.0.0") +SIMSERVICE_PORT = parse(Int, get(ENV, "SIMSERVICE_PORT", "8000")) + +# Terrarium Data Service (TDS) +SIMSERVICE_ENABLE_TDS = get(ENV, "SIMSERVICE_ENABLE_TDS", "true") == "true" # +SIMSERVICE_TDS_URL = get(ENV, "SIMSERVICE_TDS_URL", "http://localhost:8001") +SIMSERVICE_TDS_RETRIES = parse(Int, get(ENV, "SIMSERVICE_TDS_RETRIES", "10")) + +# RabbitMQ (Note: assumes running on localhost) +SIMSERVICE_RABBITMQ_ENABLED = get(ENV, "SIMSERVICE_RABBITMQ_ENABLED", "false") == "true" && SIMSERVICE_ENABLE_TDS +SIMSERVICE_RABBITMQ_LOGIN = get(ENV, "SIMSERVICE_RABBITMQ_LOGIN", "guest") +SIMSERVICE_RABBITMQ_PASSWORD = get(ENV, "SIMSERVICE_RABBITMQ_PASSWORD", "guest") +SIMSERVICE_RABBITMQ_ROUTE = get(ENV, "SIMSERVICE_RABBITMQ_ROUTE", "terarium") +SIMSERVICE_RABBITMQ_PORT = parse(Int, get(ENV, "SIMSERVICE_RABBITMQ_PORT", "5672")) + +#-----------------------------------------------------------------------------# utils +JSON_HEADER = ["Content-Type" => "application/json"] + +get_json(url::String)::Config = JSON3.read(HTTP.get(url, JSON_HEADER).body, Config) + +jobhash(x::String) = reinterpret(Int, hash(x)) + +# Print message when TDS unavailable, e.g. SIMSERVICE_ENABLE_TDS || no_tds(:myfunc; id="id", filename="result.csv") +function no_tds(f; kw...) + msg = "TDS unavailable in function: `$f`\n" + for (k, v) in kw + msg *= "\n$k = $v" + end + @info msg +end + +# TODO: more tests. This is an important function. +function ode_system_from_amr(obj::Config) + model = obj.model + ode = obj.semantics.ode + + t = only(@variables t) + D = Differential(t) + + statenames = [Symbol(s.id) for s in model.states] + statevars = [only(@variables $s) for s in statenames] + statefuncs = [only(@variables $s(t)) for s in statenames] + + # get parameter values and state initial values + paramnames = [Symbol(x.id) for x in ode.parameters] + paramvars = [only(@parameters $x) for x in paramnames] + paramvals = [x.value for x in ode.parameters] + sym_defs = paramvars .=> paramvals + initial_exprs = [MathML.parse_str(x.expression_mathml) for x in ode.initials] + initial_vals = map(x -> substitute(x, sym_defs), initial_exprs) + + # build equations from transitions and rate expressions + rates = Dict(Symbol(x.target) => MathML.parse_str(x.expression_mathml) for x in ode.rates) + eqs = Dict(s => Num(0) for s in statenames) + for tr in model.transitions + ratelaw = rates[Symbol(tr.id)] + for s in tr.input + s = Symbol(s) + eqs[s] = eqs[s] - ratelaw + end + for s in tr.output + s = Symbol(s) + eqs[s] = eqs[s] + ratelaw + end + end + + subst = Dict(statevars .=> statefuncs) + eqs = [D(statef) ~ substitute(eqs[state], subst) for (state, statef) in (statenames .=> statefuncs)] + + ODESystem(eqs, t, statefuncs, paramvars; defaults = [statefuncs .=> initial_vals; sym_defs], name=Symbol(obj.name)) +end + +#-----------------------------------------------------------------------------# health: GET / +health(::HTTP.Request) = (; status="ok", SIMSERVICE_RABBITMQ_ENABLED, SIMSERVICE_RABBITMQ_ROUTE, + SIMSERVICE_ENABLE_TDS) + +#-----------------------------------------------------------------------------# job endpoints +get_job(job_id::String) = JobSchedulers.job_query(jobhash(job_id)) + +const NO_JOB = + HTTP.Response(404, ["Content-Type" => "text/plain; charset=utf-8"], body="Job does not exist") + +# /status/{job_id} +function job_status(::HTTP.Request, job_id::String) + job = get_job(job_id) + isnothing(job) && return NO_JOB + SCHEDULER_TO_API_STATUS_MAP = Dict( + JobSchedulers.QUEUING => :queued, + JobSchedulers.RUNNING => :running, + JobSchedulers.DONE => :complete, + JobSchedulers.FAILED => :error, + JobSchedulers.CANCELLED => :cancelled, + ) + return (; status = SCHEDULER_TO_API_STATUS_MAP[job.state]) +end + +# /result/{job_id} +function job_result(request::HTTP.Request, job_id::String) + job = get_job(job_id) + isnothing(job) && return NO_JOB + job.state == :done ? + JobSchedulers.result(job) : + Response(400, ["Content-Type" => "text/plain; charset=utf-8"], body="Job has not completed") +end + +# /kill/{job_id} +function job_kill(request::HTTP.Request, job_id::String) + job = JobSchedulers.job_query(jobhash(job_id)) + isnothing(job) && return NO_JOB + JobSchedulers.cancel!(job) + return HTTP.Response(200) +end + +#-----------------------------------------------------------------------------# RabbitMQ +# Content sent to client as JSON3.write(content) +# If !SIMSERVICE_RABBITMQ_ENABLED, then just log the content +function publish_to_rabbitmq(content) + SIMSERVICE_RABBITMQ_ENABLED || return no_tds(:publish_to_rabbitmq; content) + json = Vector{UInt8}(codeunits(JSON3.write(content))) + message = AMQPClient.Message(json, content_type="application/json") + AMQPClient.basic_publish(rabbitmq_channel[], message; exchange="", routing_key=SIMSERVICE_RABBITMQ_ROUTE) +end +publish_to_rabbitmq(; kw...) = publish_to_rabbitmq(Dict(kw...)) + + + + +#-----------------------------------------------------------------------------# Operations +### Example of `obj` inside an OperationRequest +# { +# "model_config_id": "22739963-0f82-4d6f-aecc-1082712ed299", +# "timespan": {"start":0, "end":90}, +# "engine": "sciml", +# "dataset": { +# "dataset_id": "adfasdf", +# "mappings": [], #optional column mappings... renames column headers +# "filename":"asdfa", +# } +# } + + +# An Operation requires: +# 1) an Operation(::OperationRequest) constructor +# 2) a solve(::Operation; callback) method +# +# An Operation's fields should be separate from any request-specific things for ease of testing. +abstract type Operation end + + +#-----------------------------------------------------------------------------# OperationRequest +# An OperationRequest contains all the information required to run an Operation +# It's created immediately from a client request and we pass it around to keep all info together + +# endpoint: required_keys... | optional_keys... + # /simulate: (engine, model_config_id, timespan) | extra + # /calibrate: (engine, model_config_id, dataset_id) | extra, timespan + # /ensemble: (engine, model_config_ids, timespan) | extra +mutable struct OperationRequest{T <: Operation} + obj::Config # untouched JSON from request body + required::Config # required keys for endpoint + optional::Config # optional keys for endpoint + model::Union{Config, Vector{Config}} # ASKEM Model Representation(s) + df::Union{Nothing, DataFrame} + timespan::Union{Nothing, Tuple{Float64, Float64}} + job_id::String + operation_type::Type{T} + results::Any # result of solving operaiont + results_to_upload::Any # processed results to send back to client (body, header, filename) + + function OperationRequest(req::HTTP.Request, route::String) + @info "Creating OperationRequest: POST $route" + job_id = "sciml-$(UUIDs.uuid4())" + # TODO: make operation_dict const + operation_dict = Dict(replace(lowercase(string(T)), "simulationservice." => "") => T for T in subtypes(Operation)) + operation_type = operation_dict[route] + obj = JSON3.read(req.body, Config) + schema = openapi_spec[].paths["/$route"].post.requestBody.content."application/json".schema + required = Config(k => obj[k] for k in schema.required) + optional = Config(k => obj[k] for k in setdiff(schema.properties, schema.required)) + model = Config() + df = nothing + timespan = nothing + # EasyConfig.delete_empty!(obj) + for (k,v) in obj + if k == :model_config_id + model = SIMSERVICE_ENABLE_TDS ? + get_json("$SIMSERVICE_TDS_URL/model_configurations/$v", Config) : + Config() + elseif k == :model_config_ids + model = map(v) do id + SIMSERVICE_ENABLE_TDS ? + get_json("$SIMSERVICE_TDS_URL/model_configurations/$id", Config) : + Config() + end + elseif k == :timespan + timespan = Tuple{Float64,Float64}(v) + elseif k == :dataset # calibrate only. keys(v) = (:id, :filename, :mappings) + if SIMSERVICE_ENABLE_TDS + tds_url = "$SIMSERVICE_TDS_URL/datasets/$(v.id)/download-url?filename=$(v.filename)" + s3_url = get_json(tds_url).url + df = CSV.read(download(s3_url), DataFrame) + rename!(df, v.mappings) + else + df = DataFrame() + end + + # Keys for testing only: + elseif k == :csv + df = CSV.read(codeunits(v), DataFrame) + elseif k == :local_csv # local CSV file + df = CSV.read(v, DataFrame) + elseif k == :model # JSON + model = v + end + end + new{operation_type}(obj, required, optional, model, df, timespan, job_id, operation_type, nothing, nothing) + end +end + +#--------------------------------------------------------------------# IntermediateResults callback +# Publish intermediate results to RabbitMQ with at least `every` seconds inbetween callbacks +mutable struct IntermediateResults + last_callback::Dates.DateTime # Track the last time the callback was called + every::Dates.TimePeriod # Callback frequency e.g. `Dates.Second(5)` + job_id::String + function IntermediateResults(job_id::String; every=Dates.Second(5)) + new(typemin(Dates.DateTime), every, job_id) + end +end +function (o::IntermediateResults)(integrator) + if o.last_callback + o.every ≤ Dates.now() + o.last_callback = Dates.now() + (; iter, t, u, uprev) = integrator + publish_to_rabbitmq(; iter=iter, time=t, params=u, abserr=norm(u - uprev), job_id=o.jobid, + retcode=SciMLBase.check_error(integrator)) + end +end +get_callback(o::OperationRequest) = DiscreteCallback((args...) -> true, IntermediateResults(o.job_id)) + +#--------------------------------------------------------------------------# Terrarium Data Service +# Retry a function `n` times if error is HTTP 404 +default_retry_contion(ex) = ex isa HTTP.Exceptions.StatusError && ex.status == 404 + +function retry_n(f; n::Int=SIMSERVICE_TDS_RETRIES, sleep_between::Int=1, condition=default_retry_contion) + res = nothing + for _ in 1:n + try + res = f() + break + catch ex + if condition(ex) + sleep(sleep_between) + continue + else + rethrow(ex) + end + end + end + return res +end + +function update_job_status!(o::OperationRequest; kw...) + SIMSERVICE_ENABLE_TDS || return no_tds(:update_job_status!; kw...) + job_id = o.job_id + url = "$SIMSERVICE_TDS_URL/simulations/$job_id" # joshday: rename simulations => jobs? + obj = retry_n(() -> get_json(url)) + # If JobID is not found in the TDS, we will create it + obj = isnothing(obj) ? Dict() : Dict(obj) + + body = JSON3.write(merge(Dict(obj), Dict(kw))) + HTTP.put(url, JSON_HEADER; body=body) +end + + +function upload_results!(o::OperationRequest) + isnothing(o.results) && error("No results. Run `solve!(o)` first.") + + # DataFrame result saved as CSV. Everything else saved as JSON. + o.results_to_upload = if o.results isa DataFrame + io = IOBuffer() + CSV.write(io, o.results) + body = String(take!(io)) + filename = "result.csv" + header = ["Content-Type" => "text/csv"] + else + body = JSON3.write(o.results) + filename = "result.json" + header = JSON_HEADER + end + + if !SIMSERVICE_ENABLE_TDS + return no_tds(:upload_results!; filename, header, bodysummary=repr(summary(body))) + end + + tds_url = "$SIMSERVICE_TDS_URL/simulations/sciml-$(o.job_id)/upload-url?filename=$filename)" + s3_url = get_json(tds_url).url + HTTP.put(s3_url, header; body=body) +end + +#-----------------------------------------------------------------------------# solve! +function solve!(o::OperationRequest) + try + update_job_status!(o; status="running", start_time=time()) + operation = o.operation_type(o) + callback = get_callback(o) + o.results = solve(operation; callback) + upload_results!(o) + update_job_status!(o; status="complete", complete_time=time()) + return o.results_to_upload + catch ex + update_job_status!(o; status="error", error=string(ex)) + end +end + +#-----------------------------------------------------------------------------# POST /{operation} +# For debugging. When a job fails, you can check out last_operation[] and last_job[]. +last_operation = Ref{OperationRequest}() +last_job = Ref{JobSchedulers.Job}() + +# TODO: add try-catch back in? It's useful for debugging to leave it out. +function operation(req::HTTP.Request, operation_name::String) + # try + o = OperationRequest(req, operation_name) + @info "Scheduling Job: $(o.job_id)" + job = JobSchedulers.Job(@task(solve!(o))) + job.id = jobhash(o.job_id) + JobSchedulers.submit!(job) + + last_operation[] = o # For debugging + last_job[] = job # For debugging + + body = JSON3.write((; simulation_id = o.job_id)) + return HTTP.Response(201, ["Content-Type" => "application/json; charset=utf-8"], body; request=req) + # catch ex + # return HTTP.Response(500, ["Content-Type" => "application/json; charset=utf-8"], JSON3.write((; error=string(ex)))) + # end +end + + +#-----------------------------------------------------------------------------# simulate +struct Simulate <: Operation + sys::ODESystem + timespan::Tuple{Float64, Float64} +end + +Simulate(o::OperationRequest) = Simulate(ode_system_from_amr(o.model), o.timespan) + +function solve(op::Simulate; kw...) + # joshday: What does providing `u0 = []` do? Don't we know what u0 is from AMR? + prob = ODEProblem(op.sys, [], op.timespan, saveat=1) + sol = solve(prob; progress = true, progress_steps = 1, kw...) + DataFrame(sol) +end + +#-----------------------------------------------------------------------------# calibrate +struct Calibrate <: Operation + # TODO +end +Calibrate(o::OperationRequest) = error("TODO") +solve(o::Calibrate; callback) = error("TODO") + +#-----------------------------------------------------------------------------# ensemble +struct Ensemble <: Operation + # TODO end +Ensemble(o::OperationRequest) = error("TODO") +solve(o::Ensemble; callback) = error("TODO") -end # module SimulationService +end # module diff --git a/src/contracts/Available.jl b/src/contracts/Available.jl deleted file mode 100644 index 7dcead7..0000000 --- a/src/contracts/Available.jl +++ /dev/null @@ -1,70 +0,0 @@ -""" -Operations interface for the simulation service -""" -module Available - -import CSV -import AlgebraicPetri: LabelledPetriNet, AbstractPetriNet -import DataFrames: DataFrame - -include("./ProblemInputs.jl"); import .ProblemInputs: conversions_for_valid_inputs -include("./SystemInputs.jl"); import .SystemInputs: Context -include("../operations/Operations.jl"); import .Operations -include("../Settings.jl"); import .Settings: settings - -export available_operations - -available_operations = Dict{String, Function}() - -""" -Retrieve internal atomic operations -""" -function get_operation(operation::Symbol) - if in(operation, names(Operations; all=false, imported=true)) - return getfield(Operations, operation) - else - return nothing - end -end - -function simulate(; - model, - timespan=(0.0, 100.0)::Tuple{Float64,Float64}, - context -) - Dict("result" => get_operation(:simulate)(;model=model, timespan=timespan, context)) -end - -available_operations["simulate"] = simulate - -function calibrate_then_simulate(; - model, - dataset::DataFrame, - timespan::Union{Nothing, Tuple{Float64, Float64}} = nothing, - context, -) - results = Dict{String, Any}() - calibrated_params = get_operation(:calibrate)(;model=model, dataset=dataset, context=context) - results["parameters"] = calibrated_params - if in(NaN, values(calibrated_params)) - return results - end - for (sym, val) in calibrated_params - model.defaults[sym] = val - end - tmin, tmax = (dataset.timestep[1], dataset.timestep[end]) - results["simulation"] = get_operation(:simulate)(;model=model, timespan=(tmin, tmax), context=context) - if isnothing(timespan) - return results - end - results["extra-simulation"] = get_operation(:simulate)(;model=model, timespan=timespan, context=context) - results -end - -available_operations["calibrate"] = calibrate_then_simulate - - - - - -end # module Available diff --git a/src/contracts/Interface.jl b/src/contracts/Interface.jl deleted file mode 100644 index 1f97d3a..0000000 --- a/src/contracts/Interface.jl +++ /dev/null @@ -1,37 +0,0 @@ -""" -SciML Operations interface for the simulation service -""" -module Interface - -import CSV - -include("./ProblemInputs.jl"); import .ProblemInputs: conversions_for_valid_inputs -include("./SystemInputs.jl"); import .SystemInputs: Context -include("./Available.jl"); import .Available: available_operations -include("../operations/Operations.jl"); import .Operations -include("../Settings.jl"); import .Settings: settings - -export use_operation, available_operations, conversions_for_valid_inputs, Context - -""" -Return an operation wrapped with necessary handlers -""" -function use_operation(context::Context) - operation = available_operations[string(context.operation)] - - method = collect(methods(operation))[1] - inputs = ccall(:jl_uncompress_argnames, Vector{Symbol}, (Any,), method.slot_syms)[2:end] - - - # NOTE: This runs inside the job so we can't use it to validate on request ATM - function coerced_operation(arglist::Dict{Symbol, Any}) - # TODO(five): Fail properly on extra params - fixed_args = Dict( - name => conversions_for_valid_inputs[name](arglist[name]) - for name in inputs if name != :context - ) - operation(;fixed_args..., context=context) - end -end - -end # module Interface diff --git a/src/contracts/ProblemInputs.jl b/src/contracts/ProblemInputs.jl deleted file mode 100644 index 8034c5b..0000000 --- a/src/contracts/ProblemInputs.jl +++ /dev/null @@ -1,87 +0,0 @@ -""" -User-provided, problem-specific inputs -""" -module ProblemInputs - -import AlgebraicPetri: PropertyLabelledPetriNet, LabelledPetriNet, AbstractPetriNet -import Catlab.CategoricalAlgebra: parse_json_acset -import ModelingToolkit: @parameters, substitute, Differential, Num, @variables, ODESystem -import DataFrames: DataFrame -import CSV -import JSON -import MathML - -export conversions_for_valid_inputs - -""" -Transform string into dataframe before it is used as input -""" -coerce_dataset(val::String) = CSV.read(IOBuffer(val), DataFrame) - -""" -Act as identity since the value is already coerced -""" -coerce_dataset(val::DataFrame) = val - -""" -Transform payload in ASKEM model rep into an ODESystem -""" -function coerce_model(val) - obj = JSON.Parser.parse(val) - model = obj["model"] - ode = obj["semantics"]["ode"] - - t = only(@variables t) - D = Differential(t) - - statenames = [Symbol(s["id"]) for s in model["states"]] - statevars = [only(@variables $s) for s in statenames] - statefuncs = [only(@variables $s(t)) for s in statenames] - - # get parameter values and state initial values - paramnames = [Symbol(x["id"]) for x in ode["parameters"]] - paramvars = [only(@parameters $x) for x in paramnames] - paramvals = [x["value"] for x in ode["parameters"]] - sym_defs = paramvars .=> paramvals - initial_exprs = [MathML.parse_str(x["expression_mathml"]) for x in ode["initials"]] - initial_vals = map(x->substitute(x, sym_defs), initial_exprs) - - # build equations from transitions and rate expressions - rates = Dict(Symbol(x["target"]) => MathML.parse_str(x["expression_mathml"]) for x in ode["rates"]) - eqs = Dict(s => Num(0) for s in statenames) - for tr in model["transitions"] - ratelaw = rates[Symbol(tr["id"])] - for s in tr["input"] - s = Symbol(s) - eqs[s] = eqs[s] - ratelaw - end - for s in tr["output"] - s = Symbol(s) - eqs[s] = eqs[s] + ratelaw - end - end - - subst = Dict(zip(statevars, statefuncs)) - eqs = [D(statef) ~ substitute(eqs[state], subst) for (state, statef) in zip(statenames, statefuncs)] - - ODESystem(eqs, t, statefuncs, paramvars; defaults = [statefuncs .=> initial_vals; sym_defs], name=Symbol(obj["name"])) -end - -""" -Coerce timespan -""" -coerce_timespan(val) = !isnothing(val) ? Tuple{Float64,Float64}(val) : nothing - -""" -Inputs converted from payload to arguments expanded in operations. -""" -conversions_for_valid_inputs = Dict{Symbol,Function}( - :model => coerce_model, - :models => val -> coerce_model.(val), - :timespan => coerce_timespan, - :params => (val) -> Dict{String,Float64}(val), - :initials => (val) -> Dict{String,Float64}(val), - :dataset => coerce_dataset, -) - -end # module ProblemInputs diff --git a/src/contracts/SystemInputs.jl b/src/contracts/SystemInputs.jl deleted file mode 100644 index dba521c..0000000 --- a/src/contracts/SystemInputs.jl +++ /dev/null @@ -1,30 +0,0 @@ -""" -System provided information that is made available to operations -""" -module SystemInputs - -export Context - -struct Context - job_id::Int64 - interactivity_hook::Function - operation::Symbol - raw_args - function Context(job_id::Int64, interactivity_hook::Function, operation::Symbol, raw_args) - new(job_id, interactivity_hook, operation, deepcopy(raw_args)) - end -end - -function Base.iterate(context::Context, state=nothing) - if isnothing(state) - state = Set(fieldnames(Context)) - end - unused = intersect(Set(fieldnames(Context)), state) - if isempty(unused) - return nothing - end - chosen_field = pop!(unused) - (chosen_field=>getfield(context, chosen_field), unused) -end - -end # module SystemInputs \ No newline at end of file diff --git a/src/operations/Operations.jl b/src/operations/Operations.jl deleted file mode 100644 index 8b4b354..0000000 --- a/src/operations/Operations.jl +++ /dev/null @@ -1,137 +0,0 @@ -""" -SciML Operation definitions -""" -module Operations - -import AlgebraicPetri: LabelledPetriNet, AbstractPetriNet -import DataFrames: DataFrame, names -import DifferentialEquations: solve, DiscreteCallback -import ModelingToolkit: remake, ODESystem, ODEProblem -import Symbolics: Num, getname, @variables, substitute -import SymbolicIndexingInterface: states, parameters -import EasyModelAnalysis -import SciMLBase - -using LinearAlgebra: norm -using Dates: Dates, DateTime, now - -# import MathML - -# NOTE: Operations exposed to the rest of the Simulation Service -export simulate, calibrate, ensemble - - -#-----------------------------------------------------------------------------# utils - -# Transform model representation into a SciML ODEProblem -function to_prob(sys, tspan) - ODEProblem(sys, [], tspan, saveat=1) -end - -# Separate keys and values -unzip(d::Dict) = (collect(keys(d)), collect(values(d))) - -# Unzip a collection of pairs -unzip(ps) = first.(ps), last.(ps) - - -# Transform list of args into Symbolics variables -function symbolize_args(incoming_values, sys_vars) - pairs = collect(incoming_values) - ks, values = unzip(pairs) - symbols = Symbol.(ks) - vars_as_symbols = getname.(sys_vars) - symbols_to_vars = Dict(vars_as_symbols .=> sys_vars) - Dict( - [ - symbols_to_vars[vars_as_symbols[findfirst(x -> x == symbol, vars_as_symbols)]] - for symbol in symbols - ] .=> values - ) -end - - -# Generate data and timestep list from a dataframe -function select_data(df::DataFrame) - data = Dict( - key => df[!, key] - for key in names(df) if key != "timestep" - ) - df[!, "timestep"], data -end - -#-----------------------------------------------------------------------------# IntermediateReulsts callback -mutable struct IntermediateResults - last_callback::DateTime # Track the last time the callback was called - every::Dates.TimePeriod # Callback frequency e.g. `Dates.Second(5)` - context # ::Union{Nothing, Context} (context.interactivity_hook sends Dict to frontend via RabbitMQ) -end -IntermediateResults(context; every=Dates.Second(5)) = IntermediateResults(typemin(DateTime), every, context) - -intermediate_results_to_rabbitmq(integrator) = Dict( - :iter => integrator.iter, - :time => integrator.t, - :params => integrator.u, - :abserr => norm(integrator.u - integrator.uprev), - :retcode => Symbol(SciMLBase.check_error(integrator)), -) - -function (o::IntermediateResults)(integrator) - if o.last_callback + o.every ≤ now() - o.last_callback = now() - d = intermediate_results_to_rabbitmq(integrator) - if isnothing(o.context) - @info "IntermediateResults: $(NamedTuple(d))" - else - d[:job_id] = o.context.job_id - o.context.interactivity_hook(d) - end - end -end - -#-----------------------------------------------------------------------------# simulate -function simulate(; model::ODESystem, timespan::Tuple{Float64,Float64}=(0.0, 100.0), context=nothing) - prob = to_prob(model, timespan) - callback = DiscreteCallback((args...) -> true, IntermediateResults(context)) - sol = solve(prob; progress = true, progress_steps = 1, callback) - DataFrame(sol) -end - -#-----------------------------------------------------------------------------# calibrate -function calibrate(; model, dataset::DataFrame, context=nothing) - timesteps, data = select_data(dataset) - prob = to_prob(model, extrema(timesteps)) - p = Vector{Pair{Num, Float64}}([Num(param) => model.defaults[param] for param in parameters(model)]) - @show p - data = symbolize_args(data, states(model)) - fitp = EasyModelAnalysis.datafit(prob, p, timesteps, data) - @info fitp - # DataFrame(fitp) - fitp -end - -#-----------------------------------------------------------------------------# ensemble -function ensemble(; models::AbstractArray{AbstractPetriNet}, timespan::Tuple{Float64, Float64} = (0.0, 100.0), context=nothing) - throw("ENSEMBLE IS NOT YET IMPLEMENTED") -end - - -# joshday: what is this function? -"long running functions like global_datafit and sensitivity wrappers will need to be refactored to share callback info incrementally" -function _global_datafit(; model::LabelledPetriNet, - parameter_bounds::Dict{String,Tuple{Float64,Float64}}, - params::Dict{String,Float64}, - initials::Dict{String,Float64}, - t::Vector{Number}, - data::Dict{String,Vector{Float64}} -)::DataFrame - ks, vs = unzip(parameter_bounds) - @assert all(issorted.(vs)) - prob = to_prob(model, params, initials, extrema(t)) - sys = prob.f.sys - p = symbolize_args(params, parameters(sys)) # this ends up being a second call to symbolize_args 🤷 - fitp = global_datafit(prob, collect(p), t, data) - DataFrame(fitp) -end - -end # module Operations diff --git a/src/service/ArgIO.jl b/src/service/ArgIO.jl deleted file mode 100644 index 8690e94..0000000 --- a/src/service/ArgIO.jl +++ /dev/null @@ -1,122 +0,0 @@ -""" -Provide external awareness / service-related side-effects to SciML operations -""" -module ArgIO - -import Symbolics -import DataFrames: rename!, transform!, DataFrame, ByRow -import CSV -import HTTP: Request -import JSON3 as JSON - -include("../Settings.jl"); import .Settings: settings -include("./AssetManager.jl"); import .AssetManager: fetch_dataset, fetch_model, update_simulation, upload - -export prepare_input, prepare_output - - -# """ -# Transform requests into arguments to be used by operation - -# Optionally, IDs are hydrated with the corresponding entity from TDS. -# """ -function prepare_input(args; context...) - if settings["ENABLE_TDS"] - update_simulation(context[:job_id], Dict([:status=>"running", :start_time => time()])) - end - if in(:timespan, keys(args)) - args[:timespan] = (args[:timespan]["start"], args[:timespan]["end"]) - end - if in(:model_config_id, keys(args)) - args[:model] = fetch_model(args[:model_config_id]) - end - if in(:dataset, keys(args)) && !isa(args[:dataset], String) - if !isa(args[:dataset], String) - args[:dataset] = fetch_dataset(args[:dataset]["id"], args[:dataset]["filename"], get(args[:dataset], "mappings", Dict())) - else - io = IOBuffer(args[:dataset]) - seekstart(io) - args[:dataset] = CSV.read(io, DataFrame) - end - end - if in(:model_config_ids, keys(args)) - args[:models] = fetch_model.(map(string, args[:model_ids])) - end - if !in(:timespan, keys(args)) - args[:timespan] = nothing - end - if in(:extra, keys(args)) - for (key, value) in Dict(args[:extra]) - args[Symbol(key)] = value - end - end - args -end - -# """ -# Generate a `prepare_input` function that is already contextualized -# """ -function prepare_input(context) - function contextualized_prepare_input(args) - prepare_input(args; context...) - end -end - -# """ -# Normalize the header of the resulting dataframe and return a CSV - -# Optionally, the CSV is saved to TDS instead an the coreresponding ID is returned. -# """ -function prepare_output(dataframe::DataFrame; name="0", context...) - stripped_names = names(dataframe) .=> (r -> replace(r, "(t)"=>"")).(names(dataframe)) - rename!(dataframe, stripped_names) - if !settings["ENABLE_TDS"] - io = IOBuffer() - # TODO(five): Write to remote server - CSV.write(io, dataframe) - return String(take!(io)) - else - return upload(dataframe, context[:job_id]; name=name) - end -end - -# """ -# Coerces NaN values to nothing for each parameter -# """ -function prepare_output(params::Vector{Pair{Symbolics.Num, Float64}}; name="0", context...) - nan_to_nothing(value) = isnan(value) ? nothing : value - fixed_params = Dict(key => nan_to_nothing(value) for (key, value) in params) - if settings["ENABLE_TDS"] - return upload(fixed_params, context[:job_id]; name=name) - else - params - end -end - - -# """ -# Coerces NaN values to nothing for each parameter -# """ -function prepare_output(results::Dict{String}; context...) - prepared_outputs = [] - for (name, value) in results - append!(prepared_outputs, [prepare_output(value; context..., name=name)]) - end - if settings["ENABLE_TDS"] - update_simulation(context[:job_id], Dict([:status => "complete", :result_files => prepared_outputs, :completed_time => time()])) - else - results - end -end - -# """ -# Generate a `prepare_output` function that is already contextualized -# """ -function prepare_output(context) - function contextualized_prepare_output(arg) - prepare_output(arg; context...) - end -end - - -end diff --git a/src/service/AssetManager.jl b/src/service/AssetManager.jl deleted file mode 100644 index 03daa6c..0000000 --- a/src/service/AssetManager.jl +++ /dev/null @@ -1,107 +0,0 @@ -""" -Asset fetching from TDS -""" -module AssetManager - -import DataFrames: rename!, DataFrame -import CSV, Downloads, HTTP -import OpenAPI.Clients: Client -import JSON3 as JSON -import UUIDs: UUID -include("../Settings.jl"); import .Settings: settings - -export fetch_dataset, fetch_model, update_simulation, upload - -""" -Generate UUID with prefix -""" -function gen_uuid(job_id) - "sciml-" * string(UUID(job_id)) -end - -""" -Return model JSON as string from TDS by ID -""" -function fetch_model(model_id::String) - response = HTTP.get("$(settings["TDS_URL"])/model_configurations/$model_id", ["Content-Type" => "application/json"]) - body = response.body |> JSON.read ∘ String - JSON.write(body.configuration) -end - -""" -Return csv from TDS by ID -""" -function fetch_dataset(dataset_id::String, filename::String, mappings::Dict=Dict()) - # TODO(five): Select name dynamicially - url = "$(settings["TDS_URL"])/datasets/$dataset_id/download-url?filename=$filename" - response = HTTP.get(url, ["Content-Type" => "application/json"]) - body = response.body |> JSON.read ∘ String - io = IOBuffer() - Downloads.download(body.url, io) - seekstart(io) - dataframe = CSV.read(io, DataFrame) - for (from, to) in mappings rename!(dataframe, Symbol(from)=>Symbol(to)) end - dataframe -end - -""" -Report the job as completed -""" -function update_simulation(job_id::Int64, updated_fields::Dict{Symbol}) - uuid = gen_uuid(job_id) - response = nothing - remaining_retries = 10 # TODO(five)??: Set this with environment variable - while remaining_retries != 0 - remaining_retries -= 1 - sleep(2) - try - response = HTTP.get("$(settings["TDS_URL"])/simulations/$uuid", ["Content-Type" => "application/json"]) - break - catch exception - if isa(exception,HTTP.Exceptions.StatusError) && exception.status == 404 - response = nothing - else - throw(exception) - end - end - end - if isnothing(response) - throw("Job cannot finish because it does not exist in TDS") - end - body = response.body |> Dict ∘ JSON.read ∘ String - for field in updated_fields - body[field.first] = field.second - end - HTTP.put("$(settings["TDS_URL"])/simulations/$uuid", ["Content-Type" => "application/json"], body=JSON.write(body)) -end - -""" -Upload a CSV to S3/MinIO -""" -function upload(output::DataFrame, job_id; name="result") - uuid = gen_uuid(job_id) - response = HTTP.get("$(settings["TDS_URL"])/simulations/$uuid/upload-url?filename=$name.csv", ["Content-Type" => "application/json"]) - # TODO(five): Stream so there isn't duplication - io = IOBuffer() - CSV.write(io, output) - seekstart(io) - url = JSON.read(response.body)[:url] - HTTP.put(url, ["Content-Type" => "application/json"], body = take!(io)) - bare_url = split(url, "?")[1] - bare_url -end - - -""" -Upload a JSON to S3/MinIO -""" -function upload(output::Dict, job_id; name="result") - uuid = gen_uuid(job_id) - response = HTTP.get("$(settings["TDS_URL"])/simulations/$uuid/upload-url?filename=$name.json", ["Content-Type" => "application/json"]) - url = JSON.read(response.body)[:url] - HTTP.put(url, ["Content-Type" => "application/json"], body = JSON.write(output)) - bare_url = split(url, "?")[1] - bare_url -end - -end # module AssetManager diff --git a/src/service/Execution.jl b/src/service/Execution.jl deleted file mode 100644 index acf7a9f..0000000 --- a/src/service/Execution.jl +++ /dev/null @@ -1,115 +0,0 @@ -""" -Manage jobs -""" -module Execution - -import HTTP: Request, Response -import JSON3 as JSON -import Oxygen: json -import JobSchedulers: submit!, job_query, result, generate_id, Job, JobSchedulers -import UUIDs: UUID - -include("../contracts/Interface.jl"); import .Interface: available_operations, use_operation, Context -include("./AssetManager.jl"); import .AssetManager: update_simulation -include("./ArgIO.jl"); import .ArgIO: prepare_input, prepare_output -include("./Queuing.jl"); import .Queuing: publish_to_rabbitmq -include("../Settings.jl"); import .Settings: settings - -export make_deterministic_run, retrieve_job - -SCHEDULER_TO_API_STATUS_MAP = Dict( - JobSchedulers.QUEUING => :queued, - JobSchedulers.RUNNING => :running, - JobSchedulers.DONE => :complete, - JobSchedulers.FAILED => :error, - JobSchedulers.CANCELLED => :cancelled, -) - -""" -Generate the task to run with the correct context -""" -function contextualize_prog(context) - function prog(args) - try - (prepare_output(context) ∘ use_operation(context) ∘ prepare_input(context))(args) - catch exception - if settings["ENABLE_TDS"] - update_simulation(context.job_id, Dict([:status=>"error"])) - end - rethrow(exception) - end - end -end - -# Coerce request object to dict -make_deterministic_run(req::Request, operation::String) = make_deterministic_run(json(req, Dict{Symbol, Any}), operation) - -""" -Schedule a sim run given an operation -""" -function make_deterministic_run(args, operation::String) - # TODO(five): Spawn remote workers and run jobs on them - if !in(operation, keys(available_operations)) - return Response( - 404, - ["Content-Type" => "text/plain; charset=utf-8"], - body="Operation not found" - ) - end - - publish_hook = settings["RABBITMQ_ENABLED"] ? publish_to_rabbitmq : (_...) -> nothing - - context = Context( - generate_id(), - publish_hook, - Symbol(operation), - args - ) - prog = contextualize_prog(context) - sim_run = Job(@task(prog(args))) - sim_run.id = context.job_id - submit!(sim_run) - uuid = "sciml-" * string(UUID(sim_run.id)) - Response( - 201, - ["Content-Type" => "application/json; charset=utf-8"], - body=JSON.write("simulation_id" => uuid) - ) -end - - -""" -Get status of sim -""" -function retrieve_job(_, uuid::String, element::String) - id = Int64(UUID(split(uuid, "sciml-")[2]).value) - job = job_query(id) - if isnothing(job) - return Response( - 404, - ["Content-Type" => "text/plain; charset=utf-8"], - body="Job does not exist" - ) - end - if element == "status" - return Dict("status" => SCHEDULER_TO_API_STATUS_MAP[job.state]) - elseif element == "result" - if job.state == :done - return result(job) - else - return Response( - 400, - ["Content-Type" => "text/plain; charset=utf-8"], - body="Job has not completed" - ) - end - else - return Response( - 404, - ["Content-Type" => "text/plain; charset=utf-8"], - body="Element not found" - ) - end -end - -end # module Execution diff --git a/src/service/Queuing.jl b/src/service/Queuing.jl deleted file mode 100644 index a4714fa..0000000 --- a/src/service/Queuing.jl +++ /dev/null @@ -1,55 +0,0 @@ -""" -RabbitMQ Integration -""" -module Queuing - -import Logging: AbstractLogger, LogLevel -import Logging -import AMQPClient: amqps_configure, basic_publish, channel, connection, Message, AMQPS_DEFAULT_PORT, UNUSED_CHANNEL -import JSON3 as JSON - -include("../Settings.jl"); import .Settings: settings - -""" -Connect to channel -""" -function get_channel() - conn = connection(; - virtualhost="/", - host="localhost", - port=settings["RABBITMQ_PORT"], - auth_params=Dict{String, Any}("MECHANISM"=>"AMQPLAIN", "LOGIN"=>settings["RABBITMQ_LOGIN"], "PASSWORD"=>settings["RABBITMQ_PASSWORD"]), - #amqps=amqps_configure() - ) - channel(conn, UNUSED_CHANNEL, true) -end - -""" -Publish JSON to RabbitMQ -""" -function publish_to_rabbitmq(content) - chan = get_channel() # TODO(five): Don't recreate for each call - json = convert(Vector{UInt8}, codeunits(JSON.write(content))) - message = Message(json, content_type="application/json") - # TODO(five): Regen channel - basic_publish(chan, message; exchange="", routing_key=settings["RABBITMQ_ROUTE"]) -end - -""" -Logger that calls an arbitrary hook on a message -""" -struct MQLogger <: AbstractLogger - publish_hook::Function -end - -""" -MQLogger preloaded with RabbitMQ publishing -""" -MQLogger() = MQLogger(publish_to_rabbitmq) - -Logging.shouldlog(::MQLogger, args...; kwargs...) = true -Logging.min_enabled_level(::MQLogger) = LogLevel(0) -Logging.handle_message(logger::MQLogger, level, message, args...; kwargs...) = logger.publish_hook(message) -Logging.catch_exceptions(::MQLogger) = true - -end # module Queuing diff --git a/src/service/Service.jl b/src/service/Service.jl deleted file mode 100644 index 167f604..0000000 --- a/src/service/Service.jl +++ /dev/null @@ -1,12 +0,0 @@ -module Service - -import Reexport: @reexport -include("../Settings.jl") - -include("./AssetManager.jl") -include("./ArgIO.jl") -include("./Queuing.jl") -include("./Execution.jl") -@reexport using .ArgIO, .AssetManager, .Queuing, .Execution - -end # module Service diff --git a/test/ensemble.jl b/test/ensemble.jl deleted file mode 100644 index 885dd73..0000000 --- a/test/ensemble.jl +++ /dev/null @@ -1,119 +0,0 @@ - -dfc = CSV.read("cases.csv", DataFrame) -dfd = CSV.read("deaths.csv", DataFrame) -dfh = CSV.read("hosp.csv", DataFrame) -function calibration_data(dfc, dfd, dfh; use_hosp=false) - - us_ = dfc[dfc.location.=="US", :] - usd_ = dfd[dfd.location.=="US", :] - ush_ = dfh[dfh.location.=="US", :] - - rename!(us_, :value => :cases) - rename!(usd_, :value => :deaths) - rename!(ush_, :value => :hosp) - - if use_hosp - d_ = innerjoin(us_, usd_, ush_, on=:date, makeunique=true) - d = d_[:, [:date, :cases, :deaths, :hosp]] - else - d_ = innerjoin(us_, usd_, on=:date, makeunique=true) - d = d_[:, [:date, :cases, :deaths]] - end - - us_ = d - sort!(us_, :date) - us = deepcopy(us_) - # us[!, :unix] = datetime2unix.(DateTime.(us.date)) - insertcols!(us, 1, :unix => datetime2unix.(DateTime.(us.date))) - # us -end -covidhub = calibration_data(dfc, dfh, dfd, use_hosp=true) -fitdata = covidhub[1:20, [:t, :cases, :deaths, :hosp]] -jdata = objecttable(fitdata) -write("fitdata.json", jdata) - -# todo global_datafit -sir_fn = "/Users/anand/.julia/dev/simulation-scheduler/examples/sir.json" -sird_fn = "/Users/anand/.julia/dev/simulation-scheduler/examples/sird.json" -sirh_fn = "/Users/anand/.julia/dev/simulation-scheduler/examples/sirh.json" -sirhd_fn = "/Users/anand/.julia/dev/simulation-scheduler/examples/sirhd.json" -pns = sir, sird, sirh, sirhd = [read_json_acset(T, fn) for fn in (sir_fn, sird_fn, sirh_fn, sirhd_fn)] - -syss = sys1, sys2, sys3, sys4 = ODESystem.(pns) - -strat_fn = "/Users/anand/.julia/dev/ASKEM_Evaluation_Staging/docs/src/Scenario3/sirhd_renew_vax.json" -sp = read_json_acset(LabelledPetriNet, strat_fn) -@which ODESystem(sp) -st_sys = ODESystem(sp) -st_sts = states(st_sys) -st_ps = parameters(st_sys) - -# this section demonstrates the difficulty of quickly building observed maps from stratified petrinets - -strat_st_vecs = eval.(Meta.parse.(String.(Symbolics.getname.(st_sts)))) -vsts = st_sts[findall(==("V"), last.(strat_st_vecs))] -usts = st_sts[findall(==("U"), last.(strat_st_vecs))] -ists = st_sts[findall(==("I"), first.(strat_st_vecs))] - -sidarthe = ODESystem(petri) -@unpack Susceptible, Infected, Diagnosed, Ailing, Recognized, Threatened, Healed, Extinct = sidarthe -S, I, D, A, R, T, H, E = Susceptible, Infected, Diagnosed, Ailing, Recognized, Threatened, -Healed, Extinct -Hospitalizations = Recognized + Threatened -Cases = Diagnosed + Recognized + Threatened -cases_data = map(sum, eachrow(df[:, ["Diagnosed(t)", "Recognized(t)", "Threatened(t)"]])) -hospitalizations_data = map(sum, eachrow(df[:, ["Recognized(t)", "Threatened(t)"]])) -df[!, "Cases(t)"] = cases_data -df[!, "Hospitalizations(t)"] = hospitalizations_data -df[!, "Extinct"] = hospitalizations_data -sym_data = [=> df[:, "Susceptible(t)"]] - - -sns = snames.(pns) -all_sns = map(x -> string.(x), sns) -tns = tnames.(pns) -all_tns = map(x -> string.(x), tns) -to_init(x) = x .=> rand(length(x)) -all_inits = to_init.(all_sns) -all_tspan = (0.0, 100.0) -all_params = to_init.(all_tns) - -mapping = Dict([ - "I" => "cases", - "H" => "hosp", - "D" => "deaths" -]) - -jd = (;) -sirhd_j = generate_json_acset(sirhd) -ensemble_nt = (; models=[(; petri=sirhd_j, params=Dict(all_params[4]), initials=Dict(all_inits[4]), tspan=all_tspan, mapping=mapping)], data=namedtuple(JSON3.read(jdata))) -ensemble_json = JSON3.write(ensemble_nt) -write(_log("ensemble.json"), ensemble_json) -b = JSON3.read(read(_log("ensemble.json"))) -models = b.models -m = b.models[1] -data = b.data -mp = collect(Dict(m.mapping)) -map_to_data(mp, d) = string.(first.(mp)) .=> map(x -> Float64.(collect(d[Symbol(x)])), last.(mp)) -# build_cali_nt -mpn = JSON3.write(m.petri) - -# write_json_acset("sirhd.json", m.petri) -parse_json_acset(TAny, mpn) -function ensemble_calibrate(; models, data) - # m = models[1] - fits = [] - for m in models - data_ = map_to_data(mp, data) - - params_ = collect(m.params) - paramsd = Dict(string.(first.(params_)) .=> last.(params_)) - - initials_ = collect(m.initials) - initialsd = Dict(string.(first.(initials_)) .=> last.(initials_)) - t = data.t - nt = (; model=parse_json_acset(TAny, mpn), params=paramsd, initials=initialsd, t=Float64.(collect(t)), data=Dict(data_)) - push!(fits, SimulationService.SciMLInterface.calibrate(; nt...)) - end - fits -end \ No newline at end of file diff --git a/test/runtests.jl b/test/runtests.jl index 9afcca1..a0ca2d6 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,27 +1,81 @@ using Test -using Downloads: download +using DataFrames +using EasyConfig using HTTP using JSON3 +using Oxygen +using SciMLBase: solve + using SimulationService -# using SafeTestsets +SimulationService.SIMSERVICE_ENABLE_TDS = false #-----------------------------------------------------------------------------# Operations @testset "Operations" begin @testset "simulate" begin url = "https://raw.githubusercontent.com/DARPA-ASKEM/Model-Representations/main/petrinet/examples/sir.json" - json_string = read(download(url), String) - model = SimulationService.Service.Execution.Interface.Available.ProblemInputs.coerce_model(json_string) - f = SimulationService.Service.Execution.Interface.Available.get_operation(:simulate) - f(; model, context=nothing) + obj = SimulationService.get_json(url) + sys = SimulationService.ode_system_from_amr(obj) + op = SimulationService.Simulate(sys, (0.0, 100.0)) + df = solve(op) + @test df isa DataFrame + @test extrema(df.timestamp) == (0.0, 100.0) end + @testset "calibrate" begin # TODO end + @testset "ensemble" begin # TODO end end +#-----------------------------------------------------------------------------# test routes +@testset "Server Routes" begin + SimulationService.SIMSERVICE_ENABLE_TDS = false + start!() + + url = SimulationService.server_url[] + + sleep(1) # wait for server to start + + @testset "/" begin + res = HTTP.get(url) + @test res.status == 200 + @test JSON3.read(res.body).status == "ok" + end + + @testset "/simulate" begin + file = joinpath(@__DIR__, "..", "examples", "BIOMD0000000955_askenet.json") + amr = JSON3.read(read(file), Config) + json = Config(test_amr = amr, timespan=(0, 90)) + body = JSON3.write(json) + res = HTTP.post("$url/simulate", ["Content-Type" => "application/json"]; body=body) + @test res.status == 201 -# @safetestset "sciml" begin include("sciml.jl") end + done_or_failed = false + job_id = JSON3.read(res.body).simulation_id + while !done_or_failed + status = JSON3.read(HTTP.get("$url/status/$job_id").body) + if status.status == "complete" + @test true + done_or_failed = true + elseif status.status == "error" + @test false + done_or_failed = true + end + sleep(1) + end + end + + @testset "/calibrate" begin + @test true # TODO + end + + @testset "/ensemble" begin + @test true # TODO + end + + stop!() +end diff --git a/test/sciml.jl b/test/sciml.jl deleted file mode 100644 index 6a67aa9..0000000 --- a/test/sciml.jl +++ /dev/null @@ -1,58 +0,0 @@ -using SimulationService, AlgebraicPetri, DataFrames, DifferentialEquations, ModelingToolkit, Symbolics, EasyModelAnalysis, Catlab, Catlab.CategoricalAlgebra, JSON3, UnPack, SimulationService.Service.Execution.Interface.Operations -using CSV, DataFrames, JSONTables -using ForwardDiff - -_datadir() = joinpath(@__DIR__, "../examples") -_data(s) = joinpath(_datadir(), s) - -_logdir() = joinpath(@__DIR__, "logs") -_log(s) = joinpath(_logdir(), s) -mkpath(_logdir()) - -bn = "BIOMD0000000955_miranet.json" -fn = _data(bn) -T = PropertyLabelledReactionNet{Number,Number,Dict} -TAny = PropertyLabelledReactionNet{Any,Any,Any} - -# we should be able to assume that all concentration and rate are set (despite this not being the case for the other 2 Miras from ben) -petri = read_json_acset(T, fn) -ps = string.(tnames(petri)) .=> petri[:rate] -u0 = string.(snames(petri)) .=> petri[:concentration] - -params = Dict(ps) -initials = Dict(u0) -timespan = (0.0, 100.0) - -nt = (; model=petri, params, initials, timespan) -body = Dict(pairs(nt)) -j = JSON3.write(body) -forecast_fn = _log("forecast.json") -write(forecast_fn, j) - -df = SimulationService.Service.Execution.Interface.Available.get_operation(:simulate)(; nt..., context=nothing) -@test df isa DataFrame - -params["t1"] = 0.1 -nt = (; model = petri, params, initials, timespan) -df2 = SimulationService.Service.Execution.Interface.Available.get_operation(:simulate)(; nt..., context=nothing) - -timesteps = df.timestamp -data = Dict(["Susceptible" => df[:, 2]]) -rename!(df, Dict("Susceptible(t)" => "Susceptible", "timestamp" => "timestep")) -fit_args = (; model=petri, params, initials, dataset=df[:, ["timestep", "Susceptible"]]) -fit_body = Dict(pairs(fit_args)) -fit_j = JSON3.write(fit_body) -calibrate_fn = _log("calibrate.json") -write(calibrate_fn, fit_j) - -fitp = SimulationService.Service.Execution.Interface.Available.get_operation(:calibrate)(; fit_args..., context=nothing) -prob = SimulationService.Service.Execution.Interface.Operations.Utils.to_prob(petri, params, initials, extrema(timesteps)) -sys = prob.f.sys - -# example of dloss/dp -pkeys = parameters(sys) -pvals = [params[string(x)] for x in pkeys] -data = [states(sys)[1] => df[:, 2]] - -l = EasyModelAnalysis.l2loss(pvals, (prob, pkeys, timesteps, data)) -ForwardDiff.gradient(p -> EasyModelAnalysis.l2loss(p, (prob, pkeys, timesteps, data)), last.(fitp))