diff --git a/DDDFunctions/Big2SmallLambda.jl b/DDDFunctions/Big2SmallLambda.jl index 28dd01e..fb1ccea 100644 --- a/DDDFunctions/Big2SmallLambda.jl +++ b/DDDFunctions/Big2SmallLambda.jl @@ -136,11 +136,9 @@ for lag in 1:10 #Loop for 10 Layers end #loop for levels #Estimate parameters for trlam (lambda) -dx = trlam -dy = arg - @.modelgamma(x,p) = quantile(Gamma(p[1],p[2]),x) - p0=[GshInt*0.5, 2*GscInt] - gammafit = curve_fit(modelgamma,dy, dx , p0) +modelgamma(x, p) = quantile.(Gamma(p[1], p[2]), x) +gammafit = curve_fit(modelgamma, arg, trlam, [GshInt*0.5, 2*GscInt], + autodiff=AutoFiniteDiff(fdjtype=Val(:central))) #using Plots #plot(quantile.(Gamma(coef(gammafit)[1],coef(gammafit)[2]),dy),dy) diff --git a/DDDFunctions/DDDAllTerrain22012024.jl b/DDDFunctions/DDDAllTerrain22012024.jl index 96abbbe..ab76eff 100644 --- a/DDDFunctions/DDDAllTerrain22012024.jl +++ b/DDDFunctions/DDDAllTerrain22012024.jl @@ -83,8 +83,21 @@ include("KGE_ths.jl") function DDDAllTerrain(Gpar::Vector{Float64}, startsim::Int, tprm::Vector{Float64}, prm::DataFrame, ptqfile::String, utfile::String, r2fil::String, modstate::Int, savestate::Int, kal::Int, spinuptime::Int, silent::Bool=false) + # Read input file (ptq): time steps and elevation zones + ptqinn = loadPTQ(ptqfile) + # Run DDD + ddd(ptqinn, startsim, tprm, prm[:,"val"], utfile, r2fil, modstate, savestate, kal, spinuptime, silent) +end + + +function loadPTQ(path::String) + CSV.read(path, DataFrame, header=["yr","mnt","day","hr","min","p01","p02","p03","p04","p05","p06","p07","p08","p09","p10", + "t01","t02","t03","t04","t05","t06","t07","t08","t09","t10","q"]) +end + -# TO DO: remove Gpar argument which is not used +function ddd(ptqinn::DataFrame, startsim::Int, tprm::Vector{Float64}, prm::Vector{Float64}, + utfile::String, r2fil::String, modstate::Int, savestate::Int, kal::Int, spinuptime::Int, silent::Bool) DDA = 6 # number of landscape types with distance distribution # DDA=1 Permeable (P) areas # DDA=2 ImPermeable (IP) areas @@ -174,81 +187,81 @@ hfelt = zeros(10) ########################Reading parameters######################################################### #Hyposgraphic curve and locations -hfelt[1] = prm.val[5]+(prm.val[6]-prm.val[5])/2.0 -hfelt[2] = prm.val[6]+(prm.val[7]-prm.val[6])/2.0 -hfelt[3] = prm.val[7]+(prm.val[8]-prm.val[7])/2.0 -hfelt[4] = prm.val[8]+(prm.val[9]-prm.val[8])/2.0 -hfelt[5] = prm.val[9]+(prm.val[10]-prm.val[9])/2.0 -hfelt[6] = prm.val[10]+(prm.val[11]-prm.val[10])/2.0 -hfelt[7] = prm.val[11]+(prm.val[12]-prm.val[11])/2.0 -hfelt[8] = prm.val[12]+(prm.val[13]-prm.val[12])/2.0 -hfelt[9] = prm.val[13]+(prm.val[14]-prm.val[13])/2.0 -hfelt[10] = prm.val[14]+(prm.val[15]-prm.val[14])/2.0 - -phi = prm.val[16]*pi/180 #converts Lat degrees to radians lat -thi = prm.val[17]*pi/180 #converts Lon degrees to radians Lon +hfelt[1] = prm[5]+(prm[6]-prm[5])/2.0 +hfelt[2] = prm[6]+(prm[7]-prm[6])/2.0 +hfelt[3] = prm[7]+(prm[8]-prm[7])/2.0 +hfelt[4] = prm[8]+(prm[9]-prm[8])/2.0 +hfelt[5] = prm[9]+(prm[10]-prm[9])/2.0 +hfelt[6] = prm[10]+(prm[11]-prm[10])/2.0 +hfelt[7] = prm[11]+(prm[12]-prm[11])/2.0 +hfelt[8] = prm[12]+(prm[13]-prm[12])/2.0 +hfelt[9] = prm[13]+(prm[14]-prm[13])/2.0 +hfelt[10] = prm[14]+(prm[15]-prm[14])/2.0 + +phi = prm[16]*pi/180 #converts Lat degrees to radians lat +thi = prm[17]*pi/180 #converts Lon degrees to radians Lon #Meteorological corrections -pkorr = tprm[4] #prm.val[18] # Met corrections rain -skorr = tprm[5] #prm.val[19] # Met corrections snow -u = tprm[1] #prm.val[20] # mean vind velocity [m/s] +pkorr = tprm[4] #prm[18] # Met corrections rain +skorr = tprm[5] #prm[19] # Met corrections snow +u = tprm[1] #prm[20] # mean vind velocity [m/s] #Snow parameters -pro = tprm[2] #prm.val[21] # [fraction] liquid water content in snow -TX = tprm[3] #prm.val[22] # Threshold temp for rain/snow -a0[1:Lty] .= prm.val[23:24] # Alfa null in snofall unit distribution P, IP -d[1:Lty] .= prm.val[25:26] # Decorrelation length (Measured in n) for precipitation P, IP +pro = tprm[2] #prm[21] # [fraction] liquid water content in snow +TX = tprm[3] #prm[22] # Threshold temp for rain/snow +a0[1:Lty] .= prm[23:24] # Alfa null in snofall unit distribution P, IP +d[1:Lty] .= prm[25:26] # Decorrelation length (Measured in n) for precipitation P, IP # Misc. -Timeresinsec = prm.val[27] # temporal resolution of simulations, in seconds -MAD = prm.val[28] # mean annual discharge -totarea = prm.val[29] # Total area of catchment in m2 -NoL = Int(prm.val[30]) # Number of layers in subsurface including OF level -R = prm.val[31] # soil moisture content/100 for field capacity of soils +Timeresinsec = prm[27] # temporal resolution of simulations, in seconds +MAD = prm[28] # mean annual discharge +totarea = prm[29] # Total area of catchment in m2 +NoL = Int(prm[30]) # Number of layers in subsurface including OF level +R = prm[31] # soil moisture content/100 for field capacity of soils #Celerities, subsurface and conduits -GshInt = prm.val[32] # shapeparameter saturation Capital lambda -GscInt = tprm[6] #prm.val[33] # scaleparameter saturation Capital lambda +GshInt = prm[32] # shapeparameter saturation Capital lambda +GscInt = tprm[6] #prm[33] # scaleparameter saturation Capital lambda Gshape, Gscale = Big2SmallLambda(GshInt, GscInt) # Coverting integrated celerity to layers -OFVP = tprm[7] #prm.val[34] # Overland flow velocity P -OFVIP = tprm[8] #prm.val[35] # Overland flow velocity IP -Lv = tprm[9] #prm.val[36] # lake celrity [m/s] Can it be fixed?, 0.01 is popular -rv = tprm[10] #prm.val[37] # celerity of water in river/conduits network +OFVP = tprm[7] #prm[34] # Overland flow velocity P +OFVIP = tprm[8] #prm[35] # Overland flow velocity IP +Lv = tprm[9] #prm[36] # lake celrity [m/s] Can it be fixed?, 0.01 is popular +rv = tprm[10] #prm[37] # celerity of water in river/conduits network #Distance distributions Lty -Ltyfrac[1:5] .= prm.val[38:42] # areal fraction (AF) of permeable, impermeable, wetlands, lakes(effective) and glaciers. Not RN -Ltymax[1:3] .= prm.val[43:45] # Max. dist permeable, impermeable, wetlands, lakes(effective), glaciers and RN -Ltymax[5:DDA] .= prm.val[46:47] # Max. dist permeable, impermeable, wetlands, lakes(effective), glaciers and RN -Ltymid[1:3] .= prm.val[48:50] # Mean permeable, impermeable, wetlands, lakes(effective), glaciers and RN -Ltymid[5:DDA] .= prm.val[51:52] # Mean permeable, impermeable, wetlands, lakes(effective), glaciers and RN -Ltystd[5:DDA] .= prm.val[53:54] # Std. dev. permeable, impermeable, wetlands, lakes(effective), glaciers and RN -Ltyz[1:3] .= prm.val[55:57] # frac zero dist from RN, permeable, impermeable, wetlands, lakes(effective), glaciers and RN +Ltyfrac[1:5] .= prm[38:42] # areal fraction (AF) of permeable, impermeable, wetlands, lakes(effective) and glaciers. Not RN +Ltymax[1:3] .= prm[43:45] # Max. dist permeable, impermeable, wetlands, lakes(effective), glaciers and RN +Ltymax[5:DDA] .= prm[46:47] # Max. dist permeable, impermeable, wetlands, lakes(effective), glaciers and RN +Ltymid[1:3] .= prm[48:50] # Mean permeable, impermeable, wetlands, lakes(effective), glaciers and RN +Ltymid[5:DDA] .= prm[51:52] # Mean permeable, impermeable, wetlands, lakes(effective), glaciers and RN +Ltystd[5:DDA] .= prm[53:54] # Std. dev. permeable, impermeable, wetlands, lakes(effective), glaciers and RN +Ltyz[1:3] .= prm[55:57] # frac zero dist from RN, permeable, impermeable, wetlands, lakes(effective), glaciers and RN # Glacierfractions of elevation zones -g1 = prm.val[58] # areal fraction of glaciers in first elevation zone -g2 = prm.val[59] -g3 = prm.val[60] -g4 = prm.val[61] -g5 = prm.val[62] -g6 = prm.val[63] -g7 = prm.val[64] -g8 = prm.val[65] -g9 = prm.val[66] -g10 = prm.val[67] - -meandailyP = prm.val[68] # daily mean value precipitation -meandailyT = prm.val[69] # daily mean value temperature -snfjell = 100.0*prm.val[70]# in parameterfile as fraction for MAD estimation, NOT for impermeble surfaces -persons = prm.val[71] +g1 = prm[58] # areal fraction of glaciers in first elevation zone +g2 = prm[59] +g3 = prm[60] +g4 = prm[61] +g5 = prm[62] +g6 = prm[63] +g7 = prm[64] +g8 = prm[65] +g9 = prm[66] +g10 = prm[67] + +meandailyP = prm[68] # daily mean value precipitation +meandailyT = prm[69] # daily mean value temperature +snfjell = 100.0*prm[70]# in parameterfile as fraction for MAD estimation, NOT for impermeble surfaces +persons = prm[71] #Hardcoded infiltration capacity #ICap[1] = (1000)*(GshInt*GscInt*Ltymid[1]/Timeresinsec) # Infiltration capacity for Permeable[1] [mm/s]. Equals mean Subsurface velocity #ICap[2] = ICap[1]*0.001 # Infiltration capacity for ImPermeable[2] in #provided by parameterfile -ICap[1] = prm.val[72]/3600.0# Infiltration capacity for Permeable[1] Input from parameterfile is in mm/hour. we here transform to [mm/s]and later on to [mm/Timeresinsec] -ICap[2] = prm.val[73]/3600.0# # Infiltration capacity for ImPermeable[2] previously as ICap[1]*0.002 +ICap[1] = prm[72]/3600.0# Infiltration capacity for Permeable[1] Input from parameterfile is in mm/hour. we here transform to [mm/s]and later on to [mm/Timeresinsec] +ICap[2] = prm[73]/3600.0# # Infiltration capacity for ImPermeable[2] previously as ICap[1]*0.002 -CritFlux[1:Lty] .= prm.val[74:75] # Critical flux estimates. Sensitivity unknown.... +CritFlux[1:Lty] .= prm[74:75] # Critical flux estimates. Sensitivity unknown.... ################################### End of reading parameters ############################################ @@ -267,10 +280,6 @@ if(Ltyfrac[2] == 0.0) Lty = 1 end -#reading input file (ptq) -ptqinn = CSV.read(ptqfile, DataFrame, header=["yr","mnt","day","hr","min","p01","p02","p03","p04","p05","p06","p07","p08","p09","p10", - "t01","t02","t03","t04","t05","t06","t07","t08","t09","t10","q"]) # reading ptq data, elevation zones - days = Int(length(ptqinn.yr)) # Length of timeseries MAD2 = exp(-4.59 + 1.135*log(meandailyP)+0.97*log(totarea/1000000)-0.0603*meandailyT + 0.053*log(snfjell)-0.00014*hfelt[5]) # R2 = 0.99, Area in km2, Snfjell in fraction diff --git a/Manifest.toml b/Manifest.toml index af51e21..6783fcb 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -1,13 +1,13 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.10.10" +julia_version = "1.12.6" manifest_format = "2.0" -project_hash = "bc40fddbefe16d7163d0816bfb3ac92f722eafa3" +project_hash = "b60dc11cee2890e619d68ea55def5159df2115e5" [[deps.ADTypes]] -git-tree-sha1 = "f7304359109c768cf32dc5fa2d371565bb63b68a" +git-tree-sha1 = "bbc22a9a08a0ef6460041086d8a7b27940ed4ffd" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "1.21.0" +version = "1.22.0" [deps.ADTypes.extensions] ADTypesChainRulesCoreExt = "ChainRulesCore" @@ -24,11 +24,35 @@ git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" version = "0.4.5" +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "MacroTools"] +git-tree-sha1 = "2eeb2c9bef11013efc6f8f97f32ee59b146b09fb" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.44" + + [deps.Accessors.extensions] + AxisKeysExt = "AxisKeys" + IntervalSetsExt = "IntervalSets" + LinearAlgebraExt = "LinearAlgebra" + StaticArraysExt = "StaticArrays" + StructArraysExt = "StructArrays" + TestExt = "Test" + UnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + [[deps.Adapt]] -deps = ["LinearAlgebra", "Requires"] -git-tree-sha1 = "7e35fca2bdfba44d797c53dfe63a51fabf39bfc0" +deps = ["LinearAlgebra"] +git-tree-sha1 = "28e1637322d4019ed2577cbec9268fab9b7da117" uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "4.4.0" +version = "4.6.0" [deps.Adapt.extensions] AdaptSparseArraysExt = "SparseArrays" @@ -46,15 +70,16 @@ version = "1.1.3" [[deps.ArgTools]] uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" +version = "1.1.2" [[deps.ArrayInterface]] deps = ["Adapt", "LinearAlgebra"] -git-tree-sha1 = "d81ae5489e13bc03567d4fbbb06c546a5e53c857" +git-tree-sha1 = "3d0cabd25fab32390e3bcb82cd67e700aebd9816" uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" -version = "7.22.0" +version = "7.25.0" [deps.ArrayInterface.extensions] + ArrayInterfaceAMDGPUExt = "AMDGPU" ArrayInterfaceBandedMatricesExt = "BandedMatrices" ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" ArrayInterfaceCUDAExt = "CUDA" @@ -69,6 +94,7 @@ version = "7.22.0" ArrayInterfaceTrackerExt = "Tracker" [deps.ArrayInterface.weakdeps] + AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e" BandedMatrices = "aae01518-5342-5314-be14-df237901396f" BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" @@ -84,15 +110,17 @@ version = "7.22.0" [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" +version = "1.11.0" [[deps.Base64]] uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" +version = "1.11.0" [[deps.BenchmarkTools]] -deps = ["Compat", "JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] -git-tree-sha1 = "7fecfb1123b8d0232218e2da0c213004ff15358d" +deps = ["Compat", "JSON", "Logging", "PrecompileTools", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "9670d3febc2b6da60a0ae57846ba74670290653f" uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" -version = "1.6.3" +version = "1.8.0" [[deps.BitFlags]] git-tree-sha1 = "0691e34b3bb8be9307330f88d1a3c3f25466c24d" @@ -100,15 +128,12 @@ uuid = "d1d4a3ce-64b1-5f1a-9ba4-7e7e69966f35" version = "0.1.9" [[deps.BlackBoxOptim]] -deps = ["CPUTime", "Compat", "Distributed", "Distributions", "JSON", "LinearAlgebra", "Printf", "Random", "Requires", "SpatialIndexing", "StatsBase"] -git-tree-sha1 = "9c203a2515b5eeab8f2987614d2b1db83ef03542" +deps = ["Compat", "Distributed", "Distributions", "LinearAlgebra", "Printf", "Random", "Requires", "SpatialIndexing", "StatsBase"] +git-tree-sha1 = "870e8b6e05cbf498491392b911c71e97b9fe1423" uuid = "a134a8b2-14d6-55f6-9291-3336d3ab0209" -version = "0.6.3" +version = "0.6.5" weakdeps = ["HTTP", "Sockets"] - [deps.BlackBoxOptim.extensions] - BlackBoxOptimRealtimePlotServerExt = ["HTTP", "Sockets"] - [[deps.Bzip2_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "1b96ea4a01afe0ea4090c5c8039690672dd13f2e" @@ -120,16 +145,11 @@ git-tree-sha1 = "389ad5c84de1ae7cf0e28e381131c98ea87d54fc" uuid = "fa961155-64e5-5f13-b03f-caf6b980ea82" version = "0.5.0" -[[deps.CPUTime]] -git-tree-sha1 = "2dcc50ea6a0a1ef6440d6eecd0fe3813e5671f45" -uuid = "a9c8d775-2e2e-55fc-8582-045d282d599e" -version = "1.0.0" - [[deps.CSV]] deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "PrecompileTools", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings", "WorkerUtilities"] -git-tree-sha1 = "deddd8725e5e1cc49ee205a1964256043720a6c3" +git-tree-sha1 = "8d8e0b0f350b8e1c91420b5e64e5de774c2f0f4d" uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.15" +version = "0.10.16" [[deps.Cairo]] deps = ["Cairo_jll", "Colors", "Glib_jll", "Graphics", "Libdl", "Pango_jll"] @@ -138,10 +158,10 @@ uuid = "159f3aea-2a34-519c-b102-8c37f9878175" version = "1.1.1" [[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "fde3bf89aead2e723284a8ff9cdf5b551ed700e8" +deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "Libdl", "Pixman_jll", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] +git-tree-sha1 = "1fa950ebc3e37eccd51c6a8fe1f92f7d86263522" uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.18.5+0" +version = "1.18.7+0" [[deps.ChunkCodecCore]] git-tree-sha1 = "1a3ad7e16a321667698a19e77362b35a1e94c544" @@ -161,10 +181,10 @@ uuid = "55437552-ac27-4d47-9aa3-63184e8fd398" version = "1.0.0" [[deps.CodeTracking]] -deps = ["InteractiveUtils", "UUIDs"] -git-tree-sha1 = "062c5e1a5bf6ada13db96a4ae4749a4c2234f521" +deps = ["InteractiveUtils", "REPL", "UUIDs"] +git-tree-sha1 = "cfb7a2e89e245a9d5016b70323db412b3a7438d5" uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" -version = "1.3.9" +version = "3.0.2" [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] @@ -183,13 +203,11 @@ deps = ["FixedPointNumbers", "Random"] git-tree-sha1 = "67e11ee83a43eb71ddc950302c53bf33f0690dfe" uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" version = "0.12.1" +weakdeps = ["StyledStrings"] [deps.ColorTypes.extensions] StyledStringsExt = "StyledStrings" - [deps.ColorTypes.weakdeps] - StyledStrings = "f489334b-da3d-4c2e-b8f0-e476e12c162b" - [[deps.ColorVectorSpace]] deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "Requires", "Statistics", "TensorCore"] git-tree-sha1 = "8b3b6f87ce8f65a2b4f857528fd8d70086cd72b1" @@ -222,16 +240,30 @@ weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] CompatLinearAlgebraExt = "LinearAlgebra" +[[deps.Compiler]] +git-tree-sha1 = "382d79bfe72a406294faca39ef0c3cef6e6ce1f1" +uuid = "807dbc54-b67e-4c79-8afb-eafe4df6f2e1" +version = "0.1.1" + [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.1.1+0" +version = "1.3.0+1" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" [[deps.ConcurrentUtilities]] deps = ["Serialization", "Sockets"] -git-tree-sha1 = "d9d26935a0bcffc87d2613ce14c527c99fc543fd" +git-tree-sha1 = "21d088c496ea22914fe80906eb5bce65755e5ec8" uuid = "f0e56b4a-5159-44fe-b623-3e5288b988bb" -version = "2.5.0" +version = "2.5.1" [[deps.Configurations]] deps = ["ExproniconLite", "OrderedCollections", "TOML"] @@ -265,17 +297,15 @@ uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" version = "4.1.1" [[deps.Cthulhu]] -deps = ["CodeTracking", "FoldingTrees", "InteractiveUtils", "JuliaSyntax", "PrecompileTools", "Preferences", "REPL", "TypedSyntax", "UUIDs", "Unicode", "WidthLimitedIO"] -git-tree-sha1 = "af124ef442564dd4d87dcbf67fb1d2f9fc8f7297" +deps = ["Accessors", "CodeTracking", "FoldingTrees", "InteractiveUtils", "JuliaSyntax", "PrecompileTools", "Preferences", "REPL", "TypedSyntax", "UUIDs", "Unicode", "WidthLimitedIO"] +git-tree-sha1 = "9979d02e894327146be860f545965ed4d4a1c09d" uuid = "f68482b8-f384-11e8-15f7-abe071a5a75f" -version = "2.16.7" +version = "3.0.2" +weakdeps = ["Compiler"] [deps.Cthulhu.extensions] CthulhuCompilerExt = "Compiler" - [deps.Cthulhu.weakdeps] - Compiler = "807dbc54-b67e-4c79-8afb-eafe4df6f2e1" - [[deps.DataAPI]] git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" @@ -283,15 +313,15 @@ version = "1.16.0" [[deps.DataFrames]] deps = ["Compat", "DataAPI", "DataStructures", "Future", "InlineStrings", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrecompileTools", "PrettyTables", "Printf", "Random", "Reexport", "SentinelArrays", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "d8928e9169ff76c6281f39a659f9bca3a573f24c" +git-tree-sha1 = "5fab31e2e01e70ad66e3e24c968c264d1cf166d6" uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.8.1" +version = "1.8.2" [[deps.DataStructures]] deps = ["OrderedCollections"] -git-tree-sha1 = "e357641bb3e0638d353c4b29ea0e40ea644066a6" +git-tree-sha1 = "e86f4a2805f7f19bec5129bc9150c38208e5dc23" uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.19.3" +version = "0.19.4" [[deps.DataValueInterfaces]] git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" @@ -301,6 +331,7 @@ version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +version = "1.11.0" [[deps.Dbus_jll]] deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl"] @@ -328,9 +359,9 @@ version = "1.15.1" [[deps.DifferentiationInterface]] deps = ["ADTypes", "LinearAlgebra"] -git-tree-sha1 = "7ae99144ea44715402c6c882bfef2adbeadbc4ce" +git-tree-sha1 = "2147a95a217cc8a78ec96ee03581adf129468e49" uuid = "a0c0ee7d-e4b9-4e03-894e-1c5f64a51d63" -version = "0.7.16" +version = "0.7.18" [deps.DifferentiationInterface.extensions] DifferentiationInterfaceChainRulesCoreExt = "ChainRulesCore" @@ -340,8 +371,9 @@ version = "0.7.16" DifferentiationInterfaceFiniteDiffExt = "FiniteDiff" DifferentiationInterfaceFiniteDifferencesExt = "FiniteDifferences" DifferentiationInterfaceForwardDiffExt = ["ForwardDiff", "DiffResults"] - DifferentiationInterfaceGPUArraysCoreExt = "GPUArraysCore" + DifferentiationInterfaceGPUArraysCoreExt = ["GPUArraysCore", "Adapt"] DifferentiationInterfaceGTPSAExt = "GTPSA" + DifferentiationInterfaceHyperHessiansExt = "HyperHessians" DifferentiationInterfaceMooncakeExt = "Mooncake" DifferentiationInterfacePolyesterForwardDiffExt = ["PolyesterForwardDiff", "ForwardDiff", "DiffResults"] DifferentiationInterfaceReverseDiffExt = ["ReverseDiff", "DiffResults"] @@ -354,6 +386,7 @@ version = "0.7.16" DifferentiationInterfaceZygoteExt = ["Zygote", "ForwardDiff"] [deps.DifferentiationInterface.weakdeps] + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" DiffResults = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" Diffractor = "9f5e2b26-1114-432f-b630-d3fe2085c51c" @@ -365,6 +398,7 @@ version = "0.7.16" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" GTPSA = "b27dd330-f138-47c5-815b-40db9dd9b6e8" + HyperHessians = "06b494a0-c8e0-40cc-ad32-d99506a00a6c" Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" PolyesterForwardDiff = "98d1487c-24ca-40b6-b7ab-df2af84e126b" ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" @@ -376,15 +410,52 @@ version = "0.7.16" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" +[[deps.DimensionalData]] +deps = ["ConstructionBase", "DataAPI", "Dates", "Extents", "Interfaces", "IntervalSets", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "PrecompileTools", "Random", "Statistics", "TableTraits", "Tables"] +git-tree-sha1 = "57bbee194533adaa755b5cae528eabdea5d05039" +uuid = "0703355e-b756-11e9-17c0-8b28908087d0" +version = "0.30.1" + + [deps.DimensionalData.extensions] + DimensionalDataAbstractFFTsExt = "AbstractFFTs" + DimensionalDataAdaptExt = "Adapt" + DimensionalDataAlgebraOfGraphicsExt = "AlgebraOfGraphics" + DimensionalDataArrayInterfaceExt = "ArrayInterface" + DimensionalDataCategoricalArraysExt = "CategoricalArrays" + DimensionalDataChainRulesCoreExt = "ChainRulesCore" + DimensionalDataDiskArraysExt = "DiskArrays" + DimensionalDataMakieExt = "Makie" + DimensionalDataNearestNeighborsExt = "NearestNeighbors" + DimensionalDataPythonCallExt = "PythonCall" + DimensionalDataRecipesBaseExt = "RecipesBase" + DimensionalDataSparseArraysExt = "SparseArrays" + DimensionalDataStatsBaseExt = "StatsBase" + + [deps.DimensionalData.weakdeps] + AbstractFFTs = "621f4979-c628-5d54-868e-fcf4e3e8185c" + Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" + AlgebraOfGraphics = "cbdf2221-f076-402e-a563-3d30da359d67" + ArrayInterface = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" + CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DiskArrays = "3c3547ce-8d99-4f5e-a174-61eb10b00ae3" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + NearestNeighbors = "b8a86587-4115-5ab1-83bc-aa920d37bbce" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" + SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" + StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" + [[deps.Distributed]] deps = ["Random", "Serialization", "Sockets"] uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" [[deps.Distributions]] deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] -git-tree-sha1 = "fbcc7610f6d8348428f722ecbe0e6cfe22e672c6" +git-tree-sha1 = "e421c1938fafab0165b04dc1a9dbe2a26272952c" uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.123" +version = "0.25.125" [deps.Distributions.extensions] DistributionsChainRulesCoreExt = "ChainRulesCore" @@ -404,7 +475,7 @@ version = "0.9.5" [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" +version = "1.7.0" [[deps.EpollShim_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -420,15 +491,20 @@ version = "0.1.11" [[deps.Expat_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "27af30de8b5445644e8ffe3bcb0d72049c089cf1" +git-tree-sha1 = "8f05e9a2e7c2e3eb524102bb2926c5743c07fbe1" uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.7.3+0" +version = "2.8.0+0" [[deps.ExproniconLite]] git-tree-sha1 = "c13f0b150373771b0fdc1713c97860f8df12e6c2" uuid = "55351af7-c7e9-48d6-89ff-24e801d99491" version = "0.10.14" +[[deps.Extents]] +git-tree-sha1 = "b309b36a9e02fe7be71270dd8c0fd873625332b4" +uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" +version = "0.1.6" + [[deps.FFMPEG]] deps = ["FFMPEG_jll"] git-tree-sha1 = "95ecf07c2eea562b5adbd0696af6db62c0f52560" @@ -436,16 +512,16 @@ uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" version = "0.4.5" [[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 = "01ba9d15e9eae375dc1eb9589df76b3572acd3f2" +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", "libva_jll", "libvorbis_jll", "x264_jll", "x265_jll"] +git-tree-sha1 = "cac41ca6b2d399adfc95e51240566f8a60a80806" uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "8.0.1+0" +version = "8.1.0+0" [[deps.FileIO]] deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "6522cfb3b8fe97bec632252263057996cbd3de20" +git-tree-sha1 = "8e9c059d6857607253e837730dbf780b6b151acd" uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.18.0" +version = "1.19.0" weakdeps = ["HTTP"] [deps.FileIO.extensions] @@ -464,6 +540,7 @@ weakdeps = ["Mmap", "Test"] [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" +version = "1.11.0" [[deps.FillArrays]] deps = ["LinearAlgebra"] @@ -485,9 +562,9 @@ version = "1.16.0" [[deps.FiniteDiff]] deps = ["ArrayInterface", "LinearAlgebra", "Setfield"] -git-tree-sha1 = "9340ca07ca27093ff68418b7558ca37b05f8aeb1" +git-tree-sha1 = "f7017a4f337f8df189fcce98e32b67a1298a2115" uuid = "6a86dc24-6348-571c-b903-95158fe2bd41" -version = "2.29.0" +version = "2.31.0" [deps.FiniteDiff.extensions] FiniteDiffBandedMatricesExt = "BandedMatrices" @@ -509,9 +586,9 @@ version = "0.8.5" [[deps.FlameGraphs]] deps = ["AbstractTrees", "Colors", "FileIO", "FixedPointNumbers", "IndirectArrays", "LeftChildRightSiblingTrees", "Profile"] -git-tree-sha1 = "0166baf81babb91cf78bfcc771d8e87c43d568df" +git-tree-sha1 = "1f955e6e2c9fe7f56a0fdd169453f7a65b3e69f5" uuid = "08572546-2f56-4bcf-ba4e-bab62c3a3f89" -version = "1.1.0" +version = "1.2.0" [[deps.FoldingTrees]] deps = ["AbstractTrees", "REPL"] @@ -532,9 +609,9 @@ version = "1.3.7" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] -git-tree-sha1 = "eef4c86803f47dcb61e9b8790ecaa96956fdd8ae" +git-tree-sha1 = "cddeab6487248a39dae1a960fff0ac17b2a28888" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "1.3.2" +version = "1.3.3" [deps.ForwardDiff.extensions] ForwardDiffStaticArraysExt = "StaticArrays" @@ -544,9 +621,9 @@ version = "1.3.2" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "2c5512e11c791d1baed2049c5652441b28fc6a31" +git-tree-sha1 = "70329abc09b886fd2c5d94ad2d9527639c421e3e" uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.13.4+0" +version = "2.14.3+1" [[deps.FriBidi_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -557,18 +634,19 @@ version = "1.0.17+0" [[deps.Future]] deps = ["Random"] uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" [[deps.GLFW_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "libdecor_jll", "xkbcommon_jll"] -git-tree-sha1 = "b7bfd56fa66616138dfe5237da4dc13bbd83c67f" +git-tree-sha1 = "9e0fb9e54594c47f278d75063980e43066e26e20" uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.4.1+0" +version = "3.4.1+1" [[deps.GR]] deps = ["Artifacts", "Base64", "DelimitedFiles", "Downloads", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Preferences", "Printf", "Qt6Wayland_jll", "Random", "Serialization", "Sockets", "TOML", "Tar", "Test", "p7zip_jll"] -git-tree-sha1 = "ee0585b62671ce88e48d3409733230b401c9775c" +git-tree-sha1 = "44716a1a667cb867ee0e9ec8edc31c3e4aa5afdc" uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.73.22" +version = "0.73.24" [deps.GR.extensions] IJuliaExt = "IJulia" @@ -578,9 +656,9 @@ version = "0.73.22" [[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 = "7dd7173f7129a1b6f84e0f03e0890cd1189b0659" +git-tree-sha1 = "be8a1b8065959e24fdc1b51402f39f3b6f0f6653" uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.73.22+0" +version = "0.73.24+0" [[deps.GTK4_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "GettextRuntime_jll", "Glib_jll", "Graphene_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Libepoxy_jll", "Libtiff_jll", "PCRE2_jll", "Pango_jll", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libX11_jll", "Xorg_libXcursor_jll", "Xorg_libXdamage_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll", "Xorg_libXrender_jll", "gdk_pixbuf_jll", "iso_codes_jll", "xkbcommon_jll"] @@ -606,6 +684,11 @@ git-tree-sha1 = "24f6def62397474a297bfcec22384101609142ed" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" version = "2.86.3+0" +[[deps.Glob]] +git-tree-sha1 = "246c628cec062230b7d183aab88841fa94fcabe9" +uuid = "c27321d9-0574-5035-807b-f59d2c89b15c" +version = "1.5.0" + [[deps.Graphene_jll]] deps = ["Artifacts", "Glib_jll", "JLLWrappers", "Libdl"] git-tree-sha1 = "47a6897c1ce13a484b5f62643ed8f84e02babb05" @@ -643,9 +726,9 @@ version = "2.2.2" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "PrecompileTools", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "5e6fe50ae7f23d171f44e311c2960294aaa0beb5" +git-tree-sha1 = "51059d23c8bb67911a2e6fd5130229113735fc7e" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.10.19" +version = "1.11.0" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll"] @@ -671,9 +754,9 @@ version = "1.0.0" [[deps.Infiltrator]] deps = ["InteractiveUtils", "Markdown", "REPL", "UUIDs"] -git-tree-sha1 = "d07c6718c1ce7324341947f8f608f5d69795dde5" +git-tree-sha1 = "0330ef9ac27dc069bf97fa5ab1a4391be4fcc4f6" uuid = "5903a43b-9cc3-4c30-8d17-598619ec4e9b" -version = "1.9.7" +version = "1.9.11" [[deps.InlineStrings]] git-tree-sha1 = "8f3d257792a522b4601c24a577954b0a8cd7334d" @@ -691,11 +774,17 @@ version = "1.4.5" [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +version = "1.11.0" + +[[deps.Interfaces]] +git-tree-sha1 = "331ff37738aea1a3cf841ddf085442f31b84324f" +uuid = "85a1e053-f937-4924-92a5-1367d23b7b87" +version = "0.3.2" [[deps.IntervalSets]] -git-tree-sha1 = "d966f85b3b7a8e49d034d27a189e9a4874b4391a" +git-tree-sha1 = "79d6bd28c8d9bccc2229784f1bd637689b256377" uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.13" +version = "0.7.14" weakdeps = ["Random", "RecipesBase", "Statistics"] [deps.IntervalSets.extensions] @@ -703,6 +792,16 @@ weakdeps = ["Random", "RecipesBase", "Statistics"] IntervalSetsRecipesBaseExt = "RecipesBase" IntervalSetsStatisticsExt = "Statistics" +[[deps.InverseFunctions]] +git-tree-sha1 = "a779299d77cd080bf77b97535acecd73e1c5e5cb" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.17" +weakdeps = ["Dates", "Test"] + + [deps.InverseFunctions.extensions] + InverseFunctionsDatesExt = "Dates" + InverseFunctionsTestExt = "Test" + [[deps.InvertedIndices]] git-tree-sha1 = "6da3c4316095de0f5ee2ebd875df8721e7e0bdbe" uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" @@ -719,24 +818,16 @@ uuid = "82899510-4779-5014-852e-03e436cf321d" version = "1.0.0" [[deps.JET]] -deps = ["CodeTracking", "InteractiveUtils", "JuliaInterpreter", "JuliaSyntax", "LoweredCodeUtils", "MacroTools", "Pkg", "PrecompileTools", "Preferences", "Test"] -git-tree-sha1 = "a453c9b3320dd73f5b05e8882446b6051cb254c4" +deps = ["CodeTracking", "Compiler", "InteractiveUtils", "JuliaInterpreter", "JuliaSyntax", "LoweredCodeUtils", "MacroTools", "Pkg", "PrecompileTools", "Preferences", "Revise", "Test"] +git-tree-sha1 = "3642228b0d4ab0b263a5946f60ace6c2b5616256" uuid = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" -version = "0.9.18" - - [deps.JET.extensions] - JETCthulhuExt = "Cthulhu" - JETReviseExt = "Revise" - - [deps.JET.weakdeps] - Cthulhu = "f68482b8-f384-11e8-15f7-abe071a5a75f" - Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "0.11.3" [[deps.JLD2]] deps = ["ChunkCodecLibZlib", "ChunkCodecLibZstd", "FileIO", "MacroTools", "Mmap", "OrderedCollections", "PrecompileTools", "ScopedValues"] -git-tree-sha1 = "8f8ff711442d1f4cfc0d86133e7ee03d62ec9b98" +git-tree-sha1 = "941f87a0ae1b14d1ac2fa57245425b23a9d7a516" uuid = "033835bb-8acc-5ee8-8aae-3f567f8a3819" -version = "0.6.3" +version = "0.6.4" [deps.JLD2.extensions] UnPackExt = "UnPack" @@ -752,32 +843,43 @@ version = "0.1.11" [[deps.JLLWrappers]] deps = ["Artifacts", "Preferences"] -git-tree-sha1 = "0533e564aae234aff59ab625543145446d8b6ec2" +git-tree-sha1 = "7204148362dafe5fe6a273f855b8ccbe4df8173e" uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.7.1" +version = "1.8.0" [[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +deps = ["Dates", "Logging", "Parsers", "PrecompileTools", "StructUtils", "UUIDs", "Unicode"] +git-tree-sha1 = "f76f7560267b840e492180f9899b472f30b88450" uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.4" +version = "1.6.0" + + [deps.JSON.extensions] + JSONArrowExt = ["ArrowTypes"] + + [deps.JSON.weakdeps] + ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd" [[deps.JpegTurbo_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "b6893345fd6658c8e475d40155789f4860ac3b21" +git-tree-sha1 = "c0c9b76f3520863909825cbecdef58cd63de705a" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "3.1.4+0" +version = "3.1.5+0" [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "c47892541d03e5dc63467f8964c9f2b415dfe718" +git-tree-sha1 = "58927c485919bf17ea308d9d82156de1adf4b006" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.9.46" +version = "0.10.12" [[deps.JuliaSyntax]] -git-tree-sha1 = "937da4713526b96ac9a178e2035019d3b78ead4a" +git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" -version = "0.4.10" +version = "1.0.2" + +[[deps.JuliaSyntaxHighlighting]] +deps = ["StyledStrings"] +uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011" +version = "1.12.0" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -787,9 +889,9 @@ version = "3.100.3+0" [[deps.LERC_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "aaafe88dccbd957a8d82f7d05be9b69172e0cee3" +git-tree-sha1 = "17b94ecafcfa45e8360a4fc9ca6b583b049e4e37" uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "4.0.1+0" +version = "4.1.0+0" [[deps.LLVMOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -797,12 +899,6 @@ git-tree-sha1 = "eb62a3deb62fc6d8822c0c4bef73e4412419c5d8" uuid = "1d63c593-3942-5779-bab2-d838dc0a180e" version = "18.1.8+0" -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "1c602b1127f4751facb671441ca72715cc95938a" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.3+0" - [[deps.LaTeXStrings]] git-tree-sha1 = "dda21b8cbd6a6c40d9d02a73230f9d70fed6918c" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" @@ -828,9 +924,9 @@ version = "0.16.10" [[deps.LeftChildRightSiblingTrees]] deps = ["AbstractTrees"] -git-tree-sha1 = "95ba48564903b43b2462318aa243ee79d81135ff" +git-tree-sha1 = "d4816abce26971e3237b46a47b99991f306e4832" uuid = "1d6d02ad-be62-4b6b-8a6d-2f90e265016e" -version = "0.2.1" +version = "0.3.0" [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] @@ -838,26 +934,28 @@ uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" version = "0.6.4" [[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "8.4.0+0" +version = "8.15.0+0" [[deps.LibGit2]] -deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +deps = ["LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +version = "1.11.0" [[deps.LibGit2_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "OpenSSL_jll"] uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" -version = "1.6.4+0" +version = "1.9.0+0" [[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +deps = ["Artifacts", "Libdl", "OpenSSL_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.11.0+1" +version = "1.11.3+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" +version = "1.11.0" [[deps.Libepoxy_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Xorg_libX11_jll"] @@ -885,9 +983,9 @@ version = "1.18.0+0" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "97bbca976196f2a1eb9607131cb108c69ec3f8a6" +git-tree-sha1 = "cc3ad4faf30015a3e8094c9b5b7f19e85bdf2386" uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.41.3+0" +version = "2.42.0+0" [[deps.Librsvg_jll]] deps = ["Artifacts", "Cairo_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "Libdl", "Pango_jll", "XML2_jll", "gdk_pixbuf_jll"] @@ -903,13 +1001,14 @@ version = "4.7.2+0" [[deps.Libuuid_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "d0205286d9eceadc518742860bf23f703779a3d6" +git-tree-sha1 = "d620582b1f0cbe2c72dd1d5bd195a9ce73370ab1" uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.41.3+0" +version = "2.42.0+0" [[deps.LinearAlgebra]] deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.12.0" [[deps.LogExpFunctions]] deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] @@ -929,6 +1028,7 @@ version = "0.3.29" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" +version = "1.11.0" [[deps.LoggingExtras]] deps = ["Dates", "Logging"] @@ -937,16 +1037,16 @@ uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" version = "1.2.0" [[deps.LoweredCodeUtils]] -deps = ["JuliaInterpreter"] -git-tree-sha1 = "39240b5f66956acfa462d7fe12efe08e26d6d70d" +deps = ["CodeTracking", "Compiler", "JuliaInterpreter"] +git-tree-sha1 = "5d4278f755440f70648d80cc6225f51e78e94094" uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.2.2" +version = "3.5.1" [[deps.LsqFit]] -deps = ["Distributions", "ForwardDiff", "LinearAlgebra", "NLSolversBase", "Printf", "StatsAPI"] -git-tree-sha1 = "f386224fa41af0c27f45e2f9a8f323e538143b43" +deps = ["ADTypes", "Distributions", "ForwardDiff", "LinearAlgebra", "NLSolversBase", "Printf", "StatsAPI"] +git-tree-sha1 = "938aaa27db65e619e19aadd58fbae44fbb0d83e7" uuid = "2fda8390-95c7-5789-9bda-21331edee243" -version = "0.15.1" +version = "0.16.0" [[deps.MacroTools]] git-tree-sha1 = "1e0228a030642014fe5cfe68c2c0a818f9e3f522" @@ -954,19 +1054,21 @@ uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" version = "0.5.16" [[deps.Markdown]] -deps = ["Base64"] +deps = ["Base64", "JuliaSyntaxHighlighting", "StyledStrings"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +version = "1.11.0" [[deps.MbedTLS]] deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] -git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +git-tree-sha1 = "8785729fa736197687541f7053f6d8ab7fc44f92" uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.9" +version = "1.1.10" [[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "ff69a2b1330bcb730b9ac1ab7dd680176f5896b8" uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+1" +version = "2.28.1010+0" [[deps.Measures]] git-tree-sha1 = "b513cedd20d9c914783d8ad83d08120702bf2c77" @@ -987,16 +1089,17 @@ version = "1.2.0" [[deps.Mmap]] uuid = "a63ad114-7e13-5084-954f-fe012c677804" +version = "1.11.0" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2023.1.10" +version = "2025.11.4" [[deps.NLSolversBase]] -deps = ["ADTypes", "DifferentiationInterface", "Distributed", "FiniteDiff", "ForwardDiff"] -git-tree-sha1 = "25a6638571a902ecfb1ae2a18fc1575f86b1d4df" +deps = ["ADTypes", "DifferentiationInterface", "FiniteDiff", "LinearAlgebra"] +git-tree-sha1 = "b3f76b463c7998473062992b246045e6961a074e" uuid = "d41bc354-129a-5804-8e4c-c37616107c6c" -version = "7.10.0" +version = "8.0.0" [[deps.NaNMath]] deps = ["OpenLibm_jll"] @@ -1006,7 +1109,7 @@ version = "1.1.3" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" +version = "1.3.0" [[deps.Observables]] git-tree-sha1 = "7438a59546cf62428fc9d1bc94729146d37a7225" @@ -1022,12 +1125,12 @@ version = "1.3.6+0" [[deps.OpenBLAS_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.23+4" +version = "0.3.29+0" [[deps.OpenLibm_jll]] deps = ["Artifacts", "Libdl"] uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.5+0" +version = "0.8.7+0" [[deps.OpenSSL]] deps = ["BitFlags", "Dates", "MozillaCACerts_jll", "NetworkOptions", "OpenSSL_jll", "Sockets"] @@ -1036,10 +1139,9 @@ uuid = "4d8831e6-92b7-49fb-bdf8-b643e874388c" version = "1.6.1" [[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "c9cbeda6aceffc52d8a0017e71db27c7a7c0beaf" +deps = ["Artifacts", "Libdl"] uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "3.5.5+0" +version = "3.5.4+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] @@ -1067,7 +1169,7 @@ version = "0.1.0" [[deps.PCRE2_jll]] deps = ["Artifacts", "Libdl"] uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.42.0+1" +version = "10.44.0+1" [[deps.PDMats]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] @@ -1081,26 +1183,30 @@ weakdeps = ["StatsBase"] [[deps.Pango_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "FriBidi_jll", "Glib_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl"] -git-tree-sha1 = "0662b083e11420952f2e62e17eddae7fc07d5997" +git-tree-sha1 = "58e5ed5e386e156bd93e86b305ebd21ac63d2d04" uuid = "36c8627f-9965-5494-a995-c6b170f724f3" -version = "1.57.0+0" +version = "1.57.1+0" [[deps.Parsers]] deps = ["Dates", "PrecompileTools", "UUIDs"] -git-tree-sha1 = "7d2f8f21da5db6a806faf7b9b292296da42b2810" +git-tree-sha1 = "5d5e0a78e971354b1c7bff0655d11fdc1b0e12c8" uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.8.3" +version = "2.8.4" [[deps.Pixman_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] -git-tree-sha1 = "db76b1ecd5e9715f3d043cec13b2ec93ce015d53" +git-tree-sha1 = "e4a6721aa89e62e5d4217c0b21bd714263779dda" uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.44.2+0" +version = "0.46.4+0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.10.0" +version = "1.12.1" +weakdeps = ["REPL"] + + [deps.Pkg.extensions] + REPLExt = "REPL" [[deps.PlotThemes]] deps = ["PlotUtils", "Statistics"] @@ -1116,9 +1222,9 @@ version = "1.4.4" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "TOML", "UUIDs", "UnicodeFun", "Unzip"] -git-tree-sha1 = "1cc8ad0762e59e713ee3ef28f9b78b2c9f4ca078" +git-tree-sha1 = "cb20a4eacda080e517e4deb9cfb6c7c518131265" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.41.5" +version = "1.41.6" [deps.Plots.extensions] FileIOExt = "FileIO" @@ -1142,29 +1248,37 @@ version = "1.4.3" [[deps.PrecompileTools]] deps = ["Preferences"] -git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" +git-tree-sha1 = "edbeefc7a4889f528644251bdb5fc9ab5348bc2c" uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" -version = "1.2.1" +version = "1.3.4" [[deps.Preferences]] deps = ["TOML"] -git-tree-sha1 = "522f093a29b31a93e34eaea17ba055d850edea28" +git-tree-sha1 = "8b770b60760d4451834fe79dd483e318eee709c4" uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.5.1" +version = "1.5.2" [[deps.PrettyTables]] deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "REPL", "Reexport", "StringManipulation", "Tables"] -git-tree-sha1 = "c5a07210bd060d6a8491b0ccdee2fa0235fc00bf" +git-tree-sha1 = "624de6279ab7d94fc9f672f0068107eb6619732c" uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "3.1.2" +version = "3.3.2" + + [deps.PrettyTables.extensions] + PrettyTablesTypstryExt = "Typstry" + + [deps.PrettyTables.weakdeps] + Typstry = "f0ed7684-a786-439e-b1e3-3b82803b501e" [[deps.Printf]] deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" +version = "1.11.0" [[deps.Profile]] -deps = ["Printf"] +deps = ["StyledStrings"] uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" +version = "1.11.0" [[deps.ProfileView]] deps = ["Cairo", "Colors", "Dates", "FileIO", "FlameGraphs", "Graphics", "Gtk4", "GtkObservables", "InteractiveUtils", "IntervalSets", "MethodAnalysis", "PrecompileTools", "Preferences", "Profile", "UUIDs"] @@ -1176,40 +1290,52 @@ weakdeps = ["Cthulhu"] [deps.ProfileView.extensions] ProfileViewCthulhuExt = "Cthulhu" +[[deps.ProgressMeter]] +deps = ["Distributed", "Printf"] +git-tree-sha1 = "fbb92c6c56b34e1a2c4c36058f68f332bec840e7" +uuid = "92933f4c-e287-5a05-a399-4b506db050ca" +version = "1.11.0" + [[deps.PtrArrays]] -git-tree-sha1 = "1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493d" +git-tree-sha1 = "4fbbafbc6251b883f4d2705356f3641f3652a7fe" uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" -version = "1.3.0" +version = "1.4.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 = "34f7e5d2861083ec7596af8b8c092531facf2192" +git-tree-sha1 = "144895f6166994730ee7ff8113b981fc360638f1" uuid = "c0090381-4147-56d7-9ebc-da0b1113ec56" -version = "6.8.2+2" +version = "6.10.2+2" [[deps.Qt6Declarative_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll"] -git-tree-sha1 = "da7adf145cce0d44e892626e647f9dcbe9cb3e10" +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6ShaderTools_jll", "Qt6Svg_jll"] +git-tree-sha1 = "d5b7dd0e226774cbd87e2790e34def09245c7eab" uuid = "629bc702-f1f5-5709-abd5-49b8460ea067" -version = "6.8.2+1" +version = "6.10.2+1" [[deps.Qt6ShaderTools_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] -git-tree-sha1 = "9eca9fc3fe515d619ce004c83c31ffd3f85c7ccf" +git-tree-sha1 = "4d85eedf69d875982c46643f6b4f66919d7e157b" uuid = "ce943373-25bb-56aa-8eca-768745ed7b5a" -version = "6.8.2+1" +version = "6.10.2+1" + +[[deps.Qt6Svg_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll"] +git-tree-sha1 = "81587ff5ff25a4e1115ce191e36285ede0334c9d" +uuid = "6de9746b-f93d-5813-b365-ba18ad4a9cf3" +version = "6.10.2+0" [[deps.Qt6Wayland_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Qt6Base_jll", "Qt6Declarative_jll"] -git-tree-sha1 = "8f528b0851b5b7025032818eb5abbeb8a736f853" +git-tree-sha1 = "672c938b4b4e3e0169a07a5f227029d4905456f2" uuid = "e99dba38-086e-5de3-a5b1-6e4c66e897c3" -version = "6.8.2+2" +version = "6.10.2+1" [[deps.QuadGK]] deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "9da16da70037ba9d701192e27befedefb91ec284" +git-tree-sha1 = "5e8e8b0ab68215d7a2b14b9921a946fee794749e" uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.11.2" +version = "2.11.3" [deps.QuadGK.extensions] QuadGKEnzymeExt = "Enzyme" @@ -1218,12 +1344,14 @@ version = "2.11.2" Enzyme = "7da242da-08ed-463a-9acd-ee780be4f1d9" [[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +deps = ["InteractiveUtils", "JuliaSyntaxHighlighting", "Markdown", "Sockets", "StyledStrings", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +version = "1.11.0" [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +version = "1.11.0" [[deps.RecipesBase]] deps = ["PrecompileTools"] @@ -1254,6 +1382,16 @@ git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" uuid = "ae029012-a4dd-5104-9daa-d747884805df" version = "1.3.1" +[[deps.Revise]] +deps = ["CodeTracking", "FileWatching", "InteractiveUtils", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Preferences", "REPL", "UUIDs"] +git-tree-sha1 = "d9383b639663d8220ac9c523927e38bc21cad16a" +uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" +version = "3.14.3" +weakdeps = ["Distributed"] + + [deps.Revise.extensions] + DistributedExt = "Distributed" + [[deps.Rmath]] deps = ["Random", "Rmath_jll"] git-tree-sha1 = "5b3d50eb374cea306873b371d3f8d3915a018f0b" @@ -1277,9 +1415,9 @@ version = "0.7.0" [[deps.ScopedValues]] deps = ["HashArrayMappedTries", "Logging"] -git-tree-sha1 = "c3b2323466378a2ba15bea4b2f73b081e022f473" +git-tree-sha1 = "67a144433c4ce877ee6d1ada69a124d6b1ecf7be" uuid = "7e506255-f358-4e82-b7e4-beb19740aa63" -version = "1.5.0" +version = "1.6.2" [[deps.Scratch]] deps = ["Dates"] @@ -1289,12 +1427,13 @@ version = "1.3.0" [[deps.SentinelArrays]] deps = ["Dates", "Random"] -git-tree-sha1 = "ebe7e59b37c400f694f52b58c93d26201387da70" +git-tree-sha1 = "084c47c7c5ce5cfecefa0a98dff69eb3646b5a80" uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.4.9" +version = "1.4.10" [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" +version = "1.11.0" [[deps.Setfield]] deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] @@ -1315,6 +1454,7 @@ version = "1.2.0" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" [[deps.SortingAlgorithms]] deps = ["DataStructures"] @@ -1325,7 +1465,7 @@ version = "1.2.2" [[deps.SparseArrays]] deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" -version = "1.10.0" +version = "1.12.0" [[deps.SpatialIndexing]] git-tree-sha1 = "84efe17c77e1f2156a7a0d8a7c163c1e1c7bdaed" @@ -1334,9 +1474,9 @@ version = "0.1.6" [[deps.SpecialFunctions]] deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "f2685b435df2613e25fc10ad8c26dddb8640f547" +git-tree-sha1 = "2700b235561b0335d5bef7097a111dc513b8655e" uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.6.1" +version = "2.7.2" [deps.SpecialFunctions.extensions] SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" @@ -1356,9 +1496,14 @@ uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" version = "1.4.4" [[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" -version = "1.10.0" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] [[deps.StatsAPI]] deps = ["LinearAlgebra"] @@ -1388,9 +1533,29 @@ version = "1.5.2" [[deps.StringManipulation]] deps = ["PrecompileTools"] -git-tree-sha1 = "a3c1536470bf8c5e02096ad4853606d7c8f62721" +git-tree-sha1 = "d05693d339e37d6ab134c5ab53c29fce5ee5d7d5" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.4.2" +version = "0.4.4" + +[[deps.StructUtils]] +deps = ["Dates", "UUIDs"] +git-tree-sha1 = "82bee338d650aa515f31866c460cb7e3bcef90b8" +uuid = "ec057cc2-7a8d-4b58-b3b3-92acb9f63b42" +version = "2.8.2" + + [deps.StructUtils.extensions] + StructUtilsMeasurementsExt = ["Measurements"] + StructUtilsStaticArraysCoreExt = ["StaticArraysCore"] + StructUtilsTablesExt = ["Tables"] + + [deps.StructUtils.weakdeps] + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" + +[[deps.StyledStrings]] +uuid = "f489334b-da3d-4c2e-b8f0-e476e12c162b" +version = "1.11.0" [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] @@ -1399,7 +1564,7 @@ uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" [[deps.SuiteSparse_jll]] deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" -version = "7.2.1+1" +version = "7.8.3+2" [[deps.TOML]] deps = ["Dates"] @@ -1432,6 +1597,7 @@ version = "0.1.1" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" +version = "1.11.0" [[deps.TranscodingStreams]] git-tree-sha1 = "0c45878dcfdcfa8480052b6ab162cdd138781742" @@ -1440,9 +1606,9 @@ version = "0.11.3" [[deps.TypedSyntax]] deps = ["CodeTracking", "JuliaSyntax"] -git-tree-sha1 = "9b3d96dc9de6e356e56d6b80f46187fbdd6ee23b" +git-tree-sha1 = "5e570591d1bd81da9cca29d4b36744f61c93254a" uuid = "d265eb64-f81a-44ad-a842-4247ee1503de" -version = "1.4.4" +version = "1.5.4" [[deps.URIs]] git-tree-sha1 = "bef26fb046d031353ef97a82e3fdb6afe7f21b1a" @@ -1452,9 +1618,11 @@ version = "1.6.1" [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" +version = "1.11.0" [[deps.Unicode]] uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" +version = "1.11.0" [[deps.UnicodeFun]] deps = ["REPL"] @@ -1487,9 +1655,9 @@ version = "1.44.0+0" [[deps.WeakRefStrings]] deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" +git-tree-sha1 = "0716e01c3b40413de5dedbc9c5c69f27cddfddfc" uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" +version = "1.4.3" [[deps.WidthLimitedIO]] deps = ["Unicode"] @@ -1510,9 +1678,9 @@ version = "2.13.9+0" [[deps.XZ_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "9cce64c0fdd1960b597ba7ecda2950b5ed957438" +git-tree-sha1 = "b29c22e245d092b8b4e8d3c09ad7baa586d9f573" uuid = "ffd25f8a-64ca-5728-b0f7-c24cf3aae800" -version = "5.8.2+0" +version = "5.8.3+0" [[deps.Xorg_libICE_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1528,9 +1696,9 @@ version = "1.2.6+0" [[deps.Xorg_libX11_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "b5899b25d17bf1889d25906fb9deed5da0c15b3b" +git-tree-sha1 = "808090ede1d41644447dd5cbafced4731c56bd2f" uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.8.12+0" +version = "1.8.13+0" [[deps.Xorg_libXau_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1558,9 +1726,9 @@ version = "1.1.6+0" [[deps.Xorg_libXext_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "a4c0ee07ad36bf8bbce1c3bb52d21fb1e0b987fb" +git-tree-sha1 = "1a4a26870bf1e5d26cd585e38038d399d7e65706" uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.7+0" +version = "1.3.8+0" [[deps.Xorg_libXfixes_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -1576,15 +1744,15 @@ version = "1.8.3+0" [[deps.Xorg_libXinerama_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll"] -git-tree-sha1 = "a5bc75478d323358a90dc36766f3c99ba7feb024" +git-tree-sha1 = "0ba01bc7396896a4ace8aab67db31403c71628f4" uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.6+0" +version = "1.1.7+0" [[deps.Xorg_libXrandr_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "aff463c82a773cb86061bce8d53a0d976854923e" +git-tree-sha1 = "6c174ef70c96c76f4c3f4d3cfbe09d018bcd1b53" uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.5+0" +version = "1.5.6+0" [[deps.Xorg_libXrender_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] @@ -1592,6 +1760,12 @@ git-tree-sha1 = "7ed9347888fac59a618302ee38216dd0379c480d" uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" version = "0.9.12+0" +[[deps.Xorg_libpciaccess_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] +git-tree-sha1 = "58972370b81423fc546c56a60ed1a009450177c3" +uuid = "a65dc6b1-eb27-53a1-bb3e-dea574b5389e" +version = "0.19.0+0" + [[deps.Xorg_libxcb_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libXau_jll", "Xorg_libXdmcp_jll"] git-tree-sha1 = "bfcaf7ec088eaba362093393fe11aa141fa15422" @@ -1600,9 +1774,9 @@ version = "1.17.1+0" [[deps.Xorg_libxkbfile_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll"] -git-tree-sha1 = "e3150c7400c41e207012b41659591f083f3ef795" +git-tree-sha1 = "ed756a03e95fff88d8f738ebc2849431bdd4fd1a" uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.3+0" +version = "1.2.0+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"] @@ -1648,9 +1822,9 @@ version = "1.4.7+0" [[deps.Xorg_xkeyboard_config_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "00af7ebdc563c9217ecc67776d1bbf037dbcebf4" +git-tree-sha1 = "ed349d26affcacafbc7fc2941ace1fb98f71e715" uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.44.0+0" +version = "2.47.0+1" [[deps.Xorg_xtrans_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1661,7 +1835,7 @@ version = "1.6.0+0" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+1" +version = "1.3.1+2" [[deps.Zstd_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] @@ -1701,15 +1875,15 @@ version = "0.18.0+0" [[deps.iso_codes_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "9200917315ff176d445ccc759945ea3fdb7c49c3" +git-tree-sha1 = "6d3b2c8a4870c50f41bbd58131ed9af581c675b5" uuid = "bf975903-5238-5d20-8243-bc370bc1e7e5" -version = "4.18.0+0" +version = "4.20.1+0" [[deps.libaom_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "371cc681c00a3ccc3fbc5c0fb91f58ba9bec1ecf" +git-tree-sha1 = "850b06095ee71f0135d644ffd8a52850699581ed" uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.13.1+0" +version = "3.13.3+0" [[deps.libass_jll]] deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Zlib_jll"] @@ -1720,7 +1894,7 @@ version = "0.17.4+0" [[deps.libblastrampoline_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.11.0+0" +version = "5.15.0+0" [[deps.libdecor_jll]] deps = ["Artifacts", "Dbus_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pango_jll", "Wayland_jll", "xkbcommon_jll"] @@ -1728,6 +1902,12 @@ git-tree-sha1 = "9bf7903af251d2050b467f76bdbe57ce541f7f4f" uuid = "1183f4f0-6f2a-5f1a-908b-139f9cdfea6f" version = "0.2.2+0" +[[deps.libdrm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libpciaccess_jll"] +git-tree-sha1 = "63aac0bcb0b582e11bad965cef4a689905456c03" +uuid = "8e53e030-5e6c-5a89-a30b-be5b7263a166" +version = "2.4.125+1" + [[deps.libevdev_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "56d643b57b188d30cccc25e331d416d3d358e557" @@ -1748,9 +1928,15 @@ version = "1.28.1+0" [[deps.libpng_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Zlib_jll"] -git-tree-sha1 = "6ab498eaf50e0495f89e7a5b582816e2efb95f64" +git-tree-sha1 = "e51150d5ab85cee6fc36726850f0e627ad2e4aba" uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.54+0" +version = "1.6.58+0" + +[[deps.libva_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Xorg_libX11_jll", "Xorg_libXext_jll", "Xorg_libXfixes_jll", "libdrm_jll"] +git-tree-sha1 = "7dbf96baae3310fe2fa0df0ccbb3c6288d5816c9" +uuid = "9a156e7d-b971-5f62-b2c9-67348b8fb97c" +version = "2.23.0+0" [[deps.libvorbis_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll"] @@ -1767,12 +1953,12 @@ version = "1.1.7+0" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.52.0+1" +version = "1.64.0+1" [[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+2" +version = "17.7.0+0" [[deps.x264_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] diff --git a/Project.toml b/Project.toml index 4f4e101..fb2b4c3 100644 --- a/Project.toml +++ b/Project.toml @@ -6,7 +6,9 @@ Configurations = "5218b696-f38b-4ac9-8b61-a12ec717816d" Cthulhu = "f68482b8-f384-11e8-15f7-abe071a5a75f" DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" +DimensionalData = "0703355e-b756-11e9-17c0-8b28908087d0" Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f" +Glob = "c27321d9-0574-5035-807b-f59d2c89b15c" Infiltrator = "5903a43b-9cc3-4c30-8d17-598619ec4e9b" JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" @@ -15,5 +17,6 @@ OwnTime = "18732c20-e27e-497f-aa49-3bf01a8fc721" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Profile = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" ProfileView = "c46f51b8-102a-5cf2-8d2c-8597cb0e0da7" +ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76" diff --git a/calibration/README.md b/calibration/README.md index e264a8e..7559162 100644 --- a/calibration/README.md +++ b/calibration/README.md @@ -65,17 +65,14 @@ catchment will be skipped. ## 5. Possible improvements -0. Diagnostic plots for each catchment: time series, parameters, etc. -1. Redefine DDDAll... as made up of 2 functions: f1 loading PTQ time series, and f2 doing the rest - taking PTQ series among its input. To calibrate a catchment, f1 would be called only once and - f2 would be iterated over by the search algorithm. -2. Use TypedTables instead of DataFrames to read input from CSV files and to pass data to the model, - to ensure type stability (types of DataFrame columns are unknown a priori to the compiler) -3. Specify which parameters should be calibrated and which have a fixed value in settings, - instead of using collapsed ranges, to reduce the formal number of parameters. -4. Check that functions are type-stable to avoid performance losses. -5. Profile DDD code to look for performance bottlenecks. -6. Test if using views instead of slices improves performance by reducing memory allocations. -7. Sensitivity analysis (e.g. [GlobalSensitivity.jl](https://docs.sciml.ai/GlobalSensitivity/stable/)) -8. Use julia 1.12 and [workspaces](https://pkgdocs.julialang.org/dev/creating-packages/#Test-specific-dependencies) +- Test alternatives to DataFrames to ensure type stability (types of DataFrame columns are unknown a priori to the compiler) +- Transpose data matrices so that loops over column indices are external: + * DDD loop over time, landscape and elevation (external to internal) + * time convolution loops over layer (external) and lag time (internal) +- Specify which parameters should be calibrated and which have a fixed value in settings, + instead of using collapsed ranges, to reduce the formal number of parameters. +- Check that functions are type-stable to avoid performance losses. +- Profile DDD code to look for performance bottlenecks. +- Sensitivity analysis (e.g. [GlobalSensitivity.jl](https://docs.sciml.ai/GlobalSensitivity/stable/)) +- Use julia 1.12 and [workspaces](https://pkgdocs.julialang.org/dev/creating-packages/#Test-specific-dependencies) to define test- and calibration-specific dependencies. diff --git a/calibration/calibration.jl b/calibration/calibration.jl index 250b82d..452f88e 100644 --- a/calibration/calibration.jl +++ b/calibration/calibration.jl @@ -5,7 +5,12 @@ using CSV using Random using Dates using DataFrames +using Glob using BlackBoxOptim +using Plots +default(legend=false) +gr() # remove to plot interactively +ENV["GKSwstype"] = "100" # remove to plot interactively include(joinpath(dirname(@__DIR__), "DDDFunctions", "DDDAllTerrain22012024.jl")) Random.seed!(0) @@ -22,21 +27,22 @@ Random.seed!(0) end mutable struct ParameterSet - positions::Vector{UInt8} - values::DataFrame + names::Vector{String} + values::Vector{Float64} + positions_hyd::Vector{UInt8} function ParameterSet(path_in::String) - positions::Vector{UInt8} = [20, 21, 22, 18, 19, 33, 34, 35, 36, 37] - values = CSV.read(path_in, DataFrame, header=["Name", "val"], delim=';') - new(positions, values) + raw = CSV.read(path_in, DataFrame, header=["Name", "val"], delim=';') + positions_hyd::Vector{UInt8} = [20, 21, 22, 18, 19, 33, 34, 35, 36, 37] + new(raw[:,"Name"], raw[:,"val"], positions_hyd) end end function getHydrologicParameters(parameters::ParameterSet)::Vector{Float64} - [parameters.values[i,"val"] for i in parameters.positions] + parameters.values[parameters.positions_hyd] end function setHydrologicParameters!(parameters::ParameterSet, hydrologic::Vector{Float64}) - parameters.values[parameters.positions,"val"] .= hydrologic + parameters.values[parameters.positions_hyd] .= hydrologic end function pathsPTQ(id::String, settings::SettingsCalibration) @@ -61,31 +67,83 @@ function checkInput(id::String, settings::SettingsCalibration) Dict(vcat(["id" => id],[k => isfile(p) for (k, p) in paths])) end -function runDDD(paths_ptq::Dict{String,String}, params_hyd::Vector{Float64}, params_all::DataFrame, spinup::Int, dir_out::String, txt::String) +function runDDD(paths_ptq::Dict{String,String}, params_hyd::Vector{Float64}, params_all::Vector{Float64}, spinup::Int, dir_out::String, txt::String) print("\tRuns with ", txt) kge_score = Dict(k => NaN for k in eachindex(paths_ptq)) Threads.@threads for p in collect(eachindex(paths_ptq)) path_out_series = joinpath(dir_out, "series_$(p).csv") path_out_r2 = joinpath(dir_out, "r2_$(p).csv") - kge_score[p] = DDDAllTerrain(fill(NaN, 2), 1, params_hyd, params_all, paths_ptq[p], path_out_series, path_out_r2, 0, 0, 0, spinup, true)[3] + ptq_in = loadPTQ(paths_ptq[p]) + kge_score[p] = ddd(ptq_in, 1, params_hyd, params_all, path_out_series, path_out_r2, 0, 0, 0, spinup, true)[3] end println(" -> KGE (period): ", join(["$(round(v, digits=4)) ($k)" for (k, v) in kge_score], ", ")) end -function makeEvaluator(parameters_all::DataFrame, path_ptq::String, spinup::Int, path_r2::String) +function makeEvaluator(ptq_in::DataFrame, parameters_all::Vector{Float64}, spinup::Int, path_r2::String) function wrapper(hydpar::Vector{Float64}) - kge_score = DDDAllTerrain(fill(NaN, 2), 1, hydpar, parameters_all, path_ptq, "", path_r2, 0, 0, 1, spinup, true)[3] + kge_score = ddd(ptq_in, 1, hydpar, parameters_all, "", path_r2, 0, 0, 1, spinup, true)[3] return 1. - kge_score end end +function readCatchmentList(path) + catchments = readlines(path) .|> strip .|> String + filter(l -> !isempty(l) && !startswith(l, "#"), catchments) +end + +function plotParameters(id::String, pct_keep::Int, dir_fig::String, settings::SettingsCalibration) + # 1. Load parameter ranges + bounds_all = convert(Dict{String,Dict{String,Vector{Float64}}}, TOML.parsefile(settings.path_parameter_ranges)) + if haskey(bounds_all, id) + error("Not implemented yet: parameter ranges for individual catchments") + else + bounds_local = bounds_all["default"] + end + # 2. Identify actually calibrated parameters + names_par = [k for (k, r) in bounds_local if r[1] != r[2]] + num_par = length(names_par) + # 3. Load parameter sets and KGE values, and keep the best as per pct_keep + paths_r2 = glob(joinpath(joinpath(settings.root_output, id, "calibrated"), "log", "r2_*.csv")) + filter!(p -> filesize(p) > 0, paths_r2) + header = vcat(["NSE", "KGE", "Bias"], ["u", "pro", "TX", "pkorr", "skorr", "GscInt", "OFVP", "OFVIP", "Lv", "Rv"]) + df = sort(CSV.read(paths_r2, DataFrame, header=header)[:,vcat(["KGE"], names_par)], "KGE") + df = df[end-Int(floor(nrow(df) * pct_keep/100)):end,:] + mm_KGE = round.(extrema(df[:,"KGE"]), digits=4) + # 4. Matrix plots + plots = Matrix{Plots.Plot}(undef, num_par, num_par); + for c in 1:num_par + p_x = names_par[c] + for r in 1:num_par + xt = r==num_par ? bounds_local[p_x] : false + xl = r==num_par ? p_x : "" + if c == r + plots[r,c] = scatter(df[1:end-1,p_x], df[1:end-1,"KGE"], color="black", msw=0, grid=false, + xticks=xt, yticks=false, xlim=bounds_local[p_x], xlabel=xl, ymirror=true); + scatter!(plots[r,c], [df[end,p_x]], [df[end,"KGE"]], color="red", msw=0); + elseif c < r + p_y = names_par[r] + yt = c==1 ? bounds_local[p_y] : false + yl = c==1 ? p_y : "" + plots[r,c] = scatter(df[:,p_x], df[:,p_y], marker_z=df[:,"KGE"], color=:viridis, msw=0, grid=false, + xticks=xt, yticks=yt, xlim=bounds_local[p_x], ylim=bounds_local[p_y], + xlabel=xl, ylabel=yl); + scatter!(plots[r,c], [df[end,p_x]], [df[end,p_y]], color="red", marker=:cross, msw=0.5); + else + plots[r,c] = plot(showaxis=false, grid=false, framestyle=:none, background_color=:white, border=:none); + end + end + end + fig = plot(permutedims(plots, (2, 1))..., layout=(num_par, num_par), size=(1000, 1000), + plot_title="$(id): best $(pct_keep)% KGE ∈ [$(mm_KGE[1]), $(mm_KGE[2])]"); + savefig(fig, joinpath(dir_fig, "KGE_parameters_$(id).pdf")) # to display interactively: gui(fig) +end + function calibrateMultipleCatchments(path_toml::String) # Load settings from TOML file settings = from_toml(SettingsCalibration, path_toml) num_threads = max(Threads.nthreads() - 1, 1) # Load catchment list and keep only those not done yet - catchments = readlines(settings.path_catchments_list) - filter!(line -> !isempty(strip(line)) && !startswith(strip(line), "#"), catchments) + catchments = readCatchmentList(settings.path_catchments_list) num_tot = length(catchments) filter!(id -> !isfile(pathDone(id, settings)), catchments) if num_tot > length(catchments) @@ -123,7 +181,8 @@ function calibrateMultipleCatchments(path_toml::String) dir_out_cal = mkpath(joinpath(dir_out, "calibrated")) dir_log_cal = mkpath(joinpath(dir_out_cal, "log")) template_path_r2 = joinpath(dir_log_cal, "r2.csv") - evaluator = makeEvaluator(parameters.values, paths_ptq["calibration"], settings.spinup, template_path_r2) + ptq_in = loadPTQ(paths_ptq["calibration"]) + evaluator = makeEvaluator(ptq_in, parameters.values, settings.spinup, template_path_r2) print("\tCalibration started on ", Dates.format(now(), "yyyy-mm-dd HH:MM")) res = redirect_stdio(stdout=devnull, stderr=devnull) do bboptimize(evaluator; SearchRange=bounds_local, MaxSteps=settings.steps_max, TraceMode=:silent, SaveTrace=true, NThreads=num_threads) @@ -133,7 +192,8 @@ function calibrateMultipleCatchments(path_toml::String) ## Write calibrated parameters to file setHydrologicParameters!(parameters, best_candidate(res)) CSV.write(joinpath(dir_out_cal, "parameters.csv"), parameters.values, delim=';', writeheader=false) - ## Merge calibration log files (1 r2fil per thread): TO DO (function in DDDAll... to rename r2fil and reuse it here)! + ## Parameter plots + plotParameters(id, 50, dir_out, settings) ## Run DDD with calibrated parameters runDDD(paths_ptq, getHydrologicParameters(parameters), parameters.values, settings.spinup, dir_out_cal, "calibrated parameters") ## Create empty file ("done") to be used in case of restart to skip this catchment @@ -141,11 +201,12 @@ function calibrateMultipleCatchments(path_toml::String) end end -function runSingleCatchment(path_toml::String, id::String, period::String) +function inputSingleCatchmentRun(path_toml::String, id::String, period::String) # Load settings from TOML file settings = from_toml(SettingsCalibration, path_toml) - # Path to PTQ input + # PTQ input path_ptq = pathsPTQ(id, settings)[period] + ptq_in = loadPTQ(path_ptq) # Load initial parameters path_inipar = replace(settings.template_path_inipar, "" => id) parameters = ParameterSet(path_inipar) @@ -153,7 +214,7 @@ function runSingleCatchment(path_toml::String, id::String, period::String) dir_out = mkpath(joinpath(settings.root_output, "single_runs", id)) path_out_series = joinpath(dir_out, "series_$(id)_$(period).csv") path_out_r2 = joinpath(dir_out, "r2_$(id)_$(period).csv") - println("Output in ", dir_out) - # Run DDD - DDDAllTerrain(fill(NaN, 2), 1, getHydrologicParameters(parameters), parameters.values, path_ptq, path_out_series, path_out_r2, 0, 0, 0, settings.spinup, true) + println("Input prepared for single run with output in ", dir_out) + # Return input required for running DDD + return (ptq_in, 1, getHydrologicParameters(parameters), parameters.values, path_out_series, path_out_r2, 0, 0, 0, settings.spinup, true) end diff --git a/calibration/plots.jl b/calibration/plots.jl new file mode 100644 index 0000000..589c990 --- /dev/null +++ b/calibration/plots.jl @@ -0,0 +1,21 @@ +using TOML +using ProgressMeter +include("calibration.jl") + +# Run this script with +# julia --project=.. plots.jl 50 settings/calibration_251120.toml + +# Check shell arguments +@assert length(ARGS) == 2 +# Percentage of evaluations to keep +pct_keep = parse(Int, ARGS[1]) +# Load settings from TOML file +settings = from_toml(SettingsCalibration, ARGS[2]) +# Load catchment list and keep only those not done yet +catchments = readCatchmentList(settings.path_catchments_list) +# Plots +dir_fig = mkpath(joinpath(settings.root_output, "figures")) +println("Plotting parameter and KGE plots in $(dir_fig):") +@showprogress for id in catchments + plotParameters(id, pct_keep, dir_fig, settings) +end diff --git a/calibration/run_single_catchment.jl b/calibration/run_single_catchment.jl index eaa9624..33349f8 100644 --- a/calibration/run_single_catchment.jl +++ b/calibration/run_single_catchment.jl @@ -2,8 +2,11 @@ # julia --project=.. run_single_catchment.jl settings/calibration_251120.toml 2.11 calibration include("calibration.jl") +# Shell arguments @assert length(ARGS) == 3 path_settings, id, period = ARGS +# Load input +input = inputSingleCatchmentRun(path_settings, id, period) #runSingleCatchment(path_settings, id, period) #using Profile @@ -15,7 +18,7 @@ path_settings, id, period = ARGS #@code_warntype runSingleCatchment(path_settings, id, period) using BenchmarkTools -@btime runSingleCatchment(path_settings, id, period) +@btime ddd(input...) # ProfileView displays works in REPL and not script #include("calibration.jl") diff --git a/calibration/settings/parameter_ranges/parameter_ranges_251120.toml b/calibration/settings/parameter_ranges/parameter_ranges_251120.toml index 7a45ff2..f1f3f13 100644 --- a/calibration/settings/parameter_ranges/parameter_ranges_251120.toml +++ b/calibration/settings/parameter_ranges/parameter_ranges_251120.toml @@ -1,11 +1,11 @@ [default] -u = [1, 3] +u = [1.0, 3.0] pro = [0.05, 0.05] TX = [-2.0, 2.0] -pkorr = [0.7, 2] -skorr = [0.7, 2] +pkorr = [0.7, 2.0] +skorr = [0.7, 2.0] GscInt = [0.0005, 0.07] OFVP = [0.007, 0.007] OFVIP = [0.007, 0.007] Lv = [0.01, 0.07] -Rv = [0.5, 2] +Rv = [0.5, 2.0] diff --git a/test/runtests.jl b/test/runtests.jl index 1ed45c2..ae42c68 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -9,9 +9,11 @@ path_ptq = joinpath(dir_data, "ptq_12.70_2009-2024.csv") dir_out = mkpath(joinpath(dir_data, "output")) path_out_series = joinpath(dir_out, "output_series_12.70.csv") path_out_r2 = joinpath(dir_out, "output_r2_12.70.csv") +# Load PTQ +ptq_in = loadPTQ(path_ptq) # Run model println("Test output in ", dir_out) -DDDAllTerrain(fill(NaN, 2), 1, getHydrologicParameters(parameters), parameters.values, path_ptq, path_out_series, path_out_r2, 0, 0, 0, 365, true) +ddd(ptq_in, 1, getHydrologicParameters(parameters), parameters.values, path_out_series, path_out_r2, 0, 0, 0, 365, true) # Load output and benchmark time series output = CSV.read(path_out_series, DataFrame) benchmark = CSV.read(joinpath(dir_data, "benchmark_series_12.70.csv"), DataFrame)