From 158190f0fd0c884d35c29dd1562bf7aeace68c2b Mon Sep 17 00:00:00 2001 From: AntonReinhard Date: Thu, 24 Jul 2025 14:43:02 +0200 Subject: [PATCH 1/3] Update link names Some further minor changes, rephrasings and additions --- .gitignore | 3 +- Manifest.toml | 2292 ----------------- README.md | 9 +- ...a-intro-multiple-dispatch-checkpoint.ipynb | 379 --- julia-intro/docs/{intro.md => 00-intro.md} | 2 +- ...intro.ipynb => 01-julia-intro-intro.ipynb} | 22 +- ...pynb => 02-julia-intro-installation.ipynb} | 71 +- ...ia-intro-syntax-operators-variables.ipynb} | 40 +- ...rays.ipynb => 04-julia-intro-arrays.ipynb} | 72 +- ...=> 05-julia-intro-syntax-fn-control.ipynb} | 58 +- ...-julia-intro-anonymous-and-do-block.ipynb} | 22 +- ...=> 07-julia-intro-multiple-dispatch.ipynb} | 97 +- ...pynb => 08-julia-intro-broadcasting.ipynb} | 47 +- ...b => 09-julia-intro-julia-community.ipynb} | 6 +- ...plots.ipynb => 10-julia-intro-plots.ipynb} | 0 ....ipynb => 11-julia-intro-dataframes.ipynb} | 6 +- julia-intro/docs/_config.yml | 4 +- julia-intro/docs/_toc.yml | 24 +- julia-intro/docs/exercises/dataframes.md | 2 +- julia-intro/docs/exercises/install.md | 10 +- .../exercises/juliafunctions-solution.ipynb | 12 +- 21 files changed, 212 insertions(+), 2966 deletions(-) delete mode 100644 Manifest.toml delete mode 100644 julia-intro/.ipynb_checkpoints/julia-intro-multiple-dispatch-checkpoint.ipynb rename julia-intro/docs/{intro.md => 00-intro.md} (83%) rename julia-intro/docs/{julia-intro-intro.ipynb => 01-julia-intro-intro.ipynb} (94%) rename julia-intro/docs/{julia-intro-installation.ipynb => 02-julia-intro-installation.ipynb} (61%) rename julia-intro/docs/{julia-intro-syntax-operators-variables.ipynb => 03-julia-intro-syntax-operators-variables.ipynb} (93%) rename julia-intro/docs/{julia-intro-arrays.ipynb => 04-julia-intro-arrays.ipynb} (89%) rename julia-intro/docs/{julia-intro-syntax-fn-control.ipynb => 05-julia-intro-syntax-fn-control.ipynb} (88%) rename julia-intro/docs/{julia-intro-anonymous-and-do-block.ipynb => 06-julia-intro-anonymous-and-do-block.ipynb} (92%) rename julia-intro/docs/{julia-intro-multiple-dispatch.ipynb => 07-julia-intro-multiple-dispatch.ipynb} (74%) rename julia-intro/docs/{julia-intro-broadcasting.ipynb => 08-julia-intro-broadcasting.ipynb} (98%) rename julia-intro/docs/{julia-intro-julia-community.ipynb => 09-julia-intro-julia-community.ipynb} (95%) rename julia-intro/docs/{julia-intro-plots.ipynb => 10-julia-intro-plots.ipynb} (100%) rename julia-intro/docs/{julia-intro-dataframes.ipynb => 11-julia-intro-dataframes.ipynb} (99%) diff --git a/.gitignore b/.gitignore index 1d4b07f..3d20ea0 100644 --- a/.gitignore +++ b/.gitignore @@ -25,5 +25,6 @@ docs/site/ # Editor and temporary files from Jupyter notebooks / Jupyterbook .vscode -.ipynb_checkpoints +*/.ipynb_checkpoints julia-intro/docs/_build +Manifest.toml diff --git a/Manifest.toml b/Manifest.toml deleted file mode 100644 index 7e33adf..0000000 --- a/Manifest.toml +++ /dev/null @@ -1,2292 +0,0 @@ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.9.3" -manifest_format = "2.0" -project_hash = "87916c71c51b72c01d026986e74394aecf073fd5" - -[[deps.AbstractFFTs]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "d92ad398961a3ed262d8bf04a1a2b8340f915fef" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.5.0" -weakdeps = ["ChainRulesCore", "Test"] - - [deps.AbstractFFTs.extensions] - AbstractFFTsChainRulesCoreExt = "ChainRulesCore" - AbstractFFTsTestExt = "Test" - -[[deps.AbstractLattices]] -git-tree-sha1 = "f35684b7349da49fcc8a9e520e30e45dbb077166" -uuid = "398f06c4-4d28-53ec-89ca-5b2656b7603d" -version = "0.2.1" - -[[deps.AbstractTrees]] -git-tree-sha1 = "faa260e4cb5aba097a73fab382dd4b5819d8ec8c" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.4.4" - -[[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "02f731463748db57cc2ebfbd9fbc9ce8280d3433" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.7.1" -weakdeps = ["StaticArrays"] - - [deps.Adapt.extensions] - AdaptStaticArraysExt = "StaticArrays" - -[[deps.AlgebraOfGraphics]] -deps = ["Colors", "Dates", "Dictionaries", "FileIO", "GLM", "GeoInterface", "GeometryBasics", "GridLayoutBase", "KernelDensity", "Loess", "Makie", "PlotUtils", "PooledArrays", "PrecompileTools", "RelocatableFolders", "StatsBase", "StructArrays", "Tables"] -git-tree-sha1 = "c58b2c0f1161b8a2e79dcb1a0ec4b639c2406f15" -uuid = "cbdf2221-f076-402e-a563-3d30da359d67" -version = "0.6.16" - -[[deps.Animations]] -deps = ["Colors"] -git-tree-sha1 = "e81c509d2c8e49592413bfb0bb3b08150056c79d" -uuid = "27a7e980-b3e6-11e9-2bcd-0b925532e340" -version = "0.4.1" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Arpack]] -deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"] -git-tree-sha1 = "9b9b347613394885fd1c8c7729bfc60528faa436" -uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" -version = "0.5.4" - -[[deps.Arpack_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg"] -git-tree-sha1 = "5ba6c757e8feccf03a1554dfaf3e26b3cfc7fd5e" -uuid = "68821587-b530-5797-8361-c406ea357684" -version = "3.5.1+1" - -[[deps.ArrayInterface]] -deps = ["Adapt", "LinearAlgebra", "Requires", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "16267cf279190ca7c1b30d020758ced95db89cd0" -uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.5.1" - - [deps.ArrayInterface.extensions] - ArrayInterfaceBandedMatricesExt = "BandedMatrices" - ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" - ArrayInterfaceCUDAExt = "CUDA" - ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" - ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" - ArrayInterfaceTrackerExt = "Tracker" - - [deps.ArrayInterface.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" - GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" - StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.Automa]] -deps = ["TranscodingStreams"] -git-tree-sha1 = "ef9997b3d5547c48b41c7bd8899e812a917b409d" -uuid = "67c07d97-cdcb-5c2c-af73-a7f9c32a568b" -version = "0.8.4" - -[[deps.AxisAlgorithms]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "66771c8d21c8ff5e3a93379480a2307ac36863f7" -uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.0.1" - -[[deps.AxisArrays]] -deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] -git-tree-sha1 = "16351be62963a67ac4083f748fdb3cca58bfd52f" -uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9" -version = "0.4.7" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.BitFlags]] -git-tree-sha1 = "43b1a4a8f797c1cddadf60499a8a077d4af2cd2d" -uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" -version = "0.1.7" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+0" - -[[deps.CEnum]] -git-tree-sha1 = "eb4cb44a499229b3b8426dcfb5dd85333951ff90" -uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" -version = "0.4.2" - -[[deps.CRC32c]] -uuid = "8bf52ea8-c179-5cab-976a-9e18b702a9bc" - -[[deps.CRlibm]] -deps = ["CRlibm_jll"] -git-tree-sha1 = "32abd86e3c2025db5172aa182b982debed519834" -uuid = "96374032-68de-5a5b-8d9e-752f78720389" -version = "1.0.1" - -[[deps.CRlibm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc" -uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0" -version = "1.0.1+0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "44dbf560808d49041989b8a96cae4cffbeb7966a" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.11" - -[[deps.Cairo]] -deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"] -git-tree-sha1 = "d0b3f8b4ad16cb0a2988c6788646a5e6a17b6b1b" -uuid = "159f3aea-2a34-519c-b102-8c37f9878175" -version = "1.0.5" - -[[deps.CairoMakie]] -deps = ["Base64", "Cairo", "Colors", "FFTW", "FileIO", "FreeType", "GeometryBasics", "LinearAlgebra", "Makie", "PrecompileTools", "SHA"] -git-tree-sha1 = "5e21a254d82c64b1a4ed9dbdc7e87c5d9cf4a686" -uuid = "13f3f980-e62b-5c42-98c6-ff1f3baf88f0" -version = "0.10.12" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.16.1+1" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "1568b28f91293458345dabba6a5ea3f183250a61" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.8" - - [deps.CategoricalArrays.extensions] - CategoricalArraysJSONExt = "JSON" - CategoricalArraysRecipesBaseExt = "RecipesBase" - CategoricalArraysSentinelArraysExt = "SentinelArrays" - CategoricalArraysStructTypesExt = "StructTypes" - - [deps.CategoricalArrays.weakdeps] - JSON = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" - RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" - SentinelArrays = "91c51154-3ec4-41a3-a24f-3f23e20d615c" - StructTypes = "856f2bd8-1eba-4b0a-8007-ebc267875bd4" - -[[deps.ChainRules]] -deps = ["Adapt", "ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "SparseInverseSubset", "Statistics", "StructArrays", "SuiteSparse"] -git-tree-sha1 = "006cc7170be3e0fa02ccac6d4164a1eee1fc8c27" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.58.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra"] -git-tree-sha1 = "e0af648f0692ec1691b5d094b8724ba1346281cf" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.18.0" -weakdeps = ["SparseArrays"] - - [deps.ChainRulesCore.extensions] - ChainRulesCoreSparseArraysExt = "SparseArrays" - -[[deps.Clustering]] -deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "Random", "SparseArrays", "Statistics", "StatsBase"] -git-tree-sha1 = "05f9816a77231b07e634ab8715ba50e5249d6f76" -uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" -version = "0.15.5" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "cd67fc487743b2f0fd4380d4cbd3a24660d0eec8" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.3" - -[[deps.ColorBrewer]] -deps = ["Colors", "JSON", "Test"] -git-tree-sha1 = "61c5334f33d91e570e1d0c3eb5465835242582c4" -uuid = "a2cac450-b92f-5266-8821-25eda20663c8" -version = "0.4.0" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "PrecompileTools", "Random"] -git-tree-sha1 = "67c1f244b991cad9b0aa4b7540fb758c2488b129" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.24.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] -git-tree-sha1 = "600cc5508d66b78aae350f7accdb58763ac18589" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.9.10" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "fc08e5930ee9a4e03f84bfb5211cb54e7769758a" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.10" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["UUIDs"] -git-tree-sha1 = "8a62af3e248a8c4bad6b32cbbe663ae02275e32c" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "4.10.0" -weakdeps = ["Dates", "LinearAlgebra"] - - [deps.Compat.extensions] - CompatLinearAlgebraExt = "LinearAlgebra" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.5+0" - -[[deps.ConcurrentUtilities]] -deps = ["Serialization", "Sockets"] -git-tree-sha1 = "8cfa272e8bdedfa88b6aefbbca7c19f1befac519" -uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.3.0" - -[[deps.Conda]] -deps = ["Downloads", "JSON", "VersionParsing"] -git-tree-sha1 = "8c86e48c0db1564a1d49548d3515ced5d604c408" -uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" -version = "1.9.1" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.4" -weakdeps = ["IntervalSets", "StaticArrays"] - - [deps.ConstructionBase.extensions] - ConstructionBaseIntervalSetsExt = "IntervalSets" - ConstructionBaseStaticArraysExt = "StaticArrays" - -[[deps.Contour]] -git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.2" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "8da84edb865b0b5b0100c0666a9bc9a0b71c553c" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.15.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "REPL", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "04c738083f29f86e62c8afc341f0967d8717bdb8" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.6.1" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "3dbd312d370723b6bb43ba9d02fc36abade4518d" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.15" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DelaunayTriangulation]] -deps = ["DataStructures", "EnumX", "ExactPredicates", "Random", "SimpleGraphs"] -git-tree-sha1 = "7cb0d72a53c1d93665eeadfa9d51af9df60bf6b2" -uuid = "927a84f5-c5f4-47a5-9785-b46e178433df" -version = "0.8.10" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -git-tree-sha1 = "9e2f36d3c96a820c678f2f1f1782582fcf685bae" -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" -version = "1.9.1" - -[[deps.Dictionaries]] -deps = ["Indexing", "Random", "Serialization"] -git-tree-sha1 = "e82c3c97b5b4ec111f3c1b55228cebc7510525a2" -uuid = "85a47980-9c8c-11e8-2b9f-f7ca1fa99fb4" -version = "0.3.25" - -[[deps.DiffResults]] -deps = ["StaticArraysCore"] -git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.1.0" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.15.1" - -[[deps.Distances]] -deps = ["LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "5225c965635d8c21168e32a12954675e7bea1151" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.10" -weakdeps = ["ChainRulesCore", "SparseArrays"] - - [deps.Distances.extensions] - DistancesChainRulesCoreExt = "ChainRulesCore" - DistancesSparseArraysExt = "SparseArrays" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "a6c00f894f24460379cb7136633cef54ac9f6f4a" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.103" - - [deps.Distributions.extensions] - DistributionsChainRulesCoreExt = "ChainRulesCore" - DistributionsDensityInterfaceExt = "DensityInterface" - DistributionsTestExt = "Test" - - [deps.Distributions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" - Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.9.3" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.EarCut_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e3290f2d49e661fbd94046d7e3726ffcb2d41053" -uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" -version = "2.2.4+0" - -[[deps.EnumX]] -git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" -uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" -version = "1.0.4" - -[[deps.EpollShim_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8e9441ee83492030ace98f9789a654a6d0b1f643" -uuid = "2702e6a9-849d-5ed8-8c21-79e8b8f9ee43" -version = "0.0.20230411+0" - -[[deps.ErrorfreeArithmetic]] -git-tree-sha1 = "d6863c556f1142a061532e79f611aa46be201686" -uuid = "90fa49ef-747e-5e6f-a989-263ba693cf1a" -version = "0.5.2" - -[[deps.ExactPredicates]] -deps = ["IntervalArithmetic", "Random", "StaticArraysCore"] -git-tree-sha1 = "499b1ca78f6180c8f8bdf1cabde2d39120229e5c" -uuid = "429591f6-91af-11e9-00e2-59fbe8cec110" -version = "2.2.6" - -[[deps.ExceptionUnwrapping]] -deps = ["Test"] -git-tree-sha1 = "e90caa41f5a86296e014e148ee061bd6c3edec96" -uuid = "460bff9d-24e4-43bc-9d9f-a8973cb893f4" -version = "0.1.9" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "4558ab818dcceaab612d1bb8c19cee87eda2b83c" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.5.0+0" - -[[deps.ExprTools]] -git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.10" - -[[deps.Extents]] -git-tree-sha1 = "2140cd04483da90b2da7f99b2add0750504fc39c" -uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.2" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "466d45dc38e15794ec7d5d63ec03d776a9aff36e" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.4+1" - -[[deps.FFTW]] -deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "b4fbdd20c889804969571cc589900803edda16b7" -uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.7.1" - -[[deps.FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" -uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+0" - -[[deps.FastRounding]] -deps = ["ErrorfreeArithmetic", "LinearAlgebra"] -git-tree-sha1 = "6344aa18f654196be82e62816935225b3b9abe44" -uuid = "fa42c844-2597-5d31-933b-ebd51ab2693f" -version = "0.3.1" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "299dc33549f68299137e51e6d49a13b5b1da9673" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.16.1" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "9f00e42f8d99fdde64d40c8ea5d14269a2e2c1aa" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.21" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra", "Random"] -git-tree-sha1 = "35f0c0f345bff2c6d636f95fdb136323b5a796ef" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "1.7.0" -weakdeps = ["SparseArrays", "Statistics"] - - [deps.FillArrays.extensions] - FillArraysSparseArraysExt = "SparseArrays" - FillArraysStatisticsExt = "Statistics" - -[[deps.FiniteDiff]] -deps = ["ArrayInterface", "LinearAlgebra", "Requires", "Setfield", "SparseArrays"] -git-tree-sha1 = "c6e4a1fbe73b31a3dea94b1da449503b8830c306" -uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.21.1" - - [deps.FiniteDiff.extensions] - FiniteDiffBandedMatricesExt = "BandedMatrices" - FiniteDiffBlockBandedMatricesExt = "BlockBandedMatrices" - FiniteDiffStaticArraysExt = "StaticArrays" - - [deps.FiniteDiff.weakdeps] - BandedMatrices = "aae01518-5342-5314-be14-df237901396f" - BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" - StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.93+0" - -[[deps.Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.36" -weakdeps = ["StaticArrays"] - - [deps.ForwardDiff.extensions] - ForwardDiffStaticArraysExt = "StaticArrays" - -[[deps.FreeType]] -deps = ["CEnum", "FreeType2_jll"] -git-tree-sha1 = "50351f83f95282cf903e968d7c6e8d44a5f83d0b" -uuid = "b38be410-82b0-50bf-ab77-7b57e271db43" -version = "4.1.0" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "d8db6a5a2fe1381c1ea4ef2cab7c69c2de7f9ea0" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.1+0" - -[[deps.FreeTypeAbstraction]] -deps = ["ColorVectorSpace", "Colors", "FreeType", "GeometryBasics"] -git-tree-sha1 = "38a92e40157100e796690421e34a11c107205c86" -uuid = "663a7486-cb36-511b-a19d-713bb74d65c9" -version = "0.10.0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.10+0" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.8+0" - -[[deps.GLM]] -deps = ["Distributions", "LinearAlgebra", "Printf", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns", "StatsModels"] -git-tree-sha1 = "273bd1cd30768a2fddfa3fd63bbc746ed7249e5f" -uuid = "38e38edf-8417-5370-95a0-9cbb8c7f171a" -version = "1.9.0" - -[[deps.GPUArrays]] -deps = ["Adapt", "GPUArraysCore", "LLVM", "LinearAlgebra", "Printf", "Random", "Reexport", "Serialization", "Statistics"] -git-tree-sha1 = "85d7fb51afb3def5dcb85ad31c3707795c8bccc1" -uuid = "0c68f7d7-f131-5f86-a1c3-88cf8149b2d7" -version = "9.1.0" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "2d6ca471a6c7b536127afccfa7564b5b39227fe0" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.5" - -[[deps.GR]] -deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Preferences", "Printf", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "UUIDs", "p7zip_jll"] -git-tree-sha1 = "27442171f28c952804dede8ff72828a96f2bfc1f" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.72.10" - -[[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" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.72.10+0" - -[[deps.GeoInterface]] -deps = ["Extents"] -git-tree-sha1 = "d53480c0793b13341c40199190f92c611aa2e93c" -uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.3.2" - -[[deps.GeometryBasics]] -deps = ["EarCut_jll", "Extents", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "424a5a6ce7c5d97cca7bcc4eac551b97294c54af" -uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.4.9" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] -git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.76.5+0" - -[[deps.Graphics]] -deps = ["Colors", "LinearAlgebra", "NaNMath"] -git-tree-sha1 = "d61890399bc535850c4bf08e4e0d3a7ad0f21cbd" -uuid = "a2bd30eb-e257-5431-a919-1863eab51364" -version = "1.1.2" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.GridLayoutBase]] -deps = ["GeometryBasics", "InteractiveUtils", "Observables"] -git-tree-sha1 = "f57a64794b336d4990d90f80b147474b869b1bc4" -uuid = "3955a311-db13-416c-9275-1d80ed98e5e9" -version = "0.9.2" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.0" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] -git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.23" - -[[deps.IJulia]] -deps = ["Base64", "Conda", "Dates", "InteractiveUtils", "JSON", "Libdl", "Logging", "Markdown", "MbedTLS", "Pkg", "Printf", "REPL", "Random", "SoftGlobalScope", "Test", "UUIDs", "ZMQ"] -git-tree-sha1 = "47ac8cc196b81001a711f4b2c12c97372338f00c" -uuid = "7073ff75-c697-5162-941a-fcdaad2a7d2a" -version = "1.24.2" - -[[deps.IRTools]] -deps = ["InteractiveUtils", "MacroTools", "Test"] -git-tree-sha1 = "8aa91235360659ca7560db43a7d57541120aa31d" -uuid = "7869d1d1-7146-5819-86e3-90919afe41df" -version = "0.4.11" - -[[deps.ImageAxes]] -deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"] -git-tree-sha1 = "2e4520d67b0cef90865b3ef727594d2a58e0e1f8" -uuid = "2803e5a7-5153-5ecf-9a86-9b4c37f5f5ac" -version = "0.6.11" - -[[deps.ImageBase]] -deps = ["ImageCore", "Reexport"] -git-tree-sha1 = "b51bb8cae22c66d0f6357e3bcb6363145ef20835" -uuid = "c817782e-172a-44cc-b673-b171935fbb9e" -version = "0.1.5" - -[[deps.ImageCore]] -deps = ["AbstractFFTs", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Graphics", "MappedArrays", "MosaicViews", "OffsetArrays", "PaddedViews", "Reexport"] -git-tree-sha1 = "acf614720ef026d38400b3817614c45882d75500" -uuid = "a09fc81d-aa75-5fe9-8630-4744c3626534" -version = "0.9.4" - -[[deps.ImageIO]] -deps = ["FileIO", "IndirectArrays", "JpegTurbo", "LazyModules", "Netpbm", "OpenEXR", "PNGFiles", "QOI", "Sixel", "TiffImages", "UUIDs"] -git-tree-sha1 = "bca20b2f5d00c4fbc192c3212da8fa79f4688009" -uuid = "82e4d734-157c-48bb-816b-45c225c6df19" -version = "0.6.7" - -[[deps.ImageInTerminal]] -deps = ["ColorTypes", "Crayons", "FileIO", "Sixel", "XTermColors"] -git-tree-sha1 = "f260604e7600723a323b42cb92ae22d837cd5dc9" -uuid = "d8c32880-2388-543b-8c61-d9f865259254" -version = "0.5.2" - -[[deps.ImageMetadata]] -deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"] -git-tree-sha1 = "355e2b974f2e3212a75dfb60519de21361ad3cb7" -uuid = "bc367c6b-8a6b-528e-b4bd-a4b897500b49" -version = "0.9.9" - -[[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.Imath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "3d09a9f60edf77f8a4d99f9e015e8fbf9989605d" -uuid = "905a6f67-0a94-5f89-b386-d35d92009cd1" -version = "3.1.7+0" - -[[deps.Indexing]] -git-tree-sha1 = "ce1566720fd6b19ff3411404d4b977acd4814f9f" -uuid = "313cdc1a-70c2-5d6a-ae34-0150d3930a38" -version = "1.1.1" - -[[deps.IndirectArrays]] -git-tree-sha1 = "012e604e1c7458645cb8b436f8fba789a51b257f" -uuid = "9b13fd28-a010-5f03-acff-a1bbcff69959" -version = "1.0.0" - -[[deps.Inflate]] -git-tree-sha1 = "ea8031dea4aff6bd41f1df8f2fdfb25b33626381" -uuid = "d25df0c9-e2be-5dd7-82c8-3ad0b3e990b9" -version = "0.1.4" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "9cc2baf75c6d09f9da536ddf58eb2f29dedaf461" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.4.0" - -[[deps.IntegerMathUtils]] -git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" -uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" -version = "0.1.2" - -[[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ad37c091f7d7daf900963171600d7c1c5c3ede32" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2023.2.0+0" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.Interpolations]] -deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "721ec2cf720536ad005cb38f50dbba7b02419a15" -uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.14.7" - -[[deps.IntervalArithmetic]] -deps = ["CRlibm", "EnumX", "FastRounding", "LinearAlgebra", "Markdown", "Random", "RecipesBase", "RoundingEmulator", "SetRounding", "StaticArrays"] -git-tree-sha1 = "f59e639916283c1d2e106d2b00910b50f4dab76c" -uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" -version = "0.21.2" - -[[deps.IntervalSets]] -deps = ["Dates", "Random"] -git-tree-sha1 = "3d8866c029dd6b16e69e0d4a939c4dfcb98fac47" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.8" -weakdeps = ["Statistics"] - - [deps.IntervalSets.extensions] - IntervalSetsStatisticsExt = "Statistics" - -[[deps.InvertedIndices]] -git-tree-sha1 = "0dc7b50b8d436461be01300fd8cd45aa0274b038" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.3.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.2.2" - -[[deps.Isoband]] -deps = ["isoband_jll"] -git-tree-sha1 = "f9b6d97355599074dc867318950adaa6f9946137" -uuid = "f1662d9f-8043-43de-a69a-05efc1cc6ff4" -version = "0.1.1" - -[[deps.IterTools]] -git-tree-sha1 = "4ced6667f9974fc5c5943fa5e2ef1ca43ea9e450" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.8.0" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLFzf]] -deps = ["Pipe", "REPL", "Random", "fzf_jll"] -git-tree-sha1 = "9fb0b890adab1c0a4a475d4210d51f228bfc250d" -uuid = "1019f520-868f-41f5-a6de-eb00f4b6a39c" -version = "0.1.6" - -[[deps.JLLWrappers]] -deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.5.0" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" - -[[deps.JpegTurbo]] -deps = ["CEnum", "FileIO", "ImageCore", "JpegTurbo_jll", "TOML"] -git-tree-sha1 = "d65930fa2bc96b07d7691c652d701dcbe7d9cf0b" -uuid = "b835a17e-a41a-41e7-81f0-2f016b05efe0" -version = "0.1.4" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6f2675ef130a300a112286de91973805fcc5ffbc" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.91+0" - -[[deps.KernelDensity]] -deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] -git-tree-sha1 = "90442c50e202a5cdf21a7899c66b240fdef14035" -uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" -version = "0.6.7" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.1+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LLVM]] -deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Preferences", "Printf", "Requires", "Unicode"] -git-tree-sha1 = "c879e47398a7ab671c782e02b51a4456794a7fa3" -uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "6.4.0" - - [deps.LLVM.extensions] - BFloat16sExt = "BFloat16s" - - [deps.LLVM.weakdeps] - BFloat16s = "ab4f0b2a-ad5b-11e8-123f-65d77653426b" - -[[deps.LLVMExtra_jll]] -deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "a84f8f1e8caaaa4e3b4c101306b9e801d3883ace" -uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.27+0" - -[[deps.LLVMOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f689897ccbe049adb19a065c495e75f372ecd42b" -uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" -version = "15.0.4+0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.1+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.1" - -[[deps.Latexify]] -deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Printf", "Requires"] -git-tree-sha1 = "f428ae552340899a935973270b8d98e5a31c49fe" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.16.1" - - [deps.Latexify.extensions] - DataFramesExt = "DataFrames" - SymEngineExt = "SymEngine" - - [deps.Latexify.weakdeps] - DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" - SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LazyModules]] -git-tree-sha1 = "a560dd966b386ac9ae60bdd3a3d3a326062d3c3e" -uuid = "8cdb02fc-e678-4876-92c5-9defec4f444e" -version = "0.3.1" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] -git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.7+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "6f73d1dd803986947b2c750138528a999a6c7733" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.6.0+0" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.42.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.17.0+0" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.35.0+0" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "XZ_jll", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "2da088d113af58221c52828a80378e16be7d037a" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.5.1+1" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.36.0+0" - -[[deps.LightXML]] -deps = ["Libdl", "XML2_jll"] -git-tree-sha1 = "e129d9391168c677cd4800f5c0abb1ed8cb3794f" -uuid = "9c8b4983-aa76-5018-a973-4c85ecc9e179" -version = "0.9.0" - -[[deps.LineSearches]] -deps = ["LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "Printf"] -git-tree-sha1 = "7bbea35cec17305fc70a0e5b4641477dc0789d9d" -uuid = "d3d80556-e9d4-5f37-9878-2ab0fcc64255" -version = "7.2.0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LinearAlgebraX]] -deps = ["LinearAlgebra", "Mods", "Permutations", "Primes", "SimplePolynomials"] -git-tree-sha1 = "558a338f1eeabe933f9c2d4052aa7c2c707c3d52" -uuid = "9b3f67b0-2d00-526e-9884-9e4938f8fb88" -version = "0.1.12" - -[[deps.Loess]] -deps = ["Distances", "LinearAlgebra", "Statistics", "StatsAPI"] -git-tree-sha1 = "a113a8be4c6d0c64e217b472fb6e61c760eb4022" -uuid = "4345ca2d-374a-55d4-8d30-97f9976e7612" -version = "0.6.3" - -[[deps.LogExpFunctions]] -deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.26" - - [deps.LogExpFunctions.extensions] - LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" - LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" - LogExpFunctionsInverseFunctionsExt = "InverseFunctions" - - [deps.LogExpFunctions.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "c1dd6d7978c12545b4179fb6153b9250c96b0075" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.3" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "eb006abbd7041c28e0d16260e50a24f8f9104913" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2023.2.0+0" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "9ee1618cbf5240e6d4e0371d6f24065083f60c48" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.11" - -[[deps.Makie]] -deps = ["Animations", "Base64", "CRC32c", "ColorBrewer", "ColorSchemes", "ColorTypes", "Colors", "Contour", "DelaunayTriangulation", "Distributions", "DocStringExtensions", "Downloads", "FFMPEG_jll", "FileIO", "FixedPointNumbers", "Formatting", "FreeType", "FreeTypeAbstraction", "GeometryBasics", "GridLayoutBase", "ImageIO", "InteractiveUtils", "IntervalSets", "Isoband", "KernelDensity", "LaTeXStrings", "LinearAlgebra", "MacroTools", "MakieCore", "Markdown", "MathTeXEngine", "Observables", "OffsetArrays", "Packing", "PlotUtils", "PolygonOps", "PrecompileTools", "Printf", "REPL", "Random", "RelocatableFolders", "Setfield", "ShaderAbstractions", "Showoff", "SignedDistanceFields", "SparseArrays", "StableHashTraits", "Statistics", "StatsBase", "StatsFuns", "StructArrays", "TriplotBase", "UnicodeFun"] -git-tree-sha1 = "35fa3c150cd96fd77417a23965b7037b90d6ffc9" -uuid = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" -version = "0.19.12" - -[[deps.MakieCore]] -deps = ["Observables", "REPL"] -git-tree-sha1 = "9b11acd07f21c4d035bd4156e789532e8ee2cc70" -uuid = "20f20a25-4f0e-4fdf-b5d1-57303727442b" -version = "0.6.9" - -[[deps.MappedArrays]] -git-tree-sha1 = "2dab0221fe2b0f2cb6754eaa743cc266339f527e" -uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.2" - -[[deps.MarchingCubes]] -deps = ["PrecompileTools", "StaticArrays"] -git-tree-sha1 = "c8e29e2bacb98c9b6f10445227a8b0402f2f173a" -uuid = "299715c1-40a9-479a-aaf9-4a633d36f717" -version = "0.1.8" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MathTeXEngine]] -deps = ["AbstractTrees", "Automa", "DataStructures", "FreeTypeAbstraction", "GeometryBasics", "LaTeXStrings", "REPL", "RelocatableFolders", "Test", "UnicodeFun"] -git-tree-sha1 = "8f52dbaa1351ce4cb847d95568cb29e62a307d93" -uuid = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" -version = "0.5.6" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "f512dc13e64e96f703fd92ce617755ee6b5adf0f" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.8" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" - -[[deps.Measures]] -git-tree-sha1 = "c13304c81eec1ed3af7fc20e75fb6b26092a1102" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.2" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "f66bdc5de519e8f8ae43bdc598782d35a25b1272" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.1.0" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "4cc0c5a83933648b615c36c2b956d94fda70641e" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.7" - -[[deps.Mods]] -git-tree-sha1 = "61be59e4daffff43a8cec04b5e0dc773cbb5db3a" -uuid = "7475f97c-0381-53b1-977b-4c60186c8d62" -version = "1.3.3" - -[[deps.MosaicViews]] -deps = ["MappedArrays", "OffsetArrays", "PaddedViews", "StackViews"] -git-tree-sha1 = "7b86a5d4d70a9f5cdf2dacb3cbe6d251d1a61dbe" -uuid = "e94cdb99-869f-56ef-bcf0-1ae2bcbe0389" -version = "0.3.4" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" - -[[deps.Multisets]] -git-tree-sha1 = "8d852646862c96e226367ad10c8af56099b4047e" -uuid = "3b2b4ff1-bcff-5658-a3ee-dbcf1ce5ac09" -version = "0.4.4" - -[[deps.MultivariateStats]] -deps = ["Arpack", "LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI", "StatsBase"] -git-tree-sha1 = "68bf5103e002c44adfd71fea6bd770b3f0586843" -uuid = "6f286f6a-111f-5878-ab1e-185364afe411" -version = "0.10.2" - -[[deps.NLSolversBase]] -deps = ["DiffResults", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "a0b464d183da839699f4c79e7606d9d186ec172c" -uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.8.3" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.2" - -[[deps.NearestNeighbors]] -deps = ["Distances", "StaticArrays"] -git-tree-sha1 = "2c3726ceb3388917602169bed973dbc97f1b51a8" -uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.13" - -[[deps.Netpbm]] -deps = ["FileIO", "ImageCore", "ImageMetadata"] -git-tree-sha1 = "d92b107dbb887293622df7697a2223f9f8176fcd" -uuid = "f09324ee-3d7c-5217-9330-fc30815ba969" -version = "1.1.1" - -[[deps.NetworkOptions]] -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 = "2ac17d29c523ce1cd38e27785a7d23024853a4bb" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.10" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.21+4" - -[[deps.OpenEXR]] -deps = ["Colors", "FileIO", "OpenEXR_jll"] -git-tree-sha1 = "327f53360fdb54df7ecd01e96ef1983536d1e633" -uuid = "52e1d378-f018-4a11-a4be-720524705ac7" -version = "0.3.2" - -[[deps.OpenEXR_jll]] -deps = ["Artifacts", "Imath_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "a4ca623df1ae99d09bc9868b008262d0c0ac1e4f" -uuid = "18a262bb-aa17-5467-a713-aee519bc75cb" -version = "3.1.4+0" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" - -[[deps.OpenSSL]] -deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "OpenSSL_jll", "Sockets"] -git-tree-sha1 = "51901a49222b09e3743c65b8847687ae5fc78eb2" -uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" -version = "1.4.1" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "cc6e1927ac521b659af340e0ca45828a3ffc748f" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.0.12+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Optim]] -deps = ["Compat", "FillArrays", "ForwardDiff", "LineSearches", "LinearAlgebra", "NLSolversBase", "NaNMath", "Parameters", "PositiveFactorizations", "Printf", "SparseArrays", "StatsBase"] -git-tree-sha1 = "01f85d9269b13fedc61e63cc72ee2213565f7a72" -uuid = "429524aa-4258-5aef-a3af-852621145aeb" -version = "1.7.8" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "2e73fe17cac3c62ad1aebe70d44c963c3cfdc3e3" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.6.2" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+0" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "f6f85a2edb9c356b829934ad3caed2ad0ebbfc99" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.29" - -[[deps.PNGFiles]] -deps = ["Base64", "CEnum", "ImageCore", "IndirectArrays", "OffsetArrays", "libpng_jll"] -git-tree-sha1 = "5ded86ccaf0647349231ed6c0822c10886d4a1ee" -uuid = "f57f5aa1-a3ce-4bc8-8ab9-96f992907883" -version = "0.4.1" - -[[deps.Packing]] -deps = ["GeometryBasics"] -git-tree-sha1 = "ec3edfe723df33528e085e632414499f26650501" -uuid = "19eb6ba3-879d-56ad-ad62-d5c202156566" -version = "0.5.0" - -[[deps.PaddedViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "0fac6313486baae819364c52b4f483450a9d793f" -uuid = "5432bcbf-9aad-5242-b902-cca2824c8663" -version = "0.5.12" - -[[deps.Pango_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "4745216e94f71cb768d58330b059c9b76f32cb66" -uuid = "36c8627f-9965-5494-a995-c6b170f724f3" -version = "1.50.14+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 = "a935806434c9d4c506ba941871b327b96d41f2bf" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.0" - -[[deps.Permutations]] -deps = ["Combinatorics", "LinearAlgebra", "Random"] -git-tree-sha1 = "4f69b02cf40a0f494d0438ab29de32e14ef96e7b" -uuid = "2ae35dd2-176d-5d53-8349-f30d82d94d4f" -version = "0.4.18" - -[[deps.Pipe]] -git-tree-sha1 = "6842804e7867b115ca9de748a0cf6b364523c16d" -uuid = "b98c9c47-44ae-5843-9183-064241ee97a0" -version = "1.3.0" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "64779bc4c9784fee475689a1752ef4d5747c5e87" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.42.2+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.2" - -[[deps.PkgVersion]] -deps = ["Pkg"] -git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" -uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" -version = "0.3.3" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "1f03a2d339f42dca4a4da149c7e15e9b896ad899" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.1.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "PrecompileTools", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "f92e1315dadf8c46561fb9396e525f7200cdc227" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.3.5" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.39.0" -weakdeps = ["FileIO", "GeometryBasics", "IJulia", "ImageInTerminal", "Unitful"] - - [deps.Plots.extensions] - FileIOExt = "FileIO" - GeometryBasicsExt = "GeometryBasics" - IJuliaExt = "IJulia" - ImageInTerminalExt = "ImageInTerminal" - UnitfulExt = "Unitful" - -[[deps.PolygonOps]] -git-tree-sha1 = "77b3d3605fc1cd0b42d95eba87dfcd2bf67d5ff6" -uuid = "647866c9-e3ac-4575-94e7-e3d426903924" -version = "0.1.2" - -[[deps.Polynomials]] -deps = ["LinearAlgebra", "RecipesBase", "Setfield", "SparseArrays"] -git-tree-sha1 = "5a95b69396b77fdb2c48970a535610c4743810e2" -uuid = "f27b6e38-b328-58d1-80ce-0feddd5e7a45" -version = "4.0.5" - - [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 = ["DataAPI", "Future"] -git-tree-sha1 = "36d8b4b899628fb92c2749eb488d884a926614d3" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.3" - -[[deps.PositiveFactorizations]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "17275485f373e6673f7e7f97051f703ed5b15b20" -uuid = "85a6dd25-e78a-55b7-8502-1745935b8125" -version = "0.2.4" - -[[deps.PrecompileTools]] -deps = ["Preferences"] -git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" -uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.0" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.4.1" - -[[deps.PrettyTables]] -deps = ["Crayons", "LaTeXStrings", "Markdown", "Printf", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "6842ce83a836fbbc0cfeca0b5a4de1a4dcbdb8d1" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "2.2.8" - -[[deps.Primes]] -deps = ["IntegerMathUtils"] -git-tree-sha1 = "4c9f306e5d6603ae203c2000dd460d81a5251489" -uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" -version = "0.5.4" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "00099623ffee15972c16111bcf84c58a0051257c" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.9.0" - -[[deps.QOI]] -deps = ["ColorTypes", "FileIO", "FixedPointNumbers"] -git-tree-sha1 = "18e8f4d1426e965c7b532ddd260599e1510d26ce" -uuid = "4b34888f-f399-49d4-9bb3-47ed5cae4e65" -version = "1.0.0" - -[[deps.Qt6Base_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"] -git-tree-sha1 = "37b7bb7aabf9a085e0044307e1717436117f2b3b" -uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.5.3+1" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9ebcd48c498668c7fa0e97a9cae873fbee7bfee1" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.9.1" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA", "Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RangeArrays]] -git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" -uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d" -version = "0.3.2" - -[[deps.Ratios]] -deps = ["Requires"] -git-tree-sha1 = "1342a47bf3260ee108163042310d26f2be5ec90b" -uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" -version = "0.4.5" -weakdeps = ["FixedPointNumbers"] - - [deps.Ratios.extensions] - RatiosFixedPointNumbersExt = "FixedPointNumbers" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -deps = ["PrecompileTools"] -git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.3.4" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "PrecompileTools", "RecipesBase"] -git-tree-sha1 = "45cf9fd0ca5839d06ef333c8201714e888486342" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.12" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "ffdaf70d81cf6ff22c2b6e733c900c3321cab864" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "1.0.1" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.RingLists]] -deps = ["Random"] -git-tree-sha1 = "f39da63aa6d2d88e0c1bd20ed6a3ff9ea7171ada" -uuid = "286e9d63-9694-5540-9e3c-4e6708fa07b2" -version = "0.2.8" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.1" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6ed52fdd3382cf21947b15e8870ac0ddbff736da" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.4.0+0" - -[[deps.RoundingEmulator]] -git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" -uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" -version = "0.2.1" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "3bac05bc7e74a75fd9cba4295cde4045d9fe2386" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.2.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "0e7508ff27ba32f26cd459474ca2ede1bc10991f" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.1" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.SetRounding]] -git-tree-sha1 = "d7a25e439d07a17b7cdf97eecee504c50fedf5f6" -uuid = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" -version = "0.2.1" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] -git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "1.1.1" - -[[deps.ShaderAbstractions]] -deps = ["ColorTypes", "FixedPointNumbers", "GeometryBasics", "LinearAlgebra", "Observables", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "db0219befe4507878b1a90e07820fed3e62c289d" -uuid = "65257c39-d410-5151-9873-9b3e5be5013e" -version = "0.4.0" - -[[deps.SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - -[[deps.ShiftedArrays]] -git-tree-sha1 = "503688b59397b3307443af35cd953a13e8005c16" -uuid = "1277b4bf-5013-50f5-be3d-901d8477a67a" -version = "2.0.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SignedDistanceFields]] -deps = ["Random", "Statistics", "Test"] -git-tree-sha1 = "d263a08ec505853a5ff1c1ebde2070419e3f28e9" -uuid = "73760f76-fbc4-59ce-8f25-708e95d2df96" -version = "0.4.0" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.SimpleGraphs]] -deps = ["AbstractLattices", "Combinatorics", "DataStructures", "IterTools", "LightXML", "LinearAlgebra", "LinearAlgebraX", "Optim", "Primes", "Random", "RingLists", "SimplePartitions", "SimplePolynomials", "SimpleRandom", "SparseArrays", "Statistics"] -git-tree-sha1 = "b608903049d11cc557c45e03b3a53e9260579c19" -uuid = "55797a34-41de-5266-9ec1-32ac4eb504d3" -version = "0.8.4" - -[[deps.SimplePartitions]] -deps = ["AbstractLattices", "DataStructures", "Permutations"] -git-tree-sha1 = "dcc02923a53f316ab97da8ef3136e80b4543dbf1" -uuid = "ec83eff0-a5b5-5643-ae32-5cbf6eedec9d" -version = "0.3.0" - -[[deps.SimplePolynomials]] -deps = ["Mods", "Multisets", "Polynomials", "Primes"] -git-tree-sha1 = "d537c31cf9995236166e3e9afc424a5a1c59ff9d" -uuid = "cc47b68c-3164-5771-a705-2bc0097375a0" -version = "0.2.14" - -[[deps.SimpleRandom]] -deps = ["Distributions", "LinearAlgebra", "Random"] -git-tree-sha1 = "3a6fb395e37afab81aeea85bae48a4db5cd7244a" -uuid = "a6525b86-64cd-54fa-8f65-62fc48bdc0e8" -version = "0.3.1" - -[[deps.SimpleTraits]] -deps = ["InteractiveUtils", "MacroTools"] -git-tree-sha1 = "5d7e3f4e11935503d3ecaf7186eac40602e7d231" -uuid = "699a6c99-e7fa-54fc-8d76-47d257e15c1d" -version = "0.9.4" - -[[deps.Sixel]] -deps = ["Dates", "FileIO", "ImageCore", "IndirectArrays", "OffsetArrays", "REPL", "libsixel_jll"] -git-tree-sha1 = "2da10356e31327c7096832eb9cd86307a50b1eb6" -uuid = "45858cf5-a6b0-47a3-bbea-62219f50df47" -version = "0.1.3" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SoftGlobalScope]] -deps = ["REPL"] -git-tree-sha1 = "986ec2b6162ccb95de5892ed17832f95badf770c" -uuid = "b85f4697-e234-5449-a836-ec8e2f98b302" -version = "1.1.0" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "5165dfb9fd131cf0c6957a3a7605dede376e7b63" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.2.0" - -[[deps.SparseArrays]] -deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.SparseInverseSubset]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "91402087fd5d13b2d97e3ef29bbdf9d7859e678a" -uuid = "dc90abb0-5640-4711-901d-7e5b23a2fada" -version = "0.1.1" - -[[deps.SpecialFunctions]] -deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.3.1" -weakdeps = ["ChainRulesCore"] - - [deps.SpecialFunctions.extensions] - SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" - -[[deps.StableHashTraits]] -deps = ["Compat", "SHA", "Tables", "TupleTools"] -git-tree-sha1 = "d29023a76780bb8a3f2273b29153fd00828cb73f" -uuid = "c5dd0088-6c3f-4803-b00e-f31a60c170fa" -version = "1.1.1" - -[[deps.StackViews]] -deps = ["OffsetArrays"] -git-tree-sha1 = "46e589465204cd0c08b4bd97385e4fa79a0c770c" -uuid = "cae243ae-269e-4f55-b966-ac2d0dc13c15" -version = "0.1.1" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore"] -git-tree-sha1 = "0adf069a2a490c47273727e029371b31d44b72b2" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.5" -weakdeps = ["Statistics"] - - [deps.StaticArrays.extensions] - StaticArraysStatisticsExt = "Statistics" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.4.2" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.9.0" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.7.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "1d77abd07f617c4868c33d4f5b9e1dbb2643c9cf" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.34.2" - -[[deps.StatsFuns]] -deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "f625d686d5a88bcd2b15cd81f18f98186fdc0c9a" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.3.0" - - [deps.StatsFuns.extensions] - StatsFunsChainRulesCoreExt = "ChainRulesCore" - StatsFunsInverseFunctionsExt = "InverseFunctions" - - [deps.StatsFuns.weakdeps] - ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.StatsModels]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Printf", "REPL", "ShiftedArrays", "SparseArrays", "StatsAPI", "StatsBase", "StatsFuns", "Tables"] -git-tree-sha1 = "5cf6c4583533ee38639f73b880f35fc85f2941e0" -uuid = "3eaba693-59b7-5ba5-a881-562e759f1c8d" -version = "0.7.3" - -[[deps.StatsPlots]] -deps = ["AbstractFFTs", "Clustering", "DataStructures", "Distributions", "Interpolations", "KernelDensity", "LinearAlgebra", "MultivariateStats", "NaNMath", "Observables", "Plots", "RecipesBase", "RecipesPipeline", "Reexport", "StatsBase", "TableOperations", "Tables", "Widgets"] -git-tree-sha1 = "9115a29e6c2cf66cf213ccc17ffd61e27e743b24" -uuid = "f3b207a7-027a-5e70-b257-86293d7955fd" -version = "0.15.6" - -[[deps.StringManipulation]] -deps = ["PrecompileTools"] -git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" -uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.4" - -[[deps.StructArrays]] -deps = ["Adapt", "ConstructionBase", "DataAPI", "GPUArraysCore", "StaticArraysCore", "Tables"] -git-tree-sha1 = "0a3db38e4cce3c54fe7a71f831cd7b6194a54213" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.16" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.SuiteSparse_jll]] -deps = ["Artifacts", "Libdl", "Pkg", "libblastrampoline_jll"] -uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "5.10.1+6" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.3" - -[[deps.TZJData]] -deps = ["Artifacts"] -git-tree-sha1 = "d39314cdbaf5b90a047db33858626f8d1cc973e1" -uuid = "dc5dba14-91b3-4cab-a142-028a31da12f7" -version = "1.0.0+2023c" - -[[deps.TableOperations]] -deps = ["SentinelArrays", "Tables", "Test"] -git-tree-sha1 = "e383c87cf2a1dc41fa30c093b2a19877c83e1bc1" -uuid = "ab02a1b2-a7df-11e8-156e-fb1833f50b87" -version = "1.2.0" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] -git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.11.1" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.0" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TiffImages]] -deps = ["ColorTypes", "DataStructures", "DocStringExtensions", "FileIO", "FixedPointNumbers", "IndirectArrays", "Inflate", "Mmap", "OffsetArrays", "PkgVersion", "ProgressMeter", "UUIDs"] -git-tree-sha1 = "34cc045dd0aaa59b8bbe86c644679bc57f1d5bd0" -uuid = "731e570b-9d59-4bfa-96dc-6df516fadf69" -version = "0.6.8" - -[[deps.TimeZones]] -deps = ["Artifacts", "Dates", "Downloads", "InlineStrings", "LazyArtifacts", "Mocking", "Printf", "Scratch", "TZJData", "Unicode", "p7zip_jll"] -git-tree-sha1 = "89e64d61ef3cd9e80f7fc12b7d13db2d75a23c03" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.13.0" -weakdeps = ["RecipesBase"] - - [deps.TimeZones.extensions] - TimeZonesRecipesBaseExt = "RecipesBase" - -[[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "9a6ae7ed916312b41236fcef7e0af564ef934769" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.13" - -[[deps.TriplotBase]] -git-tree-sha1 = "4d4ed7f294cda19382ff7de4c137d24d16adc89b" -uuid = "981d1d27-644d-49a2-9326-4793e63143c3" -version = "0.1.0" - -[[deps.TupleTools]] -git-tree-sha1 = "155515ed4c4236db30049ac1495e2969cc06be9d" -uuid = "9d95972d-f1c8-5527-a6e0-b4b365fa01f6" -version = "1.4.3" - -[[deps.URIs]] -git-tree-sha1 = "67db6cc7b3821e19ebe75791a9dd19c9b1188f2b" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.5.1" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.UnicodePlots]] -deps = ["ColorSchemes", "ColorTypes", "Contour", "Crayons", "Dates", "LinearAlgebra", "MarchingCubes", "NaNMath", "PrecompileTools", "Printf", "Requires", "SparseArrays", "StaticArrays", "StatsBase"] -git-tree-sha1 = "b96de03092fe4b18ac7e4786bee55578d4b75ae8" -uuid = "b8865327-cd53-5732-bb35-84acbb429228" -version = "3.6.0" - - [deps.UnicodePlots.extensions] - FreeTypeExt = ["FileIO", "FreeType"] - ImageInTerminalExt = "ImageInTerminal" - IntervalSetsExt = "IntervalSets" - TermExt = "Term" - UnitfulExt = "Unitful" - - [deps.UnicodePlots.weakdeps] - FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" - FreeType = "b38be410-82b0-50bf-ab77-7b57e271db43" - ImageInTerminal = "d8c32880-2388-543b-8c61-d9f865259254" - IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" - Term = "22787eb5-b846-44ae-b979-8e399b8463ab" - Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" - -[[deps.Unitful]] -deps = ["Dates", "LinearAlgebra", "Random"] -git-tree-sha1 = "a72d22c7e13fe2de562feda8645aa134712a87ee" -uuid = "1986cc42-f94f-5a68-af5c-568840ba703d" -version = "1.17.0" - - [deps.Unitful.extensions] - ConstructionBaseUnitfulExt = "ConstructionBase" - InverseFunctionsUnitfulExt = "InverseFunctions" - - [deps.Unitful.weakdeps] - ConstructionBase = "187b0558-2788-49d3-abe0-74a17ed4e7c9" - InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" - -[[deps.UnitfulLatexify]] -deps = ["LaTeXStrings", "Latexify", "Unitful"] -git-tree-sha1 = "e2d817cc500e960fdbafcf988ac8436ba3208bfd" -uuid = "45397f5d-5981-4c77-b2b3-fc36d6e9b728" -version = "1.6.3" - -[[deps.Unzip]] -git-tree-sha1 = "ca0969166a028236229f63514992fc073799bb78" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.2.0" - -[[deps.VersionParsing]] -git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" -uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" -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 = ["Artifacts", "EpollShim_jll", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "7558e29847e99bc3f04d6569e82d0f5c54460703" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.21.0+1" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.25.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.Widgets]] -deps = ["Colors", "Dates", "Observables", "OrderedCollections"] -git-tree-sha1 = "fcdae142c1cfc7d89de2d11e08721d0f2f86c98a" -uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" -version = "0.6.6" - -[[deps.WoodburyMatrices]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "de67fa59e33ad156a590055375a30b23c40299d3" -uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "0.5.5" - -[[deps.WorkerUtilities]] -git-tree-sha1 = "cd1659ba0d57b71a464a29e64dbc67cfe83d54e7" -uuid = "76eceee3-57b5-4d4a-8e66-0e911cebbf60" -version = "1.6.1" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Zlib_jll"] -git-tree-sha1 = "24b81b59bd35b3c42ab84fa589086e19be919916" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.11.5+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.XTermColors]] -deps = ["Crayons", "ImageBase", "OffsetArrays"] -git-tree-sha1 = "bc27b7622a51f570c57b80bd839d1c0d43605b38" -uuid = "c8c2cc18-de81-4e68-b407-38a3a0c0491f" -version = "0.2.1" - -[[deps.XZ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "522b8414d40c4cbbab8dee346ac3a09f9768f25d" -uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.4.5+0" - -[[deps.Xorg_libICE_jll]] -deps = ["Libdl", "Pkg"] -git-tree-sha1 = "e5becd4411063bdcac16be8b66fc2f9f6f1e8fe5" -uuid = "f67eecfb-183a-506d-b269-f58e52b52d7c" -version = "1.0.10+1" - -[[deps.Xorg_libSM_jll]] -deps = ["Libdl", "Pkg", "Xorg_libICE_jll"] -git-tree-sha1 = "4a9d9e4c180e1e8119b5ffc224a7b59d3a7f7e18" -uuid = "c834827a-8449-5923-a945-d239c165b7dd" -version = "1.2.3+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "afead5aba5aa507ad5a3bf01f58f82c8d1403495" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.6+0" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "6035850dcc70518ca32f012e46015b9beeda49d8" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.11+0" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "34d526d318358a859d7de23da945578e8e8727b7" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.4+0" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.4+4" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.10+4" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "8fdda4c692503d44d04a0603d9ac0982054635f9" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.1+0" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "b4bfde5d5b652e22b9c790ad00af08b6d042b97d" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.15.0+0" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "730eeca102434283c50ccf7d1ecdadf521a765a4" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.2+0" - -[[deps.Xorg_xcb_util_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 = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "330f955bc41bb8f5270a369c473fc4a5a4e4d3cb" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.6+0" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "691634e5453ad362044e2ad653e79f3ee3bb98c3" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.39.0+0" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "e92a1a012a10506618f10b7047e478403a046c77" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.5.0+0" - -[[deps.ZMQ]] -deps = ["FileWatching", "Sockets", "ZeroMQ_jll"] -git-tree-sha1 = "356d2bdcc0bce90aabee1d1c0f6d6f301eda8f77" -uuid = "c2297ded-f4af-51ae-bb23-16f91089e4e1" -version = "1.2.2" - -[[deps.ZeroMQ_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "libsodium_jll"] -git-tree-sha1 = "fe5c65a526f066fb3000da137d5785d9649a8a47" -uuid = "8f1865be-045e-5c20-9c9f-bfbfb0764568" -version = "4.3.4+0" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "49ce682769cd5de6c72dcf1b94ed7790cd08974c" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.5+0" - -[[deps.Zygote]] -deps = ["AbstractFFTs", "ChainRules", "ChainRulesCore", "DiffRules", "Distributed", "FillArrays", "ForwardDiff", "GPUArrays", "GPUArraysCore", "IRTools", "InteractiveUtils", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NaNMath", "PrecompileTools", "Random", "Requires", "SparseArrays", "SpecialFunctions", "Statistics", "ZygoteRules"] -git-tree-sha1 = "5ded212acd815612df112bb895ef3910c5a03f57" -uuid = "e88e6eb3-aa80-5325-afca-941959d7151f" -version = "0.6.67" - - [deps.Zygote.extensions] - ZygoteColorsExt = "Colors" - ZygoteDistancesExt = "Distances" - ZygoteTrackerExt = "Tracker" - - [deps.Zygote.weakdeps] - Colors = "5ae59095-9a9b-59fe-a467-6f913c188581" - Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" - Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" - -[[deps.ZygoteRules]] -deps = ["ChainRulesCore", "MacroTools"] -git-tree-sha1 = "9d749cd449fb448aeca4feee9a2f4186dbb5d184" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.4" - -[[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 = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "47cf33e62e138b920039e8ff9f9841aafe1b733e" -uuid = "214eeab7-80f7-51ab-84ad-2988db7cef09" -version = "0.35.1+0" - -[[deps.gperf_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3516a5630f741c9eecb3720b1ec9d8edc3ecc033" -uuid = "1a1c6b14-54f6-533d-8383-74cd7377aa70" -version = "3.1.1+0" - -[[deps.isoband_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51b5eeb3f98367157a7a12a1fb0aa5328946c03c" -uuid = "9a68df92-36a6-505f-a73e-abb412b6bfb4" -version = "0.2.3+0" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.4.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.8.0+0" - -[[deps.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 = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+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 = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.38+0" - -[[deps.libsixel_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Pkg", "libpng_jll"] -git-tree-sha1 = "d4f63314c8aa1e48cd22aa0c17ed76cd1ae48c3c" -uuid = "075b6546-f08a-558a-be8f-8157d0f608a5" -version = "1.10.3+0" - -[[deps.libsodium_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" -uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" -version = "1.0.20+0" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.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 = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "9c304562909ab2bab0262639bd4f444d7bc2be37" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "1.4.1+1" diff --git a/README.md b/README.md index 49e2598..c6309c6 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,15 @@ [![HSF Training Center](https://img.shields.io/badge/HSF%20Training%20Center-browse-ff69b4)](https://hepsoftwarefoundation.org/training/curriculum.html) -# JuliaHEP-2023 -Materials for the JuliaHEP 2023 Workshop. +# Hands-On Julia Tutorial for Particle Physicists -Read the rendered Jupyter book: https://juliahep.github.io/JuliaHEP-2023/ +Read the rendered Jupyter book: https://juliahep.github.io/Hands-on-Julia-for-particle-physicists/ Follow the tutorial with Binder: -[![Binder](https://binderhub.ssl-hep.org/badge_logo.svg)](https://binderhub.ssl-hep.org/v2/gh/JuliaHEP/JuliaHEP-2023/HEAD?labpath=julia-intro%2Fdocs%2Fjulia-intro-intro.ipynb) +[![Binder](https://binderhub.ssl-hep.org/badge_logo.svg)](https://binderhub.ssl-hep.org/v2/gh/JuliaHEP/Hands-on-Julia-for-particle-physicists/HEAD?labpath=julia-intro%2Fdocs%2F01-julia-intro-intro.ipynb) - - - When not taken from other sources (with its own Copyright and License), this material is: -Copyright © 2023 CERN and the authors / contributors. +Copyright © 2025 CERN and the authors / contributors. Licensed under [CC-BY-4.0](./LICENSE). diff --git a/julia-intro/.ipynb_checkpoints/julia-intro-multiple-dispatch-checkpoint.ipynb b/julia-intro/.ipynb_checkpoints/julia-intro-multiple-dispatch-checkpoint.ipynb deleted file mode 100644 index 6a5617e..0000000 --- a/julia-intro/.ipynb_checkpoints/julia-intro-multiple-dispatch-checkpoint.ipynb +++ /dev/null @@ -1,379 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "5175cbbd", - "metadata": {}, - "source": [ - "You may have noticed that we seem to write functions in Julia much as we do in Python: without any requirement for explicit types.\n", - "\n", - "We can specify types if we want to:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "aa9d2eb3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "30" - ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function multiply(x ::Int64, y ::Int64)\n", - " x*y\n", - "end\n", - "\n", - "multiply(5,6)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "fca9673d", - "metadata": {}, - "outputs": [ - { - "ename": "LoadError", - "evalue": "MethodError: no method matching multiply(::Float64, ::Int64)\n\n\u001b[0mClosest candidates are:\n\u001b[0m multiply(\u001b[91m::Int64\u001b[39m, ::Int64)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[1]:1\u001b[24m\u001b[39m\n", - "output_type": "error", - "traceback": [ - "MethodError: no method matching multiply(::Float64, ::Int64)\n\n\u001b[0mClosest candidates are:\n\u001b[0m multiply(\u001b[91m::Int64\u001b[39m, ::Int64)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[1]:1\u001b[24m\u001b[39m\n", - "", - "Stacktrace:", - " [1] top-level scope", - " @ In[2]:1" - ] - } - ], - "source": [ - "multiply(9.0,1)" - ] - }, - { - "cell_type": "markdown", - "id": "8cbb1bac", - "metadata": {}, - "source": [ - "As you can see, unlike some versions of Python, if we do specify types in our function declaration, Julia takes us seriously - it will not provide the function for arguments with other types.\n", - "\n", - "However, this also reveals a difference between how Julia and Python think about functions in the first place: Julia *always* generates different versions of a function for different types - it's just that it waits until a particular set of argument types is required before doing the work.\n", - "\n", - "We can declare additional versions of multiply for different arguments explicitly:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "f642695b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "multiply (generic function with 2 methods)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function multiply(x ::Float64, y ::Int64)\n", - " x*y + 1 \n", - "end\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "id": "85e4dea7", - "metadata": {}, - "source": [ - "and you notice that when we do so, Julia notes that multiply is now a \"generic function with 2 methods\" - those methods being \"multiply a Float64 and an Int64\" and \"multiply two Int64s\"\n", - "\n", - "Julia will always pick the version of our function that matches the types of its arguments - this is called **Multiple Dispatch** and is the basis for how Julia implements \"Object orientation\" without classes. Because the \"method\" of the function used depends on the types of *all* of its arguments, Julia does not treat methods as being \"owned\" by the first argument's type - you can't type \"myobject.method()\" - instead, you simply use the function \"as is\":" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "3b772c54", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12.0" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multiply(5.5, 2) #Float64, Int64\n" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "b700daa2", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "30" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multiply(6,5) #Int64, Int64" - ] - }, - { - "cell_type": "markdown", - "id": "7c953390", - "metadata": {}, - "source": [ - "We can always also provide a generic version that will be used to generate versions of the function for any other combinations of types we've not thought of:" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "5be0714b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "multiply (generic function with 3 methods)" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function multiply(x,y)\n", - " x*y -1\n", - "end" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "f31b563e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "12.0" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "multiply(2,6.5) #Int64, Float64 - uses our generic method since we didn't explicitly cover this" - ] - }, - { - "cell_type": "markdown", - "id": "b945398b", - "metadata": {}, - "source": [ - "Julia's type system is hierarchical, so we can also specify the domain of a method via higher-order types (for example, that a function works only on Numbers - which Ints and Floats are both members of - via):" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "593999ed", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "4\n", - "5.76" - ] - } - ], - "source": [ - "function myfunc(x ::Number)\n", - " x^2\n", - "end\n", - "\n", - "print(myfunc(2))\n", - "print(\"\\n\")\n", - "print(myfunc(2.4))" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "2f658fa4", - "metadata": {}, - "outputs": [ - { - "ename": "LoadError", - "evalue": "MethodError: no method matching myfunc(::String)\n\n\u001b[0mClosest candidates are:\n\u001b[0m myfunc(\u001b[91m::Number\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[8]:1\u001b[24m\u001b[39m\n", - "output_type": "error", - "traceback": [ - "MethodError: no method matching myfunc(::String)\n\n\u001b[0mClosest candidates are:\n\u001b[0m myfunc(\u001b[91m::Number\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[8]:1\u001b[24m\u001b[39m\n", - "", - "Stacktrace:", - " [1] top-level scope", - " @ In[9]:1" - ] - } - ], - "source": [ - "myfunc(\"Banana\")" - ] - }, - { - "cell_type": "markdown", - "id": "cb6ccffa", - "metadata": {}, - "source": [ - "A function without any type specifiers is equivalent to one where all the type specifiers are ::Any - the \"Any\" type matches all types in the system.\n", - "\n", - "We can also, as in C++ etc, use parameterised types to restrict relationships between the types of arguments - for example, that all arguments must be of the same type (and in this case, that type is a kind of Number):" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "be235dfd", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "5" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "function myfunc2(x::T, y::T) where {T<:Number}\n", - " x+y\n", - "end\n", - "\n", - "myfunc2(2,3)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "e7d1f815", - "metadata": {}, - "outputs": [ - { - "ename": "LoadError", - "evalue": "MethodError: no method matching myfunc(::Float64, ::Int64)\n\n\u001b[0mClosest candidates are:\n\u001b[0m myfunc(::Number)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[8]:1\u001b[24m\u001b[39m\n", - "output_type": "error", - "traceback": [ - "MethodError: no method matching myfunc(::Float64, ::Int64)\n\n\u001b[0mClosest candidates are:\n\u001b[0m myfunc(::Number)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[8]:1\u001b[24m\u001b[39m\n", - "", - "Stacktrace:", - " [1] top-level scope", - " @ In[11]:1" - ] - } - ], - "source": [ - "myfunc(2.0, 3)" - ] - }, - { - "cell_type": "markdown", - "id": "113cf075", - "metadata": {}, - "source": [ - "Because all Julia functions are \"open\", even those provided by other packages, we can even define additional methods for existing (built-in) functions:" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "99614a12", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "MyStruct(4, 0)" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "struct MyStruct\n", - " a ::Int64\n", - " b ::Int64\n", - "end\n", - "\n", - "import Base.+ #necessary to let us modify this function\n", - "\n", - "function +(x::MyStruct, y::MyStruct) \n", - " MyStruct(x.a+y.a, x.b-y.b) \n", - "end\n", - "\n", - "MyStruct(2,3) + MyStruct(2,3)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8face1d9", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.9.2", - "language": "julia", - "name": "julia-1.9" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.9.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/julia-intro/docs/intro.md b/julia-intro/docs/00-intro.md similarity index 83% rename from julia-intro/docs/intro.md rename to julia-intro/docs/00-intro.md index 99b8ed3..e010760 100644 --- a/julia-intro/docs/intro.md +++ b/julia-intro/docs/00-intro.md @@ -2,7 +2,7 @@ This is a short introductory tutorial for the [Julia](https://julialang.org) programming language. -This tutorial is supported by the [HSF JuliaHEP](https://hepsoftwarefoundation.org/workinggroups/juliahep.html) team and currently it is maintained by [Sam Skipsey](https://github.com/aoanla) and [Graeme Stewart](https://github.com/graeme-a-stewart). +This tutorial is supported by the [HSF JuliaHEP](https://hepsoftwarefoundation.org/workinggroups/juliahep.html) team and currently it is maintained by [Sam Skipsey](https://github.com/aoanla), [Graeme Stewart](https://github.com/graeme-a-stewart), and [Anton Reinhard](https://github.com/AntonReinhard). This material is part of the [HSF Software Training Centre](https://hepsoftwarefoundation.org/training/curriculum.html), a series of training modules that serves HEP newcomers in learning the software skills they need as the enter the field and promotes best practice in writing software. diff --git a/julia-intro/docs/julia-intro-intro.ipynb b/julia-intro/docs/01-julia-intro-intro.ipynb similarity index 94% rename from julia-intro/docs/julia-intro-intro.ipynb rename to julia-intro/docs/01-julia-intro-intro.ipynb index e3bf955..f1db6a6 100644 --- a/julia-intro/docs/julia-intro-intro.ipynb +++ b/julia-intro/docs/01-julia-intro-intro.ipynb @@ -95,9 +95,8 @@ "verbosefunc (generic function with 1 method)" ] }, - "execution_count": 2, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -132,9 +131,8 @@ "go_faster (generic function with 1 method)" ] }, - "execution_count": 3, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -156,7 +154,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.090205 seconds (269.89 k allocations: 18.373 MiB, 99.97% compilation time)\n" + " 0.061545 seconds (348.80 k allocations: 17.468 MiB, 99.97% compilation time)\n" ] }, { @@ -175,9 +173,8 @@ " 18.0 28.0 38.0 48.0 58.0 68.0 78.0 88.0 98.0 108.0" ] }, - "execution_count": 4, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -203,7 +200,7 @@ "name": "stdout", "output_type": "stream", "text": [ - " 0.000011 seconds (1 allocation: 896 bytes)\n" + " 0.000004 seconds (2 allocations: 944 bytes)\n" ] }, { @@ -222,9 +219,8 @@ " 19.7616 29.7616 39.7616 49.7616 79.7616 89.7616 99.7616 109.762" ] }, - "execution_count": 5, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -243,15 +239,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/julia-intro-installation.ipynb b/julia-intro/docs/02-julia-intro-installation.ipynb similarity index 61% rename from julia-intro/docs/julia-intro-installation.ipynb rename to julia-intro/docs/02-julia-intro-installation.ipynb index 098f3f0..970245b 100644 --- a/julia-intro/docs/julia-intro-installation.ipynb +++ b/julia-intro/docs/02-julia-intro-installation.ipynb @@ -13,18 +13,29 @@ "source": [ "## Standard Installation\n", "\n", - "Installing Julia is very easy:\n", + "Installing Julia is very easy, as it comes with its own version manager `juliaup`:\n", "\n", - "- Go to the Julia [downloads](https://julialang.org/downloads/) page\n", - "- Pick the installer for your platform, use the *current stable release*\n", - "- Unpack/install locally" + "- Go to the Julia [install](https://julialang.org/install/) page\n", + "- Download and install `juliaup` for your platform (it can also be found in the Arch User Repository)\n", + "\n", + "Note: You can still download julia versions manually, but this is no longer recommended. tarballs can be found [here](https://julialang.org/downloads/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "N.B. If you installed a tarball, you might need to add Julia's `bin` directory to your `PATH`." + "## Using juliaup\n", + "\n", + "The usage is generally similar to and inspired by `rustup`:\n", + "\n", + "- Install a julia version: `juliaup add `, for example `lts`, `release`, `nightly`, or a specific version number\n", + "- List all available versions to install: `juliaup list`\n", + "- Set a default version: `juliaup default `\n", + "- Update installed versions: `juliaup up`\n", + "- Update juliaup itself: `juliaup self update`\n", + "\n", + "For the purpose of this tutorial, use `lts` (currently 1.10) or `release` (currently 1.11)." ] }, { @@ -33,6 +44,8 @@ "source": [ "## Running Julia\n", "\n", + "Running julia starts juliaup's default version:\n", + "\n", "```julia\n", "➜ ~ julia\n", " _\n", @@ -40,12 +53,14 @@ " (_) | (_) (_) |\n", " _ _ _| |_ __ _ | Type \"?\" for help, \"]?\" for Pkg help.\n", " | | | | | | |/ _` | |\n", - " | | |_| | | | (_| | | Version 1.9.3 (2023-08-24)\n", + " | | |_| | | | (_| | | Version 1.11.6 (2025-07-09)\n", " _/ |\\__'_|_|_|\\__'_| | Official https://julialang.org/ release\n", "|__/ |\n", "\n", - "julia>\n", - "```" + "julia> \n", + "```\n", + "\n", + "You can start a specific installed julia version using `julia +`" ] }, { @@ -119,46 +134,6 @@ "The answer is 385\n", "```" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Bonus Installation Method: `juliaup`\n", - "\n", - "Another way to manage a Julia install is with [Juliaup](https://github.com/JuliaLang/juliaup) - a Julia toolkit installation manager inspired by the excellent *Rustup* for the Rust programming language.\n", - "\n", - "Juliaup is available from the Windows App Store, if you're developing with a Microsoft system, or via direct installation script for MacOS and Linux distributions (see the link)\n", - "\n", - "Once installed, you can simply type in a terminal:\n", - "\n", - "```bash\n", - "juliaup list\n", - "```\n", - "\n", - "to show all the versions of Julia available.\n", - "\n", - "We will work with the latest `release` version on all platforms (1.9 as of writing) so simply type\n", - "\n", - "```bash\n", - "juliaup add release\n", - "```\n", - "\n", - "to set that up.\n", - "\n", - "The big bonus with `juliaup` is that you can easily have multiple Julia releases installed at once, and Juliaup will let you configure which is your default at any point in time.\n", - "\n", - "Keep juliaup updated with\n", - "\n", - "```bash\n", - "juliaup self update\n", - "```\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] } ], "metadata": { diff --git a/julia-intro/docs/julia-intro-syntax-operators-variables.ipynb b/julia-intro/docs/03-julia-intro-syntax-operators-variables.ipynb similarity index 93% rename from julia-intro/docs/julia-intro-syntax-operators-variables.ipynb rename to julia-intro/docs/03-julia-intro-syntax-operators-variables.ipynb index b386c3d..b4ea835 100644 --- a/julia-intro/docs/julia-intro-syntax-operators-variables.ipynb +++ b/julia-intro/docs/03-julia-intro-syntax-operators-variables.ipynb @@ -114,7 +114,7 @@ "| `~x` | bitwise not |\n", "| `x & y` | bitwise and |\n", "| `x \\| y` | bitwise or |\n", - "| `x ⊻ y` | bitwise xor (exclusive or) |" + "| `x ⊻ y` | bitwise xor (exclusive or) (can be typed using `\\xor`) |" ] }, { @@ -250,7 +250,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Julia also has a `===` comparison operator that is `true` when two objects are the same (not just the same value(s), but really the same object)" + "Julia also has a `===` comparison operator that is `true` when two objects are the same (not just the same value(s), but really the same object, \"no program could distinguish them\")" ] }, { @@ -288,7 +288,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Julia allows you to chain comparisons:" + "Julia allows you to chain comparisons, where `a op1 b op2 c` is equivalent to `a op1 b && b op2 c`, (including [short-circuit evaluation](https://en.wikipedia.org/wiki/Short-circuit_evaluation)):" ] }, { @@ -381,7 +381,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Julia will generally handle mixed type arithmetic smoothly and safely (this is done by *promoting* variables):" + "Julia will generally handle mixed type arithmetic smoothly and safely (this is done by [*promoting*](https://docs.julialang.org/en/v1/manual/conversion-and-promotion/#Promotion) variables):" ] }, { @@ -421,22 +421,22 @@ "outputs": [ { "ename": "InexactError", - "evalue": "InexactError: trunc(Int16, 12335124)", + "evalue": "InexactError: trunc(Int16, 0x0000000000bc3814)", "output_type": "error", "traceback": [ - "InexactError: trunc(Int16, 12335124)\n", + "InexactError: trunc(Int16, 0x0000000000bc3814)\n", "\n", "Stacktrace:\n", - " [1] throw_inexacterror(f::Symbol, #unused#::Type{Int16}, val::UInt64)\n", - " @ Core ./boot.jl:634\n", + " [1] throw_inexacterror(::Symbol, ::Vararg{Any})\n", + " @ Core ./boot.jl:750\n", " [2] checked_trunc_sint\n", - " @ ./boot.jl:656 [inlined]\n", + " @ ./boot.jl:764 [inlined]\n", " [3] toInt16\n", - " @ ./boot.jl:687 [inlined]\n", + " @ ./boot.jl:795 [inlined]\n", " [4] Int16(x::UInt64)\n", - " @ Core ./boot.jl:782\n", + " @ Core ./boot.jl:890\n", " [5] top-level scope\n", - " @ ~/docs/JuliaHEP-2023/julia-intro/docs/julia-intro-syntax-operators-variables.ipynb:1" + " @ ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_X41sZmlsZQ==.jl:1" ] } ], @@ -511,11 +511,11 @@ "\n", "Stacktrace:\n", " [1] Int64\n", - " @ ./float.jl:900 [inlined]\n", - " [2] convert(#unused#::Type{Int64}, x::Float64)\n", + " @ ./float.jl:994 [inlined]\n", + " [2] convert(::Type{Int64}, x::Float64)\n", " @ Base ./number.jl:7\n", " [3] top-level scope\n", - " @ ~/docs/JuliaHEP-2023/julia-intro/docs/julia-intro-syntax-operators-variables.ipynb:1" + " @ ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_X45sZmlsZQ==.jl:1" ] } ], @@ -730,7 +730,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -764,7 +764,7 @@ "\n", "@show haskey(farmyard_sounds,\"pig\")\n", "\n", - "@show farmyard_sounds[\"🐱\"] = \"Meow\" ;\n", + "@show farmyard_sounds[\"🐱\"] = \"Meow\"\n", "\n", "farmyard_sounds" ] @@ -843,15 +843,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/julia-intro-arrays.ipynb b/julia-intro/docs/04-julia-intro-arrays.ipynb similarity index 89% rename from julia-intro/docs/julia-intro-arrays.ipynb rename to julia-intro/docs/04-julia-intro-arrays.ipynb index f9b2667..a2aa8a9 100644 --- a/julia-intro/docs/julia-intro-arrays.ipynb +++ b/julia-intro/docs/04-julia-intro-arrays.ipynb @@ -16,11 +16,7 @@ { "cell_type": "code", "execution_count": 1, - "metadata": { - "vscode": { - "languageId": "julia" - } - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -58,11 +54,7 @@ { "cell_type": "code", "execution_count": 2, - "metadata": { - "vscode": { - "languageId": "julia" - } - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -97,11 +89,7 @@ { "cell_type": "code", "execution_count": 3, - "metadata": { - "vscode": { - "languageId": "julia" - } - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -116,9 +104,8 @@ "\"The top-left element of reflection is 1 or 1\"" ] }, - "execution_count": 3, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -137,11 +124,7 @@ { "cell_type": "code", "execution_count": 4, - "metadata": { - "vscode": { - "languageId": "julia" - } - }, + "metadata": {}, "outputs": [ { "data": { @@ -156,9 +139,8 @@ " 3 1" ] }, - "execution_count": 4, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -175,11 +157,7 @@ { "cell_type": "code", "execution_count": 5, - "metadata": { - "vscode": { - "languageId": "julia" - } - }, + "metadata": {}, "outputs": [ { "data": { @@ -198,9 +176,8 @@ " 4 28 244" ] }, - "execution_count": 5, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -219,11 +196,7 @@ { "cell_type": "code", "execution_count": 6, - "metadata": { - "vscode": { - "languageId": "julia" - } - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -240,9 +213,8 @@ " 1 3" ] }, - "execution_count": 6, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -265,11 +237,7 @@ { "cell_type": "code", "execution_count": 7, - "metadata": { - "vscode": { - "languageId": "julia" - } - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -284,9 +252,8 @@ "243" ] }, - "execution_count": 7, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -315,11 +282,7 @@ { "cell_type": "code", "execution_count": 8, - "metadata": { - "vscode": { - "languageId": "julia" - } - }, + "metadata": {}, "outputs": [ { "name": "stdout", @@ -335,9 +298,8 @@ "88" ] }, - "execution_count": 8, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -356,15 +318,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/julia-intro-syntax-fn-control.ipynb b/julia-intro/docs/05-julia-intro-syntax-fn-control.ipynb similarity index 88% rename from julia-intro/docs/julia-intro-syntax-fn-control.ipynb rename to julia-intro/docs/05-julia-intro-syntax-fn-control.ipynb index 0acb6c6..29debf0 100644 --- a/julia-intro/docs/julia-intro-syntax-fn-control.ipynb +++ b/julia-intro/docs/05-julia-intro-syntax-fn-control.ipynb @@ -110,12 +110,12 @@ "### Function Documentation\n", "\n", "A string directly before a function definition is interpreted by Julia as \"documentation\" for the function.\n", - "The `?` operator will display the doc strings for a function, amongst other things (? also provides help for expressions and other constructs). All of the Julia standard library functions have docstrings." + "The `?` symbol turns the REPL into help mode. `?foo` will display the doc strings for the given function, amongst other things (? also provides help for expressions and other constructs). All of the Julia standard library functions have docstrings. To return from the REPL help mode, press backspace." ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -131,7 +131,8 @@ "source": [ "\"\"\"\n", " adder(a, b)\n", - " This function adds `a` and `b`\n", + "\n", + "This function adds `a` and `b`\n", "\"\"\"\n", "function adder(a, b)\n", " a+b\n", @@ -140,22 +141,9 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "ename": "ErrorException", - "evalue": "syntax: invalid identifier name \"?\"", - "output_type": "error", - "traceback": [ - "syntax: invalid identifier name \"?\"\n", - "\n", - "Stacktrace:\n", - " [1] top-level scope\n", - " @ ~/docs/JuliaHEP-2023/julia-intro/docs/julia-intro-syntax-fn-control.ipynb:1" - ] - } - ], + "outputs": [], "source": [ "?adder" ] @@ -258,7 +246,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Which is not too useful like that, but comes into its own when used with something like `map`:" + "Which is not too useful like that, but comes into its own when used with higher-order functions like `map`:" ] }, { @@ -296,7 +284,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 26, "metadata": {}, "outputs": [ { @@ -318,14 +306,14 @@ " elseif a == b\n", " println(\"$a is equal to $b\")\n", " else\n", - " println(\"I have no idea about $a and $b!\")\n", + " println(\"I have no idea about $a and $(b)!\")\n", " end\n", "end" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 28, "metadata": {}, "outputs": [ { @@ -357,6 +345,13 @@ "gtlteq(\"apples\", \"oranges\")" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bonus question: Can you think of inputs to `gtlteq` that result in the `else`-branch?" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -465,7 +460,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The syntax is `a ? b : c` meaning *if `a`, evaluate `b`, else evaluate `c`*. " + "The syntax is `a ? b : c` meaning *if `a`, evaluate `b`, else evaluate `c`*.\n", + "\n", + "Since every `if ... else ... end` expression in julia can also return things, ternary operators are semantically equivalent to if/else." ] }, { @@ -563,7 +560,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A more novel feature: `for` will also naturally form the outer product of a comma-separated set of iterators provided to them, without the need for \"nesting\" of loops. (This also applies to the `for` in comprehensions, so you can easily make multi-dimensional arrays with a chain of iterators if you want all the combinations that result as elements.)" + "`for` will also naturally form the outer product of a comma-separated set of iterators provided to them, without the need for \"nesting\" of loops. (This also applies to the `for` in comprehensions, so you can easily make multi-dimensional arrays with a chain of iterators if you want all the combinations that result as elements.)" ] }, { @@ -636,19 +633,26 @@ "end\n", "println(\"blast off!\")" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that a `do-while` loop does not exist." + ] } ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/julia-intro-anonymous-and-do-block.ipynb b/julia-intro/docs/06-julia-intro-anonymous-and-do-block.ipynb similarity index 92% rename from julia-intro/docs/julia-intro-anonymous-and-do-block.ipynb rename to julia-intro/docs/06-julia-intro-anonymous-and-do-block.ipynb index a7bf081..7c10c27 100644 --- a/julia-intro/docs/julia-intro-anonymous-and-do-block.ipynb +++ b/julia-intro/docs/06-julia-intro-anonymous-and-do-block.ipynb @@ -50,9 +50,8 @@ " -2" ] }, - "execution_count": 1, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -82,9 +81,8 @@ " -2" ] }, - "execution_count": 2, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -125,9 +123,8 @@ " 1.0" ] }, - "execution_count": 3, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -167,9 +164,8 @@ " 1.0" ] }, - "execution_count": 4, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -198,27 +194,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "open(\"somefile.txt\", write=true) do io\n", " write(io, \"I added this line!\\n\")\n", - "end" + "end;" ] } ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/julia-intro-multiple-dispatch.ipynb b/julia-intro/docs/07-julia-intro-multiple-dispatch.ipynb similarity index 74% rename from julia-intro/docs/julia-intro-multiple-dispatch.ipynb rename to julia-intro/docs/07-julia-intro-multiple-dispatch.ipynb index f612142..649f1ad 100644 --- a/julia-intro/docs/julia-intro-multiple-dispatch.ipynb +++ b/julia-intro/docs/07-julia-intro-multiple-dispatch.ipynb @@ -45,9 +45,8 @@ "30" ] }, - "execution_count": 1, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -72,15 +71,21 @@ }, "outputs": [ { - "ename": "LoadError", - "evalue": "MethodError: no method matching multiply(::Float64, ::Int64)\n\n\u001b[0mClosest candidates are:\n\u001b[0m multiply(\u001b[91m::Int64\u001b[39m, ::Int64)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[1]:1\u001b[24m\u001b[39m\n", + "ename": "MethodError", + "evalue": "MethodError: no method matching multiply(::Float64, ::Int64)\nThe function `multiply` exists, but no method is defined for this combination of argument types.\n\nClosest candidates are:\n multiply(!Matched::Int64, ::Int64)\n @ Main ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_W2sZmlsZQ==.jl:1\n", "output_type": "error", "traceback": [ - "MethodError: no method matching multiply(::Float64, ::Int64)\n\n\u001b[0mClosest candidates are:\n\u001b[0m multiply(\u001b[91m::Int64\u001b[39m, ::Int64)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[1]:1\u001b[24m\u001b[39m\n", - "", - "Stacktrace:", - " [1] top-level scope", - " @ In[2]:1" + "MethodError: no method matching multiply(::Float64, ::Int64)\n", + "The function `multiply` exists, but no method is defined for this combination of argument types.\n", + "\n", + "Closest candidates are:\n", + " multiply(!Matched::Int64, ::Int64)\n", + " @ Main ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_W2sZmlsZQ==.jl:1\n", + "\n", + "\n", + "Stacktrace:\n", + " [1] top-level scope\n", + " @ ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_W3sZmlsZQ==.jl:1" ] } ], @@ -122,16 +127,14 @@ "multiply (generic function with 2 methods)" ] }, - "execution_count": 3, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ "function multiply(x ::Float64, y ::Int64)\n", " x*y + 1 \n", - "end\n", - "\n" + "end" ] }, { @@ -156,13 +159,12 @@ "12.0" ] }, - "execution_count": 4, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "multiply(5.5, 2) #Float64, Int64\n" + "multiply(5.5, 2) #Float64, Int64" ] }, { @@ -177,9 +179,8 @@ "30" ] }, - "execution_count": 5, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -206,9 +207,8 @@ "multiply (generic function with 3 methods)" ] }, - "execution_count": 6, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -229,9 +229,8 @@ "12.0" ] }, - "execution_count": 7, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -243,7 +242,7 @@ "id": "b945398b", "metadata": {}, "source": [ - "Julia's type system is hierarchical, so we can also specify the domain of a method via higher-order types (for example, that a function works only on `Numbers` - which `Ints` and `Floats` are both members of - via):" + "Julia's type system is hierarchical, so we can also specify the domain of a method via higher-order types (for example, that a function works only on `Numbers` - which `Ints` and `Floats` are both descendants of - via):" ] }, { @@ -282,15 +281,21 @@ }, "outputs": [ { - "ename": "LoadError", - "evalue": "MethodError: no method matching myfunc(::String)\n\n\u001b[0mClosest candidates are:\n\u001b[0m myfunc(\u001b[91m::Number\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[8]:1\u001b[24m\u001b[39m\n", + "ename": "MethodError", + "evalue": "MethodError: no method matching myfunc(::String)\nThe function `myfunc` exists, but no method is defined for this combination of argument types.\n\nClosest candidates are:\n myfunc(!Matched::Number)\n @ Main ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_X16sZmlsZQ==.jl:1\n", "output_type": "error", "traceback": [ - "MethodError: no method matching myfunc(::String)\n\n\u001b[0mClosest candidates are:\n\u001b[0m myfunc(\u001b[91m::Number\u001b[39m)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[8]:1\u001b[24m\u001b[39m\n", - "", - "Stacktrace:", - " [1] top-level scope", - " @ In[9]:1" + "MethodError: no method matching myfunc(::String)\n", + "The function `myfunc` exists, but no method is defined for this combination of argument types.\n", + "\n", + "Closest candidates are:\n", + " myfunc(!Matched::Number)\n", + " @ Main ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_X16sZmlsZQ==.jl:1\n", + "\n", + "\n", + "Stacktrace:\n", + " [1] top-level scope\n", + " @ ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_X20sZmlsZQ==.jl:1" ] } ], @@ -320,9 +325,8 @@ "5" ] }, - "execution_count": 10, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -344,15 +348,21 @@ }, "outputs": [ { - "ename": "LoadError", - "evalue": "MethodError: no method matching myfunc(::Float64, ::Int64)\n\n\u001b[0mClosest candidates are:\n\u001b[0m myfunc(::Number)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[8]:1\u001b[24m\u001b[39m\n", + "ename": "MethodError", + "evalue": "MethodError: no method matching myfunc(::Float64, ::Int64)\nThe function `myfunc` exists, but no method is defined for this combination of argument types.\n\nClosest candidates are:\n myfunc(::Number)\n @ Main ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_X16sZmlsZQ==.jl:1\n", "output_type": "error", "traceback": [ - "MethodError: no method matching myfunc(::Float64, ::Int64)\n\n\u001b[0mClosest candidates are:\n\u001b[0m myfunc(::Number)\n\u001b[0m\u001b[90m @\u001b[39m \u001b[35mMain\u001b[39m \u001b[90m\u001b[4mIn[8]:1\u001b[24m\u001b[39m\n", - "", - "Stacktrace:", - " [1] top-level scope", - " @ In[11]:1" + "MethodError: no method matching myfunc(::Float64, ::Int64)\n", + "The function `myfunc` exists, but no method is defined for this combination of argument types.\n", + "\n", + "Closest candidates are:\n", + " myfunc(::Number)\n", + " @ Main ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_X16sZmlsZQ==.jl:1\n", + "\n", + "\n", + "Stacktrace:\n", + " [1] top-level scope\n", + " @ ~/repos/hep-tutorial/julia-intro/docs/jl_notebook_cell_df34fa98e69747e1a8f8a730347b8e2f_X23sZmlsZQ==.jl:1" ] } ], @@ -380,9 +390,8 @@ "RelativisticSpeed(0.994475138121547)" ] }, - "execution_count": 12, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ @@ -410,15 +419,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/julia-intro-broadcasting.ipynb b/julia-intro/docs/08-julia-intro-broadcasting.ipynb similarity index 98% rename from julia-intro/docs/julia-intro-broadcasting.ipynb rename to julia-intro/docs/08-julia-intro-broadcasting.ipynb index 3b4d71e..e3e39ad 100644 --- a/julia-intro/docs/julia-intro-broadcasting.ipynb +++ b/julia-intro/docs/08-julia-intro-broadcasting.ipynb @@ -165,29 +165,6 @@ { "cell_type": "code", "execution_count": 5, - "id": "83de7925", - "metadata": {}, - "outputs": [ - { - "ename": "ErrorException", - "evalue": "syntax: invalid identifier name \"?\"", - "output_type": "error", - "traceback": [ - "syntax: invalid identifier name \"?\"\n", - "\n", - "Stacktrace:\n", - " [1] top-level scope\n", - " @ ~/docs/JuliaHEP-2023/julia-intro/docs/julia-intro-broadcasting.ipynb:1" - ] - } - ], - "source": [ - "?iseven #demonstrate how the online docs work" - ] - }, - { - "cell_type": "code", - "execution_count": 6, "id": "9f476631", "metadata": {}, "outputs": [ @@ -221,7 +198,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "8925c30a", "metadata": {}, "outputs": [], @@ -239,7 +216,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "id": "97dd700d", "metadata": {}, "outputs": [ @@ -274,12 +251,12 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "id": "8cb1a753", "metadata": {}, "outputs": [], "source": [ - "argand = [ (i+j*1im) / 100 for i in -200:200, j in -200:200 ] ;\n" + "argand = [ (i+j*1im) / 100 for i in -200:200, j in -200:200 ] ;" ] }, { @@ -292,15 +269,15 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "id": "e72a4e03-0d39-4885-aa2a-bbf889ff3786", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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", "text/html": [ - "" + "" ], "text/plain": [ "\u001b[0m\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;233m▀\u001b[38;5;232;48;5;233m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[38;5;232;48;5;232m▀\u001b[0m\n", @@ -335,14 +312,14 @@ "\n", "In other words: `@. f(g(h(xs)))` is not going to allocate `hs = h.(xs)` then `gs = g.(hs)` and so on, instead it only allocate once for the final product.\n", "\n", - "This is possible because broadcast operation (`.`) is part of the Julia syntax and handled differently, user can also customize broadcasting behavior of their own data types.\n", + "This is possible because the broadcast operation (`.`) is part of the Julia syntax and handled differently, users can also customize broadcasting behavior of their own data types.\n", "\n", "Julia's code introspection tools - which we're just demonstrating here so you know they exist - also demonstrate this. Here, we're using the `@code_lowered` macro to show what Julia's interpretation of a chain of broadcasted operations is:" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "4548b1d9", "metadata": {}, "outputs": [ @@ -381,15 +358,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/julia-intro-julia-community.ipynb b/julia-intro/docs/09-julia-intro-julia-community.ipynb similarity index 95% rename from julia-intro/docs/julia-intro-julia-community.ipynb rename to julia-intro/docs/09-julia-intro-julia-community.ipynb index 1100b49..08eb598 100644 --- a/julia-intro/docs/julia-intro-julia-community.ipynb +++ b/julia-intro/docs/09-julia-intro-julia-community.ipynb @@ -41,9 +41,9 @@ "It's probably best to think of Pkg as similar to Cargo for Rust: it doesn't just manage packages for your general Julia installation, it also manages the environment for a Julia project.\n", "\n", "The `activate` verb, with a directory path, causes Pkg to consider that directory as the root of a project or package, and manage packages relative to that.\n", - "Any package will have a \"Project.toml\" file which represents the dependencies and metadata for the project, which Pkg creates, as well as a \"Manifest.toml\" which represents the precise state of all packages installed (version and hashes), including dependencies of dependencies. \n", + "Any package will have a \"Project.toml\" file which represents the dependencies and metadata for the project, which Pkg creates, as well as a \"Manifest.toml\" which represents the precise state of all packages installed (version and hashes), including dependencies of dependencies. This file is commonly *not* checked into repositories, since the actually installed packages can differ depending on a user's environment.\n", "\n", - "You will see that this repository has such files, showing the packages we need to import for the examples.\n", + "You will see that this repository has Project.toml, showing the packages we need to import for the examples.\n", "\n", "\n", "### The Pkg \"environment\"\n", @@ -61,7 +61,7 @@ "is the same as\n", "\n", "```\n", - " add foo\n", + " Pkg> add foo\n", "```\n", "\n", "within the Pkg sub environment.\n", diff --git a/julia-intro/docs/julia-intro-plots.ipynb b/julia-intro/docs/10-julia-intro-plots.ipynb similarity index 100% rename from julia-intro/docs/julia-intro-plots.ipynb rename to julia-intro/docs/10-julia-intro-plots.ipynb diff --git a/julia-intro/docs/julia-intro-dataframes.ipynb b/julia-intro/docs/11-julia-intro-dataframes.ipynb similarity index 99% rename from julia-intro/docs/julia-intro-dataframes.ipynb rename to julia-intro/docs/11-julia-intro-dataframes.ipynb index a29ece2..1fa273d 100644 --- a/julia-intro/docs/julia-intro-dataframes.ipynb +++ b/julia-intro/docs/11-julia-intro-dataframes.ipynb @@ -20,19 +20,19 @@ "By now installing a new package in Julia should be something you know how to do, but for reference:\n", "\n", "```julia\n", - " ➜ JuliaHEP-2023 git:(main) julia --project=.\n", + " ➜ hep-tutorial git:(main) julia --project\n", " _\n", " _ _ _(_)_ | Documentation: https://docs.julialang.org\n", " (_) | (_) (_) |\n", " _ _ _| |_ __ _ | Type \"?\" for help, \"]?\" for Pkg help.\n", " | | | | | | |/ _` | |\n", - " | | |_| | | | (_| | | Version 1.9.3 (2023-08-24)\n", + " | | |_| | | | (_| | | Version 1.11.6 (2025-07-09)\n", " _/ |\\__'_|_|_|\\__'_| | Official https://julialang.org/ release\n", "|__/ |\n", "\n", "## At the julia> prompt type `]`\n", "\n", - "(JuliaHEP-2023) pkg> add DataFrames\n", + "(hep-tutorial) pkg> add DataFrames\n", "...\n", "```\n", "\n", diff --git a/julia-intro/docs/_config.yml b/julia-intro/docs/_config.yml index df00da3..14d5aba 100644 --- a/julia-intro/docs/_config.yml +++ b/julia-intro/docs/_config.yml @@ -3,7 +3,7 @@ title: Introduction to Julia author: Graeme A Stewart, Samuel Skipsey -copyright: "CERN, The Contributors 2023" +copyright: "CERN, The Contributors 2025" logo: images/juliaheplogo.png # Force re-execution of notebooks on each build. @@ -22,7 +22,7 @@ bibtex_bibfiles: # Information about where the book exists on the web repository: - url: https://github.com/JuliaHEP/JuliaHEP-2023 # Online location of your book + url: https://github.com/JuliaHEP/Hands-on-Julia-for-particle-physicists # Online location of your book path_to_book: julia-intro/docs # Optional path to your book, relative to the repository root branch: main # Which branch of the repository should be used when creating links (optional) diff --git a/julia-intro/docs/_toc.yml b/julia-intro/docs/_toc.yml index 9374805..a1b8815 100644 --- a/julia-intro/docs/_toc.yml +++ b/julia-intro/docs/_toc.yml @@ -2,23 +2,23 @@ # Learn more at https://jupyterbook.org/customize/toc.html format: jb-book -root: intro +root: 00-intro parts: - caption: Introduction to Julia chapters: - - file: julia-intro-intro - - file: julia-intro-installation - - file: julia-intro-syntax-operators-variables - - file: julia-intro-arrays - - file: julia-intro-syntax-fn-control - - file: julia-intro-anonymous-and-do-block - - file: julia-intro-multiple-dispatch - - file: julia-intro-broadcasting - - file: julia-intro-julia-community + - file: 01-julia-intro-intro + - file: 02-julia-intro-installation + - file: 03-julia-intro-syntax-operators-variables + - file: 04-julia-intro-arrays + - file: 05-julia-intro-syntax-fn-control + - file: 06-julia-intro-anonymous-and-do-block + - file: 07-julia-intro-multiple-dispatch + - file: 08-julia-intro-broadcasting + - file: 09-julia-intro-julia-community - caption: Additional Topics chapters: - - file: julia-intro-plots - - file: julia-intro-dataframes + - file: 10-julia-intro-plots + - file: 11-julia-intro-dataframes - caption: Exercises chapters: - file: exercises/install diff --git a/julia-intro/docs/exercises/dataframes.md b/julia-intro/docs/exercises/dataframes.md index 2bc06de..3f8ac86 100644 --- a/julia-intro/docs/exercises/dataframes.md +++ b/julia-intro/docs/exercises/dataframes.md @@ -4,7 +4,7 @@ You can do this exercise in a notebook or as a script (or even in the REPL!). ## Load and Clean-up a DataFrame -Open the reduced Higgs ML dataset, that you will find in the `assets` area of this tutorial, if you cloned it or are running via Binder (or you can get it [here](https://github.com/JuliaHEP/JuliaHEP-2023/raw/main/julia-intro/docs/assets/atlas-higgs-challenge-2014-v2-reduced.csv)). +Open the reduced Higgs ML dataset, that you will find in the `assets` area of this tutorial, if you cloned it or are running via Binder (or you can get it [here](https://github.com/JuliaHEP/Hands-on-Julia-for-particle-physicists/raw/main/julia-intro/docs/assets/atlas-higgs-challenge-2014-v2-reduced.csv)). N.B. To understand the structure of the data, have a look at the [Higgs ML Website](https://higgsml.ijclab.in2p3.fr) and the [CERN Opendata Portal](https://opendata.cern.ch/record/328). diff --git a/julia-intro/docs/exercises/install.md b/julia-intro/docs/exercises/install.md index 81b69b7..d404d62 100644 --- a/julia-intro/docs/exercises/install.md +++ b/julia-intro/docs/exercises/install.md @@ -2,23 +2,21 @@ ## Installing Julia -If you haven't already done so, visit the Julia [downloads](https://julialang.org/downloads/) page +If you haven't already done so, visit the Julia [install](https://julialang.org/install/) page and download `juliaup` for your platform. -- Pick the installer for your platform, use the *current stable release* -- Unpack/install locally - -If you installed a tarball release, you may need to add the location of the Julia `bin` directory to your `PATH` +Once `juliaup` is installed, install a julia version using `juliaup add release` (or use a different version like `lts` instead of `release`). ## Run Julia Check that when you execute `julia` the REPL starts, like this: ``` + _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | - | | |_| | | | (_| | | Version 1.9.3 (2023-08-24) + | | |_| | | | (_| | | Version 1.11.6 (2025-07-09) _/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release |__/ | diff --git a/julia-intro/docs/exercises/juliafunctions-solution.ipynb b/julia-intro/docs/exercises/juliafunctions-solution.ipynb index f7dc433..c0c4057 100644 --- a/julia-intro/docs/exercises/juliafunctions-solution.ipynb +++ b/julia-intro/docs/exercises/juliafunctions-solution.ipynb @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "6d3c2234", "metadata": {}, "outputs": [ @@ -31,7 +31,7 @@ "nrsδ(x, f, f′) = - f(x) / f′(x)\n", "\n", "F(x) = x^3 - 8\n", - "dF(x) = 3x^2\n" + "dF(x) = 3x^2" ] }, { @@ -124,7 +124,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "78978aa3", "metadata": {}, "outputs": [ @@ -160,7 +160,7 @@ " count += 1\n", " end\n", " xs\n", - "end \n" + "end " ] }, { @@ -929,7 +929,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "dab3ac62", "metadata": {}, "outputs": [ @@ -971,7 +971,7 @@ " count += 1\n", " end\n", " xs\n", - "end " + "end" ] } ], From e3aa3c58ff82e52483b889ec3c8627b2c0fd9b16 Mon Sep 17 00:00:00 2001 From: AntonReinhard Date: Thu, 24 Jul 2025 14:53:32 +0200 Subject: [PATCH 2/3] Use julia 1.11 in workflow --- .github/workflows/jupyterbook.yml | 2 +- RESOURCES.md | 2 +- julia-intro/docs/02-julia-intro-installation.ipynb | 9 ++++++--- julia-intro/docs/09-julia-intro-julia-community.ipynb | 6 +++--- julia-intro/docs/10-julia-intro-plots.ipynb | 6 +++--- julia-intro/docs/11-julia-intro-dataframes.ipynb | 6 +++--- julia-intro/docs/exercises/dataframes-solution.ipynb | 6 +++--- julia-intro/docs/exercises/juliafunctions-solution.ipynb | 6 +++--- 8 files changed, 23 insertions(+), 20 deletions(-) diff --git a/.github/workflows/jupyterbook.yml b/.github/workflows/jupyterbook.yml index 0037cfc..d436a87 100644 --- a/.github/workflows/jupyterbook.yml +++ b/.github/workflows/jupyterbook.yml @@ -29,7 +29,7 @@ jobs: - name: Set up Julia uses: julia-actions/setup-julia@v1 with: - version: '1.9' + version: '1.11' - uses: julia-actions/cache@v1 - uses: julia-actions/julia-buildpkg@v1 diff --git a/RESOURCES.md b/RESOURCES.md index 5ca1448..185474d 100644 --- a/RESOURCES.md +++ b/RESOURCES.md @@ -24,7 +24,7 @@ concepts. | Introducing Julia| wikibook | website | [link](https://en.wikibooks.org/wiki/Introducing_Julia) | | Julia X in Y| one-file tutorial* | website | [link](https://learnxinyminutes.com/docs/julia/) | -(*) The used Julia version is somewhat outdated, but the concepts presented there are really close in v1.9 (the current stable). +(*) The used Julia version is somewhat outdated, but the basic concepts are still the same. ## Special topics diff --git a/julia-intro/docs/02-julia-intro-installation.ipynb b/julia-intro/docs/02-julia-intro-installation.ipynb index 970245b..14e0058 100644 --- a/julia-intro/docs/02-julia-intro-installation.ipynb +++ b/julia-intro/docs/02-julia-intro-installation.ipynb @@ -138,12 +138,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { - "name": "julia" + "file_extension": ".jl", + "mimetype": "application/julia", + "name": "julia", + "version": "1.11.6" }, "orig_nbformat": 4 }, diff --git a/julia-intro/docs/09-julia-intro-julia-community.ipynb b/julia-intro/docs/09-julia-intro-julia-community.ipynb index 08eb598..d4fc8de 100644 --- a/julia-intro/docs/09-julia-intro-julia-community.ipynb +++ b/julia-intro/docs/09-julia-intro-julia-community.ipynb @@ -148,15 +148,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/10-julia-intro-plots.ipynb b/julia-intro/docs/10-julia-intro-plots.ipynb index 331ac67..55d968f 100644 --- a/julia-intro/docs/10-julia-intro-plots.ipynb +++ b/julia-intro/docs/10-julia-intro-plots.ipynb @@ -12991,15 +12991,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/11-julia-intro-dataframes.ipynb b/julia-intro/docs/11-julia-intro-dataframes.ipynb index 1fa273d..4c39e84 100644 --- a/julia-intro/docs/11-julia-intro-dataframes.ipynb +++ b/julia-intro/docs/11-julia-intro-dataframes.ipynb @@ -9706,15 +9706,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/exercises/dataframes-solution.ipynb b/julia-intro/docs/exercises/dataframes-solution.ipynb index bf742a4..9efa315 100644 --- a/julia-intro/docs/exercises/dataframes-solution.ipynb +++ b/julia-intro/docs/exercises/dataframes-solution.ipynb @@ -109164,15 +109164,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, diff --git a/julia-intro/docs/exercises/juliafunctions-solution.ipynb b/julia-intro/docs/exercises/juliafunctions-solution.ipynb index c0c4057..dc713a6 100644 --- a/julia-intro/docs/exercises/juliafunctions-solution.ipynb +++ b/julia-intro/docs/exercises/juliafunctions-solution.ipynb @@ -977,15 +977,15 @@ ], "metadata": { "kernelspec": { - "display_name": "Julia 1.9.3", + "display_name": "Julia 1.11.6", "language": "julia", - "name": "julia-1.9" + "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", - "version": "1.9.3" + "version": "1.11.6" } }, "nbformat": 4, From 6e0380713f8d6a2cba195b882ecd130ff4862493 Mon Sep 17 00:00:00 2001 From: AntonReinhard Date: Fri, 25 Jul 2025 16:15:44 +0200 Subject: [PATCH 3/3] Update copyright years --- README.md | 2 +- julia-intro/README.md | 2 +- julia-intro/docs/_config.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c6309c6..4c60e8b 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,6 @@ Follow the tutorial with Binder: - - - When not taken from other sources (with its own Copyright and License), this material is: -Copyright © 2025 CERN and the authors / contributors. +Copyright © 2023-2025 CERN and the authors / contributors. Licensed under [CC-BY-4.0](./LICENSE). diff --git a/julia-intro/README.md b/julia-intro/README.md index 53bee2c..5db3009 100644 --- a/julia-intro/README.md +++ b/julia-intro/README.md @@ -6,4 +6,4 @@ The set of notebooks can also be processed by [Jupyter Book](https://jupyterbook - The `environment.yaml` file can be used by conda/mamba to setup the appropriate set of Python packages to do this. -Licenced CC-BY-4.0, Copyright © 2023 Sam Skipsey, CERN and other contributors +Licenced CC-BY-4.0, Copyright © 2023-2025 Sam Skipsey, CERN and other contributors diff --git a/julia-intro/docs/_config.yml b/julia-intro/docs/_config.yml index 14d5aba..44f14eb 100644 --- a/julia-intro/docs/_config.yml +++ b/julia-intro/docs/_config.yml @@ -3,7 +3,7 @@ title: Introduction to Julia author: Graeme A Stewart, Samuel Skipsey -copyright: "CERN, The Contributors 2025" +copyright: "CERN, The Contributors 2023-2025" logo: images/juliaheplogo.png # Force re-execution of notebooks on each build.