diff --git a/CovidABM/LICENSE b/CovidAlertVaccinationModel/LICENSE similarity index 100% rename from CovidABM/LICENSE rename to CovidAlertVaccinationModel/LICENSE diff --git a/CovidAlertVaccinationModel/Manifest.toml b/CovidAlertVaccinationModel/Manifest.toml new file mode 100644 index 0000000000000000000000000000000000000000..9f2dd289cf1e7347e1255edf9e28e64f56b22f94 --- /dev/null +++ b/CovidAlertVaccinationModel/Manifest.toml @@ -0,0 +1,1090 @@ +# This file is machine-generated - editing it directly is not advised + +[[Adapt]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ffcfa2d345aaee0ef3d8346a073d5dd03c983ebe" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "3.2.0" + +[[ArgCheck]] +git-tree-sha1 = "dedbbb2ddb876f899585c4ec4433265e3017215a" +uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" +version = "2.1.0" + +[[ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" + +[[ArnoldiMethod]] +deps = ["LinearAlgebra", "Random", "StaticArrays"] +git-tree-sha1 = "f87e559f87a45bece9c9ed97458d3afe98b1ebb9" +uuid = "ec485272-7323-5ecc-a04f-4719b315124d" +version = "0.1.0" + +[[ArrayInterface]] +deps = ["IfElse", "LinearAlgebra", "Requires", "SparseArrays"] +git-tree-sha1 = "ee07ae00e3cc277dcfa5507ce25be522313ecc3e" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "3.1.1" + +[[Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[BangBang]] +deps = ["Compat", "ConstructionBase", "Future", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables", "ZygoteRules"] +git-tree-sha1 = "d53b1eaefd48e233545d21f5b764c8ee54df4a09" +uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" +version = "0.3.30" + +[[Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[BenchmarkTools]] +deps = ["JSON", "Logging", "Printf", "Statistics", "UUIDs"] +git-tree-sha1 = "9e62e66db34540a0c919d72172cc2f642ac71260" +uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +version = "0.5.0" + +[[Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "c3598e525718abcc440f69cc6d5f60dda0a1b61e" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.6+5" + +[[CSV]] +deps = ["Dates", "Mmap", "Parsers", "PooledArrays", "SentinelArrays", "Tables", "Unicode"] +git-tree-sha1 = "1f79803452adf73e2d3fc84785adb7aaca14db36" +uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" +version = "0.8.3" + +[[Cairo_jll]] +deps = ["Artifacts", "Bzip2_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "e2f47f6d8337369411569fd45ae5753ca10394c6" +uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" +version = "1.16.0+6" + +[[CategoricalArrays]] +deps = ["DataAPI", "Future", "JSON", "Missings", "Printf", "Statistics", "StructTypes", "Unicode"] +git-tree-sha1 = "99809999c8ee01fa89498480b147f7394ea5450f" +uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" +version = "0.9.2" + +[[ChainRulesCore]] +deps = ["Compat", "LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "de4f08843c332d355852721adb1592bce7924da3" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "0.9.29" + +[[ColorSchemes]] +deps = ["ColorTypes", "Colors", "FixedPointNumbers", "Random", "StaticArrays"] +git-tree-sha1 = "3141757b5832ee7a0386db87997ee5a23ff20f4d" +uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" +version = "3.10.2" + +[[ColorTypes]] +deps = ["FixedPointNumbers", "Random"] +git-tree-sha1 = "4bffea7ed1a9f0f3d1a131bbcd4b925548d75288" +uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" +version = "0.10.9" + +[[Colors]] +deps = ["ColorTypes", "FixedPointNumbers", "InteractiveUtils", "Reexport"] +git-tree-sha1 = "ac5f2213e56ed8a34a3dd2f681f4df1166b34929" +uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" +version = "0.12.6" + +[[Compat]] +deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] +git-tree-sha1 = "919c7f3151e79ff196add81d7f4e45d91bbf420b" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "3.25.0" + +[[CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" + +[[CompositionsBase]] +git-tree-sha1 = "f3955eb38944e5dd0fabf8ca1e267d94941d34a5" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.0" + +[[ConstructionBase]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "48920211c95a6da1914a06c44ec94be70e84ffff" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.1.0" + +[[Contour]] +deps = ["StaticArrays"] +git-tree-sha1 = "9f02045d934dc030edad45944ea80dbd1f0ebea7" +uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" +version = "0.5.7" + +[[Crayons]] +git-tree-sha1 = "3f71217b538d7aaee0b69ab47d9b7724ca8afa0d" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.0.4" + +[[DataAPI]] +git-tree-sha1 = "dfb3b7e89e395be1e25c2ad6d7690dc29cc53b1d" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.6.0" + +[[DataFrames]] +deps = ["CategoricalArrays", "Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Reexport", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] +git-tree-sha1 = "b0db5579803eabb33f1274ca7ca2f472fdfb7f2a" +uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" +version = "0.22.5" + +[[DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "4437b64df1e0adccc3e5d1adbc3ac741095e4677" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.9" + +[[DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[DefineSingletons]] +git-tree-sha1 = "77b4ca280084423b728662fe040e5ff8819347c5" +uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" +version = "0.1.1" + +[[DelimitedFiles]] +deps = ["Mmap"] +uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" + +[[Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[Distributions]] +deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns"] +git-tree-sha1 = "5a9a742ae30f13d6172c7ea245988d932134e25b" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.24.13" + +[[Downloads]] +deps = ["ArgTools", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" + +[[EarCut_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "92d8f9f208637e8d2d28c664051a00569c01493d" +uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" +version = "2.1.5+1" + +[[Expat_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "1402e52fcda25064f51c77a9655ce8680b76acf0" +uuid = "2e619515-83b5-522b-bb60-26c02a35a201" +version = "2.2.7+6" + +[[ExprTools]] +git-tree-sha1 = "10407a39b87f29d47ebaca8edbc75d7c302ff93e" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.3" + +[[EzXML]] +deps = ["Printf", "XML2_jll"] +git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" +uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" +version = "1.1.0" + +[[FFMPEG]] +deps = ["FFMPEG_jll", "x264_jll"] +git-tree-sha1 = "9a73ffdc375be61b0e4516d83d880b265366fe1f" +uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" +version = "0.4.0" + +[[FFMPEG_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "LibVPX_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "Pkg", "Zlib_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "3cc57ad0a213808473eafef4845a74766242e05f" +uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" +version = "4.3.1+4" + +[[FillArrays]] +deps = ["LinearAlgebra", "Random", "SparseArrays"] +git-tree-sha1 = "e384d3cff80ac79c7a541a817192841836e46331" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "0.11.2" + +[[FixedPointNumbers]] +deps = ["Statistics"] +git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" +uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" +version = "0.8.4" + +[[Fontconfig_jll]] +deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "35895cf184ceaab11fd778b4590144034a167a2f" +uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" +version = "2.13.1+14" + +[[Formatting]] +deps = ["Printf"] +git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" +uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" +version = "0.4.2" + +[[FreeType2_jll]] +deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "cbd58c9deb1d304f5a245a0b7eb841a2560cfec6" +uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" +version = "2.10.1+5" + +[[FriBidi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "0d20aed5b14dd4c9a2453c1b601d08e1149679cc" +uuid = "559328eb-81f9-559d-9380-de523a88c83c" +version = "1.0.5+6" + +[[Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" + +[[GLFW_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] +git-tree-sha1 = "a1bbf700b5388bffc3d882f4f4d625cf1c714fd7" +uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" +version = "3.3.2+1" + +[[GR]] +deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "LinearAlgebra", "Pkg", "Printf", "Random", "Serialization", "Sockets", "Test", "UUIDs"] +git-tree-sha1 = "aaebdf5588281c2902f499b49e67953f2b409c9c" +uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" +version = "0.54.0" + +[[GR_jll]] +deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Pkg", "Qt_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "8aee6fa096b0cbdb05e71750c978b96a08c78951" +uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" +version = "0.53.0+0" + +[[GeometryBasics]] +deps = ["EarCut_jll", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] +git-tree-sha1 = "4d4f72691933d5b6ee1ff20e27a102c3ae99d123" +uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" +version = "0.3.9" + +[[Gettext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "8c14294a079216000a0bdca5ec5a447f073ddc9d" +uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" +version = "0.20.1+7" + +[[Glib_jll]] +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "04690cc5008b38ecbdfede949220bc7d9ba26397" +uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" +version = "2.59.0+4" + +[[Grisu]] +git-tree-sha1 = "03d381f65183cb2d0af8b3425fde97263ce9a995" +uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" +version = "1.0.0" + +[[HTTP]] +deps = ["Base64", "Dates", "IniFile", "MbedTLS", "Sockets", "URIs"] +git-tree-sha1 = "942c1a9c750bbe79912b7bd060a420932afd35b8" +uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" +version = "0.9.3" + +[[IfElse]] +git-tree-sha1 = "28e837ff3e7a6c3cdb252ce49fb412c8eb3caeef" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.0" + +[[ImportAll]] +deps = ["Test"] +git-tree-sha1 = "5aa65f6204e1b68dfef024421e61fbcacecfbfa6" +uuid = "c65182e5-40f4-518f-8165-175b85689199" +version = "1.1.0" + +[[Inflate]] +git-tree-sha1 = "f5fc07d4e706b84f72d54eedcc1c13d92fb0871c" +uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" +version = "0.1.2" + +[[IniFile]] +deps = ["Test"] +git-tree-sha1 = "098e4d2c533924c921f9f9847274f2ad89e018b8" +uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" +version = "0.5.0" + +[[InitialValues]] +git-tree-sha1 = "26c8832afd63ac558b98a823265856670d898b6c" +uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" +version = "0.2.10" + +[[InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[Intervals]] +deps = ["Dates", "Printf", "RecipesBase", "Serialization", "TimeZones"] +git-tree-sha1 = "323a38ed1952d30586d0fe03412cde9399d3618b" +uuid = "d8418881-c3e1-53bb-8760-2df7ec849ed5" +version = "1.5.0" + +[[InvertedIndices]] +deps = ["Test"] +git-tree-sha1 = "15732c475062348b0165684ffe28e85ea8396afc" +uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" +version = "1.0.0" + +[[IterTools]] +git-tree-sha1 = "05110a2ab1fc5f932622ffea2a003221f4782c18" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.3.0" + +[[IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[JLLWrappers]] +git-tree-sha1 = "a431f5f2ca3f4feef3bd7a5e94b8b8d4f2f647a0" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.2.0" + +[[JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "81690084b6198a2e1da36fcfda16eeca9f9f24e4" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.1" + +[[JpegTurbo_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9aff0587d9603ea0de2c6f6300d9f9492bbefbd3" +uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" +version = "2.0.1+3" + +[[LAME_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "df381151e871f41ee86cee4f5f6fd598b8a68826" +uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" +version = "3.100.0+3" + +[[LZO_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f128cd6cd05ffd6d3df0523ed99b90ff6f9b349a" +uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" +version = "2.10.0+3" + +[[LaTeXStrings]] +git-tree-sha1 = "c7aebfecb1a60d59c0fe023a68ec947a208b1e6b" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.2.0" + +[[LabelledArrays]] +deps = ["ArrayInterface", "LinearAlgebra", "MacroTools", "StaticArrays"] +git-tree-sha1 = "5e288800819c323de5897fa6d5a002bdad54baf7" +uuid = "2ee39098-c373-598a-b85f-a56591580800" +version = "1.5.0" + +[[Latexify]] +deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "Printf", "Requires"] +git-tree-sha1 = "3a0084cec7bf157edcb45a67fac0647f88fe5eaf" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.14.7" + +[[LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" + +[[LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" + +[[LibGit2]] +deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" + +[[LibVPX_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "85fcc80c3052be96619affa2fe2e6d2da3908e11" +uuid = "dd192d2f-8180-539f-9fb4-cc70b1dcf69a" +version = "1.9.0+1" + +[[Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[Libffi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "a2cd088a88c0d37eef7d209fd3d8712febce0d90" +uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" +version = "3.2.1+4" + +[[Libgcrypt_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] +git-tree-sha1 = "b391a18ab1170a2e568f9fb8d83bc7c780cb9999" +uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" +version = "1.8.5+4" + +[[Libglvnd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] +git-tree-sha1 = "7739f837d6447403596a75d19ed01fd08d6f56bf" +uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" +version = "1.3.0+3" + +[[Libgpg_error_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ec7f2e8ad5c9fa99fc773376cdbc86d9a5a23cb7" +uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" +version = "1.36.0+3" + +[[Libiconv_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "8e924324b2e9275a51407a4e06deb3455b1e359f" +uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" +version = "1.16.0+7" + +[[Libmount_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "51ad0c01c94c1ce48d5cad629425035ad030bfd5" +uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" +version = "2.34.0+3" + +[[Libtiff_jll]] +deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] +git-tree-sha1 = "291dd857901f94d683973cdf679984cdf73b56d0" +uuid = "89763e89-9b03-5906-acba-b20f662cd828" +version = "4.1.0+2" + +[[Libuuid_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f879ae9edbaa2c74c922e8b85bb83cc84ea1450b" +uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" +version = "2.34.0+7" + +[[LightGraphs]] +deps = ["ArnoldiMethod", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"] +git-tree-sha1 = "432428df5f360964040ed60418dd5601ecd240b6" +uuid = "093fc24a-ae57-5d10-9952-331d41423f4d" +version = "1.3.5" + +[[LinearAlgebra]] +deps = ["Libdl"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "6a8a2a625ab0dea913aba95c11370589e0239ff0" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.6" + +[[Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "Random", "Sockets"] +git-tree-sha1 = "1c38e51c3d08ef2278062ebceade0e46cefc96fe" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.0.3" + +[[MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" + +[[Measures]] +git-tree-sha1 = "e498ddeee6f9fdb4551ce855a46f54dbd900245f" +uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" +version = "0.3.1" + +[[MicroCollections]] +deps = ["BangBang", "Setfield"] +git-tree-sha1 = "e991b6a9d38091c4a0d7cd051fcb57c05f98ac03" +uuid = "128add7d-3638-4c79-886c-908ea0c25c34" +version = "0.1.0" + +[[Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "f8c673ccc215eb50fcadb285f522420e29e69e1c" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "0.4.5" + +[[Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[Mocking]] +deps = ["ExprTools"] +git-tree-sha1 = "916b850daad0d46b8c71f65f719c49957e9513ed" +uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" +version = "0.7.1" + +[[MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" + +[[NaNMath]] +git-tree-sha1 = "bfe47e760d60b82b66b61d2d44128b62e3a369fb" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "0.3.5" + +[[NamedTupleTools]] +git-tree-sha1 = "63831dcea5e11db1c0925efe5ef5fc01d528c522" +uuid = "d9ec5142-1e00-5aa0-9d6a-321866360f50" +version = "0.13.7" + +[[NetworkLayout]] +deps = ["GeometryBasics", "LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "01b5715cdd1b7c5d493c26cc05e4af663ba9a052" +uuid = "46757867-2c16-5918-afeb-47bfcb05e46a" +version = "0.3.0" + +[[NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" + +[[Ogg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "a42c0f138b9ebe8b58eba2271c5053773bde52d0" +uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" +version = "1.3.4+2" + +[[OpenSSL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "71bbbc616a1d710879f5a1021bcba65ffba6ce58" +uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" +version = "1.1.1+6" + +[[OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9db77584158d0ab52307f8c04f8e7c08ca76b5b3" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.3+4" + +[[Opus_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "f9d57f4126c39565e05a2b0264df99f497fc6f37" +uuid = "91d4177d-7536-5919-b921-800302f37372" +version = "1.3.1+3" + +[[OrderedCollections]] +git-tree-sha1 = "d45739abcfc03b51f6a42712894a593f74c80a23" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.3.3" + +[[PCRE_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "1b556ad51dceefdbf30e86ffa8f528b73c7df2bb" +uuid = "2f80f16e-611a-54ab-bc61-aa92de5b98fc" +version = "8.42.0+4" + +[[PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse", "Test"] +git-tree-sha1 = "95a4038d1011dfdbde7cecd2ad0ac411e53ab1bc" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.10.1" + +[[Parsers]] +deps = ["Dates"] +git-tree-sha1 = "50c9a9ed8c714945e01cd53a21007ed3865ed714" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "1.0.15" + +[[Pipe]] +git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" +uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" +version = "1.3.0" + +[[Pixman_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6a20a83c1ae86416f0a5de605eaea08a552844a3" +uuid = "30392449-352a-5448-841d-b1acce4e97dc" +version = "0.40.0+0" + +[[Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" + +[[PlotThemes]] +deps = ["PlotUtils", "Requires", "Statistics"] +git-tree-sha1 = "a3a964ce9dc7898193536002a6dd892b1b5a6f1d" +uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" +version = "2.0.1" + +[[PlotUtils]] +deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "Statistics"] +git-tree-sha1 = "ae9a295ac761f64d8c2ec7f9f24d21eb4ffba34d" +uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" +version = "1.0.10" + +[[Plots]] +deps = ["Base64", "Contour", "Dates", "FFMPEG", "FixedPointNumbers", "GR", "GeometryBasics", "JSON", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs"] +git-tree-sha1 = "cab13323a50caf17432793269677b289234f02ca" +uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" +version = "1.10.4" + +[[PooledArrays]] +deps = ["DataAPI"] +git-tree-sha1 = "0e8f5c428a41a81cd71f76d76f2fc3415fe5a676" +uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +version = "1.1.0" + +[[PrettyTables]] +deps = ["Crayons", "Formatting", "Markdown", "Reexport", "Tables"] +git-tree-sha1 = "574a6b3ea95f04e8757c0280bb9c29f1a5e35138" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "0.11.1" + +[[Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[Qt_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 = "7760cfea90bec61814e31dfb204fa4b81bba7b57" +uuid = "ede63266-ebff-546c-83e0-1c6fb6d0efc8" +version = "5.15.2+1" + +[[QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "12fbe86da16df6679be7521dfb39fbc861e1dc7b" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.4.1" + +[[REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[Random]] +deps = ["Serialization"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[RandomNumbers]] +deps = ["Random", "Requires"] +git-tree-sha1 = "441e6fc35597524ada7f85e13df1f4e10137d16f" +uuid = "e6cf234a-135c-5ec9-84dd-332b85af5143" +version = "1.4.0" + +[[RecipesBase]] +git-tree-sha1 = "b3fb709f3c97bfc6e948be68beeecb55a0b340ae" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.1.1" + +[[RecipesPipeline]] +deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase"] +git-tree-sha1 = "c4d54a78e287de7ec73bbc928ce5eb3c60f80b24" +uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" +version = "0.3.1" + +[[Reexport]] +git-tree-sha1 = "57d8440b0c7d98fc4f889e478e80f268d534c9d5" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.0.0" + +[[Referenceables]] +git-tree-sha1 = "4a32b1dd124a846580608eb347d4337f873c2499" +uuid = "42d2dcc6-99eb-4e98-b66c-637b7d73030e" +version = "0.1.0" + +[[Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "cfbac6c1ed70c002ec6361e7fd334f02820d6419" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.1.2" + +[[Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "86c5647b565873641538d8f812c04e4c9dbeb370" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.6.1" + +[[Rmath_jll]] +deps = ["Libdl", "Pkg"] +git-tree-sha1 = "d76185aa1f421306dec73c057aa384bad74188f0" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.2.2+1" + +[[SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" + +[[Scratch]] +deps = ["Dates"] +git-tree-sha1 = "ad4b278adb62d185bbcb6864dc24959ab0627bf6" +uuid = "6c6a2e73-6563-6170-7368-637461726353" +version = "1.0.3" + +[[SentinelArrays]] +deps = ["Dates", "Random"] +git-tree-sha1 = "6ccde405cf0759eba835eb613130723cb8f10ff9" +uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" +version = "1.2.16" + +[[Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "Requires"] +git-tree-sha1 = "d5640fc570fb1b6c54512f0bd3853866bd298b3e" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "0.7.0" + +[[SharedArrays]] +deps = ["Distributed", "Mmap", "Random", "Serialization"] +uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" + +[[Showoff]] +deps = ["Dates", "Grisu"] +git-tree-sha1 = "ee010d8f103468309b8afac4abb9be2e18ff1182" +uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" +version = "0.3.2" + +[[SimpleTraits]] +deps = ["InteractiveUtils", "MacroTools"] +git-tree-sha1 = "daf7aec3fe3acb2131388f93a4c409b8c7f62226" +uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" +version = "0.9.3" + +[[Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[SortingAlgorithms]] +deps = ["DataStructures", "Random", "Test"] +git-tree-sha1 = "03f5898c9959f8115e30bc7226ada7d0df554ddd" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "0.3.1" + +[[SparseArrays]] +deps = ["LinearAlgebra", "Random"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + +[[SpecialFunctions]] +deps = ["ChainRulesCore", "OpenSpecFun_jll"] +git-tree-sha1 = "75394dbe2bd346beeed750fb02baa6445487b862" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "1.2.1" + +[[SplittablesBase]] +deps = ["Setfield", "Test"] +git-tree-sha1 = "edef25a158db82f4940720ebada14a60ef6c4232" +uuid = "171d559e-b47b-412a-8079-5efa626c420e" +version = "0.1.13" + +[[StaticArrays]] +deps = ["LinearAlgebra", "Random", "Statistics"] +git-tree-sha1 = "9da72ed50e94dbff92036da395275ed114e04d49" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.0.1" + +[[Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics"] +git-tree-sha1 = "7bab7d4eb46b225b35179632852b595a3162cb61" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.33.2" + +[[StatsFuns]] +deps = ["Rmath", "SpecialFunctions"] +git-tree-sha1 = "3b9f665c70712af3264b61c27a7e1d62055dafd1" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "0.9.6" + +[[StructArrays]] +deps = ["Adapt", "DataAPI", "Tables"] +git-tree-sha1 = "26ea43b4be7e919a2390c3c0f824e7eb4fc19a0a" +uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" +version = "0.5.0" + +[[StructTypes]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "65a43f5218197bc7091b76bc273a5e323a1d7b0d" +uuid = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" +version = "1.2.3" + +[[SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" + +[[TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "b1ad568ba658d8cbb3b892ed5380a6f3e781a81e" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.0" + +[[Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "TableTraits", "Test"] +git-tree-sha1 = "a716dde43d57fa537a19058d044b495301ba6565" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.3.2" + +[[Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" + +[[Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[ThreadsX]] +deps = ["ArgCheck", "BangBang", "ConstructionBase", "InitialValues", "MicroCollections", "Referenceables", "Setfield", "SplittablesBase", "Transducers"] +git-tree-sha1 = "269f5c1955c1194086cf6d2029aa4a0b4fb8018b" +uuid = "ac1d9e8a-700a-412c-b207-f0111f4b6c0d" +version = "0.1.7" + +[[TimeZones]] +deps = ["Dates", "EzXML", "Mocking", "Pkg", "Printf", "RecipesBase", "Serialization", "Unicode"] +git-tree-sha1 = "4ba8a9579a243400db412b50300cd61d7447e583" +uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" +version = "1.5.3" + +[[Transducers]] +deps = ["ArgCheck", "BangBang", "CompositionsBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] +git-tree-sha1 = "9550eba57ebc2f7677c4c946aaca56e149ca73ff" +uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" +version = "0.4.59" + +[[URIs]] +git-tree-sha1 = "7855809b88d7b16e9b029afd17880930626f54a2" +uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" +version = "1.2.0" + +[[UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[UnPack]] +git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" +uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +version = "1.0.2" + +[[Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[Wayland_jll]] +deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "dc643a9b774da1c2781413fd7b6dcd2c56bb8056" +uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" +version = "1.17.0+4" + +[[Wayland_protocols_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll"] +git-tree-sha1 = "2839f1c1296940218e35df0bbb220f2a79686670" +uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" +version = "1.18.0+4" + +[[XML2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] +git-tree-sha1 = "afd2b541e8fd425cd3b7aa55932a257035ab4a70" +uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" +version = "2.9.11+0" + +[[XSLT_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Pkg", "XML2_jll"] +git-tree-sha1 = "2b3eac39df218762d2d005702d601cd44c997497" +uuid = "aed1982a-8fda-507f-9586-7b0439959a61" +version = "1.1.33+4" + +[[Xorg_libX11_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] +git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" +uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" +version = "1.6.9+4" + +[[Xorg_libXau_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" +uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" +version = "1.0.9+4" + +[[Xorg_libXcursor_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" +uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" +version = "1.2.0+4" + +[[Xorg_libXdmcp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" +uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" +version = "1.1.3+4" + +[[Xorg_libXext_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" +uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" +version = "1.3.4+4" + +[[Xorg_libXfixes_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" +uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" +version = "5.0.3+4" + +[[Xorg_libXi_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] +git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" +uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" +version = "1.7.10+4" + +[[Xorg_libXinerama_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] +git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" +uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" +version = "1.1.4+4" + +[[Xorg_libXrandr_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] +git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" +uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" +version = "1.5.2+4" + +[[Xorg_libXrender_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" +uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" +version = "0.9.10+4" + +[[Xorg_libpthread_stubs_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" +uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" +version = "0.1.0+3" + +[[Xorg_libxcb_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] +git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" +uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" +version = "1.13.0+3" + +[[Xorg_libxkbfile_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] +git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" +uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" +version = "1.1.0+4" + +[[Xorg_xcb_util_image_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" +uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" +version = "0.4.0+1" + +[[Xorg_xcb_util_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] +git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" +uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" +version = "0.4.0+1" + +[[Xorg_xcb_util_keysyms_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" +uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" +version = "0.4.0+1" + +[[Xorg_xcb_util_renderutil_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" +uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" +version = "0.3.9+1" + +[[Xorg_xcb_util_wm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] +git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" +uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" +version = "0.4.1+1" + +[[Xorg_xkbcomp_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxkbfile_jll"] +git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" +uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" +version = "1.4.2+4" + +[[Xorg_xkeyboard_config_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] +git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" +uuid = "33bec58e-1273-512f-9401-5d533626f822" +version = "2.27.0+4" + +[[Xorg_xtrans_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" +uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" +version = "1.4.0+3" + +[[ZeroWeightedDistributions]] +deps = ["Distributions", "Random"] +path = "../ZeroWeightedDistributions" +uuid = "24733ad3-391a-4e41-8839-c7177de7dea4" +version = "0.1.0" + +[[Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" + +[[Zstd_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "2c1332c54931e83f8f94d310fa447fd743e8d600" +uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" +version = "1.4.8+0" + +[[ZygoteRules]] +deps = ["MacroTools"] +git-tree-sha1 = "9e7a1e8ca60b742e508a315c17eef5211e7fbfd7" +uuid = "700de1a5-db45-46bc-99cf-38207098b444" +version = "0.2.1" + +[[libass_jll]] +deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "acc685bcf777b2202a904cdcb49ad34c2fa1880c" +uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" +version = "0.14.0+4" + +[[libfdk_aac_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "7a5780a0d9c6864184b3a2eeeb833a0c871f00ab" +uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" +version = "0.1.6+4" + +[[libpng_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] +git-tree-sha1 = "6abbc424248097d69c0c87ba50fcb0753f93e0ee" +uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" +version = "1.6.37+6" + +[[libvorbis_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] +git-tree-sha1 = "fa14ac25af7a4b8a7f61b287a124df7aab601bcd" +uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" +version = "1.3.6+6" + +[[nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" + +[[x264_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "d713c1ce4deac133e3334ee12f4adff07f81778f" +uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" +version = "2020.7.14+2" + +[[x265_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "487da2f8f2f0c8ee0e83f39d13037d6bbf0a45ab" +uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" +version = "3.0.0+3" + +[[xkbcommon_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] +git-tree-sha1 = "ece2350174195bb31de1a63bea3a41ae1aa593b6" +uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" +version = "0.9.1+5" diff --git a/CovidABM/Project.toml b/CovidAlertVaccinationModel/Project.toml similarity index 94% rename from CovidABM/Project.toml rename to CovidAlertVaccinationModel/Project.toml index 923bdb0023c373be5345e28486135f2a81fad8b7..cdbf10a9ae4c292df5cd3c9a878986ffdbe369ef 100644 --- a/CovidABM/Project.toml +++ b/CovidAlertVaccinationModel/Project.toml @@ -23,6 +23,7 @@ RandomNumbers = "e6cf234a-135c-5ec9-84dd-332b85af5143" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" ThreadsX = "ac1d9e8a-700a-412c-b207-f0111f4b6c0d" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +ZeroWeightedDistributions = "24733ad3-391a-4e41-8839-c7177de7dea4" [compat] julia = "1" diff --git a/CovidABM/data/csv/COVID_ontario_data.csv b/CovidAlertVaccinationModel/data/csv/COVID_ontario_data.csv similarity index 100% rename from CovidABM/data/csv/COVID_ontario_data.csv rename to CovidAlertVaccinationModel/data/csv/COVID_ontario_data.csv diff --git a/CovidABM/data/csv/case_fatality_data.csv b/CovidAlertVaccinationModel/data/csv/case_fatality_data.csv similarity index 100% rename from CovidABM/data/csv/case_fatality_data.csv rename to CovidAlertVaccinationModel/data/csv/case_fatality_data.csv diff --git a/CovidABM/data/csv/demographic_data.csv b/CovidAlertVaccinationModel/data/csv/demographic_data.csv similarity index 100% rename from CovidABM/data/csv/demographic_data.csv rename to CovidAlertVaccinationModel/data/csv/demographic_data.csv diff --git a/CovidABM/data/csv/distancing_data.csv b/CovidAlertVaccinationModel/data/csv/distancing_data.csv similarity index 100% rename from CovidABM/data/csv/distancing_data.csv rename to CovidAlertVaccinationModel/data/csv/distancing_data.csv diff --git a/CovidABM/data/csv/home_compositions.csv b/CovidAlertVaccinationModel/data/csv/home_compositions.csv similarity index 100% rename from CovidABM/data/csv/home_compositions.csv rename to CovidAlertVaccinationModel/data/csv/home_compositions.csv diff --git a/CovidABM/fetch_data.sh b/CovidAlertVaccinationModel/fetch_data.sh similarity index 100% rename from CovidABM/fetch_data.sh rename to CovidAlertVaccinationModel/fetch_data.sh diff --git a/CovidABM/plots/graphplot.gif b/CovidAlertVaccinationModel/plots/graphplot.gif similarity index 100% rename from CovidABM/plots/graphplot.gif rename to CovidAlertVaccinationModel/plots/graphplot.gif diff --git a/CovidABM/scratch_code/sampler_performance.jl b/CovidAlertVaccinationModel/scratch_code/sampler_performance.jl similarity index 100% rename from CovidABM/scratch_code/sampler_performance.jl rename to CovidAlertVaccinationModel/scratch_code/sampler_performance.jl diff --git a/CovidABM/scratch_code/test.jl b/CovidAlertVaccinationModel/scratch_code/test.jl similarity index 100% rename from CovidABM/scratch_code/test.jl rename to CovidAlertVaccinationModel/scratch_code/test.jl diff --git a/CovidABM/scratch_code/utils.jl b/CovidAlertVaccinationModel/scratch_code/utils.jl similarity index 100% rename from CovidABM/scratch_code/utils.jl rename to CovidAlertVaccinationModel/scratch_code/utils.jl diff --git a/CovidABM/src/CovidAlertVaccinationModel.jl b/CovidAlertVaccinationModel/src/CovidAlertVaccinationModel.jl similarity index 89% rename from CovidABM/src/CovidAlertVaccinationModel.jl rename to CovidAlertVaccinationModel/src/CovidAlertVaccinationModel.jl index 2cbdd68033a9562aea5dc253231d0ae9ed6b0f47..9e8fbd5f38283f4ab00bed691e749a5606cd6982 100644 --- a/CovidABM/src/CovidAlertVaccinationModel.jl +++ b/CovidAlertVaccinationModel/src/CovidAlertVaccinationModel.jl @@ -1,5 +1,5 @@ module CovidAlertVaccinationModel -# export get_u_0, solve!,get_parameters,plot_model,main,parse_cases_data,AgentModel,vaccination_rate_test,vaccinate_uniformly! +using ZeroWeightedDistributions using LightGraphs using RandomNumbers.Xorshifts using Random @@ -12,12 +12,12 @@ import StatsBase:mean using Dates using ThreadsX using DelimitedFiles + using NamedTupleTools # using CUDA using NetworkLayout:Stress using NetworkLayout:SFDP -import Base.rand -import Random.rand! + import LightGraphs.add_edge! include("agents.jl") diff --git a/CovidABM/src/agents.jl b/CovidAlertVaccinationModel/src/agents.jl similarity index 100% rename from CovidABM/src/agents.jl rename to CovidAlertVaccinationModel/src/agents.jl diff --git a/CovidABM/src/data.jl b/CovidAlertVaccinationModel/src/data.jl similarity index 100% rename from CovidABM/src/data.jl rename to CovidAlertVaccinationModel/src/data.jl diff --git a/CovidABM/src/graphs.jl b/CovidAlertVaccinationModel/src/graphs.jl similarity index 100% rename from CovidABM/src/graphs.jl rename to CovidAlertVaccinationModel/src/graphs.jl diff --git a/CovidABM/src/mixing_distributions.jl b/CovidAlertVaccinationModel/src/mixing_distributions.jl similarity index 54% rename from CovidABM/src/mixing_distributions.jl rename to CovidAlertVaccinationModel/src/mixing_distributions.jl index e052f8bf0f6e3960c6856f05eb1d9c4456d285b1..d97120cfe9aaff6525a6fa9d9cf77df5b5be689a 100644 --- a/CovidABM/src/mixing_distributions.jl +++ b/CovidAlertVaccinationModel/src/mixing_distributions.jl @@ -1,27 +1,24 @@ -struct ZWDist{BaseDistType,T} <: Sampleable{Univariate,Discrete} - α::T - base_dist::BaseDistType -end -function Base.rand(rng::AbstractRNG, s::ZWDist{DType,EType}, n::T) where {T<:Int, EType, DType} - l = Vector{EType}(undef,n) - Random.rand!(rng,l) - l[l .< s.α] .= 0 - Random.rand!(rng,s.base_dist,@view l[l .>= s.α]) - return l +function adjust_distributions_mean(distribution_matrix::AbstractArray{T},mean_shift_percentage) where T<:ZWDist + return map(distribution_matrix) do dist + new_mean = mean(dist)*(1 + mean_shift_percentage) + return from_mean(typeof(dist),dist.α, new_mean) + end end -function Random.rand!(rng::AbstractRNG, s::ZWDist, l::T) where T<:AbstractVector - Random.rand!(rng,l) - l[l .< s.α] .= 0 - Random.rand!(rng,s.base_dist,@view l[l .>= s.α]) - return l +function adjust_distributions_mean(distribution_matrix::AbstractArray{T},mean_shift_percentage) where T<:Distribution + return map(distribution_matrix) do dist + new_mean = mean(dist)*(1 + mean_shift_percentage) + return from_mean(typeof(dist), new_mean) + end end -function Base.rand(rng::AbstractRNG, s::ZWDist{DType,T}) where {DType,T} - return ifelse(Base.rand(rng) < s.α, zero(T), Base.rand(rng,s.base_dist)) +function ZeroPoisson(α,λ) + return ZWDist(α,Poisson(λ)) +end +function ZeroGeometric(α,p) + return ZWDist(α,Geometric(p)) end - function from_mean(::Type{Geometric{T}},μ) where T @@ -37,39 +34,16 @@ end function from_mean(::Type{ZWDist{DistType,T}},α,μ) where {DistType <: Distribution{Univariate,W} where W, T} return ZWDist(α,from_mean(DistType,μ/(1-α))) end - -function ZeroPoisson(α,λ) - return ZWDist(α,Poisson(λ)) -end -function ZeroGeometric(α,p) - return ZWDist(α,Geometric(p)) -end - -function adjust_distributions_mean(distribution_matrix::AbstractArray{T},mean_shift_percentage) where T<:ZWDist - return map(distribution_matrix) do dist - new_mean = mean(dist)*(1 + mean_shift_percentage) - return from_mean(typeof(dist),dist.α, new_mean) - end -end -function adjust_distributions_mean(distribution_matrix::AbstractArray{T},mean_shift_percentage) where T<:Distribution - return map(distribution_matrix) do dist - new_mean = mean(dist)*(1 + mean_shift_percentage) - return from_mean(typeof(dist), new_mean) - end -end - - - StatsBase.mean(d::ZWDist{Dist,T}) where {Dist,T} = (1 - d.α)*StatsBase.mean(d.base_dist) -const initial_workschool_type = Union{ZWDist{Geometric{Float64},Float64},ZWDist{Poisson{Float64},Float64}} +const initial_workschool_type = Union{ZWDist{Geometric{Float64},Discrete},ZWDist{Poisson{Float64},Discrete}} const initial_workschool_mixing_matrix = convert(Array{initial_workschool_type},map(t->from_mean(t...),[ - (ZWDist{Geometric{Float64},Float64}, 0.433835,4.104848) (ZWDist{Geometric{Float64},Float64},0.406326,2.568782) (ZWDist{Poisson{Float64},Float64},0.888015,0.017729) (ZWDist{Geometric{Float64},Float64},0.406326,2.568782) (ZWDist{Poisson{Float64},Float64},0.888015,0.017729) - (ZWDist{Geometric{Float64},Float64}, 0.600966,0.975688) (ZWDist{Geometric{Float64},Float64},0.4306,5.057572) (ZWDist{Poisson{Float64},Float64}, 0.84513,0.021307) (ZWDist{Geometric{Float64},Float64},0.4306,5.057572) (ZWDist{Poisson{Float64},Float64}, 0.84513,0.021307) - (ZWDist{Poisson{Float64},Float64},0.887392,0.001937) (ZWDist{Poisson{Float64},Float64},0.793004,0.00722) (ZWDist{Poisson{Float64},Float64},0.940473, 0.022134) (ZWDist{Poisson{Float64},Float64},0.793004,0.00722) (ZWDist{Poisson{Float64},Float64},0.940473, 0.022134) - (ZWDist{Geometric{Float64},Float64}, 0.600966,0.975688) (ZWDist{Geometric{Float64},Float64},0.4306,5.057572) (ZWDist{Poisson{Float64},Float64}, 0.84513,0.021307) (ZWDist{Geometric{Float64},Float64},0.4306,5.057572) (ZWDist{Poisson{Float64},Float64}, 0.84513,0.021307) - (ZWDist{Poisson{Float64},Float64},0.887392,0.001937) (ZWDist{Poisson{Float64},Float64},0.793004,0.00722) (ZWDist{Poisson{Float64},Float64},0.940473, 0.022134) (ZWDist{Poisson{Float64},Float64},0.793004,0.00722) (ZWDist{Poisson{Float64},Float64},0.940473, 0.022134) + (ZWDist{Geometric{Float64},Discrete}, 0.433835,4.104848) (ZWDist{Geometric{Float64},Discrete},0.406326,2.568782) (ZWDist{Poisson{Float64},Discrete},0.888015,0.017729) (ZWDist{Geometric{Float64},Discrete},0.406326,2.568782) (ZWDist{Poisson{Float64},Discrete},0.888015,0.017729) + (ZWDist{Geometric{Float64},Discrete}, 0.600966,0.975688) (ZWDist{Geometric{Float64},Discrete},0.4306,5.057572) (ZWDist{Poisson{Float64},Discrete}, 0.84513,0.021307) (ZWDist{Geometric{Float64},Discrete},0.4306,5.057572) (ZWDist{Poisson{Float64},Discrete}, 0.84513,0.021307) + (ZWDist{Poisson{Float64},Discrete},0.887392,0.001937) (ZWDist{Poisson{Float64},Discrete},0.793004,0.00722) (ZWDist{Poisson{Float64},Discrete},0.940473, 0.022134) (ZWDist{Poisson{Float64},Discrete},0.793004,0.00722) (ZWDist{Poisson{Float64},Discrete},0.940473, 0.022134) + (ZWDist{Geometric{Float64},Discrete}, 0.600966,0.975688) (ZWDist{Geometric{Float64},Discrete},0.4306,5.057572) (ZWDist{Poisson{Float64},Discrete}, 0.84513,0.021307) (ZWDist{Geometric{Float64},Discrete},0.4306,5.057572) (ZWDist{Poisson{Float64},Discrete}, 0.84513,0.021307) + (ZWDist{Poisson{Float64},Discrete},0.887392,0.001937) (ZWDist{Poisson{Float64},Discrete},0.793004,0.00722) (ZWDist{Poisson{Float64},Discrete},0.940473, 0.022134) (ZWDist{Poisson{Float64},Discrete},0.793004,0.00722) (ZWDist{Poisson{Float64},Discrete},0.940473, 0.022134) ])) diff --git a/CovidABM/src/model.jl b/CovidAlertVaccinationModel/src/model.jl similarity index 100% rename from CovidABM/src/model.jl rename to CovidAlertVaccinationModel/src/model.jl diff --git a/CovidABM/src/plotting.jl b/CovidAlertVaccinationModel/src/plotting.jl similarity index 100% rename from CovidABM/src/plotting.jl rename to CovidAlertVaccinationModel/src/plotting.jl diff --git a/CovidABM/test/runtests.jl b/CovidAlertVaccinationModel/test/runtests.jl similarity index 100% rename from CovidABM/test/runtests.jl rename to CovidAlertVaccinationModel/test/runtests.jl diff --git a/IntervalsModel/Manifest.toml b/IntervalsModel/Manifest.toml index dcd5e02f5ca567557f54ee2dc877d2a084282b56..b631eb5ad75dd8b834f83f549385f62ae064f0b9 100644 --- a/IntervalsModel/Manifest.toml +++ b/IntervalsModel/Manifest.toml @@ -41,6 +41,11 @@ version = "3.1.1" [[Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +[[BSON]] +git-tree-sha1 = "dd36d7cf3d185eeaaf64db902c15174b22f5dafb" +uuid = "fbb218c0-5317-5bc6-957e-2ee96dd4b1f0" +version = "0.2.6" + [[BangBang]] deps = ["Compat", "ConstructionBase", "Future", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables", "ZygoteRules"] git-tree-sha1 = "d53b1eaefd48e233545d21f5b764c8ee54df4a09" @@ -86,6 +91,12 @@ git-tree-sha1 = "d3d0a4e0d5bc03a6c97f4d249c8a471fc20a2f33" uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" version = "0.9.28" +[[CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "ded953804d019afa9a3f98981d99b33e3db7b6da" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.0" + [[ColorSchemes]] deps = ["ColorTypes", "Colors", "FixedPointNumbers", "Random", "StaticArrays"] git-tree-sha1 = "3141757b5832ee7a0386db87997ee5a23ff20f4d" @@ -137,8 +148,8 @@ uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" version = "0.5.7" [[CovidAlertVaccinationModel]] -deps = ["BenchmarkTools", "CSV", "DataFrames", "Dates", "DelimitedFiles", "Distributions", "ImportAll", "Intervals", "LabelledArrays", "LightGraphs", "NamedTupleTools", "NetworkLayout", "Pipe", "Plots", "Random", "RandomNumbers", "StatsBase", "ThreadsX", "UnPack"] -path = "../CovidABM" +deps = ["BenchmarkTools", "CSV", "DataFrames", "Dates", "DelimitedFiles", "Distributions", "ImportAll", "Intervals", "LabelledArrays", "LightGraphs", "NamedTupleTools", "NetworkLayout", "Pipe", "Plots", "Random", "RandomNumbers", "StatsBase", "ThreadsX", "UnPack", "ZeroWeightedDistributions"] +path = "../CovidAlertVaccinationModel" uuid = "9260c4ec-b5cf-4bc2-ad29-e1d23bf2bd6f" version = "0.1.0" @@ -231,6 +242,12 @@ git-tree-sha1 = "3cc57ad0a213808473eafef4845a74766242e05f" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" version = "4.3.1+4" +[[FilePathsBase]] +deps = ["Dates", "Mmap", "Printf", "Test", "UUIDs"] +git-tree-sha1 = "36cf9f6b91e638bb95b16a11186287b3f616414a" +uuid = "48062228-2e41-5def-b9a4-89aafe57970f" +version = "0.9.9" + [[FillArrays]] deps = ["LinearAlgebra", "Random", "SparseArrays"] git-tree-sha1 = "50eabdace27aa27b143f65b65e762bb0112a7708" @@ -388,6 +405,12 @@ git-tree-sha1 = "a431f5f2ca3f4feef3bd7a5e94b8b8d4f2f647a0" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" version = "1.2.0" +[[JLSO]] +deps = ["BSON", "CodecZlib", "FilePathsBase", "Memento", "Pkg", "Serialization"] +git-tree-sha1 = "85124b548bf4c2bb59284d353aa09ffc224d761f" +uuid = "9da8a3cd-07a3-59c0-a743-3fdc52c30d11" +version = "2.4.0" + [[JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] git-tree-sha1 = "81690084b6198a2e1da36fcfda16eeca9f9f24e4" @@ -558,6 +581,12 @@ git-tree-sha1 = "e498ddeee6f9fdb4551ce855a46f54dbd900245f" uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" version = "0.3.1" +[[Memento]] +deps = ["Dates", "Distributed", "JSON", "Serialization", "Sockets", "Syslogs", "Test", "TimeZones", "UUIDs"] +git-tree-sha1 = "d6dfb54d7e8a9b4a2b1773acf7275a4f607906b2" +uuid = "f28f55f0-a522-5efc-85c2-fe41dfb9b2d9" +version = "1.1.2" + [[MicroCollections]] deps = ["BangBang", "Setfield"] git-tree-sha1 = "e991b6a9d38091c4a0d7cd051fcb57c05f98ac03" @@ -896,6 +925,12 @@ version = "1.2.3" deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" +[[Syslogs]] +deps = ["Printf", "Sockets"] +git-tree-sha1 = "46badfcc7c6e74535cc7d833a91f4ac4f805f86d" +uuid = "cea106d9-e007-5e6c-ad93-58fe2094e9c4" +version = "0.3.0" + [[TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" @@ -938,6 +973,12 @@ git-tree-sha1 = "4ba8a9579a243400db412b50300cd61d7447e583" uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" version = "1.5.3" +[[TranscodingStreams]] +deps = ["Random", "Test"] +git-tree-sha1 = "7c53c35547de1c5b9d46a4797cf6d8253807108c" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.9.5" + [[Transducers]] deps = ["ArgCheck", "BangBang", "CompositionsBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] git-tree-sha1 = "9550eba57ebc2f7677c4c946aaca56e149ca73ff" @@ -1117,6 +1158,12 @@ git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" version = "1.4.0+3" +[[ZeroWeightedDistributions]] +deps = ["Distributions", "Random"] +path = "../ZeroWeightedDistributions" +uuid = "24733ad3-391a-4e41-8839-c7177de7dea4" +version = "0.1.0" + [[Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" diff --git a/IntervalsModel/Project.toml b/IntervalsModel/Project.toml index dadafe079fa2edff18f47dbab5d30acb5657a22b..58ade50c253cbfd3ccc4dc94a0ce5c11a6aca850 100644 --- a/IntervalsModel/Project.toml +++ b/IntervalsModel/Project.toml @@ -10,6 +10,7 @@ CovidAlertVaccinationModel = "9260c4ec-b5cf-4bc2-ad29-e1d23bf2bd6f" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" Intervals = "d8418881-c3e1-53bb-8760-2df7ec849ed5" +JLSO = "9da8a3cd-07a3-59c0-a743-3fdc52c30d11" KissABC = "9c9dad79-530a-4643-a18b-2704674d4108" ModularIntervals = "1e07f51d-1de3-4a1c-a782-ac336877d585" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" diff --git a/IntervalsModel/simulation_data/ws.dat b/IntervalsModel/simulation_data/ws.dat new file mode 100644 index 0000000000000000000000000000000000000000..22d0e133575f32da7591c998333ffd5381a12531 Binary files /dev/null and b/IntervalsModel/simulation_data/ws.dat differ diff --git a/IntervalsModel/src/IntervalsModel.jl b/IntervalsModel/src/IntervalsModel.jl index 8d1fa4f038a449b56aa4b2ec8eebd60020cb9c3a..f9e1e7c25bd9fc1ab7642efdf44b78b22393a466 100644 --- a/IntervalsModel/src/IntervalsModel.jl +++ b/IntervalsModel/src/IntervalsModel.jl @@ -7,37 +7,76 @@ using RandomNumbers.Xorshifts using StatsBase using Distributions using CovidAlertVaccinationModel +using ZeroWeightedDistributions const PACKAGE_FOLDER = dirname(dirname(pathof(IntervalsModel))) -const HHYMO = DataFrame(CSV.File("$PACKAGE_FOLDER/network-data/Timeuse/HH/HHYMO.csv")) -const rng = Xoroshiro128Plus() + +using Serialization + +const rng = Xoroshiro128Plus(1) const YOUNG, MIDDLE,OLD = 1,2,3 -const cnst = ( - # Set the underlying parameters for the intervals model - Sparam = [60,12], - # Set parameters for intervals sample and subpopulation size - numsamples = 100, - subsize = size(HHYMO)[1], - durmax = 144, - # Swap age brackets for numbers - swap = Dict("Y" => YOUNG, "M" => MIDDLE, "O" => OLD), - # Total weight in survey - Wghttotal = sum(HHYMO[:,"WGHT_PER"]), +const durmax = 144 - MUbounds = (6,12*6), - SIGMAbounds = (1,48), - ws_distributions = CovidAlertVaccinationModel.initial_workschool_mixing_matrix, - rest_distributions = CovidAlertVaccinationModel.initial_rest_mixing_matrix -) +include("interval_overlap_sampling.jl") +include("utils.jl") +include("hh_durations_model.jl") +include("ws_durations_model.jl") +include("plotting_functions.jl") -include("data.jl") +using KissABC +using BenchmarkTools +using JLSO +using Plots -const dat = make_dat_array() #assign a constant data array +const μ_bounds = (6,12*6) +const σ_bounds = (1,48) +const α_bounds = (0.0,1.0) + +function do_hh(particles) + dists = [ + Normal, + Poisson, + ] + bounds_list = [ + vcat([μ_bounds for i = 1:6], [σ_bounds for i = 1:6]), + vcat([μ_bounds for i = 1:6]) + ] + bayesian_estimate("hh",err_hh,dists,bounds_list,particles) +end + +function do_ws(particles) + dists = [ + ZWDist{Normal}, + ZWDist{Poisson}, + ] + + # Set parameter bounds for fitting + bounds_list = [ + vcat([α_bounds for i = 1:6],[μ_bounds for i = 1:6], [σ_bounds for i = 1:6]), + vcat([α_bounds for i = 1:6],[μ_bounds for i = 1:6]) + ] + display(bounds_list[1]) + bayesian_estimate("ws",err_ws,dists,bounds_list,particles) + +end + +function bayesian_estimate(fname,err_func,dists,bounds_list,particles) + data_pairs = map(zip(dists,bounds_list)) do (dist,bounds) + init = [b[1] for b in bounds] + priors = Factored([Uniform(l,u) for (l,u) in bounds]...) #assume uniform priors + + @btime err_ws($init,$dist) #compute benchmark of the error function, not rly necessary + + out = smc(priors,p -> err_func(p, dist), verbose=true, nparticles=particles, alpha=0.95, parallel = true) #apply sequential monte carlo with 200 particles + + return dist => out + end |> Dict + serialize(joinpath(PACKAGE_FOLDER,"simulation_data","$fname.dat"),data_pairs) +end +function plot_estimates(fname) + +end -include("interval_overlap_sampling.jl") -include("hh_durations_model.jl") -include("bayesian_estimation.jl") -include("plots.jl") end # module \ No newline at end of file diff --git a/IntervalsModel/src/bayesian_estimation.jl b/IntervalsModel/src/bayesian_estimation.jl deleted file mode 100644 index 0df0dd85a8a2cfb0ed55e9fc75b5b9a0866c6258..0000000000000000000000000000000000000000 --- a/IntervalsModel/src/bayesian_estimation.jl +++ /dev/null @@ -1,28 +0,0 @@ - - -using KissABC -using BenchmarkTools -using Serialization -using Plots -function bayesian_estimate_hh() - -# Set parameter bounds for fitting - BoundsNORM = vcat([cnst.MUbounds for i = 1:6], [cnst.SIGMAbounds for i = 1:6]) - - norm_init = vcat([cnst.MUbounds[1] for i = 1:6], [cnst.SIGMAbounds[1] for i = 1:6]) - BoundsPOIS = [cnst.MUbounds for i in 1:6] - pois_init = [cnst.MUbounds[1] for i = 1:6] - - priors_norm = Factored([Uniform(l,u) for (l,u) in BoundsNORM]...) #assume uniform priors - # @btime err_poisson($pois_init) #compute benchmark of the error function - - - out_norm = smc(priors_norm,err_norm, verbose=true, nparticles=2000, alpha=0.95, parallel = true) #apply sequential monte carlo with 200 particles - serialize("norm.dat",out_norm) #save output - - - priors_pois = Factored([Uniform(l,u) for (l,u) in BoundsPOIS]...) - out_pois = smc(priors_pois,err_poisson, verbose=true, nparticles=2000, alpha=0.95, parallel = true)#apply sequential monte carlo with 200 particles - - serialize("pois.dat",out_pois) #save output -end \ No newline at end of file diff --git a/IntervalsModel/src/data.jl b/IntervalsModel/src/data.jl deleted file mode 100644 index 9e9f3273b05b037a52ff344fdf7b96637727cd46..0000000000000000000000000000000000000000 --- a/IntervalsModel/src/data.jl +++ /dev/null @@ -1,24 +0,0 @@ - -# This function applies pre-processing to the HHYMO data file, and splits it into a namedtuple, which should be faster to index. -# In particular, we avoid having to modify any strings in the error function. -function make_dat_array() - durs = hcat( - Int.(HHYMO[!,"YDUR"*string(cnst.Sparam[2])]), - Int.(HHYMO[!,"MDUR"*string(cnst.Sparam[2])]), - Int.(HHYMO[!,"ODUR"*string(cnst.Sparam[2])]), - ) - nums = hcat( - Int.(HHYMO[!,"YNUM"]), - Int.(HHYMO[!,"MNUM"]), - Int.(HHYMO[!,"ONUM"]), - ) - - WGHT = Weights(HHYMO[!,"WGHT_PER"]./cnst.Wghttotal) - AGERESP = map(r -> cnst.swap[r],HHYMO[!,"AGERESP"]) - return (; - nums, - durs, - WGHT, - AGERESP - ) -end diff --git a/IntervalsModel/src/hh_durations_model.jl b/IntervalsModel/src/hh_durations_model.jl index 0f17e1e8fab525b8de2dcf83f7bfa69fe0edfa6c..3200cb1bcc7c2010dcc25d1e593d55d9cccfa215 100644 --- a/IntervalsModel/src/hh_durations_model.jl +++ b/IntervalsModel/src/hh_durations_model.jl @@ -1,52 +1,61 @@ -#error function for Normal distributions -function err_norm(params) - μ = as_symmetric_matrix(params[1:6]) - σ = as_symmetric_matrix(params[7:12]) - - # this line is commented out, in we want to go back to sampling subsets of the data - # this also applies to the @view lines - # row_ids = sample(rng,1:length(dat.WGHT), dat.WGHT,cnst.subsize) - age_dists = [Normal(μ[i,j],σ[i,j]) for i in YOUNG:OLD, j in YOUNG:OLD] - duration_subarray = dat.durs#@view dat.durs[row_ids,:] - num_contacts_subarray = dat.nums#@view dat.nums[row_ids,:] - - # display(num_contacts_subarray) - AGERESP = dat.AGERESP #@view dat.AGERESP[row_ids] - errsum = 0 - @inbounds for i = 1:cnst.subsize - age_sample = AGERESP[i] - @inbounds for age_j in YOUNG:OLD #for a given age_sample loop over possible contact ages - running_sum = 0 - durs = trunc.(Int,rand(rng,age_dists[age_sample,age_j],num_contacts_subarray[i,age_j])) .% 144 - expdur = tot_dur_sample(cnst.numsamples,cnst.Sparam,durs) - errsum += (expdur/cnst.numsamples - duration_subarray[i,age_j])^2 #compute total - end - end - return errsum/cnst.subsize #this division not actually necessary +const HHYMO = DataFrame(CSV.File("$PACKAGE_FOLDER/network-data/Timeuse/HH/HHYMO.csv")) + +# This function applies pre-processing to the HHYMO data file, and splits it into a namedtuple, which should be faster to index. +# In particular, we avoid having to modify any strings in the error function. + +const cnst_hh = ( + # Set the underlying parameters for the intervals model + Sparam = [60,12], + # Set parameters for intervals sample and subpopulation size + numsamples = 100, + subsize = size(HHYMO)[1], + # Swap age brackets for numbers + swap = Dict("Y" => YOUNG, "M" => MIDDLE, "O" => OLD), + # Total weight in survey + Wghttotal = sum(HHYMO[:,"WGHT_PER"]), +) +function make_dat_array() + durs = hcat( + Int.(HHYMO[!,"YDUR"*string(cnst_hh.Sparam[2])]), + Int.(HHYMO[!,"MDUR"*string(cnst_hh.Sparam[2])]), + Int.(HHYMO[!,"ODUR"*string(cnst_hh.Sparam[2])]), + ) + nums = hcat( + Int.(HHYMO[!,"YNUM"]), + Int.(HHYMO[!,"MNUM"]), + Int.(HHYMO[!,"ONUM"]), + ) + + WGHT = Weights(HHYMO[!,"WGHT_PER"]./cnst_hh.Wghttotal) + AGERESP = map(r -> cnst_hh.swap[r],HHYMO[!,"AGERESP"]) + return (; + nums, + durs, + WGHT, + AGERESP + ) end +const dat = make_dat_array() #assign a constant data array -#error function for poisson distributions -function err_poisson(params) #error function for poisson - μ = as_symmetric_matrix(params) - # row_ids = sample(rng,1:length(dat.WGHT), dat.WGHT,cnst.subsize) - age_dists = [Poisson(μ[i,j]) for i in YOUNG:OLD, j in YOUNG:OLD] - duration_subarray = dat.durs#@view dat.durs[row_ids,:] - num_contacts_subarray = dat.nums#@view dat.nums[row_ids,:] +#error function for Normal distributions +function err_hh(p,dist) - # display(num_contacts_subarray) - AGERESP = dat.AGERESP #@view dat.AGERESP[row_ids] + params = get_params(dist,p) + age_dists = [dist(params[i,j]) for i in YOUNG:OLD, j in YOUNG:OLD] + duration_subarray = dat.durs + num_contacts_subarray = dat.nums + AGERESP = dat.AGERESP errsum = 0 @inbounds for i = 1:cnst.subsize age_sample = AGERESP[i] - @inbounds for age_j in YOUNG:OLD - running_sum = 0 + @inbounds for age_j in YOUNG:OLD #for a given age_sample loop over possible contact ages durs = trunc.(Int,rand(rng,age_dists[age_sample,age_j],num_contacts_subarray[i,age_j])) .% 144 - expdur = tot_dur_sample(cnst.numsamples,cnst.Sparam,durs) - errsum += (expdur/cnst.numsamples - duration_subarray[i,age_j])^2 + expdur = tot_dur_sample(cnst_hh.numsamples,cnst_hh.Sparam,durs) + errsum += (expdur/cnst_hh.numsamples - duration_subarray[i,age_j])^2 #compute total end end - return errsum/cnst.subsize + return errsum end \ No newline at end of file diff --git a/IntervalsModel/src/interval_overlap_sampling.jl b/IntervalsModel/src/interval_overlap_sampling.jl index a137e9111fb1b0c2b6be893f77b0f5e6a7119ea9..18227477f2a414c0b7a57121c200fca8ef99f425 100644 --- a/IntervalsModel/src/interval_overlap_sampling.jl +++ b/IntervalsModel/src/interval_overlap_sampling.jl @@ -2,7 +2,7 @@ function coverage!(cov,S_j,E_j) if E_j < S_j push!(cov,Interval(0,E_j)) - push!(cov,Interval(S_j,cnst.durmax)) + push!(cov,Interval(S_j,durmax)) else push!(cov,Interval(S_j,E_j)) end @@ -22,8 +22,8 @@ function tot_dur_sample(n, dist,durlist) @inbounds for i in 1:n empty!(int_list) @inbounds for j in 1:numcontact - S_j = start_matrix[j,i] % cnst.durmax - E_j = (S_j + durlist[j]) % cnst.durmax + S_j = start_matrix[j,i] % durmax + E_j = (S_j + durlist[j]) % durmax coverage!(int_list,S_j,E_j) end union!(int_list) @@ -31,6 +31,27 @@ function tot_dur_sample(n, dist,durlist) end return total_dur end +function tot_dur_sample!(sample_list, dist,durlist) + if isempty(durlist) + sample_list .= 0.0 + return + end + numcontact = length(durlist) + n = length(sample_list) + int_list = Vector{Interval{Int,Closed,Closed}}() + sizehint!(int_list,numcontact*2) + start_matrix = trunc.(Int,(rand(rng,dist,(numcontact,n)))) + for i in 1:n + empty!(int_list) + for j in 1:numcontact + S_j = start_matrix[j,i] % durmax + E_j = (S_j + durlist[j]) % durmax + coverage!(int_list,S_j,E_j) + end + union!(int_list) + sample_list[i] = mapreduce(Intervals.span,+,int_list) + end +end function as_symmetric_matrix(l) #turn a vector of length 6, l, into a symmetric 3x3 matrix, probably a nicer way to do this exists diff --git a/IntervalsModel/src/plots.jl b/IntervalsModel/src/plotting_functions.jl similarity index 53% rename from IntervalsModel/src/plots.jl rename to IntervalsModel/src/plotting_functions.jl index 347989ca4b5400735f954c4acf2012d621c65128..978f5a01e253b2917d51ec3ebd4055b9eaae0764 100644 --- a/IntervalsModel/src/plots.jl +++ b/IntervalsModel/src/plotting_functions.jl @@ -1,26 +1,10 @@ - -function plot_estimates() - - estimate = deserialize("norm.dat") - p_list = [] - - for i in 1:length(estimate.P) - a = stephist( - estimate.P[i].particles; - normalize = true, - title = i <=6 ? "μ_$i" : "σ_$i" - ) - push!(p_list,a) - end - p = plot(p_list...) - savefig(p,"norm.png") - +function plot_dists(fname,dist_constructor,data) μ_estimate_as_array = as_symmetric_matrix(estimate.P[1:6]) σ_estimate_as_array = as_symmetric_matrix(estimate.P[7:12]) p_matrix = map(x -> plot(),σ_estimate_as_array) for i in YOUNG:OLD, j in YOUNG:OLD - dist = Normal.(μ_estimate_as_array[i,j].particles,σ_estimate_as_array[i,j].particles) + dist = dist_constructor.(μ_estimate_as_array[i,j].particles,σ_estimate_as_array[i,j].particles) data = [pdf.(dist,i) for i in 0.0:144.0] mean_dat = median.(data) @@ -31,12 +15,26 @@ function plot_estimates() end plot!(p_matrix[end,1]; legend = true) p = plot(p_matrix..., size = (600,400)) - savefig(p,"norm_dists.pdf") - + savefig(p,"$fname.pdf") +end +function plot_posteriors(fname,parameter_names,data) + for i in 1:length(data.P) + a = stephist( + data.P[i].particles; + normalize = true, + title = i <=6 ? "μ_$i" : "σ_$i" + ) + push!(p_list,a) + end + p = plot(p_list...) + savefig(p,"$norm.png") +end +function plot_estimates_hh() + estimate = deserialize("norm.dat") + p_list = [] - estimate = deserialize("pois.dat") p_list = [] for i in 1:length(estimate.P) a = stephist( @@ -68,4 +66,40 @@ function plot_estimates() +end +function plot_estimates_ws() + estimate = deserialize("norm_ws.dat") + p_list = [] + titles = vcat( + ["\\alpha_$i" for i in 1:6], + ["\\mu_$i" for i in 1:6], + ["\\sigma_$i" for i in 1:6], + ) + for i in 1:length(estimate.P) + a = stephist( + estimate.P[i].particles; + normalize = true, + title = titles[i], + legend = false + ) + push!(p_list,a) + end + p = plot(p_list...; size = (1000,800), dpi = 300) + savefig(p,"norm_ws.png") + + p_estimate_as_arrays = zip([as_symmetric_matrix(estimate.P[i:i+5]) for i in 1:6:length(estimate.P)]...) |> collect + + p_matrix = map(x -> plot(),p_estimate_as_arrays) + for i in YOUNG:OLD, j in YOUNG:OLD + particles = map(x-> x.particles,p_estimate_as_arrays[i,j]) |> t->zip(t...) |> collect + dists = map(x-> ZWDist(x[1],Normal(x[2],x[3])), particles) + data = [pdf.(dists,i) for i in 0.0:144.0] + mean_dat = median.(data) + err_down = quantile.(data,0.05) + err_up = quantile.(data,0.95) + p_matrix[i,j] = plot(0:144,mean_dat; ribbon = ( mean_dat .- err_down,err_up .- mean_dat),legend = false) + end + plot!(p_matrix[end,1]; legend = true) + p = plot(p_matrix..., size = (600,400)) + savefig(p,"norm_dists_ws.pdf") end \ No newline at end of file diff --git a/IntervalsModel/src/utils.jl b/IntervalsModel/src/utils.jl new file mode 100644 index 0000000000000000000000000000000000000000..60278e0caf2d4a35762f69dad8aca524f25ba90c --- /dev/null +++ b/IntervalsModel/src/utils.jl @@ -0,0 +1,9 @@ + + +nparams(d::Type{T}) where T<:Sampleable = length(fieldnames(d)) +nparams(::Type{ZWDist{T,S}}) where {T<:Sampleable,S} = 1+nparams(T) + +function get_params(params) + p_list = [as_symmetric_matrix(params[i:i+5]) for i = 1:6:length(params)] + return zip(p_list...) |> collect +end \ No newline at end of file diff --git a/IntervalsModel/src/ws_durations_model.jl b/IntervalsModel/src/ws_durations_model.jl index 12eb412043fff0d8e17d18fb44b75cdeed7e492c..735a8f2a7e2c109ad1ec4110ef41e4ed5810fa82 100644 --- a/IntervalsModel/src/ws_durations_model.jl +++ b/IntervalsModel/src/ws_durations_model.jl @@ -1,52 +1,36 @@ -#error function for Normal distributions -function err_norm(params) - μ = as_symmetric_matrix(params[1:6]) - σ = as_symmetric_matrix(params[7:12]) +using HypothesisTests +const ws_data = ( + Y = CSV.File("$PACKAGE_FOLDER/network-data/Timeuse/WS/WorkschoolDataY.csv") |> Tables.matrix |> x -> dropdims(x;dims = 2), + M = CSV.File("$PACKAGE_FOLDER/network-data/Timeuse/WS/WorkschoolDataM.csv") |> Tables.matrix |> x -> dropdims(x;dims = 2), + O = CSV.File("$PACKAGE_FOLDER/network-data/Timeuse/WS/WorkschoolDataO.csv") |> Tables.matrix |> x -> dropdims(x;dims = 2), +) +const comparison_samples = 10_000 - # this line is commented out, if we want to go back to sampling subsets of the data - # this also applies to the @view lines - # row_ids = sample(rng,1:length(dat.WGHT), dat.WGHT,cnst.subsize) - age_dists = [Normal(μ[i,j],σ[i,j]) for i in YOUNG:OLD, j in YOUNG:OLD] - duration_subarray = dat.durs#@view dat.durs[row_ids,:] - num_contacts_subarray = dat.nums#@view dat.nums[row_ids,:] +ws_distributions = CovidAlertVaccinationModel.initial_workschool_mixing_matrix - # display(num_contacts_subarray) - AGERESP = dat.AGERESP #@view dat.AGERESP[row_ids] +#error function +function err_ws(p,dist) + params = get_params(p) + neighourhoods = rand.(rng,ws_distributions) + age_dists = [dist(params[i,j]...) for i in YOUNG:OLD, j in YOUNG:OLD] + sample_list = zeros(comparison_samples) + ws_samples = ( + Y = sample(rng, ws_data.Y, comparison_samples), + M = sample(rng, ws_data.M, comparison_samples), + O = sample(rng, ws_data.O, comparison_samples), + ) errsum = 0 - @inbounds for i = 1:cnst.subsize - age_sample = AGERESP[i] - @inbounds for age_j in YOUNG:OLD #for a given age_sample loop over possible contact ages - running_sum = 0 - durs = trunc.(Int,rand(rng,age_dists[age_sample,age_j],num_contacts_subarray[i,age_j])) .% 144 - expdur = tot_dur_sample(cnst.numsamples,cnst.Sparam,durs) - errsum += (expdur/cnst.numsamples - duration_subarray[i,age_j])^2 #compute total + for age_sample in YOUNG:OLD + for age_j in YOUNG:OLD #for a given age_sample loop over possible contact ages + if neighourhoods[age_sample,age_j] > 0 + durs = trunc.(Int,rand(rng,age_dists[age_sample,age_j],neighourhoods[age_sample,age_j])) .% durmax + # display(durs) + tot_dur_sample!(sample_list,cnst_hh.Sparam,durs) + err = 1 - pvalue(KSampleADTest(ws_samples[age_sample],sample_list)) #need to maximize probability of null hypothesis, not rly valid but everyone does it so idk + errsum += err + end end end - return errsum/cnst.subsize #this division not actually necessary -end - - -#error function for poisson distributions -function err_poisson(params) #error function for poisson - μ = as_symmetric_matrix(params) - # row_ids = sample(rng,1:length(dat.WGHT), dat.WGHT,cnst.subsize) - age_dists = [Poisson(μ[i,j]) for i in YOUNG:OLD, j in YOUNG:OLD] - duration_subarray = dat.durs#@view dat.durs[row_ids,:] - num_contacts_subarray = dat.nums#@view dat.nums[row_ids,:] - - # display(num_contacts_subarray) - AGERESP = dat.AGERESP #@view dat.AGERESP[row_ids] - - errsum = 0 - @inbounds for i = 1:cnst.subsize - age_sample = AGERESP[i] - @inbounds for age_j in YOUNG:OLD - running_sum = 0 - durs = trunc.(Int,rand(rng,age_dists[age_sample,age_j],num_contacts_subarray[i,age_j])) .% 144 - expdur = tot_dur_sample(cnst.numsamples,cnst.Sparam,durs) - errsum += (expdur/cnst.numsamples - duration_subarray[i,age_j])^2 - end - end - return errsum/cnst.subsize + return errsum end \ No newline at end of file diff --git a/README.md b/README.md index 61f5f7feaca66fe3fe90b7096129edda9bf6cf0d..2acece3d5801c15d6f0e5ca9dc33e57aef0181e4 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,37 @@ # CovidAlertVaccinationModel -This repo contains two packages: +This repo contains three packages: -* CovidAlertVaccinationModel (in CovidABM) +* CovidAlertVaccinationModel * IntervalsModel -The former implements the ABM, and the latter computes the time-distributions. The latter model depends on the former model because the mixing distributions are defined there, although really I guess it should be the inverse. +* ZeroWeightedDistributions +The former implements the ABM, and the second computes the time-distributions. The latter model depends on the former model because the mixing distributions are defined there, although really I guess it should be the inverse. The last package, ZeroWeightedDistributions, implements a helpful type ZWDist{D} representing a random variable of distribution D with added weight at zero. +Note that you need the Julia-1.6 beta to compile this project successfully. This is because the mixing distributions hit a compiler bug. I will try to find a workaround for when we run this on a cluster. -Note that you need the Julia-1.6 beta to compile this project successfully. This is because the mixing distributions hit a compiler bug. + +# Installation + +First, clone this repository and open the Julia-1.6 beta in the active directory +``` +git clone https://git.uwaterloo.ca/pjentsch/covidalertabm.git +cd covidalertabm +julia -t auto +``` +the `-t auto` option starts Julia with as many threads as you have physical CPU cores. You can pass this option a number if you prefer to use fewer threads. + +This should bring you to a julia REPL. Typing `]` at this repl will change your prompt to `pkg>`. + +Then add these packages to your main environment: +``` +dev ./CovidAlertVaccinationModel +dev ./IntervalsModel +dev ./ZeroWeightedDistributions +``` + +We need to `dev` each of the above packages because they all share one git repo, and Julia's package manager doesn't seem to like that very much. I suppose we could split them into separate repos in the future. + +This package only tested on x86-64 Linux. It should work everywhere that Julia does though. \ No newline at end of file diff --git a/ZeroWeightedDistributions/.github/workflows/CompatHelper.yml b/ZeroWeightedDistributions/.github/workflows/CompatHelper.yml new file mode 100644 index 0000000000000000000000000000000000000000..cba9134c670f0708cf98c92f7fdef055a6c7f5d3 --- /dev/null +++ b/ZeroWeightedDistributions/.github/workflows/CompatHelper.yml @@ -0,0 +1,16 @@ +name: CompatHelper +on: + schedule: + - cron: 0 0 * * * + workflow_dispatch: +jobs: + CompatHelper: + runs-on: ubuntu-latest + steps: + - name: Pkg.add("CompatHelper") + run: julia -e 'using Pkg; Pkg.add("CompatHelper")' + - name: CompatHelper.main() + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + COMPATHELPER_PRIV: ${{ secrets.DOCUMENTER_KEY }} + run: julia -e 'using CompatHelper; CompatHelper.main()' diff --git a/ZeroWeightedDistributions/.github/workflows/TagBot.yml b/ZeroWeightedDistributions/.github/workflows/TagBot.yml new file mode 100644 index 0000000000000000000000000000000000000000..f49313b662013f43aac7de2c738e1163a9715ff4 --- /dev/null +++ b/ZeroWeightedDistributions/.github/workflows/TagBot.yml @@ -0,0 +1,15 @@ +name: TagBot +on: + issue_comment: + types: + - created + workflow_dispatch: +jobs: + TagBot: + if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot' + runs-on: ubuntu-latest + steps: + - uses: JuliaRegistries/TagBot@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + ssh: ${{ secrets.DOCUMENTER_KEY }} diff --git a/ZeroWeightedDistributions/.gitignore b/ZeroWeightedDistributions/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..b067eddee4ee0afc7c0ea1304b68c5af07c3d5ca --- /dev/null +++ b/ZeroWeightedDistributions/.gitignore @@ -0,0 +1 @@ +/Manifest.toml diff --git a/ZeroWeightedDistributions/LICENSE b/ZeroWeightedDistributions/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..e93f61e1483823cc9acc50775972ab044cd1ebf6 --- /dev/null +++ b/ZeroWeightedDistributions/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 pjentsch <pjentsch@uwaterloo.ca> and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/ZeroWeightedDistributions/Project.toml b/ZeroWeightedDistributions/Project.toml new file mode 100644 index 0000000000000000000000000000000000000000..34fdd9f81402bf253da18a900d2f84e2e0981b42 --- /dev/null +++ b/ZeroWeightedDistributions/Project.toml @@ -0,0 +1,17 @@ +name = "ZeroWeightedDistributions" +uuid = "24733ad3-391a-4e41-8839-c7177de7dea4" +authors = ["pjentsch <pjentsch@uwaterloo.ca> and contributors"] +version = "0.1.0" + +[deps] +Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" +Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[compat] +julia = "1" + +[extras] +Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[targets] +test = ["Test"] diff --git a/ZeroWeightedDistributions/README.md b/ZeroWeightedDistributions/README.md new file mode 100644 index 0000000000000000000000000000000000000000..240f499ba29a748cf4cf920d1984e4207651b716 --- /dev/null +++ b/ZeroWeightedDistributions/README.md @@ -0,0 +1 @@ +# ZeroWeightedDistributions diff --git a/ZeroWeightedDistributions/src/ZeroWeightedDistributions.jl b/ZeroWeightedDistributions/src/ZeroWeightedDistributions.jl new file mode 100644 index 0000000000000000000000000000000000000000..8b5b044ecc95e5883dac1a8657fbf0f715e8cb7f --- /dev/null +++ b/ZeroWeightedDistributions/src/ZeroWeightedDistributions.jl @@ -0,0 +1,51 @@ +module ZeroWeightedDistributions +export ZWDist,rand,rand! +using Random +import Base.rand +import Random.rand! +using Distributions +import Distributions.pdf + + +struct ZWDist{BaseDistType <: Sampleable,T} <: Sampleable{Univariate,T} + α::Float64 + base_dist::BaseDistType + function ZWDist(α,base_dist::Sampleable{Univariate,S}) where S + return new{typeof(base_dist),S}(α,base_dist) + end + function ZWDist(D::Type{<:Sampleable{Univariate,S}},α,p...) where {S} + return new{D,S}(α,D(p...)) + end + function ZWDist{DType}(α,p...) where {S,DType<:Sampleable{Univariate,S}} + return new{DType,S}(α,DType(p...)) + end +end + +function Distributions.pdf(d::ZWDist, x) + if x == 0 + return d.α + (1-d.α)*pdf(d.base_dist,0) + else + return pdf(d.base_dist,0) + end +end + +function Base.rand(rng::AbstractRNG, s::ZWDist{DType,S}, n::Int) where {DType, S} + l = Vector{eltype(DType)}(undef,n) + Random.rand!(rng,l) + l[l .< s.α] .= zero(eltype(DType)) + Random.rand!(rng,s.base_dist,@view l[l .>= s.α]) + return l +end + +function Random.rand!(rng::AbstractRNG, s::ZWDist{DType,S}, l::T) where {T<:AbstractVector, DType,S} + Random.rand!(rng,l) + l[l .< s.α] .= zero(eltype(DType)) + Random.rand!(rng,s.base_dist,@view l[l .>= s.α]) + return l +end + +function Base.rand(rng::AbstractRNG, s::ZWDist{DType,S}) where {DType,S} + return ifelse(Base.rand(rng) < s.α, zero(eltype(DType)), Base.rand(rng,s.base_dist)) +end + +end diff --git a/ZeroWeightedDistributions/test/runtests.jl b/ZeroWeightedDistributions/test/runtests.jl new file mode 100644 index 0000000000000000000000000000000000000000..e6cee1d395f081f44f498324483ea04f7c84fb08 --- /dev/null +++ b/ZeroWeightedDistributions/test/runtests.jl @@ -0,0 +1,6 @@ +using ZeroWeightedDistributions +using Test + +@testset "ZeroWeightedDistributions.jl" begin + # Write your tests here. +end diff --git a/norm.dat b/norm.dat deleted file mode 100644 index 2ddc1225c6b292990c169d01c3b23f659176621a..0000000000000000000000000000000000000000 Binary files a/norm.dat and /dev/null differ diff --git a/norm.png b/norm.png deleted file mode 100644 index c393441311b0424b862684ffb5150b63df656bf4..0000000000000000000000000000000000000000 Binary files a/norm.png and /dev/null differ diff --git a/norm_dists.pdf b/norm_dists.pdf deleted file mode 100644 index bb383752d90e5bfcd739f8ec148f3bd9edf13701..0000000000000000000000000000000000000000 Binary files a/norm_dists.pdf and /dev/null differ diff --git a/pois.dat b/pois.dat deleted file mode 100644 index 3adaceb18e8086b74a138e8cad8457561c6750a9..0000000000000000000000000000000000000000 Binary files a/pois.dat and /dev/null differ diff --git a/pois.png b/pois.png deleted file mode 100644 index 2133dc66a0903f6fcb49e0f152156ba9e918309b..0000000000000000000000000000000000000000 Binary files a/pois.png and /dev/null differ diff --git a/pois_dists.pdf b/pois_dists.pdf deleted file mode 100644 index ef1442c80f57facffdf978546141a35659405751..0000000000000000000000000000000000000000 Binary files a/pois_dists.pdf and /dev/null differ