diff --git a/docs/Manifest.toml b/docs/Manifest.toml index 0ccd8e1..6cfb9af 100644 --- a/docs/Manifest.toml +++ b/docs/Manifest.toml @@ -33,9 +33,27 @@ version = "1.1.1" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +[[deps.AssetRegistry]] +deps = ["Distributed", "JSON", "Pidfile", "SHA", "Test"] +git-tree-sha1 = "b25e88db7944f98789130d7b503276bc34bc098e" +uuid = "bf4720bc-e11a-5d0c-854e-bdca1663c893" +version = "0.1.0" + [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +[[deps.BinDeps]] +deps = ["Libdl", "Pkg", "SHA", "URIParser", "Unicode"] +git-tree-sha1 = "1289b57e8cf019aede076edab0587eb9644175bd" +uuid = "9e28174c-4ba2-5203-b857-d8d62c4213ee" +version = "1.0.2" + +[[deps.Blink]] +deps = ["Base64", "BinDeps", "Distributed", "JSExpr", "JSON", "Lazy", "Logging", "MacroTools", "Mustache", "Mux", "Reexport", "Sockets", "WebIO", "WebSockets"] +git-tree-sha1 = "08d0b679fd7caa49e2bca9214b131289e19808c0" +uuid = "ad839575-38b3-5650-b840-f874b8c74a25" +version = "0.12.5" + [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" @@ -80,9 +98,9 @@ version = "3.24.0" [[deps.ColorTypes]] deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" +git-tree-sha1 = "b10d0b65641d57b8b4d5e234446582de5047050d" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" +version = "0.11.5" [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] @@ -119,9 +137,9 @@ uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" version = "1.5.5" [[deps.Contour]] -git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" +git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8" uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.2" +version = "0.6.3" [[deps.Crayons]] git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" @@ -147,9 +165,9 @@ version = "4.6.0" [[deps.DataStructures]] deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "0f4b5d62a88d8f59003e43c25a8a90de9eb76317" +git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.18" +version = "0.18.20" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -170,6 +188,10 @@ git-tree-sha1 = "66c4c81f259586e8f002eacebc177e1fb06363b0" uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" version = "0.10.11" +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + [[deps.DocStringExtensions]] deps = ["LibGit2"] git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" @@ -194,12 +216,12 @@ uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" [[deps.EntropyHub]] -deps = ["Clustering", "Combinatorics", "DSP", "DataInterpolations", "DelimitedFiles", "FFTW", "GroupSlices", "HTTP", "LinearAlgebra", "Plots", "Random", "Statistics", "StatsBase", "StatsFuns"] -git-tree-sha1 = "a4e2a1cd4915352f8c1ff045bc45a44bc3d5d7c5" +deps = ["Clustering", "Combinatorics", "DSP", "DataInterpolations", "DelimitedFiles", "FFTW", "GroupSlices", "HTTP", "LinearAlgebra", "PlotlyJS", "Plots", "Random", "Statistics", "StatsBase", "StatsFuns"] +git-tree-sha1 = "baebe852120489e5a8b76c813724aba1c3247b28" repo-rev = "master" repo-url = "https://github.com/MattWillFlood/EntropyHub.jl" uuid = "3938faea-3bfa-4bc3-8092-0c6746ff9af1" -version = "1.0.1" +version = "2.0.0" [[deps.EpollShim_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -274,6 +296,12 @@ git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" uuid = "559328eb-81f9-559d-9380-de523a88c83c" version = "1.0.10+0" +[[deps.FunctionalCollections]] +deps = ["Test"] +git-tree-sha1 = "04cb9cfaa6ba5311973994fe3496ddec19b6292a" +uuid = "de31a74c-ac4f-5751-b3fd-e18cd04993ca" +version = "0.5.0" + [[deps.GLFW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] git-tree-sha1 = "ff38ba61beff76b8f4acad8ab0c97ef73bb670cb" @@ -282,15 +310,15 @@ version = "3.3.9+0" [[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 = "27442171f28c952804dede8ff72828a96f2bfc1f" +git-tree-sha1 = "3437ade7073682993e092ca570ad68a2aba26983" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.72.10" +version = "0.73.3" [[deps.GR_jll]] deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "FreeType2_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt6Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "025d171a2847f616becc0f84c8dc62fe18f0f6dd" +git-tree-sha1 = "a96d5c713e6aa28c242b0d25c1347e258d6541ab" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.72.10+0" +version = "0.73.3+0" [[deps.Gettext_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] @@ -356,6 +384,12 @@ git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" version = "2.8.1+1" +[[deps.Hiccup]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "6187bb2d5fcbb2007c39e7ac53308b0d371124bd" +uuid = "9fb69e20-1954-56bb-a84f-559cc56a8ff7" +version = "0.2.2" + [[deps.IOCapture]] deps = ["Logging", "Random"] git-tree-sha1 = "8b72179abc660bfab5e28472e019392b97d0985c" @@ -375,9 +409,9 @@ version = "1.4.0" [[deps.IntelOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "5fdf2fe6724d8caabf43b557b84ce53f3b7e2f6b" +git-tree-sha1 = "be50fe8df3acbffa0274a744f1a99d29c45a57f4" uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2024.0.2+0" +version = "2024.1.0+0" [[deps.InteractiveUtils]] deps = ["Markdown"] @@ -422,6 +456,12 @@ git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" version = "1.5.0" +[[deps.JSExpr]] +deps = ["JSON", "MacroTools", "Observables", "WebIO"] +git-tree-sha1 = "b413a73785b98474d8af24fd4c8a975e31df3658" +uuid = "97c1335a-c9c5-57fe-bc5d-ec35cebe8660" +version = "0.5.4" + [[deps.JSON]] deps = ["Dates", "Mmap", "Parsers", "Unicode"] git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" @@ -434,6 +474,12 @@ git-tree-sha1 = "3336abae9a713d2210bb57ab484b1e065edd7d23" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" version = "3.0.2+0" +[[deps.Kaleido_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "43032da5832754f58d14a91ffbe86d5f176acda9" +uuid = "f7e6163d-2fa5-5f23-b69c-1db539e41963" +version = "0.2.1+0" + [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" @@ -465,15 +511,21 @@ version = "1.3.1" [[deps.Latexify]] deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] -git-tree-sha1 = "cad560042a7cc108f5a4c24ea1431a9221f22c1b" +git-tree-sha1 = "e0b5cd21dc1b44ec6e64f351976f961e6f31d6c4" uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.2" +version = "0.16.3" [[deps.LazilyInitializedFields]] git-tree-sha1 = "8f7f3cabab0fd1800699663533b6d5cb3fc0e612" uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf" version = "1.2.2" +[[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" @@ -573,10 +625,10 @@ uuid = "6c6e2e6c-3030-632d-7369-2d6c69616d65" version = "0.1.4" [[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl"] -git-tree-sha1 = "72dc3cf284559eb8f53aa593fe62cb33f83ed0c0" +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "oneTBB_jll"] +git-tree-sha1 = "80b2833b56d466b3858d565adcd16a4a05f2089b" uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2024.0.0+0" +version = "2024.1.0+0" [[deps.MacroTools]] deps = ["Markdown", "Random"] @@ -612,9 +664,9 @@ version = "0.3.2" [[deps.Missings]] deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" +version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" @@ -629,6 +681,18 @@ version = "0.7.7" uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2022.2.1" +[[deps.Mustache]] +deps = ["Printf", "Tables"] +git-tree-sha1 = "a7cefa21a2ff993bff0456bf7521f46fc077ddf1" +uuid = "ffc61752-8dc7-55ee-8c37-f3e9cdd09e70" +version = "1.0.19" + +[[deps.Mux]] +deps = ["AssetRegistry", "Base64", "HTTP", "Hiccup", "Pkg", "Sockets", "WebSockets"] +git-tree-sha1 = "82dfb2cead9895e10ee1b0ca37a01088456c4364" +uuid = "a975b10e-0019-58db-a62f-e48ff68538c9" +version = "0.7.6" + [[deps.NaNMath]] deps = ["OpenLibm_jll"] git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" @@ -645,11 +709,16 @@ version = "0.4.16" uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" +[[deps.Observables]] +git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" +uuid = "510215fc-4207-5dde-b226-833fc4488ee2" +version = "0.5.5" + [[deps.OffsetArrays]] deps = ["Adapt"] -git-tree-sha1 = "6a731f2b5c03157418a20c12195eb4b74c8f8621" +git-tree-sha1 = "e64b4f5ea6b7389f6f046d13d4896a8f9c1ba71e" uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.13.0" +version = "1.14.0" [[deps.Ogg_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -701,12 +770,24 @@ deps = ["Artifacts", "Libdl"] uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" version = "10.40.0+0" +[[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 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" version = "2.8.1" +[[deps.Pidfile]] +deps = ["FileWatching", "Test"] +git-tree-sha1 = "2d8aaf8ee10df53d0dfb9b8ee44ae7c04ced2b03" +uuid = "fa939f87-e72e-5be4-a000-7fc836dbe307" +version = "1.3.0" + [[deps.Pipe]] git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" @@ -735,11 +816,29 @@ git-tree-sha1 = "7b1a9df27f072ac4c9c7cbe5efb198489258d1f5" uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" version = "1.4.1" +[[deps.PlotlyBase]] +deps = ["ColorSchemes", "Dates", "DelimitedFiles", "DocStringExtensions", "JSON", "LaTeXStrings", "Logging", "Parameters", "Pkg", "REPL", "Requires", "Statistics", "UUIDs"] +git-tree-sha1 = "56baf69781fc5e61607c3e46227ab17f7040ffa2" +uuid = "a03496cd-edff-5a9b-9e67-9cda94a718b5" +version = "0.8.19" + +[[deps.PlotlyJS]] +deps = ["Base64", "Blink", "DelimitedFiles", "JSExpr", "JSON", "Kaleido_jll", "Markdown", "Pkg", "PlotlyBase", "PlotlyKaleido", "REPL", "Reexport", "Requires", "WebIO"] +git-tree-sha1 = "e62d886d33b81c371c9d4e2f70663c0637f19459" +uuid = "f0f68f2c-4968-5e81-91da-67840de0976a" +version = "0.18.13" + +[[deps.PlotlyKaleido]] +deps = ["Base64", "JSON", "Kaleido_jll"] +git-tree-sha1 = "2650cd8fb83f73394996d507b3411a7316f6f184" +uuid = "f2990250-8cf9-495f-b13a-cce12b45703c" +version = "2.2.4" + [[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 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" +deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] +git-tree-sha1 = "442e1e7ac27dd5ff8825c3fa62fbd1e86397974b" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.39.0" +version = "1.40.4" [[deps.Polynomials]] deps = ["Intervals", "LinearAlgebra", "OffsetArrays", "RecipesBase"] @@ -920,9 +1019,9 @@ version = "1.0.0" [[deps.TZJData]] deps = ["Artifacts"] -git-tree-sha1 = "b69f8338df046774bd975b13be9d297eca5efacb" +git-tree-sha1 = "1607ad46cf8d642aa779a1d45af1c8620dbf6915" uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.1.0+2023d" +version = "1.2.0+2024a" [[deps.TableTraits]] deps = ["IteratorInterfaceExtensions"] @@ -963,6 +1062,12 @@ git-tree-sha1 = "71509f04d045ec714c4748c785a59045c3736349" uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" version = "0.10.7" +[[deps.URIParser]] +deps = ["Unicode"] +git-tree-sha1 = "53a9f49546b8d2dd2e688d216421d050c9a31d0d" +uuid = "30578b45-9adc-5946-b283-645ec420af67" +version = "0.4.1" + [[deps.URIs]] git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" @@ -972,6 +1077,11 @@ version = "1.5.1" 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" @@ -1016,6 +1126,24 @@ git-tree-sha1 = "93f43ab61b16ddfb2fd3bb13b3ce241cafb0e6c9" uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" version = "1.31.0+0" +[[deps.WebIO]] +deps = ["AssetRegistry", "Base64", "Distributed", "FunctionalCollections", "JSON", "Logging", "Observables", "Pkg", "Random", "Requires", "Sockets", "UUIDs", "WebSockets", "Widgets"] +git-tree-sha1 = "0eef0765186f7452e52236fa42ca8c9b3c11c6e3" +uuid = "0f1e0344-ec1d-5b48-a673-e5cf874b6c29" +version = "0.8.21" + +[[deps.WebSockets]] +deps = ["Base64", "Dates", "HTTP", "Logging", "Sockets"] +git-tree-sha1 = "f91a602e25fe6b89afc93cf02a4ae18ee9384ce3" +uuid = "104b5d7c-a370-577a-8038-80a2059c5097" +version = "1.5.9" + +[[deps.Widgets]] +deps = ["Colors", "Dates", "Observables", "OrderedCollections"] +git-tree-sha1 = "fcdae142c1cfc7d89de2d11e08721d0f2f86c98a" +uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" +version = "0.6.6" + [[deps.XML2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] git-tree-sha1 = "532e22cf7be8462035d092ff21fada7527e2c488" @@ -1271,6 +1399,12 @@ deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" version = "1.48.0+0" +[[deps.oneTBB_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "7d0ea0f4895ef2f5cb83645fa689e52cb55cf493" +uuid = "1317d2d5-d96f-522e-a858-c73665f53c3e" +version = "2021.12.0+0" + [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" diff --git a/docs/make.jl b/docs/make.jl index dd072f8..16f7fbb 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -24,9 +24,12 @@ makedocs( "Home" => "index.md", "Guide" => ["Base Entropies" => "Guide/Base_Entropies.md", "Cross-Entropies" => "Guide/Cross_Entropies.md", + "Multivariate Entropies" => "Guide/Multivariate_Entropies.md", + "Bidimensional Entropies" => "Guide/Bidimensional_Entropies.md", "Multiscale Entropies" => "Guide/Multiscale_Entropies.md", "Multiscale Cross-Entropies" => "Guide/Multiscale_Cross_Entropies.md", - "Bidimensional Entropies" => "Guide/Bidimensional_Entropies.md", + "Multivariate Multiscale Entropies" => "Guide/Multivariate_Multiscale_Entropies.md", + "Other Functions" => "Guide/Other.md", ], "Examples" => ["Notes on Examples" => "Examples/Examples.md", "Ex.1: Sample Entropy" => "Examples/Example1.md", @@ -39,7 +42,9 @@ makedocs( "Ex.8: Composite Multiscale Cross-Approximate Entropy" => "Examples/Example8.md", "Ex.9: Hierarchical Multiscale corrected Cross-Conditional Entropy" => "Examples/Example9.md", "Ex.10: Bidimensional Fuzzy Entropy" => "Examples/Example10.md", - "Ex.11: Window Data Tool" => "Examples/Example11.md", + "Ex.11: Multivariate Dispersion Entropy" => "Examples/Example11.md", + "Ex.12: [Generalized] Refined-composite Multivariate Multiscale Fuzzy Entropy" => "Examples/Example12.md", + "Ex.13: Window Data Tool" => "Examples/Example13.md", ], ], ) @@ -51,49 +56,7 @@ deploydocs( #versions = nothing, ) - - -#= """using EntropyHub -using Documenter - -DocMeta.setdocmeta!(EntropyHub, :DocTestSetup, :(using EntropyHub); recursive=true) - -makedocs(; - modules = [EntropyHub], - authors = "Matthew W. Flood ", - repo = "https://github.com/MattWillFlood/EntropyHub.jl/blob/{commit}{path}#{line}", - sitename = "EntropyHub.jl", - doctest = false, - format = Documenter.HTML(; - prettyurls=get(ENV, "CI", nothing) == "true", - canonical="https://mattwillflood.github.io/EntropyHub.jl", - assets=String[], - collapselevel = 1, - ), - pages = [ "Home" => "index.md", - - "Guide" => ["Base Entropies" => "Guide/Base_Entropies.md", - "Cross-Entropies" => "Guide/Cross_Entropies.md", - "Multiscale Entropies" => "Guide/Multiscale_Entropies.md", - "Multiscale Cross-Entropies" => "Guide/Multiscale_Cross_Entropies.md", - "Bidimensional Entropies" => "Guide/Bidimensional_Entropies.md", - ], - - "Examples" => ["Notes on Examples" => "Examples/Examples.md", - "Ex.1: Sample Entropy" => "Examples/Example1.md", - "Ex.2: Permutation Entropy" => "Examples/Example2.md", - "Ex.3: Phase Entropy" => "Examples/Example3.md", - "Ex.4: Cross-Distribution Entropy" => "Examples/Example4.md", - "Ex.5: Multiscale Entropy Object" => "Examples/Example5.md", - "Ex.6: Multiscale [Increment] Entropy" => "Examples/Example6.md", - "Ex.7: Refined Multiscale [Sample] Entropy" => "Examples/Example7.md", - "Ex.8: Composite Multiscale Cross-Approximate Entropy" => "Examples/Example8.md", - "Ex.9: Hierarchical Multiscale corrected Cross-Conditional Entropy" => "Examples/Example9.md", - "Ex.10: Bidimensional Fuzzy Entropy" => "Examples/Example10.md", - ], - ], -) - +#= deploydocs(; repo="github.com/MattWillFlood/EntropyHub.jl", devbranch = "master", diff --git a/docs/src/Examples/Example11.md b/docs/src/Examples/Example11.md index ad41d12..d7f85cc 100644 --- a/docs/src/Examples/Example11.md +++ b/docs/src/Examples/Example11.md @@ -1,109 +1,62 @@ -# Example 11: Window Data Tool +# Example 11: Multivariate Dispersion Entropy -This example shows how to use the `WindowData()` function to divide univariate/multivariate data into -subsequences. -```@docs -EntropyHub.WindowData -``` -_______________________________________________________________________________ - -### Ex. 1 -Import a sequence of uniformly distributed random numbers. -``` -X = ExampleData("uniform"); -``` +Import a vector of 4096 uniformly distributed random integers in range [1 8] and convert it to a multivariate set of 4 sequences with 1024 samples each. -Extract a series of subsequences by dividing the sequence into windows of length 1024 with no overlap. ```@example using EntropyHub # hide -X = ExampleData("uniform"); # hide -WinData, Log = WindowData(X, WinLen = 1024); -WinData # hide -``` -```@example -using EntropyHub # hide -X = ExampleData("uniform"); # hide -WinData, Log = WindowData(X, WinLen = 1024); # hide -Log # hide +X = ExampleData("randintegers"); +Data = reshape(X, 1024, 4); +Data # hide ``` -Repeat the previous step but change the number of overlapping window samples to 256. -```@example -using EntropyHub # hide -X = ExampleData("uniform"); # hide -WinData, Log = WindowData(X, WinLen = 1024, Overlap = 256); -WinData # hide -``` -```@example -using EntropyHub # hide -X = ExampleData("uniform"); # hide -WinData, Log = WindowData(X, WinLen = 1024, Overlap = 256); # hide -Log # hide -``` -_______________________________________________________________________________ +Calculate the multivariate dispersion entropy and reverse dispersion entropy for embedding dimensions (m) = [1,1,2,3], using a 7-symbol transform. -### Ex. 2 -Window a range of numbers (1:1234) into 5 windows. ```@example using EntropyHub # hide -WinData, Log = WindowData(1:1234); -WinData # hide -``` +X = ExampleData("randintegers"); # hide +Data = reshape(X, 1024, 4); # hide +MDisp, RDE = MvDispEn(Data, m = [1,1,2,3], c = 7); +MDisp # hide +``` ```@example using EntropyHub # hide -WinData, Log = WindowData(1:1234); # hide -Log # hide -``` +X = ExampleData("randintegers"); # hide +Data = reshape(X, 1024, 4); # hide +MDisp, RDE = MvDispEn(Data, m = [1,1,2,3], c = 7); # hide +RDE # hide +``` -Repeat the previous step, but this time retain any remaining samples that do not fill the last window. -```@example -using EntropyHub # hide -WinData, Log = WindowData(1:1234, Mode="include"); -WinData # hide -``` -```@example -using EntropyHub # hide -_, Log = WindowData(1:1234); # hide -Log # hide -``` -Note that the last vector in `WinData` contains only 4 values. -```@example -using EntropyHub # hide -WinData, _ = WindowData(1:1234, Mode="include"); # hide -WinData[end] # hide -``` -_______________________________________________________________________________ +Perform the same calculation but normalize the output entropy estimate w.r.t the number of unique dispersion patterns -### Ex. 3 -Generate a multivariate dataset of 5 uniformly-distributed random number sequences (N=3333) and -divide the dataset into subsets of 777 samples. ```@example using EntropyHub # hide -using Random -X = rand(MersenneTwister(0), 3333, 5) -WinData, Log = WindowData(X, WinLen = 777) -WinData # hide -``` +X = ExampleData("randintegers"); # hide +Data = reshape(X, 1024, 4); # hide +MDisp, RDE = MvDispEn(Data, m = [1,1,2,3], c = 7, Norm = true); +MDisp # hide +``` ```@example using EntropyHub # hide -using Random # hide -X = rand(MersenneTwister(0), 3333, 5) # hide -WinData, Log = WindowData(X, WinLen = 777) # hide -Log # hide -``` +X = ExampleData("randintegers"); # hide +Data = reshape(X, 1024, 4); # hide +MDisp, RDE = MvDispEn(Data, m = [1,1,2,3], c = 7, Norm = true); # hide +RDE # hide +``` + +Compare the results above (``Methodx == 'v1'``) with those obtained using the *mvDE* method (``Methodx=='v2'``), returning estimates for each value from 1, ..., max(m) -Repeat the previous step including 55 samples of overlap and retain any remaining samples that do not fill a window. ```@example using EntropyHub # hide -using Random # hide -X = rand(MersenneTwister(0), 3333, 5) # hide -WinData, Log = WindowData(X, WinLen = 777, Overlap = 55, Mode = "include") -WinData # hide -``` +X = ExampleData("randintegers"); # hide +Data = reshape(X, 1024, 4); # hide +MDisp, RDE = MvDispEn(Data, m = [1,1,2,3], c = 7, Norm = true, Methodx = "v2") +MDisp # hide +``` ```@example using EntropyHub # hide -using Random # hide -X = rand(MersenneTwister(0), 3333, 5) # hide -WinData, Log = WindowData(X, WinLen = 777, Overlap = 55, Mode = "include") # hide -Log # hide -``` +X = ExampleData("randintegers"); # hide +Data = reshape(X, 1024, 4); # hide +MDisp, RDE = MvDispEn(Data, m = [1,1,2,3], c = 7, Norm = true, Methodx = "v2") # hide +RDE # hide +``` + diff --git a/docs/src/Examples/Example12.md b/docs/src/Examples/Example12.md new file mode 100644 index 0000000..8c3f043 --- /dev/null +++ b/docs/src/Examples/Example12.md @@ -0,0 +1,48 @@ +# Example 12: [Generalized] Refined-composite Multivariate Multiscale Fuzzy Entropy + +Import the x, y, and z components of the Lorenz system of equations. + +``` +Data = ExampleData("lorenz"); + +using Plots +scatter(Data[:,1], Data[:,2], Data[:,3], +markercolor = "green", markerstrokecolor = "black", +markersize = 3, background_color = "black", grid = false) +``` + +![Lorenz](../assets/lorenzjl.png) + +Create a multiscale entropy object with the following parameters: +EnType = MvFuzzEn(), fuzzy membership function = 'constgaussian', fuzzy function parameter = 1.75, normalized data to unit variance = true. + +```@example +using EntropyHub # hide +Mobj = MSobject(MvFuzzEn, Fx = "constgaussian", r = 1.75, Norm = true) +``` + +Calculate the generalized refined-composite multivariate multiscale fuzzy entropy over 5 scales and plotting the output. + +!!! tip + + When the multivariate entropy method is multivariate fuzzy entropy (``MvFuzzEn``), **cMvMSEn** by default employs a generalized graining procedure + with the standard deviation (not the variance like in MvMSEn). This follows the method presented in [1]. + + [1] Azami, Fernández and Escudero. + " *Refined multiscale fuzzy entropy based on standard deviation for biomedical signal analysis* " + Medical & biological engineering & computing 55 (2017): 2037-2052 + +!!! warning + + As with conventional generalized multiscale entropy, the multiscale entropy value for the first scale will always == 0, as the variance or + standard deviation of a singular value is 0! + +```@example +using EntropyHub # hide +Data = ExampleData("lorenz"); # hide +Mobj = MSobject(MvFuzzEn, Fx = "constgaussian", r = 1.75, Norm = true) # hide +MSx, CI = cMvMSEn(Data, Mobj, Scales = 5, Refined = true, Plotx = true) +``` + +![rcMvMSEn](../assets/rcMvMSEnjl.png) + diff --git a/docs/src/Examples/Example13.md b/docs/src/Examples/Example13.md new file mode 100644 index 0000000..852360b --- /dev/null +++ b/docs/src/Examples/Example13.md @@ -0,0 +1,107 @@ +# Example 13: Window Data Tool + +This example shows how to use the [`WindowData()`](@ref) function to divide univariate/multivariate data into +subsequences. + +_______________________________________________________________________________ + +### Ex. 1 +Import a sequence of uniformly distributed random numbers. +``` +X = ExampleData("uniform"); +``` + +Extract a series of subsequences by dividing the sequence into windows of length 1024 with no overlap. +```@example +using EntropyHub # hide +X = ExampleData("uniform"); # hide +WinData, Log = WindowData(X, WinLen = 1024); +WinData # hide +``` +```@example +using EntropyHub # hide +X = ExampleData("uniform"); # hide +WinData, Log = WindowData(X, WinLen = 1024); # hide +Log # hide +``` + +Repeat the previous step but change the number of overlapping window samples to 256. +```@example +using EntropyHub # hide +X = ExampleData("uniform"); # hide +WinData, Log = WindowData(X, WinLen = 1024, Overlap = 256); +WinData # hide +``` +```@example +using EntropyHub # hide +X = ExampleData("uniform"); # hide +WinData, Log = WindowData(X, WinLen = 1024, Overlap = 256); # hide +Log # hide +``` +_______________________________________________________________________________ + +### Ex. 2 +Window a range of numbers (1:1234) into 5 windows. +```@example +using EntropyHub # hide +WinData, Log = WindowData(1:1234); +WinData # hide +``` +```@example +using EntropyHub # hide +WinData, Log = WindowData(1:1234); # hide +Log # hide +``` + +Repeat the previous step, but this time retain any remaining samples that do not fill the last window. +```@example +using EntropyHub # hide +WinData, Log = WindowData(1:1234, Mode="include"); +WinData # hide +``` +```@example +using EntropyHub # hide +_, Log = WindowData(1:1234); # hide +Log # hide +``` +Note that the last vector in `WinData` contains only 4 values. +```@example +using EntropyHub # hide +WinData, _ = WindowData(1:1234, Mode="include"); # hide +WinData[end] # hide +``` +_______________________________________________________________________________ + +### Ex. 3 +Generate a multivariate dataset of 5 uniformly-distributed random number sequences (N=3333) and +divide the dataset into subsets of 777 samples. +```@example +using EntropyHub # hide +using Random +X = rand(MersenneTwister(0), 3333, 5) +WinData, Log = WindowData(X, WinLen = 777) +WinData # hide +``` +```@example +using EntropyHub # hide +using Random # hide +X = rand(MersenneTwister(0), 3333, 5) # hide +WinData, Log = WindowData(X, WinLen = 777) # hide +Log # hide +``` + +Repeat the previous step including 55 samples of overlap and retain any remaining samples that do not fill a window. +```@example +using EntropyHub # hide +using Random # hide +X = rand(MersenneTwister(0), 3333, 5) # hide +WinData, Log = WindowData(X, WinLen = 777, Overlap = 55, Mode = "include") +WinData # hide +``` +```@example +using EntropyHub # hide +using Random # hide +X = rand(MersenneTwister(0), 3333, 5) # hide +WinData, Log = WindowData(X, WinLen = 777, Overlap = 55, Mode = "include") # hide +Log # hide +``` diff --git a/docs/src/Examples/Examples.md b/docs/src/Examples/Examples.md index cba5c6b..6addf92 100644 --- a/docs/src/Examples/Examples.md +++ b/docs/src/Examples/Examples.md @@ -1,6 +1,7 @@ ```@contents Pages = ["Example1.md", "Example2.md", "Example3.md", "Example4.md", "Example5.md", - "Example6.md","Example7.md","Example8.md","Example9.md","Example10.md", "Example11.md"] + "Example6.md","Example7.md","Example8.md","Example9.md","Example10.md", + "Example11.md", "Example12.md", "Example13.md"] ``` # Examples: @@ -9,15 +10,10 @@ Pages = ["Example1.md", "Example2.md", "Example3.md", "Example4.md", "Example5.m The following sections provide some basic examples of EntropyHub functions. These examples are merely a snippet of the full range of EntropyHub functionality. -In the following examples, signals / data are imported into Julia using the ExampleData() function. +In the following examples, signals / data are imported into Julia using the [`ExampleData()`](@ref) function. To use this function as shown in the examples below, __*an internet connection is required*__. -```@docs -EntropyHub.ExampleData -``` - - !!! tip "IMPORTANT TO NOTE" Parameters of the base or cross- entropy methods are passed to multiscale and multiscale cross- functions using the multiscale entropy object using MSobject. @@ -26,11 +22,11 @@ EntropyHub.ExampleData !!! warning "Hierarchical Multiscale Entropy (+ Multiscale Cross-Entropy)" - In hierarchical multiscale entropy (hMSEn) and hierarchical multiscale cross-entropy (hXMSEn) functions, the length of the time series signal(s) is halved at each scale. + In hierarchical multiscale entropy ([hMSEn](@ref)) and hierarchical multiscale cross-entropy ([hXMSEn](@ref)) functions, the length of the time series signal(s) is halved at each scale. Thus, hMSEn and hXMSEn only use the first 2^N data points where 2^N <= the length of the original time series signal. i.e. For a signal of 5000 points, only the first 4096 are used. For a signal of 1500 points, only the first 1024 are used. !!! danger "BIDIMENSIONAL ENTROPIES" - Each bidimensional entropy function (SampEn2D, FuzzEn2D, DistEn2D) has an important keyword argument - `Lock`. + Each bidimensional entropy function (SampEn2D, FuzzEn2D, DistEn2D, EspEn2D) has an important keyword argument - `Lock`. Bidimensional entropy functions are "locked" by default (`Lock == true`) to only permit matrices with a maximum size of 128 x 128. diff --git a/docs/src/Guide/Base_Entropies.md b/docs/src/Guide/Base_Entropies.md index e0f6ae2..9e26b94 100644 --- a/docs/src/Guide/Base_Entropies.md +++ b/docs/src/Guide/Base_Entropies.md @@ -1,26 +1,12 @@ +```@meta +CollapsedDocStrings = true +Description = "Entropy of single time series signals" +``` # Base Entropies __*Functions for estimating the entropy of a single univariate time series.*__ -`The following functions also form the base entropy method used by Multiscale functions.` - -These functions are directly available when EntropyHub is imported: - -``` -julia> using EntropyHub - -julia> names(EntropyHub) -``` -``` - :ApEn - :AttnEn - :BubbEn - ⋮ - :hXMSEn - :rMSEn - :rXMSEn -``` - +`The following functions also form the base entropy method used by Multiscale functions` -> [`MSEn`](@ref), [`cMSEn`](@ref), [`rMSEn`](@ref), [`hMSEn`](@ref) ```@docs EntropyHub.ApEn diff --git a/docs/src/Guide/Bidimensional_Entropies.md b/docs/src/Guide/Bidimensional_Entropies.md index 24bd5b6..32c89f7 100644 --- a/docs/src/Guide/Bidimensional_Entropies.md +++ b/docs/src/Guide/Bidimensional_Entropies.md @@ -1,3 +1,7 @@ +```@meta +CollapsedDocStrings = true +Description = "Entropy of two-dimensional (2D) data" +``` # Bidimensional Entropies __*Functions for estimating the entropy of a two-dimensional univariate matrix.*__ @@ -8,8 +12,8 @@ matrices. Hence, bidimensional entropy functions are useful for applications suc !!! danger "IMPORTANT: Locked Matrix Size" - Each bidimensional entropy function (`SampEn2D`, `FuzzEn2D`, `DistEn2D`, `DispEn2D`, - `EspEn2D`, `PermEn2D`) has an important keyword argument - `Lock`. Bidimensional entropy functions are + Each bidimensional entropy function ([`SampEn2D`](@ref), [`FuzzEn2D`](@ref), [`DistEn2D`](@ref), [`DispEn2D`](@ref), + [`EspEn2D`](@ref), [`PermEn2D`](@ref)) has an important keyword argument - `Lock`. Bidimensional entropy functions are "locked" by default (`Lock == true`) to only permit matrices with a maximum size of 128 x 128. The reason for this is because there are hundreds of millions of pairwise calculations diff --git a/docs/src/Guide/Cross_Entropies.md b/docs/src/Guide/Cross_Entropies.md index 1f33d8d..20dcd3c 100644 --- a/docs/src/Guide/Cross_Entropies.md +++ b/docs/src/Guide/Cross_Entropies.md @@ -1,24 +1,13 @@ +```@meta +CollapsedDocStrings = true +Description = "Entropy between two time series signals" +``` # Cross Entropies __*Functions for estimating the cross-entropy between two univariate time series.*__ -`The following functions also form the cross-entropy method used by Multiscale Cross-Entropy functions.` - -These functions are directly available when EntropyHub is imported: +`The following functions also form the cross-entropy method used by Multiscale Cross-Entropy functions.` -> [`XMSEn`](@ref), [`cXMSEn`](@ref), [`rXMSEn`](@ref), [`hXMSEn`](@ref) -``` -julia> using EntropyHub -julia> names(EntropyHub) -``` -``` - :ApEn - :AttnEn - :BubbEn - ⋮ - :hXMSEn - :rMSEn - :rXMSEn -``` ```@docs EntropyHub.XApEn diff --git a/docs/src/Guide/Multiscale_Cross_Entropies.md b/docs/src/Guide/Multiscale_Cross_Entropies.md index f4faf08..0f9eab9 100644 --- a/docs/src/Guide/Multiscale_Cross_Entropies.md +++ b/docs/src/Guide/Multiscale_Cross_Entropies.md @@ -1,11 +1,15 @@ +```@meta +CollapsedDocStrings = true +Description = "Multiscale entropy between two time series signals" +``` # Multiscale Cross-Entropies __*Functions for estimating the multiscale entropy between two univariate time series.*__ Just as one can calculate multiscale entropy using any Base entropy, the same functionality is possible with multiscale cross-entropy using any Cross-entropy function: - (`XApEn`, `XSampEn`, `XK2En`, `XCondEn`, `XPermEn`, `XSpecEn`, `XDistEn`, `XFuzzEn`). + [`XApEn`](@ref), [`XSampEn`](@ref), [`XK2En`](@ref), [`XCondEn`](@ref), [`XPermEn`](@ref), [`XSpecEn`](@ref), [`XDistEn`](@ref), [`XFuzzEn`](@ref). -To do so, we again use the `MSobject` function to pass a multiscale object (`Mobj`) to the multiscale cross-entropy functions. +To do so, we again use the [`MSobject`](@ref) function to pass a multiscale object (`Mobj`) to the multiscale cross-entropy functions. !!! info "NOTE:" @@ -13,12 +17,7 @@ To do so, we again use the `MSobject` function to pass a multiscale object (`Mob 1. the first data seuqence, `Sig1` (a vector of >10 elements), 2. the second data seuqence, `Sig2` (a vector of > 10 elements), - 2. the multiscale entropy object, `Mobj`. - - -[`EntropyHub.MSobject`](@ref) - -The following functions use the multiscale entropy object shown above. + 3. the multiscale entropy object, `Mobj` -> see [`MSobject`](@ref) ```@docs diff --git a/docs/src/Guide/Multiscale_Entropies.md b/docs/src/Guide/Multiscale_Entropies.md index b4522c7..a7db819 100644 --- a/docs/src/Guide/Multiscale_Entropies.md +++ b/docs/src/Guide/Multiscale_Entropies.md @@ -1,27 +1,27 @@ +```@meta +CollapsedDocStrings = true +Description = "Multiscale entropy of single time series signals" +``` # Multiscale Entropies -__*Functions for estimating the multiscale entropy between of a univariate time series.*__ +__*Functions for estimating the multiscale entropy of a univariate time series.*__ Multiscale entropy can be calculated using any of the Base entropies: - (`ApEn`, `AttnEn`, `BubbEn`, `CondEn`, `CoSiEn`, `DistEn`, `DivEn`, - `DispEn`, `EnofEn`, `FuzzEn`, `GridEn`, `IncrEn`, `K2En`, - `PermEn`, `PhasEn`, `RangEn`, `SampEn`, `SlopEn`, `SpecEn`, `SyDyEn`). + ([`ApEn`](@ref), [`AttnEn`](@ref), [`BubbEn`](@ref), [`CondEn`](@ref), [`CoSiEn`](@ref), [`DistEn`](@ref), [`DivEn`](@ref), + [`DispEn`](@ref), [`EnofEn`](@ref), [`FuzzEn`](@ref), [`GridEn`](@ref), [`IncrEn`](@ref), [`K2En`](@ref), + [`PermEn`](@ref), [`PhasEn`](@ref), [`RangEn`](@ref), [`SampEn`](@ref), [`SlopEn`](@ref), [`SpecEn`](@ref), [`SyDyEn`](@ref)). !!! info "NOTE:" Multiscale cross-entropy functions have two positional arguments: 1. the data sequence, `Sig` (a vector > 10 elements), - 2. the multiscale entropy object, `Mobj`. - + 2. the multiscale entropy object, `Mobj` -> see [`MSobject`](@ref) -```@docs -EntropyHub.MSobject -``` -The following functions use the multiscale entropy object shown above. ```@docs +EntropyHub.MSobject EntropyHub.MSEn EntropyHub.cMSEn EntropyHub.rMSEn diff --git a/docs/src/Guide/Multivariate_Entropies.md b/docs/src/Guide/Multivariate_Entropies.md new file mode 100644 index 0000000..db4825a --- /dev/null +++ b/docs/src/Guide/Multivariate_Entropies.md @@ -0,0 +1,18 @@ +```@meta +CollapsedDocStrings = true +Description = "Entropy of multivariate time series " +``` +# Multivariate Entropies + +__*Functions for estimating the entropy of a multivariate time series dataset.*__ + +`The following functions also form the multivariate entropy method used by Multivariate Multiscale functions.` -> [`MvMSEn`](@ref), [`cMvMSEn`](@ref) + + +```@docs +EntropyHub.MvSampEn +EntropyHub.MvFuzzEn +EntropyHub.MvPermEn +EntropyHub.MvDispEn +EntropyHub.MvCoSiEn +``` \ No newline at end of file diff --git a/docs/src/Guide/Multivariate_Multiscale_Entropies.md b/docs/src/Guide/Multivariate_Multiscale_Entropies.md new file mode 100644 index 0000000..52d0268 --- /dev/null +++ b/docs/src/Guide/Multivariate_Multiscale_Entropies.md @@ -0,0 +1,24 @@ +```@meta +CollapsedDocStrings = true +Description = "Multivariate multiscale entropy of multivariate time series " +``` +# Multivariate Multiscale Entropies + +__*Functions for estimating the Multivariate multiscale entropy of a multivariate time series dataset.*__ + +Just as one can calculate multiscale entropy using any Base or Cross- entropy, the same functionality is possible with multivariate multiscale entropy using any Multivariate function: + [`MvSampEn`](@ref), [`MvFuzzEn`](@ref), [`MvDispEn`](@ref), [`MvPermEn`](@ref), [`MvCoSiEn`](@ref). + +To do so, we again use the [`MSobject`](@ref) function to pass a multiscale object (`Mobj`) to the multivariate multiscale entropy functions. + +!!! info "NOTE:" + + Multivariate multiscale entropy functions have two positional arguments: + + 1. the multivariate dataset, `Data` (an NxM matrix of N observations (>10 elements), and M time series (>1)), + 2. the multiscale entropy object, `Mobj` -> see [`MSobject`](@ref) + +```@docs +EntropyHub.MvMSEn +EntropyHub.cMvMSEn +``` \ No newline at end of file diff --git a/docs/src/Guide/Other.md b/docs/src/Guide/Other.md new file mode 100644 index 0000000..78e4590 --- /dev/null +++ b/docs/src/Guide/Other.md @@ -0,0 +1,12 @@ +```@meta +CollapsedDocStrings = true +``` +# Other Entropies + +__*Supplementary functions for various tasks related to EntropyHub and signal processing.*__ + +```@docs +EntropyHub.ExampleData +EntropyHub.WindowData +``` +[`EntropyHub.MSobject`](@ref) diff --git a/docs/src/assets/rcMvMSEnjl.png b/docs/src/assets/rcMvMSEnjl.png new file mode 100644 index 0000000..49dd5d1 Binary files /dev/null and b/docs/src/assets/rcMvMSEnjl.png differ diff --git a/docs/src/index.md b/docs/src/index.md index 429dc7f..2da4b98 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -8,6 +8,37 @@ CurrentModule = EntropyHub # EntropyHub __*An Open-Source Toolkit For Entropic Time Series Analysis*__ + +## Latest Updates +### v2.0 +*----- New multivariate methods -----* + +Five new multivariate entropy functions incorporating several method-specific variations + + [Multivariate Sample Entropy](https://journals.aps.org/pre/abstract/10.1103/PhysRevE.84.061918) + + [Multivariate Fuzzy Entropy](https://www.mdpi.com/1099-4300/19/1/2) [++ many fuzzy functions] + + [Multivariate Dispersion Entropy](https://www.mdpi.com/1099-4300/21/9/913) [++ many symbolic sequence transforms] + + [Multivariate Cosine Similarity Entropy](https://www.mdpi.com/1099-4300/24/9/1287) + + Multivariate Permutation Entropy [++ *amplitude-aware*, *edge*, *phase*, *weighted* and *modified* variants] + +*----- New multivariate multiscale methods -----* + +Two new multivariate multiscale entropy functions + + + [Multivariate Multiscale Entropy](https://journals.aps.org/pre/abstract/10.1103/PhysRevE.84.061918) [++ coarse, modified and generalized graining procedures] + + [Composite and Refined-composite Multivariate Multiscale Entropy](https://link.springer.com/article/10.1007/s11517-017-1647-5) + +*----- Extra signal processing tools -----* + +[`WindowData()`](@ref) is a new function that allows users to segment data (univariate or multivariate time series) into windows with/without overlapping samples! This allows users to calculate entropy on subsequences of their data to perform analyses with greater time resolution. + +__**Other little fixes...**__ + +*----- Docs edits -----* + + - Examples in the www.EntropyHub.xyz documentation were updated to match the latest package syntax. + +_________________________________________________________ + ## Introduction This toolkit provides a wide range of functions to calculate different entropy statistics. @@ -88,16 +119,6 @@ __________________________________________________________________ If you find this package useful, please consider starring it on [GitHub](https://github.com/MattWillFlood/EntropyHub.jl) and Julia Packages (or MatLab File Exchange and PyPI). This helps us to gauge user satisfaction. -## Function List - -EntropyHub functions fall into 5 categories: - -* `Base` functions for estimating the entropy of a single univariate time series. -* `Cross` functions for estimating the entropy between two univariate time series. -* `Bidimensional` functions for estimating the entropy of a two-dimensional univariate matrix. -* `Multiscale` functions for estimating the multiscale entropy of a single univariate time series using any of the Base entropy functions. -* `Multiscale Cross` functions for estimating the multiscale entropy between two univariate time series using any of the Cross-entropy functions. - ## Contact For general queries and information about EntropyHub, contact: `info@entropyhub.xyz` @@ -116,6 +137,22 @@ __Thank you for using EntropyHub,__ Matt +## Function List + +EntropyHub functions fall into 8 categories: + +* `Base` functions for estimating the entropy of a single univariate time series. +* `Cross` functions for estimating the entropy between two univariate time series. +* `Bidimensional` functions for estimating the entropy of a two-dimensional univariate matrix. +* `Multiscale` functions for estimating the multiscale entropy of a single univariate time series using any of the Base entropy functions. +* `Multiscale Cross` functions for estimating the multiscale entropy between two univariate time series using any of the Cross-entropy functions. +* `Multivariate Multiscale` functions for estimating the multivariate multiscale entropy of multivariate dataset using any of the Multivariate-entropy functions. +* `Other` Supplementary functions for various tasks related to EntropyHub and signal processing. + + +```@index +``` + ___ _ _ _____ _____ ____ ____ _ _ | _|| \ | ||_ _|| \| || || \ / | ___________ @@ -133,7 +170,4 @@ Matt -Documentation for [EntropyHub](https://github.com/MattWillFlood/EntropyHub.jl). - -```@index -``` +Documentation for [EntropyHub](https://github.com/MattWillFlood/EntropyHub.jl). \ No newline at end of file