From 9f87e4909c88f15436bea2868125e93c32981574 Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 24 Apr 2024 21:27:47 +0200 Subject: [PATCH] Docs for v2.0 --- docs/Manifest.toml | 192 +++++++++++++++--- docs/make.jl | 53 +---- docs/src/Examples/Example11.md | 127 ++++-------- docs/src/Examples/Example12.md | 48 +++++ docs/src/Examples/Example13.md | 107 ++++++++++ docs/src/Examples/Examples.md | 14 +- docs/src/Guide/Base_Entropies.md | 24 +-- docs/src/Guide/Bidimensional_Entropies.md | 8 +- docs/src/Guide/Cross_Entropies.md | 21 +- docs/src/Guide/Multiscale_Cross_Entropies.md | 15 +- docs/src/Guide/Multiscale_Entropies.md | 20 +- docs/src/Guide/Multivariate_Entropies.md | 18 ++ .../Multivariate_Multiscale_Entropies.md | 24 +++ docs/src/Guide/Other.md | 12 ++ docs/src/assets/rcMvMSEnjl.png | Bin 0 -> 26732 bytes docs/src/index.md | 62 ++++-- 16 files changed, 506 insertions(+), 239 deletions(-) create mode 100644 docs/src/Examples/Example12.md create mode 100644 docs/src/Examples/Example13.md create mode 100644 docs/src/Guide/Multivariate_Entropies.md create mode 100644 docs/src/Guide/Multivariate_Multiscale_Entropies.md create mode 100644 docs/src/Guide/Other.md create mode 100644 docs/src/assets/rcMvMSEnjl.png 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 0000000000000000000000000000000000000000..49dd5d197472b581cac7bcad73c6afeaa0cbb638 GIT binary patch literal 26732 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 literal 0 HcmV?d00001 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