Finished the 3d plot topology for images, added contour plots for images, added algebra, fixed image vertical flipping, experimental changes for a faster first boot

This commit is contained in:
Pixelguy14 2025-01-14 20:57:42 -06:00
parent c2ffbc8275
commit 645d569f03
7 changed files with 764 additions and 184 deletions

View File

@ -2,7 +2,7 @@
julia_version = "1.11.2" julia_version = "1.11.2"
manifest_format = "2.0" manifest_format = "2.0"
project_hash = "72412ae0f64cc39a16afe23fa1712ccaec97db17" project_hash = "d3959b0c3a38b987e17c2e3e73afbe28669615d7"
[[deps.AbstractFFTs]] [[deps.AbstractFFTs]]
deps = ["LinearAlgebra"] deps = ["LinearAlgebra"]
@ -57,6 +57,44 @@ version = "1.2.0"
uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
version = "1.1.2" version = "1.1.2"
[[deps.ArnoldiMethod]]
deps = ["LinearAlgebra", "Random", "StaticArrays"]
git-tree-sha1 = "d57bd3762d308bded22c3b82d033bff85f6195c6"
uuid = "ec485272-7323-5ecc-a04f-4719b315124d"
version = "0.4.0"
[[deps.ArrayInterface]]
deps = ["Adapt", "LinearAlgebra"]
git-tree-sha1 = "017fcb757f8e921fb44ee063a7aafe5f89b86dd1"
uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9"
version = "7.18.0"
[deps.ArrayInterface.extensions]
ArrayInterfaceBandedMatricesExt = "BandedMatrices"
ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices"
ArrayInterfaceCUDAExt = "CUDA"
ArrayInterfaceCUDSSExt = "CUDSS"
ArrayInterfaceChainRulesCoreExt = "ChainRulesCore"
ArrayInterfaceChainRulesExt = "ChainRules"
ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore"
ArrayInterfaceReverseDiffExt = "ReverseDiff"
ArrayInterfaceSparseArraysExt = "SparseArrays"
ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore"
ArrayInterfaceTrackerExt = "Tracker"
[deps.ArrayInterface.weakdeps]
BandedMatrices = "aae01518-5342-5314-be14-df237901396f"
BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0"
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e"
ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2"
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527"
ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
[[deps.Artifacts]] [[deps.Artifacts]]
uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33"
version = "1.11.0" version = "1.11.0"
@ -88,6 +126,12 @@ git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d"
uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35"
version = "0.1.9" version = "0.1.9"
[[deps.BitTwiddlingConvenienceFunctions]]
deps = ["Static"]
git-tree-sha1 = "f21cfd4950cb9f0587d5067e69405ad2acd27b87"
uuid = "62783981-4cbd-42fc-bca8-16325de8dc4b"
version = "0.1.6"
[[deps.BufferedStreams]] [[deps.BufferedStreams]]
git-tree-sha1 = "6863c5b7fc997eadcabdbaf6c5f201dc30032643" git-tree-sha1 = "6863c5b7fc997eadcabdbaf6c5f201dc30032643"
uuid = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d" uuid = "e1450e63-4bb3-523b-b2a4-4ffa8c0fd77d"
@ -104,6 +148,12 @@ git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc"
uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82"
version = "0.5.0" version = "0.5.0"
[[deps.CPUSummary]]
deps = ["CpuId", "IfElse", "PrecompileTools", "Static"]
git-tree-sha1 = "5a97e67919535d6841172016c9530fd69494e5ec"
uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9"
version = "0.2.6"
[[deps.CRC32c]] [[deps.CRC32c]]
uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc"
version = "1.11.0" version = "1.11.0"
@ -128,9 +178,9 @@ version = "1.1.1"
[[deps.CairoMakie]] [[deps.CairoMakie]]
deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"] deps = ["CRC32c", "Cairo", "Cairo_jll", "Colors", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools"]
git-tree-sha1 = "0afa2b4ac444b9412130d68493941e1af462e26a" git-tree-sha1 = "77bc0964dd77811630e6c3329536a86b3b965cba"
uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
version = "0.12.18" version = "0.13.0"
[[deps.Cairo_jll]] [[deps.Cairo_jll]]
deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"]
@ -138,6 +188,12 @@ git-tree-sha1 = "009060c9a6168704143100f36ab08f06c2af4642"
uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a"
version = "1.18.2+1" version = "1.18.2+1"
[[deps.CatIndices]]
deps = ["CustomUnitRanges", "OffsetArrays"]
git-tree-sha1 = "a0f80a09780eed9b1d106a1bf62041c2efc995bc"
uuid = "aafaddc9-749c-510e-ac4f-586e18779b91"
version = "0.2.2"
[[deps.ChainRulesCore]] [[deps.ChainRulesCore]]
deps = ["Compat", "LinearAlgebra"] deps = ["Compat", "LinearAlgebra"]
git-tree-sha1 = "1713c74e00545bfe14605d2a2be1712de8fbcb58" git-tree-sha1 = "1713c74e00545bfe14605d2a2be1712de8fbcb58"
@ -148,6 +204,18 @@ weakdeps = ["SparseArrays"]
[deps.ChainRulesCore.extensions] [deps.ChainRulesCore.extensions]
ChainRulesCoreSparseArraysExt = "SparseArrays" ChainRulesCoreSparseArraysExt = "SparseArrays"
[[deps.CloseOpenIntervals]]
deps = ["Static", "StaticArrayInterface"]
git-tree-sha1 = "05ba0d07cd4fd8b7a39541e31a7b0254704ea581"
uuid = "fb6a15b2-703c-40df-9091-08a04967cfa9"
version = "0.1.13"
[[deps.Clustering]]
deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "Random", "SparseArrays", "Statistics", "StatsBase"]
git-tree-sha1 = "3e22db924e2945282e70c33b75d4dde8bfa44c94"
uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5"
version = "0.15.8"
[[deps.CodeTracking]] [[deps.CodeTracking]]
deps = ["InteractiveUtils", "UUIDs"] deps = ["InteractiveUtils", "UUIDs"]
git-tree-sha1 = "7eee164f122511d3e4e1ebadb7956939ea7e1c77" git-tree-sha1 = "7eee164f122511d3e4e1ebadb7956939ea7e1c77"
@ -200,6 +268,11 @@ git-tree-sha1 = "3faae67b8899797592335832fccf4b3c80bb04fa"
uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6" uuid = "a80b9123-70ca-4bc0-993e-6e3bcb318db6"
version = "0.8.15" version = "0.8.15"
[[deps.CommonWorldInvalidations]]
git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0"
uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8"
version = "1.0.0"
[[deps.Compat]] [[deps.Compat]]
deps = ["TOML", "UUIDs"] deps = ["TOML", "UUIDs"]
git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215" git-tree-sha1 = "8ae8d32e09f0dcf42a36b90d4e17f5dd2e4c4215"
@ -215,6 +288,11 @@ deps = ["Artifacts", "Libdl"]
uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae"
version = "1.1.1+0" version = "1.1.1+0"
[[deps.ComputationalResources]]
git-tree-sha1 = "52cb3ec90e8a8bea0e62e275ba577ad0f74821f7"
uuid = "ed09eef8-17a6-5b46-8889-db040fac31e3"
version = "0.3.2"
[[deps.ConcurrentUtilities]] [[deps.ConcurrentUtilities]]
deps = ["Serialization", "Sockets"] deps = ["Serialization", "Sockets"]
git-tree-sha1 = "f36e5e8fdffcb5646ea5da81495a5a7566005127" git-tree-sha1 = "f36e5e8fdffcb5646ea5da81495a5a7566005127"
@ -249,11 +327,28 @@ git-tree-sha1 = "439e35b0b36e2e5881738abc8857bd92ad6ff9a8"
uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" uuid = "d38c429a-6771-53c6-b99e-75d170b6e991"
version = "0.6.3" version = "0.6.3"
[[deps.CoordinateTransformations]]
deps = ["LinearAlgebra", "StaticArrays"]
git-tree-sha1 = "f9d7112bfff8a19a3a4ea4e03a8e6a91fe8456bf"
uuid = "150eb455-5306-5404-9cee-2592286d6298"
version = "0.6.3"
[[deps.CpuId]]
deps = ["Markdown"]
git-tree-sha1 = "fcbb72b032692610bfbdb15018ac16a36cf2e406"
uuid = "adafc99b-e345-5852-983c-f28acb93d879"
version = "0.3.1"
[[deps.Crayons]] [[deps.Crayons]]
git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15"
uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f"
version = "4.1.1" version = "4.1.1"
[[deps.CustomUnitRanges]]
git-tree-sha1 = "1a3f97f907e6dd8983b744d2642651bb162a3f7a"
uuid = "dc8bdbbb-1ca9-579f-8c36-e416f6a65cce"
version = "1.0.2"
[[deps.DataAPI]] [[deps.DataAPI]]
git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe"
uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a"
@ -299,6 +394,17 @@ git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae"
uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab"
version = "1.9.1" version = "1.9.1"
[[deps.Distances]]
deps = ["LinearAlgebra", "Statistics", "StatsAPI"]
git-tree-sha1 = "c7e3a542b999843086e2f29dac96a618c105be1d"
uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
version = "0.10.12"
weakdeps = ["ChainRulesCore", "SparseArrays"]
[deps.Distances.extensions]
DistancesChainRulesCoreExt = "ChainRulesCore"
DistancesSparseArraysExt = "SparseArrays"
[[deps.Distributed]] [[deps.Distributed]]
deps = ["Random", "Serialization", "Sockets"] deps = ["Random", "Serialization", "Sockets"]
uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b"
@ -405,6 +511,12 @@ git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd"
uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5"
version = "4.4.2+2" version = "4.4.2+2"
[[deps.FFTViews]]
deps = ["CustomUnitRanges", "FFTW"]
git-tree-sha1 = "cbdf14d1e8c7c8aacbe8b19862e0179fd08321c2"
uuid = "4f61f5a4-77b1-5117-aa51-3ab5ef4ef0cd"
version = "0.3.2"
[[deps.FFTW]] [[deps.FFTW]]
deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"]
git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d" git-tree-sha1 = "4820348781ae578893311153d69049a93d05f39d"
@ -524,16 +636,16 @@ uuid = "781609d7-10c4-51f6-84f2-b8444358ff6d"
version = "6.3.0+0" version = "6.3.0+0"
[[deps.GR]] [[deps.GR]]
deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] 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 = "ddda044ca260ee324c5fc07edb6d7cf3f0b9c350" git-tree-sha1 = "8e2d86e06ceb4580110d9e716be26658effc5bfd"
uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71"
version = "0.73.5" version = "0.72.8"
[[deps.GR_jll]] [[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"] deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Qt5Base_jll", "Zlib_jll", "libpng_jll"]
git-tree-sha1 = "278e5e0f820178e8a26df3184fcb2280717c79b1" git-tree-sha1 = "da121cbdc95b065da07fbb93638367737969693f"
uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9"
version = "0.73.5+0" version = "0.72.8+0"
[[deps.GarishPrint]] [[deps.GarishPrint]]
deps = ["Configurations", "Preferences"] deps = ["Configurations", "Preferences"]
@ -595,10 +707,10 @@ uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f"
version = "1.4.0" version = "1.4.0"
[[deps.GeometryBasics]] [[deps.GeometryBasics]]
deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "PrecompileTools", "Random", "StaticArrays"]
git-tree-sha1 = "b62f2b2d76cee0d61a2ef2b3118cd2a3215d3134" git-tree-sha1 = "c1a9c159c3ac53aa09663d8662c7277ef3fa508d"
uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326"
version = "0.4.11" version = "0.5.1"
[[deps.Gettext_jll]] [[deps.Gettext_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"]
@ -606,6 +718,12 @@ git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046"
uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" uuid = "78b55507-aeef-58d4-861c-77aaff3498b1"
version = "0.21.0+0" version = "0.21.0+0"
[[deps.Ghostscript_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "43ba3d3c82c18d88471cfd2924931658838c9d8f"
uuid = "61579ee1-b43e-5ca0-a5da-69d92c66a64b"
version = "9.55.0+4"
[[deps.Giflib_jll]] [[deps.Giflib_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "6570366d757b50fabae9f4315ad74d2e40c0560a" git-tree-sha1 = "6570366d757b50fabae9f4315ad74d2e40c0560a"
@ -635,6 +753,12 @@ git-tree-sha1 = "01979f9b37367603e2848ea225918a3b3861b606"
uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472"
version = "1.3.14+1" version = "1.3.14+1"
[[deps.Graphs]]
deps = ["ArnoldiMethod", "Compat", "DataStructures", "Distributed", "Inflate", "LinearAlgebra", "Random", "SharedArrays", "SimpleTraits", "SparseArrays", "Statistics"]
git-tree-sha1 = "1dc470db8b1131cfc7fb4c115de89fe391b9e780"
uuid = "86223c79-3864-5bf0-83f7-82e725a168b6"
version = "1.12.0"
[[deps.GridLayoutBase]] [[deps.GridLayoutBase]]
deps = ["GeometryBasics", "InteractiveUtils", "Observables"] deps = ["GeometryBasics", "InteractiveUtils", "Observables"]
git-tree-sha1 = "dc6bed05c15523624909b3953686c5f5ffa10adc" git-tree-sha1 = "dc6bed05c15523624909b3953686c5f5ffa10adc"
@ -658,6 +782,18 @@ git-tree-sha1 = "55c53be97790242c29031e5cd45e8ac296dadda3"
uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566"
version = "8.5.0+0" version = "8.5.0+0"
[[deps.HistogramThresholding]]
deps = ["ImageBase", "LinearAlgebra", "MappedArrays"]
git-tree-sha1 = "7194dfbb2f8d945abdaf68fa9480a965d6661e69"
uuid = "2c695a8d-9458-5d45-9878-1b8a99cf7853"
version = "0.3.1"
[[deps.HostCPUFeatures]]
deps = ["BitTwiddlingConvenienceFunctions", "IfElse", "Libdl", "Static"]
git-tree-sha1 = "8e070b599339d622e9a081d17230d74a5c473293"
uuid = "3e5b6fbb-0976-4d2c-9146-d79de83f2fb0"
version = "0.1.17"
[[deps.HttpCommon]] [[deps.HttpCommon]]
deps = ["Dates", "Nullables", "Test", "URIParser"] deps = ["Dates", "Nullables", "Test", "URIParser"]
git-tree-sha1 = "46313284237aa6ca67a6bce6d6fbd323d19cff59" git-tree-sha1 = "46313284237aa6ca67a6bce6d6fbd323d19cff59"
@ -676,6 +812,11 @@ git-tree-sha1 = "7134810b1afce04bbc1045ca1985fbe81ce17653"
uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2"
version = "0.9.5" version = "0.9.5"
[[deps.IfElse]]
git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1"
uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173"
version = "0.1.1"
[[deps.ImageAxes]] [[deps.ImageAxes]]
deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"] deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"]
git-tree-sha1 = "e12629406c6c4442539436581041d372d69c55ba" git-tree-sha1 = "e12629406c6c4442539436581041d372d69c55ba"
@ -688,24 +829,102 @@ git-tree-sha1 = "eb49b82c172811fd2c86759fa0553a2221feb909"
uuid = "c817782e-172a-44cc-b673-b171935fbb9e" uuid = "c817782e-172a-44cc-b673-b171935fbb9e"
version = "0.1.7" version = "0.1.7"
[[deps.ImageBinarization]]
deps = ["HistogramThresholding", "ImageCore", "LinearAlgebra", "Polynomials", "Reexport", "Statistics"]
git-tree-sha1 = "33485b4e40d1df46c806498c73ea32dc17475c59"
uuid = "cbc4b850-ae4b-5111-9e64-df94c024a13d"
version = "0.3.1"
[[deps.ImageContrastAdjustment]]
deps = ["ImageBase", "ImageCore", "ImageTransformations", "Parameters"]
git-tree-sha1 = "eb3d4365a10e3f3ecb3b115e9d12db131d28a386"
uuid = "f332f351-ec65-5f6a-b3d1-319c6670881a"
version = "0.3.12"
[[deps.ImageCore]] [[deps.ImageCore]]
deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"] deps = ["ColorVectorSpace", "Colors", "FixedPointNumbers", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "PrecompileTools", "Reexport"]
git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3" git-tree-sha1 = "8c193230235bbcee22c8066b0374f63b5683c2d3"
uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534"
version = "0.10.5" version = "0.10.5"
[[deps.ImageCorners]]
deps = ["ImageCore", "ImageFiltering", "PrecompileTools", "StaticArrays", "StatsBase"]
git-tree-sha1 = "24c52de051293745a9bad7d73497708954562b79"
uuid = "89d5987c-236e-4e32-acd0-25bd6bd87b70"
version = "0.1.3"
[[deps.ImageDistances]]
deps = ["Distances", "ImageCore", "ImageMorphology", "LinearAlgebra", "Statistics"]
git-tree-sha1 = "08b0e6354b21ef5dd5e49026028e41831401aca8"
uuid = "51556ac3-7006-55f5-8cb3-34580c88182d"
version = "0.2.17"
[[deps.ImageFiltering]]
deps = ["CatIndices", "ComputationalResources", "DataStructures", "FFTViews", "FFTW", "ImageBase", "ImageCore", "LinearAlgebra", "OffsetArrays", "PrecompileTools", "Reexport", "SparseArrays", "StaticArrays", "Statistics", "TiledIteration"]
git-tree-sha1 = "33cb509839cc4011beb45bde2316e64344b0f92b"
uuid = "6a3955dd-da59-5b1f-98d4-e7296123deb5"
version = "0.7.9"
[[deps.ImageIO]] [[deps.ImageIO]]
deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs", "WebP"] deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs", "WebP"]
git-tree-sha1 = "696144904b76e1ca433b886b4e7edd067d76cbf7" git-tree-sha1 = "696144904b76e1ca433b886b4e7edd067d76cbf7"
uuid = "82e4d734-157c-48bb-816b-45c225c6df19" uuid = "82e4d734-157c-48bb-816b-45c225c6df19"
version = "0.6.9" version = "0.6.9"
[[deps.ImageMagick]]
deps = ["FileIO", "ImageCore", "ImageMagick_jll", "InteractiveUtils"]
git-tree-sha1 = "c5c5478ae8d944c63d6de961b19e6d3324812c35"
uuid = "6218d12a-5da1-5696-b52f-db25d2ecc6d1"
version = "1.4.0"
[[deps.ImageMagick_jll]]
deps = ["Artifacts", "Ghostscript_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "OpenJpeg_jll", "Zlib_jll", "libpng_jll"]
git-tree-sha1 = "fa01c98985be12e5d75301c4527fff2c46fa3e0e"
uuid = "c73af94c-d91f-53ed-93a7-00f77d67a9d7"
version = "7.1.1+1"
[[deps.ImageMetadata]] [[deps.ImageMetadata]]
deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"] deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"]
git-tree-sha1 = "2a81c3897be6fbcde0802a0ebe6796d0562f63ec" git-tree-sha1 = "2a81c3897be6fbcde0802a0ebe6796d0562f63ec"
uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49" uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49"
version = "0.9.10" version = "0.9.10"
[[deps.ImageMorphology]]
deps = ["DataStructures", "ImageCore", "LinearAlgebra", "LoopVectorization", "OffsetArrays", "Requires", "TiledIteration"]
git-tree-sha1 = "6f0a801136cb9c229aebea0df296cdcd471dbcd1"
uuid = "787d08f9-d448-5407-9aad-5290dd7ab264"
version = "0.4.5"
[[deps.ImageQualityIndexes]]
deps = ["ImageContrastAdjustment", "ImageCore", "ImageDistances", "ImageFiltering", "LazyModules", "OffsetArrays", "PrecompileTools", "Statistics"]
git-tree-sha1 = "783b70725ed326340adf225be4889906c96b8fd1"
uuid = "2996bd0c-7a13-11e9-2da2-2f5ce47296a9"
version = "0.3.7"
[[deps.ImageSegmentation]]
deps = ["Clustering", "DataStructures", "Distances", "Graphs", "ImageCore", "ImageFiltering", "ImageMorphology", "LinearAlgebra", "MetaGraphs", "RegionTrees", "SimpleWeightedGraphs", "StaticArrays", "Statistics"]
git-tree-sha1 = "b217d9ded4a95052ffc09acc41ab781f7f72c7ba"
uuid = "80713f31-8817-5129-9cf8-209ff8fb23e1"
version = "1.8.3"
[[deps.ImageShow]]
deps = ["Base64", "ColorSchemes", "FileIO", "ImageBase", "ImageCore", "OffsetArrays", "StackViews"]
git-tree-sha1 = "3b5344bcdbdc11ad58f3b1956709b5b9345355de"
uuid = "4e3cecfd-b093-5904-9786-8bbb286a6a31"
version = "0.3.8"
[[deps.ImageTransformations]]
deps = ["AxisAlgorithms", "CoordinateTransformations", "ImageBase", "ImageCore", "Interpolations", "OffsetArrays", "Rotations", "StaticArrays"]
git-tree-sha1 = "e0884bdf01bbbb111aea77c348368a86fb4b5ab6"
uuid = "02fcd773-0e25-5acc-982a-7f6622650795"
version = "0.10.1"
[[deps.Images]]
deps = ["Base64", "FileIO", "Graphics", "ImageAxes", "ImageBase", "ImageBinarization", "ImageContrastAdjustment", "ImageCore", "ImageCorners", "ImageDistances", "ImageFiltering", "ImageIO", "ImageMagick", "ImageMetadata", "ImageMorphology", "ImageQualityIndexes", "ImageSegmentation", "ImageShow", "ImageTransformations", "IndirectArrays", "IntegralArrays", "Random", "Reexport", "SparseArrays", "StaticArrays", "Statistics", "StatsBase", "TiledIteration"]
git-tree-sha1 = "12fdd617c7fe25dc4a6cc804d657cc4b2230302b"
uuid = "916415d5-f1e6-5110-898d-aaa5f9f070e0"
version = "0.26.1"
[[deps.Imath_jll]] [[deps.Imath_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "0936ba688c6d201805a83da835b55c61a180db52" git-tree-sha1 = "0936ba688c6d201805a83da835b55c61a180db52"
@ -741,6 +960,12 @@ version = "1.4.2"
ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd"
Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" Parsers = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0"
[[deps.IntegralArrays]]
deps = ["ColorTypes", "FixedPointNumbers", "IntervalSets"]
git-tree-sha1 = "b842cbff3f44804a84fda409745cc8f04c029a20"
uuid = "1d092043-8f09-5a30-832f-7509e371ab51"
version = "0.1.6"
[[deps.IntelOpenMP_jll]] [[deps.IntelOpenMP_jll]]
deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl"]
git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e" git-tree-sha1 = "10bd689145d2c3b2a9844005d01087cc1194e79e"
@ -827,6 +1052,12 @@ git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856"
uuid = "82899510-4779-5014-852e-03e436cf321d" uuid = "82899510-4779-5014-852e-03e436cf321d"
version = "1.0.0" version = "1.0.0"
[[deps.JLD2]]
deps = ["FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "Requires", "TranscodingStreams"]
git-tree-sha1 = "91d501cb908df6f134352ad73cde5efc50138279"
uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
version = "0.5.11"
[[deps.JLFzf]] [[deps.JLFzf]]
deps = ["Pipe", "REPL", "Random", "fzf_jll"] deps = ["Pipe", "REPL", "Random", "fzf_jll"]
git-tree-sha1 = "71b48d857e86bf7a1838c4736545699974ce79a2" git-tree-sha1 = "71b48d857e86bf7a1838c4736545699974ce79a2"
@ -932,6 +1163,12 @@ version = "0.16.5"
SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf"
SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8"
[[deps.LayoutPointers]]
deps = ["ArrayInterface", "LinearAlgebra", "ManualMemory", "SIMDTypes", "Static", "StaticArrayInterface"]
git-tree-sha1 = "a9eaadb366f5493a5654e843864c13d8b107548c"
uuid = "10f19ff3-798f-405d-979b-55457f8fc047"
version = "0.1.17"
[[deps.LazilyInitializedFields]] [[deps.LazilyInitializedFields]]
git-tree-sha1 = "0f2da712350b020bc3957f269c9caad516383ee0" git-tree-sha1 = "0f2da712350b020bc3957f269c9caad516383ee0"
uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf" uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf"
@ -1013,10 +1250,10 @@ uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9"
version = "2.40.3+0" version = "2.40.3+0"
[[deps.Libtiff_jll]] [[deps.Libtiff_jll]]
deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"]
git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" git-tree-sha1 = "3eb79b0ca5764d4799c06699573fd8f533259713"
uuid = "89763e89-9b03-5906-acba-b20f662cd828" uuid = "89763e89-9b03-5906-acba-b20f662cd828"
version = "4.5.1+1" version = "4.4.0+0"
[[deps.Libuuid_jll]] [[deps.Libuuid_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
@ -1035,6 +1272,12 @@ deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"]
uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
version = "1.11.0" version = "1.11.0"
[[deps.LittleCMS_jll]]
deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg"]
git-tree-sha1 = "110897e7db2d6836be22c18bffd9422218ee6284"
uuid = "d3a379c0-f9a3-5b72-a4c0-6bf4d2e8af0f"
version = "2.12.0+0"
[[deps.LogExpFunctions]] [[deps.LogExpFunctions]]
deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"]
git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f" git-tree-sha1 = "13ca9e2586b89836fd20cccf56e57e2b9ae7f38f"
@ -1061,6 +1304,21 @@ git-tree-sha1 = "f02b56007b064fbfddb4c9cd60161b6dd0f40df3"
uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36"
version = "1.1.0" version = "1.1.0"
[[deps.LoopVectorization]]
deps = ["ArrayInterface", "CPUSummary", "CloseOpenIntervals", "DocStringExtensions", "HostCPUFeatures", "IfElse", "LayoutPointers", "LinearAlgebra", "OffsetArrays", "PolyesterWeave", "PrecompileTools", "SIMDTypes", "SLEEFPirates", "Static", "StaticArrayInterface", "ThreadingUtilities", "UnPack", "VectorizationBase"]
git-tree-sha1 = "8084c25a250e00ae427a379a5b607e7aed96a2dd"
uuid = "bdcacae8-1622-11e9-2a5c-532679323890"
version = "0.12.171"
[deps.LoopVectorization.extensions]
ForwardDiffExt = ["ChainRulesCore", "ForwardDiff"]
SpecialFunctionsExt = "SpecialFunctions"
[deps.LoopVectorization.weakdeps]
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
[[deps.LoweredCodeUtils]] [[deps.LoweredCodeUtils]]
deps = ["JuliaInterpreter"] deps = ["JuliaInterpreter"]
git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021" git-tree-sha1 = "688d6d9e098109051ae33d126fcfc88c4ce4a021"
@ -1084,16 +1342,16 @@ uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09"
version = "0.5.15" version = "0.5.15"
[[deps.Makie]] [[deps.Makie]]
deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"] deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "Dates", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FilePaths", "FixedPointNumbers", "Format", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageBase", "ImageIO", "InteractiveUtils", "Interpolations", "IntervalSets", "InverseFunctions", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "PNGFiles", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Scratch", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun", "Unitful"]
git-tree-sha1 = "be3051d08b78206fb5e688e8d70c9e84d0264117" git-tree-sha1 = "021b6b64b68f6ee09fb35a1528a2b5a7f48ac00c"
uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
version = "0.21.18" version = "0.22.0"
[[deps.MakieCore]] [[deps.MakieCore]]
deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"] deps = ["ColorTypes", "GeometryBasics", "IntervalSets", "Observables"]
git-tree-sha1 = "9019b391d7d086e841cbeadc13511224bd029ab3" git-tree-sha1 = "c731269d5a2c85ffdc689127a9ba6d73e978a4b1"
uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b"
version = "0.8.12" version = "0.9.0"
[[deps.Malt]] [[deps.Malt]]
deps = ["Distributed", "Logging", "RelocatableFolders", "Serialization", "Sockets"] deps = ["Distributed", "Logging", "RelocatableFolders", "Serialization", "Sockets"]
@ -1101,6 +1359,11 @@ git-tree-sha1 = "02a728ada9d6caae583a0f87c1dd3844f99ec3fd"
uuid = "36869731-bdee-424d-aa32-cab38c994e3b" uuid = "36869731-bdee-424d-aa32-cab38c994e3b"
version = "1.1.2" version = "1.1.2"
[[deps.ManualMemory]]
git-tree-sha1 = "bcaef4fc7a0cfe2cba636d84cda54b5e4e4ca3cd"
uuid = "d125e4d3-2237-4719-b19c-fa641b8a4667"
version = "0.1.8"
[[deps.MappedArrays]] [[deps.MappedArrays]]
git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e"
uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900"
@ -1133,6 +1396,12 @@ git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102"
uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e"
version = "0.3.2" version = "0.3.2"
[[deps.MetaGraphs]]
deps = ["Graphs", "JLD2", "Random"]
git-tree-sha1 = "e9650bea7f91c3397eb9ae6377343963a22bf5b8"
uuid = "626554b9-1ddb-594c-aa3c-2596fe9399a5"
version = "0.8.0"
[[deps.Millboard]] [[deps.Millboard]]
git-tree-sha1 = "ea6a5b7e56e76d8051023faaa11d91d1d881dac3" git-tree-sha1 = "ea6a5b7e56e76d8051023faaa11d91d1d881dac3"
uuid = "39ec1447-df44-5f4c-beaa-866f30b4d3b2" uuid = "39ec1447-df44-5f4c-beaa-866f30b4d3b2"
@ -1181,6 +1450,12 @@ git-tree-sha1 = "eda490d06b9f7c00752ee81cfa451efe55521e21"
uuid = "c020b1a1-e9b0-503a-9c33-f039bfc54a85" uuid = "c020b1a1-e9b0-503a-9c33-f039bfc54a85"
version = "1.0.0" version = "1.0.0"
[[deps.NearestNeighbors]]
deps = ["Distances", "StaticArrays"]
git-tree-sha1 = "8a3271d8309285f4db73b4f662b1b290c715e85e"
uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce"
version = "0.4.21"
[[deps.Netpbm]] [[deps.Netpbm]]
deps = ["FileIO", "ImageCore", "ImageMetadata"] deps = ["FileIO", "ImageCore", "ImageMetadata"]
git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd" git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd"
@ -1245,6 +1520,12 @@ git-tree-sha1 = "8292dd5c8a38257111ada2174000a33745b06d4e"
uuid = "18a262bb-aa17-5467-a713-aee519bc75cb" uuid = "18a262bb-aa17-5467-a713-aee519bc75cb"
version = "3.2.4+0" version = "3.2.4+0"
[[deps.OpenJpeg_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Libtiff_jll", "LittleCMS_jll", "Pkg", "libpng_jll"]
git-tree-sha1 = "76374b6e7f632c130e78100b166e5a48464256f8"
uuid = "643b3616-a352-519d-856d-80112ee9badc"
version = "2.4.0+0"
[[deps.OpenLibm_jll]] [[deps.OpenLibm_jll]]
deps = ["Artifacts", "Libdl"] deps = ["Artifacts", "Libdl"]
uuid = "05823500-19ac-5b8b-9628-191a04bc5112" uuid = "05823500-19ac-5b8b-9628-191a04bc5112"
@ -1378,9 +1659,9 @@ version = "0.8.19"
[[deps.Plots]] [[deps.Plots]]
deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"]
git-tree-sha1 = "dae01f8c2e069a683d3a6e17bbae5070ab94786f" git-tree-sha1 = "f202a1ca4f6e165238d8175df63a7e26a51e04dc"
uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
version = "1.40.9" version = "1.40.7"
[deps.Plots.extensions] [deps.Plots.extensions]
FileIOExt = "FileIO" FileIOExt = "FileIO"
@ -1408,11 +1689,35 @@ git-tree-sha1 = "e0864c15334d2c4bac8137ce3359f1174565e719"
uuid = "72656b73-756c-7461-726b-72656b6b696b" uuid = "72656b73-756c-7461-726b-72656b6b696b"
version = "1.2.0" version = "1.2.0"
[[deps.PolyesterWeave]]
deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"]
git-tree-sha1 = "645bed98cd47f72f67316fd42fc47dee771aefcd"
uuid = "1d0040c9-8b98-4ee7-8388-3f51789ca0ad"
version = "0.2.2"
[[deps.PolygonOps]] [[deps.PolygonOps]]
git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6" git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6"
uuid = "647866c9-e3ac-4575-94e7-e3d426903924" uuid = "647866c9-e3ac-4575-94e7-e3d426903924"
version = "0.1.2" version = "0.1.2"
[[deps.Polynomials]]
deps = ["LinearAlgebra", "OrderedCollections", "RecipesBase", "Requires", "Setfield", "SparseArrays"]
git-tree-sha1 = "27f6107dc202e2499f0750c628a848ce5d6e77f5"
uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45"
version = "4.0.13"
[deps.Polynomials.extensions]
PolynomialsChainRulesCoreExt = "ChainRulesCore"
PolynomialsFFTWExt = "FFTW"
PolynomialsMakieCoreExt = "MakieCore"
PolynomialsMutableArithmeticsExt = "MutableArithmetics"
[deps.Polynomials.weakdeps]
ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4"
FFTW = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341"
MakieCore = "20f20a25-4f0e-4fdf-b5d1-57303727442b"
MutableArithmetics = "d8a4904e-b15c-11e9-3269-09a3773c0cb0"
[[deps.PooledArrays]] [[deps.PooledArrays]]
deps = ["DataAPI", "Future"] deps = ["DataAPI", "Future"]
git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3"
@ -1476,11 +1781,11 @@ git-tree-sha1 = "8b3fc30bc0390abdce15f8822c889f669baed73d"
uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65" uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65"
version = "1.0.1" version = "1.0.1"
[[deps.Qt6Base_jll]] [[deps.Qt5Base_jll]]
deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Vulkan_Loader_jll", "Xorg_libSM_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_cursor_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "libinput_jll", "xkbcommon_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 = "7c29f0e8c575428bd84dc3c72ece5178caa67336" git-tree-sha1 = "0c03844e2231e12fda4d0086fd7cbe4098ee8dc5"
uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1"
version = "6.5.2+2" version = "5.15.3+2"
[[deps.QuadGK]] [[deps.QuadGK]]
deps = ["DataStructures", "LinearAlgebra"] deps = ["DataStructures", "LinearAlgebra"]
@ -1494,6 +1799,12 @@ version = "2.11.1"
[deps.QuadGK.weakdeps] [deps.QuadGK.weakdeps]
Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9"
[[deps.Quaternions]]
deps = ["LinearAlgebra", "Random", "RealDot"]
git-tree-sha1 = "994cc27cdacca10e68feb291673ec3a76aa2fae9"
uuid = "94ee1d12-ae83-5a48-8b1c-48b8ff168ae0"
version = "0.7.6"
[[deps.REPL]] [[deps.REPL]]
deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"] deps = ["InteractiveUtils", "Markdown", "Sockets", "StyledStrings", "Unicode"]
uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
@ -1519,6 +1830,12 @@ weakdeps = ["FixedPointNumbers"]
[deps.Ratios.extensions] [deps.Ratios.extensions]
RatiosFixedPointNumbersExt = "FixedPointNumbers" RatiosFixedPointNumbersExt = "FixedPointNumbers"
[[deps.RealDot]]
deps = ["LinearAlgebra"]
git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9"
uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9"
version = "0.1.0"
[[deps.RecipesBase]] [[deps.RecipesBase]]
deps = ["PrecompileTools"] deps = ["PrecompileTools"]
git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff"
@ -1536,6 +1853,12 @@ git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b"
uuid = "189a3867-3050-52da-a836-e630ba90ab69" uuid = "189a3867-3050-52da-a836-e630ba90ab69"
version = "1.2.2" version = "1.2.2"
[[deps.RegionTrees]]
deps = ["IterTools", "LinearAlgebra", "StaticArrays"]
git-tree-sha1 = "4618ed0da7a251c7f92e869ae1a19c74a7d2a7f9"
uuid = "dee08c22-ab7f-5625-9660-a9af2021b33f"
version = "0.3.2"
[[deps.RegistryInstances]] [[deps.RegistryInstances]]
deps = ["LazilyInitializedFields", "Pkg", "TOML", "Tar"] deps = ["LazilyInitializedFields", "Pkg", "TOML", "Tar"]
git-tree-sha1 = "ffd19052caf598b8653b99404058fce14828be51" git-tree-sha1 = "ffd19052caf598b8653b99404058fce14828be51"
@ -1588,6 +1911,16 @@ git-tree-sha1 = "58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8"
uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f"
version = "0.5.1+0" version = "0.5.1+0"
[[deps.Rotations]]
deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"]
git-tree-sha1 = "5680a9276685d392c87407df00d57c9924d9f11e"
uuid = "6038ab10-8711-5258-84ad-4b1120ba62dc"
version = "1.7.1"
weakdeps = ["RecipesBase"]
[deps.Rotations.extensions]
RotationsRecipesBaseExt = "RecipesBase"
[[deps.RoundingEmulator]] [[deps.RoundingEmulator]]
git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b"
uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705"
@ -1603,6 +1936,17 @@ git-tree-sha1 = "fea870727142270bdf7624ad675901a1ee3b4c87"
uuid = "fdea26ae-647d-5447-a871-4b548cad5224" uuid = "fdea26ae-647d-5447-a871-4b548cad5224"
version = "3.7.1" version = "3.7.1"
[[deps.SIMDTypes]]
git-tree-sha1 = "330289636fb8107c5f32088d2741e9fd7a061a5c"
uuid = "94e857df-77ce-4151-89e5-788b33177be4"
version = "0.1.0"
[[deps.SLEEFPirates]]
deps = ["IfElse", "Static", "VectorizationBase"]
git-tree-sha1 = "456f610ca2fbd1c14f5fcf31c6bfadc55e7d66e0"
uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa"
version = "0.6.43"
[[deps.Scratch]] [[deps.Scratch]]
deps = ["Dates"] deps = ["Dates"]
git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386"
@ -1619,11 +1963,17 @@ version = "1.4.8"
uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
version = "1.11.0" version = "1.11.0"
[[deps.Setfield]]
deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"]
git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac"
uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46"
version = "1.1.1"
[[deps.ShaderAbstractions]] [[deps.ShaderAbstractions]]
deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays", "StructArrays", "Tables"] deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays"]
git-tree-sha1 = "79123bc60c5507f035e6d1d9e563bb2971954ec8" git-tree-sha1 = "818554664a2e01fc3784becb2eb3a82326a604b6"
uuid = "65257c39-d410-5151-9873-9b3e5be5013e" uuid = "65257c39-d410-5151-9873-9b3e5be5013e"
version = "0.4.1" version = "0.5.0"
[[deps.SharedArrays]] [[deps.SharedArrays]]
deps = ["Distributed", "Mmap", "Random", "Serialization"] deps = ["Distributed", "Mmap", "Random", "Serialization"]
@ -1653,6 +2003,12 @@ git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231"
uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d"
version = "0.9.4" version = "0.9.4"
[[deps.SimpleWeightedGraphs]]
deps = ["Graphs", "LinearAlgebra", "Markdown", "SparseArrays"]
git-tree-sha1 = "4b33e0e081a825dbfaf314decf58fa47e53d6acb"
uuid = "47aef6b3-ad0c-573a-a1e2-d07658019622"
version = "1.4.0"
[[deps.Sixel]] [[deps.Sixel]]
deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"] deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"]
git-tree-sha1 = "2da10356e31327c7096832eb9cd86307a50b1eb6" git-tree-sha1 = "2da10356e31327c7096832eb9cd86307a50b1eb6"
@ -1696,6 +2052,23 @@ git-tree-sha1 = "46e589465204cd0c08b4bd97385e4fa79a0c770c"
uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15"
version = "0.1.1" version = "0.1.1"
[[deps.Static]]
deps = ["CommonWorldInvalidations", "IfElse", "PrecompileTools"]
git-tree-sha1 = "87d51a3ee9a4b0d2fe054bdd3fc2436258db2603"
uuid = "aedffcd0-7271-4cad-89d0-dc628f76c6d3"
version = "1.1.1"
[[deps.StaticArrayInterface]]
deps = ["ArrayInterface", "Compat", "IfElse", "LinearAlgebra", "PrecompileTools", "Static"]
git-tree-sha1 = "96381d50f1ce85f2663584c8e886a6ca97e60554"
uuid = "0d7ed370-da01-4f52-bd93-41d350b8b718"
version = "1.8.0"
weakdeps = ["OffsetArrays", "StaticArrays"]
[deps.StaticArrayInterface.extensions]
StaticArrayInterfaceOffsetArraysExt = "OffsetArrays"
StaticArrayInterfaceStaticArraysExt = "StaticArrays"
[[deps.StaticArrays]] [[deps.StaticArrays]]
deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"]
git-tree-sha1 = "47091a0340a675c738b1304b58161f3b0839d454" git-tree-sha1 = "47091a0340a675c738b1304b58161f3b0839d454"
@ -1809,9 +2182,9 @@ version = "0.4.0"
[[deps.StructArrays]] [[deps.StructArrays]]
deps = ["ConstructionBase", "DataAPI", "Tables"] deps = ["ConstructionBase", "DataAPI", "Tables"]
git-tree-sha1 = "9537ef82c42cdd8c5d443cbc359110cbb36bae10" git-tree-sha1 = "5a3a31c41e15a1e042d60f2f4942adccba05d3c9"
uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a"
version = "0.6.21" version = "0.7.0"
[deps.StructArrays.extensions] [deps.StructArrays.extensions]
StructArraysAdaptExt = "Adapt" StructArraysAdaptExt = "Adapt"
@ -1885,12 +2258,24 @@ git-tree-sha1 = "43044b737fa70bc12f6105061d3da38f881a3e3c"
uuid = "b718987f-49a8-5099-9789-dcd902bef87d" uuid = "b718987f-49a8-5099-9789-dcd902bef87d"
version = "1.0.2" version = "1.0.2"
[[deps.ThreadingUtilities]]
deps = ["ManualMemory"]
git-tree-sha1 = "eda08f7e9818eb53661b3deb74e3159460dfbc27"
uuid = "8290d209-cae3-49c0-8002-c8c24d57dab5"
version = "0.5.2"
[[deps.TiffImages]] [[deps.TiffImages]]
deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"] deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "SIMD", "UUIDs"]
git-tree-sha1 = "3c0faa42f2bd3c6d994b06286bba2328eae34027" git-tree-sha1 = "3c0faa42f2bd3c6d994b06286bba2328eae34027"
uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69"
version = "0.11.2" version = "0.11.2"
[[deps.TiledIteration]]
deps = ["OffsetArrays", "StaticArrayInterface"]
git-tree-sha1 = "1176cc31e867217b06928e2f140c90bd1bc88283"
uuid = "06e1c1a7-607b-532d-9fad-de7d9aa2abac"
version = "0.5.0"
[[deps.Tokenize]] [[deps.Tokenize]]
git-tree-sha1 = "468b4685af4abe0e9fd4d7bf495a6554a6276e75" git-tree-sha1 = "468b4685af4abe0e9fd4d7bf495a6554a6276e75"
uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624" uuid = "0796e94c-ce3b-5d07-9a54-7f471281c624"
@ -1964,17 +2349,17 @@ git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78"
uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d"
version = "0.2.0" version = "0.2.0"
[[deps.VectorizationBase]]
deps = ["ArrayInterface", "CPUSummary", "HostCPUFeatures", "IfElse", "LayoutPointers", "Libdl", "LinearAlgebra", "SIMDTypes", "Static", "StaticArrayInterface"]
git-tree-sha1 = "4ab62a49f1d8d9548a1c8d1a75e5f55cf196f64e"
uuid = "3d5dd08c-fd9d-11e8-17fa-ed2836048c2f"
version = "0.21.71"
[[deps.VersionParsing]] [[deps.VersionParsing]]
git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868"
uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" uuid = "81def892-9a0e-5fdd-b105-ffc91e053289"
version = "1.3.0" version = "1.3.0"
[[deps.Vulkan_Loader_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Wayland_jll", "Xorg_libX11_jll", "Xorg_libXrandr_jll", "xkbcommon_jll"]
git-tree-sha1 = "2f0486047a07670caad3a81a075d2e518acc5c59"
uuid = "a44049a8-05dd-5a78-86c9-5fde0876e88c"
version = "1.3.243+0"
[[deps.Wayland_jll]] [[deps.Wayland_jll]]
deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] deps = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"]
git-tree-sha1 = "85c7811eddec9e7f22615371c3cc81a504c508ee" git-tree-sha1 = "85c7811eddec9e7f22615371c3cc81a504c508ee"
@ -2011,24 +2396,6 @@ git-tree-sha1 = "7d1671acbe47ac88e981868a078bd6b4e27c5191"
uuid = "aed1982a-8fda-507f-9586-7b0439959a61" uuid = "aed1982a-8fda-507f-9586-7b0439959a61"
version = "1.1.42+0" version = "1.1.42+0"
[[deps.XZ_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "beef98d5aad604d9e7d60b2ece5181f7888e2fd6"
uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800"
version = "5.6.4+0"
[[deps.Xorg_libICE_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "326b4fea307b0b39892b3e85fa451692eda8d46c"
uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c"
version = "1.1.1+0"
[[deps.Xorg_libSM_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libICE_jll"]
git-tree-sha1 = "3796722887072218eabafb494a13c963209754ce"
uuid = "c834827a-8449-5923-a945-d239c165b7dd"
version = "1.2.4+0"
[[deps.Xorg_libX11_jll]] [[deps.Xorg_libX11_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"]
git-tree-sha1 = "9dafcee1d24c4f024e7edc92603cedba72118283" git-tree-sha1 = "9dafcee1d24c4f024e7edc92603cedba72118283"
@ -2107,12 +2474,6 @@ git-tree-sha1 = "dbc53e4cf7701c6c7047c51e17d6e64df55dca94"
uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a"
version = "1.1.2+1" version = "1.1.2+1"
[[deps.Xorg_xcb_util_cursor_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_jll", "Xorg_xcb_util_renderutil_jll"]
git-tree-sha1 = "04341cb870f29dcd5e39055f895c39d016e18ccd"
uuid = "e920d4aa-a673-5f3a-b3d7-f755a4d47c43"
version = "0.1.4+0"
[[deps.Xorg_xcb_util_image_jll]] [[deps.Xorg_xcb_util_image_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"]
git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97"
@ -2178,24 +2539,12 @@ git-tree-sha1 = "622cf78670d067c738667aaa96c553430b65e269"
uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" uuid = "3161d3a3-bdf6-5164-811a-617609db77b4"
version = "1.5.7+0" version = "1.5.7+0"
[[deps.eudev_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "gperf_jll"]
git-tree-sha1 = "431b678a28ebb559d224c0b6b6d01afce87c51ba"
uuid = "35ca27e7-8b34-5b7f-bca9-bdc33f59eb06"
version = "3.2.9+0"
[[deps.fzf_jll]] [[deps.fzf_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "6e50f145003024df4f5cb96c7fce79466741d601" git-tree-sha1 = "6e50f145003024df4f5cb96c7fce79466741d601"
uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09"
version = "0.56.3+0" version = "0.56.3+0"
[[deps.gperf_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "0ba42241cb6809f1a278d0bcb976e0483c3f1f2d"
uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70"
version = "3.1.1+1"
[[deps.isoband_jll]] [[deps.isoband_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c" git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c"
@ -2233,24 +2582,12 @@ git-tree-sha1 = "9bf7903af251d2050b467f76bdbe57ce541f7f4f"
uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f" uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f"
version = "0.2.2+0" version = "0.2.2+0"
[[deps.libevdev_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "141fe65dc3efabb0b1d5ba74e91f6ad26f84cc22"
uuid = "2db6ffa8-e38f-5e21-84af-90c45d0032cc"
version = "1.11.0+0"
[[deps.libfdk_aac_jll]] [[deps.libfdk_aac_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl"] deps = ["Artifacts", "JLLWrappers", "Libdl"]
git-tree-sha1 = "8a22cf860a7d27e4f3498a0fe0811a7957badb38" git-tree-sha1 = "8a22cf860a7d27e4f3498a0fe0811a7957badb38"
uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280"
version = "2.0.3+0" version = "2.0.3+0"
[[deps.libinput_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "eudev_jll", "libevdev_jll", "mtdev_jll"]
git-tree-sha1 = "ad50e5b90f222cfe78aa3d5183a20a12de1322ce"
uuid = "36db933b-70db-51c0-b978-0f229ee0e533"
version = "1.18.0+0"
[[deps.libpng_jll]] [[deps.libpng_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"]
git-tree-sha1 = "d7b5bbf1efbafb5eca466700949625e07533aff2" git-tree-sha1 = "d7b5bbf1efbafb5eca466700949625e07533aff2"
@ -2275,12 +2612,6 @@ git-tree-sha1 = "ccbb625a89ec6195856a50aa2b668a5c08712c94"
uuid = "c5f90fcd-3b7e-5836-afba-fc50a0988cb2" uuid = "c5f90fcd-3b7e-5836-afba-fc50a0988cb2"
version = "1.4.0+0" version = "1.4.0+0"
[[deps.mtdev_jll]]
deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"]
git-tree-sha1 = "814e154bdb7be91d78b6802843f76b6ece642f11"
uuid = "009596ad-96f7-51b1-9f1b-5ce2d5e8a71e"
version = "1.1.6+0"
[[deps.nghttp2_jll]] [[deps.nghttp2_jll]]
deps = ["Artifacts", "Libdl"] deps = ["Artifacts", "Libdl"]
uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d"

View File

@ -1,13 +1,11 @@
[deps] [deps]
CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" CairoMakie = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0"
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
Genie = "c43c736e-a2d1-11e8-161f-af95117fbd1e"
GenieFramework = "a59fdf5c-6bf0-4f5d-949c-a137c9e2f353" GenieFramework = "a59fdf5c-6bf0-4f5d-949c-a137c9e2f353"
Images = "916415d5-f1e6-5110-898d-aaa5f9f070e0"
Libz = "2ec943e9-cfe8-584d-b93d-64dcb6d567b7" Libz = "2ec943e9-cfe8-584d-b93d-64dcb6d567b7"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
NaturalSort = "c020b1a1-e9b0-503a-9c33-f039bfc54a85" NaturalSort = "c020b1a1-e9b0-503a-9c33-f039bfc54a85"
PlotlyBase = "a03496cd-edff-5a9b-9e67-9cda94a718b5" PlotlyBase = "a03496cd-edff-5a9b-9e67-9cda94a718b5"
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
julia_mzML_imzML = "38eb50d3-2fb6-4afa-992a-964ed8562ed9" julia_mzML_imzML = "38eb50d3-2fb6-4afa-992a-964ed8562ed9"
[Genie]
instantiated_pwd = "/var/home/pixelguy14/Documentos/CINVESTAV_2025/Julia_msi_GUI"

357
app.jl
View File

@ -9,7 +9,8 @@ using Colors
using julia_mzML_imzML using julia_mzML_imzML
using Statistics using Statistics
using NaturalSort using NaturalSort
# using ImageMagick using Images
using LinearAlgebra
@genietools @genietools
# == Code import == # == Code import ==
@ -19,6 +20,9 @@ rgb_ViridisPalette = reinterpret(ColorTypes.RGB24, ViridisPalette)
# == Search functions == # == Search functions ==
function increment_image(current_image, image_list) function increment_image(current_image, image_list)
if isempty(image_list)
return nothing
end
current_index = findfirst(isequal(current_image), image_list) current_index = findfirst(isequal(current_image), image_list)
if current_index == nothing || current_index == length(image_list) || current_image === "" if current_index == nothing || current_index == length(image_list) || current_image === ""
return image_list[length(image_list)] # Return the current image if it's the last one or not found return image_list[length(image_list)] # Return the current image if it's the last one or not found
@ -28,6 +32,9 @@ function increment_image(current_image, image_list)
end end
function decrement_image(current_image, image_list) function decrement_image(current_image, image_list)
if isempty(image_list)
return nothing
end
current_index = findfirst(isequal(current_image), image_list) current_index = findfirst(isequal(current_image), image_list)
if current_index == nothing || current_index == 1 || current_image === "" if current_index == nothing || current_index == 1 || current_image === ""
return image_list[1] # Return the current image if it's the first one or not found return image_list[1] # Return the current image if it's the first one or not found
@ -65,6 +72,8 @@ end
@in createSumPlot = false # To generate sum spectrum plot @in createSumPlot = false # To generate sum spectrum plot
@in image3dPlot = false # To generate 3d plot based on current image @in image3dPlot = false # To generate 3d plot based on current image
@in triq3dPlot = false # To generate 3d plot based on current triq image @in triq3dPlot = false # To generate 3d plot based on current triq image
@in imageCPlot = false # To generate contour plots of current image
@in triqCPlot = false # To generate contour plots of current triq image
@in progress = false @in progress = false
@in progressPlot = false @in progressPlot = false
@in triqEnabled = false @in triqEnabled = false
@ -133,7 +142,12 @@ end
scene = attr( scene = attr(
xaxis_title = "X", xaxis_title = "X",
yaxis_title = "Y", yaxis_title = "Y",
zaxis_title = "Z" zaxis_title = "Z",
xaxis_nticks = 20,
yaxis_nticks = 20,
zaxis_nticks = 4,
camera = attr(eye = attr(x = 0, y = -1, z = 0.5)),
aspectratio = attr(x = 1, y = 1, z = 0.2)
) )
) )
@ -141,7 +155,7 @@ end
x = 1:10 x = 1:10
y = 1:10 y = 1:10
z = [sin(i * j / 10) for i in x, j in y] z = [sin(i * j / 10) for i in x, j in y]
trace3D = PlotlyBase.surface(x=x, y=y, z=z, trace3D = PlotlyBase.surface(x=[], y=[], z=[],
contours_z=attr( contours_z=attr(
show=true, show=true,
usecolormap=true, usecolormap=true,
@ -157,15 +171,7 @@ end
# == Reactive handlers == # == Reactive handlers ==
# Reactive handlers watch a variable and execute a block of code when its value changes # Reactive handlers watch a variable and execute a block of code when its value changes
# The onbutton handler will set the variable to false after the block is executed # The onbutton handler will set the variable to false after the block is executed
@onchange triqEnabled begin
# just in case that they remove an image manually, we use the least intensive button to get all images and re-order them.
msi_bmp = sort(filter(filename -> startswith(filename, "MSI_") && endswith(filename, ".bmp"), readdir("public")),lt=natural)
col_msi_png = sort(filter(filename -> startswith(filename, "colorbar_MSI_") && endswith(filename, ".png"), readdir("public")),lt=natural)
triq_bmp = sort(filter(filename -> startswith(filename, "TrIQ_") && endswith(filename, ".bmp"), readdir("public")),lt=natural)
col_triq_png = sort(filter(filename -> startswith(filename, "colorbar_TrIQ_") && endswith(filename, ".png"), readdir("public")),lt=natural)
end
@onchange file_name begin @onchange file_name begin
msg = "" msg = ""
progress = false progress = false
@ -219,7 +225,12 @@ end
msg = "Incorrect TrIQ values, please adjust accordingly and try again." msg = "Incorrect TrIQ values, please adjust accordingly and try again."
warning_msg = true warning_msg = true
else else
image_path = joinpath("./public", "TrIQ_$(text_nmass).bmp")
SaveBitmap(joinpath("public", "TrIQ_$(text_nmass).bmp"),TrIQ(slice, Int(triqColor), triqProb),ViridisPalette) SaveBitmap(joinpath("public", "TrIQ_$(text_nmass).bmp"),TrIQ(slice, Int(triqColor), triqProb),ViridisPalette)
# Flip te image vertically then save it again
img = load(image_path)
flipped_img = reverse(img, dims=1)
save(image_path, flipped_img)
# Use timestamp to refresh image interface container # Use timestamp to refresh image interface container
imgIntT = "/TrIQ_$(text_nmass).bmp?t=$(timestamp)" imgIntT = "/TrIQ_$(text_nmass).bmp?t=$(timestamp)"
# Get current image # Get current image
@ -241,7 +252,12 @@ end
#println("all col msi in folder= ",col_triq_png) #println("all col msi in folder= ",col_triq_png)
end end
else # If we don't use TrIQ else # If we don't use TrIQ
image_path = joinpath("./public", "MSI_$(text_nmass).bmp")
SaveBitmap(joinpath("public", "MSI_$(text_nmass).bmp"),IntQuant(slice),ViridisPalette) SaveBitmap(joinpath("public", "MSI_$(text_nmass).bmp"),IntQuant(slice),ViridisPalette)
# Flip te image vertically then save it again
img = load(image_path)
flipped_img = reverse(img, dims=1)
save(image_path, flipped_img)
# Use timestamp to refresh image interface container # Use timestamp to refresh image interface container
imgInt = "/MSI_$(text_nmass).bmp?t=$(timestamp)" imgInt = "/MSI_$(text_nmass).bmp?t=$(timestamp)"
# Get current image # Get current image
@ -293,11 +309,23 @@ end
btnPlotDisable = true btnPlotDisable = true
msg = "Loading plot..." msg = "Loading plot..."
spectraMz = LoadMzml(full_routeMz) spectraMz = LoadMzml(full_routeMz)
layoutSpectra = PlotlyBase.Layout(
title = "SUM Spectrum plot",
xaxis = PlotlyBase.attr(
title = "<i>m/z</i>",
showgrid = true
),
yaxis = PlotlyBase.attr(
title = "Intensity",
showgrid = true
)
)
# dims = size(spectraMz) # dims = size(spectraMz)
# scansMax = dims[2] # we get the total of scansMax # scansMax = dims[2] # we get the total of scansMax
# traceSpectra = PlotlyBase.scatter(x = spectraMz[1, 1], y = spectraMz[2, 1], mode="lines") # traceSpectra = PlotlyBase.scatter(x = spectraMz[1, 1], y = spectraMz[2, 1], mode="lines")
traceSpectra = PlotlyBase.scatter(x = mean(spectraMz[1,:]), y = mean(spectraMz[2,:]), mode="lines") traceSpectra = PlotlyBase.scatter(x = mean(spectraMz[1,:]), y = mean(spectraMz[2,:]), mode="lines")
plotdata = [traceSpectra] # We add the data from spectra to the plot plotdata = [traceSpectra] # We add the data from spectra to the plot
plotlayout = layoutSpectra
spectraMz = nothing # Important for memory cleaning spectraMz = nothing # Important for memory cleaning
GC.gc() # Trigger garbage collection GC.gc() # Trigger garbage collection
if Sys.islinux() if Sys.islinux()
@ -319,6 +347,10 @@ end
@onbutton ImgMinus begin @onbutton ImgMinus begin
# Append a query string to force the image to refresh # Append a query string to force the image to refresh
timestamp = string(time_ns()) timestamp = string(time_ns())
# Update the array of images listed in the public folder
msi_bmp = sort(filter(filename -> startswith(filename, "MSI_") && endswith(filename, ".bmp"), readdir("public")),lt=natural)
col_msi_png = sort(filter(filename -> startswith(filename, "colorbar_MSI_") && endswith(filename, ".png"), readdir("public")),lt=natural)
new_msi = decrement_image(current_msi, msi_bmp) new_msi = decrement_image(current_msi, msi_bmp)
new_col_msi = decrement_image(current_col_msi, col_msi_png) new_col_msi = decrement_image(current_col_msi, col_msi_png)
@ -333,7 +365,11 @@ end
end end
@onbutton ImgPlus begin @onbutton ImgPlus begin
# Append a query string to force the image to refresh # Append a query string to force the image to refresh
timestamp = string(time_ns()) timestamp = string(time_ns())
# Update the array of images listed in the public folder
msi_bmp = sort(filter(filename -> startswith(filename, "MSI_") && endswith(filename, ".bmp"), readdir("public")),lt=natural)
col_msi_png = sort(filter(filename -> startswith(filename, "colorbar_MSI_") && endswith(filename, ".png"), readdir("public")),lt=natural)
new_msi = increment_image(current_msi, msi_bmp) new_msi = increment_image(current_msi, msi_bmp)
new_col_msi = increment_image(current_col_msi, col_msi_png) new_col_msi = increment_image(current_col_msi, col_msi_png)
@ -352,6 +388,9 @@ end
timestamp = string(time_ns()) timestamp = string(time_ns())
new_msi = decrement_image(current_triq, triq_bmp) new_msi = decrement_image(current_triq, triq_bmp)
new_col_msi = decrement_image(current_col_triq, col_triq_png) new_col_msi = decrement_image(current_col_triq, col_triq_png)
# Update the array of images with TrIQ filter listed in the public folder
triq_bmp = sort(filter(filename -> startswith(filename, "TrIQ_") && endswith(filename, ".bmp"), readdir("public")),lt=natural)
col_triq_png = sort(filter(filename -> startswith(filename, "colorbar_TrIQ_") && endswith(filename, ".png"), readdir("public")),lt=natural)
current_triq = new_msi current_triq = new_msi
current_col_triq = new_col_msi current_col_triq = new_col_msi
@ -368,7 +407,10 @@ end
timestamp = string(time_ns()) timestamp = string(time_ns())
new_msi = increment_image(current_triq, triq_bmp) new_msi = increment_image(current_triq, triq_bmp)
new_col_msi = increment_image(current_col_triq, col_triq_png) new_col_msi = increment_image(current_col_triq, col_triq_png)
# Update the array of images with TrIQ filter listed in the public folder
triq_bmp = sort(filter(filename -> startswith(filename, "TrIQ_") && endswith(filename, ".bmp"), readdir("public")),lt=natural)
col_triq_png = sort(filter(filename -> startswith(filename, "colorbar_TrIQ_") && endswith(filename, ".png"), readdir("public")),lt=natural)
current_triq = new_msi current_triq = new_msi
current_col_triq = new_col_msi current_col_triq = new_col_msi
imgIntT = "/$(current_triq)" imgIntT = "/$(current_triq)"
@ -379,77 +421,270 @@ end
msgtriq = "image with the Nmass of $(replace(text_nmass, "_" => "."))" msgtriq = "image with the Nmass of $(replace(text_nmass, "_" => "."))"
end end
# 3d plot # 3d plot
@onbutton image3dPlot begin @onbutton image3dPlot begin
msg = "Image 3D plot selected" msg = "Image 3D plot selected"
cleaned_imgInt = replace(imgInt, r"\?.*" => "") cleaned_imgInt = replace(imgInt, r"\?.*" => "")
cleaned_imgInt = lstrip(cleaned_imgInt, '/') cleaned_imgInt = lstrip(cleaned_imgInt, '/')
var1 = joinpath( "public", cleaned_imgInt ) var = joinpath( "./public", cleaned_imgInt )
if isfile(var1)
if isfile(var)
try try
img = FileIO.load(File{DataFormat{:BMP}}(var1)) img = load(var)
img_gray = Gray.(img) # Convert to grayscale #println("Image type:", typeof(img))
img_gray = Gray.(img) # Convert to grayscale
#println("Grayscale image type:", typeof(img_gray))
img_array = Array(img_gray) img_array = Array(img_gray)
elevation = Float32.(Array(img_gray)) ./ 255.0 # Normalize between 0 and 1
#println("Elevation size:", size(elevation))
# Smooth the image
sigma = 4.0
kernel = Kernel.gaussian(sigma)
#println(size(kernel))
elevation_smoothed = imfilter(elevation, kernel)
#println("Smoothed elevation size:", size(elevation_smoothed))
# Transpose the elevation_smoothed array
# Create the X, Y meshgrid coordinates
x = 1:size(elevation_smoothed, 2)
y = 1:size(elevation_smoothed, 1)
X = repeat(reshape(x, 1, length(x)), length(y), 1)
#println("Size of X:", size(X))
Y = repeat(reshape(y, length(y), 1), 1, length(x))
#println("Size of Y:", size(Y))
# Calculate the number of ticks and aspect ratio for the 3d plot
x_nticks = min(20, length(x))
y_nticks = min(20, length(y))
z_nticks = 5
aspect_ratio = attr(x = 1, y = length(y) / length(x), z = 0.5)
# Define the layout for the 3D plot
layout3D = PlotlyBase.Layout(
title = "3D Surface Plot",
scene = attr(
xaxis_nticks = x_nticks,
yaxis_nticks = y_nticks,
zaxis_nticks = z_nticks,
camera = attr(eye = attr(x = 0, y = -1, z = 0.5)),
aspectratio = aspect_ratio
)
)
if size(elevation_smoothed, 1) < size(elevation_smoothed, 2)
# Transpose the elevation_smoothed array if Y axis is longer than X axis to fix chopping
elevation_smoothed = transpose(elevation_smoothed)
Y = -Y
end
trace3D = PlotlyBase.surface(x = X[1, :], y = Y[:, 1], z = elevation_smoothed,
contours_z = attr(
show = true,
usecolormap = true,
highlightcolor = "limegreen",
project_z = true
), colorscale = "Viridis")
plotdata3d = [trace3D] # We add the data from the image to the plot
plotlayout3d = layout3D # we update the style of the plot to fit the image.
spectraMz = nothing # Important for memory cleaning
GC.gc() # Trigger garbage collection
if Sys.islinux()
ccall(:malloc_trim, Int32, (Int32,), 0) # Ensure julia returns the freed memory to OS
end
msg = "Plot loaded."
catch e catch e
msg = "Failed to load and process image: $e" msg = "Failed to load and process image: $e"
warning_msg = true warning_msg = true
println(msg) println(msg)
end end
elevation = img_array / 255.0 # Normalize between 0 and 1 else
# Smooth the image msg = "image could not be 3d plotted"
sigma = 4.0 warning_msg = true
elevation_smoothed = imfilter(elevation, Kernel.gaussian(sigma)) end
# Create the X, Y meshgrid coordinates end
x = 1:size(elevation_smoothed, 2) # 3d plot for TrIQ
y = 1:size(elevation_smoothed, 1) @onbutton triq3dPlot begin
X, Y = ndgrid(x, y) msg = "TrIQ 3D plot selected"
trace3D = PlotlyBase.scatter(x = X[1, :], y =Y[:, 1], z=elevation_smoothed, colorscale="Viridis") cleaned_imgIntT = replace(imgIntT, r"\?.*" => "")
plotdata3d = [trace3D] # We add the data from the image to the plot cleaned_imgIntT = lstrip(cleaned_imgIntT, '/')
spectraMz = nothing # Important for memory cleaning var = joinpath( "./public", cleaned_imgIntT )
GC.gc() # Trigger garbage collection
if Sys.islinux() if isfile(var)
ccall(:malloc_trim, Int32, (Int32,), 0) # Ensure julia returns the freed memory to OS try
img = load(var)
img_gray = Gray.(img) # Convert to grayscale
img_array = Array(img_gray)
elevation = Float32.(Array(img_gray)) ./ 255.0 # Normalize between 0 and 1
# Smooth the image
sigma = 4.0
kernel = Kernel.gaussian(sigma)
elevation_smoothed = imfilter(elevation, kernel)
# Create the X, Y meshgrid coordinates
x = 1:size(elevation_smoothed, 2)
y = 1:size(elevation_smoothed, 1)
X = repeat(reshape(x, 1, length(x)), length(y), 1)
Y = repeat(reshape(y, length(y), 1), 1, length(x))
# Calculate the number of ticks and aspect ratio for the 3d plot
x_nticks = min(20, length(x))
y_nticks = min(20, length(y))
z_nticks = 5
aspect_ratio = attr(x = 1, y = length(y) / length(x), z = 0.5)
# Define the layout for the 3D plot
layout3D = PlotlyBase.Layout(
title = "3D Surface Plot",
scene = attr(
xaxis_nticks = x_nticks,
yaxis_nticks = y_nticks,
zaxis_nticks = z_nticks,
camera = attr(eye = attr(x = 0, y = -1, z = 0.5)),
aspectratio = aspect_ratio
)
)
if size(elevation_smoothed, 1) < size(elevation_smoothed, 2)
# Transpose the elevation_smoothed array if Y axis is longer than X axis to fix chopping
elevation_smoothed = transpose(elevation_smoothed)
Y = -Y
end
trace3D = PlotlyBase.surface(x = X[1, :], y = Y[:, 1], z = elevation_smoothed,
contours_z = attr(
show = true,
usecolormap = true,
highlightcolor = "limegreen",
project_z = true
), colorscale = "Viridis")
plotdata3d = [trace3D] # We add the data from the image to the plot
plotlayout3d = layout3D # we update the style of the plot to fit the image.
spectraMz = nothing # Important for memory cleaning
GC.gc() # Trigger garbage collection
if Sys.islinux()
ccall(:malloc_trim, Int32, (Int32,), 0) # Ensure julia returns the freed memory to OS
end
msg = "Plot loaded."
catch e
msg = "Failed to load and process image: $e"
warning_msg = true
println(msg)
end end
msg = "Plot loaded."
else else
msg = "image could not be 3d plotted" msg = "image could not be 3d plotted"
warning_msg = true warning_msg = true
end end
end end
@onbutton triq3dPlot begin # Contour 2d plot
msg = "TrIQ 3D plot selected" @onbutton imageCPlot begin
msg = "Image 2D plot selected"
cleaned_imgInt = replace(imgInt, r"\?.*" => "")
cleaned_imgInt = lstrip(cleaned_imgInt, '/')
var = joinpath("./public", cleaned_imgInt)
if isfile(var)
try
img = load(var)
# Convert to grayscale
img_gray = Gray.(img)
img_array = Array(img_gray)
elevation = Float32.(Array(img_gray)) ./ 255.0 # Normalize between 0 and 1
# Smooth the image
sigma = 4.0
kernel = Kernel.gaussian(sigma)
elevation_smoothed = imfilter(elevation, kernel)
# Create the X, Y meshgrid coordinates
x = 1:size(elevation_smoothed, 2)
y = 1:size(elevation_smoothed, 1)
X = repeat(reshape(x, 1, length(x)), length(y), 1)
Y = repeat(reshape(y, length(y), 1), 1, length(x))
layoutContour = PlotlyBase.Layout(
title = "2D Topographic Map",
xaxis_title = "X",
yaxis_title = "Y",
margin = attr(l = 65, r = 50, b = 65, t = 90)
)
traceContour = PlotlyBase.contour(
z = elevation_smoothed,
x = X[1, :], # Use the first row
y = -Y[:, 1], # Use the first column
contours_coloring = "lines",
colorscale = "Viridis"
)
plotdata = [traceContour]
plotlayout = layoutContour
spectraMz = nothing # Important for memory cleaning
GC.gc() # Trigger garbage collection
if Sys.islinux()
ccall(:malloc_trim, Int32, (Int32,), 0) # Ensure Julia returns the freed memory to OS
end
msg = "Plot loaded."
catch e
msg = "Failed to load and process image: $e"
warning_msg = true
println(msg)
end
else
msg = "Image could not be 2D plotted"
warning_msg = true
end
end
# Contour 2d plot for TrIQ
@onbutton triqCPlot begin
msg = "Image 2D plot selected"
cleaned_imgIntT = replace(imgIntT, r"\?.*" => "") cleaned_imgIntT = replace(imgIntT, r"\?.*" => "")
cleaned_imgIntT = lstrip(cleaned_imgIntT, '/') cleaned_imgIntT = lstrip(cleaned_imgIntT, '/')
var1 = joinpath( "public", cleaned_imgIntT ) var = joinpath("./public", cleaned_imgIntT)
if isfile(var1)
if isfile(var)
try try
img = FileIO.load(File{DataFormat{:BMP}}(var1)) img = load(var)
img_gray = Gray.(img) # Convert to grayscale # Convert to grayscale
img_gray = Gray.(img)
img_array = Array(img_gray) img_array = Array(img_gray)
catch e elevation = Float32.(Array(img_gray)) ./ 255.0 # Normalize between 0 and 1
msg = "Failed to load and process image: $e"
warning_msg = true # Smooth the image
println(msg) sigma = 4.0
kernel = Kernel.gaussian(sigma)
elevation_smoothed = imfilter(elevation, kernel)
# Create the X, Y meshgrid coordinates
x = 1:size(elevation_smoothed, 2)
y = 1:size(elevation_smoothed, 1)
X = repeat(reshape(x, 1, length(x)), length(y), 1)
Y = repeat(reshape(y, length(y), 1), 1, length(x))
layoutContour = PlotlyBase.Layout(
title = "2D Topographic Map",
xaxis_title = "X",
yaxis_title = "Y",
margin = attr(l = 65, r = 50, b = 65, t = 90)
)
traceContour = PlotlyBase.contour(
z = elevation_smoothed,
x = X[1, :], # Use the first row
y = -Y[:, 1], # Use the first column
contours_coloring = "lines",
colorscale = "Viridis"
)
plotdata = [traceContour]
plotlayout = layoutContour
spectraMz = nothing # Important for memory cleaning
GC.gc() # Trigger garbage collection
if Sys.islinux()
ccall(:malloc_trim, Int32, (Int32,), 0) # Ensure Julia returns the freed memory to OS
end
msg = "Plot loaded."
catch e
msg = "Failed to load and process image: $e"
warning_msg = true
println(msg)
end end
elevation = img_array / 255.0 # Normalize between 0 and 1
# Smooth the image
sigma = 4.0
elevation_smoothed = imfilter(elevation, Kernel.gaussian(sigma))
# Create the X, Y meshgrid coordinates
x = 1:size(elevation_smoothed, 2)
y = 1:size(elevation_smoothed, 1)
X, Y = ndgrid(x, y)
trace3D = PlotlyBase.scatter(x = X[1, :], y =Y[:, 1], z=elevation_smoothed, colorscale="Viridis")
plotdata3d = [trace3D] # We add the data from the image to the plot
spectraMz = nothing # Important for memory cleaning
GC.gc() # Trigger garbage collection
if Sys.islinux()
ccall(:malloc_trim, Int32, (Int32,), 0) # Ensure julia returns the freed memory to OS
end
msg = "Plot loaded."
else else
msg = "image could not be 3d plotted" msg = "Image could not be 2D plotted"
warning_msg = true warning_msg = true
end end
end end

View File

@ -5,17 +5,17 @@
<h4>Julia mzML imzML analysis GUI&nbsp;</h4> <h4>Julia mzML imzML analysis GUI&nbsp;</h4>
<h6>Please make sure the ibd, the mzML and the imzML files are located in the same directory and have the same name.</h6> <h6>Please make sure the ibd, the mzML and the imzML files are located in the same directory and have the same name.</h6>
<h6>It may take a while to generate the image and the plot, please be patient.</h6> <h6>It may take a while to generate the image and the plot, please be patient.</h6>
<h6>To generate the contour or 3D plot, you have to select it using the User Interface</h6>
</div> </div>
</header> </header>
<!-- TOP --> <!-- TOP -->
<div class="row"> <div id="extDivStyle" class="row col-12 q-pa-xl">
<div id="extDivStyle" class="st-col col-12 col-sm st-module"> <div class="row col-6">
<div class="row">
<!-- Left DIV --> <!-- Left DIV -->
<div id="intDivStyle" class="st-col col-12 col-sm st-module"> <div id="intDivStyle" class="st-col col-12 st-module">
<!--<q-file v-model="file_route" filled="" label="Select your imzML file" accept=".imzML"></q-file>--> <!--<q-file v-model="file_route" filled="" label="Select your imzML file" accept=".imzML"></q-file>-->
<q-input id="textRoute" standout="custom-standout" v-model="file_route" label="Insert the route to your imzML file"></q-input> <q-input id="textRoute" standout="custom-standout" v-model="file_route" label="Insert the route to your imzML file"></q-input>
<div class="row st-col col-12 col-sm"> <div class="row st-col col-12">
<q-input id="textName" class="col-9" standout="custom-standout" v-model="file_name" label="Insert the name of your imzML file"></q-input> <q-input id="textName" class="col-9" standout="custom-standout" v-model="file_name" label="Insert the name of your imzML file"></q-input>
<q-btn-dropdown <q-btn-dropdown
id="btnStyle" id="btnStyle"
@ -36,7 +36,19 @@
<q-item-label>Sum Spectrum Plot</q-item-label> <q-item-label>Sum Spectrum Plot</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
<q-item clickable v-close-popup v-on:click="imageCPlot = true">
<q-item-section>
<q-item-label>Image Contour Plot</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup v-on:click="triqCPlot = true">
<q-item-section>
<q-item-label>TrIQ Contour Plot</q-item-label>
</q-item-section>
</q-item>
<q-item clickable v-close-popup v-on:click="image3dPlot = true"> <q-item clickable v-close-popup v-on:click="image3dPlot = true">
<q-item-section> <q-item-section>
<q-item-label>Image 3D Plot</q-item-label> <q-item-label>Image 3D Plot</q-item-label>
@ -88,12 +100,10 @@
</q-btn> </q-btn>
<p>{{msg}}</p> <p>{{msg}}</p>
</div> </div>
</div><!-- <plotly :data="plotdata" :layout="plotlayout"> </plotly>--> </div>
</div> <div class="row col-6">
<div id="extDivStyle" class="st-col col-12 col-sm st-module">
<div class="row">
<!-- Right DIV --> <!-- Right DIV -->
<div id="intDivStyle" class="st-col col-12 col-sm st-module"> <div id="intDivStyle" class="st-col col-12 st-module">
<h6>Image Visualizer</h6> <h6>Image Visualizer</h6>
<!-- Btn image changer --> <!-- Btn image changer -->
<div> <div>
@ -101,8 +111,8 @@
<q-btn id="btnStyle" icon="arrow_forward" rounded v-on:click="ImgPlus = true"></q-btn> <q-btn id="btnStyle" icon="arrow_forward" rounded v-on:click="ImgPlus = true"></q-btn>
</div> </div>
<!-- Image manager --> <!-- Image manager -->
<div id="image-container" class="row st-col col-12 col-sm items-center"> <div id="image-container" class="row st-col col-12 items-center">
<div style="max-height: 500px; overflow: auto;" class="st-col col-10"> <div class="st-col col-10">
<q-img id="imgInt" class="q-ma-none q-pa-none" :src="imgInt" fit="scale-down"></q-img> <q-img id="imgInt" class="q-ma-none q-pa-none" :src="imgInt" fit="scale-down"></q-img>
</div> </div>
<div class="st-col col-2"> <div class="st-col col-2">
@ -116,11 +126,11 @@
<q-btn id="btnStyle" icon="arrow_forward" rounded v-on:click="ImgPlusT = true"></q-btn> <q-btn id="btnStyle" icon="arrow_forward" rounded v-on:click="ImgPlusT = true"></q-btn>
</div> </div>
<!-- Triq Image manager --> <!-- Triq Image manager -->
<div id="image-container" class="row st-col col-12 col-sm items-center"> <div id="image-container" class="row st-col col-12 items-center">
<div style="max-height: 500px; overflow: auto;" class="st-col col-10"> <div class="col-10">
<q-img id="imgInt" class="q-ma-none q-pa-none" :src="imgIntT" fit="scale-down"></q-img> <q-img id="imgInt" class="q-ma-none q-pa-none" :src="imgIntT" fit="scale-down"></q-img>
</div> </div>
<div class="st-col col-2"> <div class="col-2">
<q-img id="colorbar" class="q-ma-none q-pa-none" :src="colorbarT"></q-img> <q-img id="colorbar" class="q-ma-none q-pa-none" :src="colorbarT"></q-img>
</div> </div>
</div> </div>
@ -128,16 +138,15 @@
</div> </div>
</div> </div>
</div> </div>
</div> <!-- Bottom -->
<!-- Bottom --> <div id="extDivStyle" class="row col-12 q-pa-xl">
<div class="row">
<!-- Bottom Left Div --> <!-- Bottom Left Div -->
<div class="st-col col-12 col-sm st-module" > <div class="st-col col-12 st-module q-pa-none" >
<plotly id="plotStyle" :data="plotdata" :layout="plotlayout" class="st-col col-12 col-sm-12"></plotly> <plotly id="plotStyle" :data="plotdata" :layout="plotlayout" class="col-12"></plotly>
</div> </div>
<!-- Bottom Right Div --> <!-- Bottom Right Div -->
<div class="st-col col-12 col-sm st-module" > <div class="st-col col-12 st-module q-pa-none" >
<plotly id="plotStyle3d" :data="plotdata3d" :layout="plotlayout3d" class="st-col col-12 col-sm-12"></plotly> <plotly id="plotStyle3d" :data="plotdata3d" :layout="plotlayout3d" class="col-12"></plotly>
</div> </div>
</div> </div>

View File

@ -4,9 +4,11 @@ PENDING
avoid image enlargement -> CURRENT WIP avoid image enlargement -> CURRENT WIP
image flip upside down image flip upside down
colorbar revamp colorbar revamp
3d topography for images -> CURRENT WIP
Multiple plot types Multiple plot types
Tag for time it takes in creating image and creating plots -> CURRENT WIP
Create function that makes the imzML from mzML files
Possibility to add multiple imzML to process at once ?
Pixel selection marks
DONE DONE
Quicker start for julia GUI Quicker start for julia GUI
@ -16,4 +18,5 @@ DONE
UI functionality added UI functionality added
Code cleanse Code cleanse
better code readability better code readability
Better blind search for images Better blind search for images
3d topography for images

View File

@ -1 +1 @@
#btnStyle{background:#009f90;color:rgb(229, 236, 246);}#imgInt{float:left;}#header{display:flex;align-items:center;}#imgLogo{width:100px;height:80px;margin-right:10px;margin-left:10px;}#extDivStyle{background-color:#c9cdb1;}#intDivStyle{padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;background-color:rgb(229, 236, 246);}#colorbar{float:left;}.custom-standout{background-color:#ccd2db!important;color:rgb(229, 236, 246)!important;} #btnStyle{background:#009f90;color:rgb(229, 236, 246);}#imgInt{float:left;}#header{display:flex;align-items:center;}#imgLogo{width:100px;height:80px;margin-right:10px;margin-left:10px;}#extDivStyle{background-color:#c9cdb1;border-radius: 10px;}#intDivStyle{padding-top:10px;padding-right:10px;padding-bottom:10px;padding-left:10px;}#colorbar{float:left;}.custom-standout{background-color:#ccd2db!important;color:rgb(229, 236, 246)!important;}

View File

@ -1,7 +1,11 @@
using Pkg using Pkg
Pkg.activate(".") Pkg.activate(".")
Pkg.add("Libz") ; Pkg.add("PlotlyBase") ; Pkg.add("CairoMakie") ; Pkg.add("Colors") ; Pkg.add("Statistics") ; Pkg.add("NaturalSort") Pkg.instantiate()
Pkg.update()
Pkg.gc()
Pkg.add("Libz") ; Pkg.add("PlotlyBase") ; Pkg.add("CairoMakie") ; Pkg.add("Colors") ; Pkg.add("Statistics") ; Pkg.add("NaturalSort") ; Pkg.add("GenieFramework")
Pkg.add(url="https://github.com/CINVESTAV-LABI/julia_mzML_imzML") # With this we ensure it uses the latest library iteration Pkg.add(url="https://github.com/CINVESTAV-LABI/julia_mzML_imzML") # With this we ensure it uses the latest library iteration
Pkg.add("Images") ; Pkg.add("LinearAlgebra")
Pkg.instantiate() Pkg.instantiate()
Pkg.update() Pkg.update()