diff --git a/Manifest.toml b/Manifest.toml index cd64321ea3d56e86071173728f7d37dc9db3f594..556bb3293c810c289aebfa80104d14363fa0408a 100644 --- a/Manifest.toml +++ b/Manifest.toml @@ -2,7 +2,12 @@ julia_version = "1.9.3" manifest_format = "2.0" -project_hash = "75d54abf5eeb3f6918bd64a71e5b724e43cc9f03" +project_hash = "4d5b11ea26978b228752be7c1554ae6a3bf688b4" + +[[deps.ANSIColoredPrinters]] +git-tree-sha1 = "574baf8110975760d391c710b6341da1afa48d8c" +uuid = "a4c015fc-c6ff-483c-b24f-f7ea428134e9" +version = "0.0.1" [[deps.AbstractFFTs]] deps = ["LinearAlgebra"] @@ -390,6 +395,12 @@ version = "1.0.0" deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" +[[deps.DefaultApplication]] +deps = ["InteractiveUtils"] +git-tree-sha1 = "c0dfa5a35710a193d83f03124356eef3386688fc" +uuid = "3f0dd361-4fe0-5fc6-8523-80b14ec94d85" +version = "1.1.0" + [[deps.DefineSingletons]] git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" @@ -476,6 +487,12 @@ git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" version = "0.9.3" +[[deps.Documenter]] +deps = ["ANSIColoredPrinters", "AbstractTrees", "Base64", "Dates", "DocStringExtensions", "Downloads", "IOCapture", "InteractiveUtils", "JSON", "LibGit2", "Logging", "Markdown", "MarkdownAST", "Pkg", "PrecompileTools", "REPL", "RegistryInstances", "SHA", "Test", "Unicode"] +git-tree-sha1 = "662fb21ae7fad33e044c2b59ece832fdce32c171" +uuid = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +version = "1.1.2" + [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" @@ -516,6 +533,12 @@ git-tree-sha1 = "2140cd04483da90b2da7f99b2add0750504fc39c" uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" version = "0.1.2" +[[deps.EzXML]] +deps = ["Printf", "XML2_jll"] +git-tree-sha1 = "0fa3b52a04a4e210aeb1626def9c90df3ae65268" +uuid = "8f5d6c58-4d21-5cfd-889c-e3ad7ee6a615" +version = "1.1.0" + [[deps.FFMPEG]] deps = ["FFMPEG_jll"] git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" @@ -780,6 +803,12 @@ git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" version = "0.3.23" +[[deps.IOCapture]] +deps = ["Logging", "Random"] +git-tree-sha1 = "d75853a0bdbfb1ac815478bacd89cd27b550ace6" +uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" +version = "0.2.3" + [[deps.ImageAxes]] deps = ["AxisArrays", "ImageBase", "ImageCore", "Reexport", "SimpleTraits"] git-tree-sha1 = "2e4520d67b0cef90865b3ef727594d2a58e0e1f8" @@ -804,18 +833,6 @@ git-tree-sha1 = "bca20b2f5d00c4fbc192c3212da8fa79f4688009" uuid = "82e4d734-157c-48bb-816b-45c225c6df19" version = "0.6.7" -[[deps.ImageMagick]] -deps = ["FileIO", "ImageCore", "ImageMagick_jll", "InteractiveUtils"] -git-tree-sha1 = "b0b765ff0b4c3ee20ce6740d843be8dfce48487c" -uuid = "6218d12a-5da1-5696-b52f-db25d2ecc6d1" -version = "1.3.0" - -[[deps.ImageMagick_jll]] -deps = ["JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pkg", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "1c0a2295cca535fabaf2029062912591e9b61987" -uuid = "c73af94c-d91f-53ed-93a7-00f77d67a9d7" -version = "6.9.10-12+3" - [[deps.ImageMetadata]] deps = ["AxisArrays", "ImageAxes", "ImageBase", "ImageCore"] git-tree-sha1 = "355e2b974f2e3212a75dfb60519de21361ad3cb7" @@ -977,6 +994,11 @@ git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" version = "1.3.0" +[[deps.LazilyInitializedFields]] +git-tree-sha1 = "8f7f3cabab0fd1800699663533b6d5cb3fc0e612" +uuid = "0e77f7df-68c5-4e49-93ce-4cd80f5598bf" +version = "1.2.2" + [[deps.LazyArtifacts]] deps = ["Artifacts", "Pkg"] uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" @@ -1166,6 +1188,12 @@ version = "0.4.2" deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" +[[deps.MarkdownAST]] +deps = ["AbstractTrees", "Markdown"] +git-tree-sha1 = "465a70f0fc7d443a00dcdc3267a497397b8a3899" +uuid = "d0879d2d-cac2-40c8-9cee-1863dc0c7391" +version = "0.1.2" + [[deps.Match]] git-tree-sha1 = "1d9bc5c1a6e7ee24effb93f175c9342f9154d97f" uuid = "7eb4fadd-790c-5f42-8a69-bfa0b872bfbf" @@ -1410,12 +1438,12 @@ uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" version = "2.7.2" [[deps.Persefone]] -deps = ["Agents", "ArgParse", "CSV", "CairoMakie", "DataFrames", "DataFramesMeta", "Dates", "Distributed", "FileIO", "GeoArrays", "ImageMagick", "Logging", "LoggingExtras", "Pkg", "Random", "Serialization", "StableRNGs", "StatsBase", "TOML", "Test", "TiffImages"] -git-tree-sha1 = "80a1b800473aff48d57c321505d77846fa04f66e" +deps = ["Agents", "ArgParse", "CSV", "CairoMakie", "DataFrames", "DataFramesMeta", "Dates", "Distributed", "Documenter", "FileIO", "GeoArrays", "Logging", "LoggingExtras", "Pkg", "Random", "Serialization", "StableRNGs", "StatsBase", "TOML", "Test", "TiffImages"] +git-tree-sha1 = "f203aeee6b8a2e235f98bea62d8d43503d6e4f5a" repo-rev = "master" repo-url = "https://git.idiv.de/persefone/persefone-model.git" uuid = "039acd1d-2a07-4b33-b082-83a1ff0fd136" -version = "0.3.6" +version = "0.4.0" [[deps.Pixman_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "LLVMOpenMP_jll", "Libdl"] @@ -1428,6 +1456,12 @@ deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", " uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" version = "1.9.2" +[[deps.PkgGraph]] +deps = ["DefaultApplication", "EzXML", "Pkg", "TOML", "URIs", "UUIDs"] +git-tree-sha1 = "9423eabd388f50d669ec13cddddda2709dc4fa28" +uuid = "f9c1b9e4-72e8-4a14-ade5-14f45fc35f11" +version = "0.6.0" + [[deps.PkgVersion]] deps = ["Pkg"] git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" @@ -1593,6 +1627,12 @@ git-tree-sha1 = "ec9bde2e30bc221e05e20fcec9a36a9c315e04a6" uuid = "74f56ac7-18b3-5285-802d-d4bd4f104033" version = "3.0.0" +[[deps.RegistryInstances]] +deps = ["LazilyInitializedFields", "Pkg", "TOML", "Tar"] +git-tree-sha1 = "ffd19052caf598b8653b99404058fce14828be51" +uuid = "2792f1a3-b283-48e8-9a74-f99dce5104f3" +version = "0.1.0" + [[deps.RelocatableFolders]] deps = ["SHA", "Scratch"] git-tree-sha1 = "22c5201127d7b243b9ee1de3b43c408879dff60f" diff --git a/Project.toml b/Project.toml index 4e49c2b2342be08f53c4718ab561e2d78836f0ed..f40e61e7cd7076f8f30e296428a9cafec7eaa4f0 100644 --- a/Project.toml +++ b/Project.toml @@ -15,6 +15,7 @@ GeometryBasics = "5c1252a2-5f33-56bf-86c9-59e7332b4326" Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" Observables = "510215fc-4207-5dde-b226-833fc4488ee2" Persefone = "039acd1d-2a07-4b33-b082-83a1ff0fd136" +PkgGraph = "f9c1b9e4-72e8-4a14-ade5-14f45fc35f11" QML = "2db162a6-7e43-52c3-8d84-290c1c42d82a" Qt6Base_jll = "c0090381-4147-56d7-9ebc-da0b1113ec56" ResumableFunctions = "c5292f4c-5179-55e1-98c5-05642aab7184" diff --git a/guiparams.toml b/guiparams.toml index e4c4e0b57db11563dc48a6ef2d379eae58cd97fe..b3ba1e8279cf0d8cdb8865e657fbdbcc97062ac9 100644 --- a/guiparams.toml +++ b/guiparams.toml @@ -30,8 +30,8 @@ weatherfile = "data/regions/jena-small/weather.csv" # location of the weather da farmmodel = "FieldManager" # which version of the farm model to use (not yet implemented) [nature] -targetspecies = ["Wolpertinger", "Wyvern"] # list of target species to simulate -#targetspecies = ["Skylark"] # species to be simulated +#targetspecies = ["Wolpertinger", "Wyvern"] # list of target species to simulate +targetspecies = ["Skylark"] # species to be simulated popoutfreq = "daily" # output frequency population-level data, daily/monthly/yearly/end/never indoutfreq = "daily" # output frequency individual-level data, daily/monthly/yearly/end/never insectmodel = ["season", "habitat", "pesticides", "weather"] # factors affecting insect growth diff --git a/src/GUI.jl b/src/GUI.jl index 89fed748580b488744e32e3558d61077b98c23a0..cf461a4dd1e74c4a29611dd12f458879cb46d4d3 100644 --- a/src/GUI.jl +++ b/src/GUI.jl @@ -67,15 +67,13 @@ function render_map(screen) inds = @lift(@transform!(@subset(model.datatables["individuals"], :Date .== $date-Day(1)), :Y = size(landcover)[2] .- :Y)) - if size(inds[])[1] > 0 - update_theme!(palette=(color=cgrad(:seaborn_bright, - length(@param(nature.targetspecies))),), - cycle=[:color]) - for s in @param(nature.targetspecies) - points = @lift(Matrix{Float32}( - @select!(@subset($inds, :Species .== s), :X, :Y))) - scatter!(mapimage[1,1], points, markersize=8) - end + ncolors = max(2, length(@param(nature.targetspecies))) + update_theme!(palette=(color=cgrad(:seaborn_bright, ncolors),), + cycle=[:color]) + for s in @param(nature.targetspecies) + points = @lift(Matrix{Float32}( + @select!(@subset($inds, :Species .== s), :X, :Y))) + scatter!(mapimage[1,1], points, markersize=8) end end display(screen, mapimage.scene) @@ -92,9 +90,8 @@ function render_plot(screen) end #XXX other colour schemes: :tab10, :Accent_8, :Dark2_8, :Paired_12, :Set1_9 # https://juliagraphics.github.io/ColorSchemes.jl/stable/catalogue/ - update_theme!(palette=(color=cgrad(:seaborn_bright, - length(@param(nature.targetspecies))),), - cycle=[:color]) + ncolors = max(2, length(@param(nature.targetspecies))) + update_theme!(palette=(color=cgrad(:seaborn_bright, ncolors),), cycle=[:color]) plotimage = Figure() dates = @param(core.startdate):@param(core.enddate) axlimits = @lift((1, length(dates), 0, maximum($pops[!,:Abundance]))) diff --git a/src/PersefoneDesktop.jl b/src/PersefoneDesktop.jl index 66ed3d04b17f4589d343b00f0feb726fbad774a5..bbcfa13b88a53d266c7ad34be5fddbcf7ee77be8 100644 --- a/src/PersefoneDesktop.jl +++ b/src/PersefoneDesktop.jl @@ -27,6 +27,8 @@ using DataFramesMeta, ResumableFunctions +# To visualise dependencies, see here: https://tfiers.github.io/PkgGraph.jl/v0.6/ + include("variables.jl") include("logic.jl") include("config.jl") diff --git a/src/config.jl b/src/config.jl index 33c17a73aed9c967526308cf47cebceb27521cdc..c64f7daf1b99309ffb665678441b1c02a2590c44 100644 --- a/src/config.jl +++ b/src/config.jl @@ -37,6 +37,7 @@ function configwindow() "enddatemonth" => enddatemonth, "enddateyear" => enddateyear, "region" => region, - "cropmodel" => cropmodel)) + "cropmodel" => cropmodel, + "species" => species)) exec() end diff --git a/src/config.qml b/src/config.qml index 299db81625df173d556ef0d9d5c4339ed8443b89..69453e9ead2d7fed2a3c98f31e5d9b5d11273161 100644 --- a/src/config.qml +++ b/src/config.qml @@ -87,6 +87,15 @@ ApplicationWindow { onCurrentIndexChanged: conf.cropmodel = currentText } } + + RowLayout { //TODO how can I enable multi-species selection? + Label { text: "Species:" } + ComboBox { + currentIndex: 0 + model: ["Skylark", "Wolpertinger"] + onCurrentIndexChanged: conf.species = currentText + } + } //XXX For which years do I actually have data? RowLayout { diff --git a/src/variables.jl b/src/variables.jl index baa4e4233d59185848cb778aa2488e2625c9f270..af18c911d1a01b17e0d30df6668c1222137b2b60 100644 --- a/src/variables.jl +++ b/src/variables.jl @@ -40,6 +40,7 @@ const enddatemonth = Observable(12) const enddateyear = Observable(2022) const region = Observable("Jena") #XXX alternatives not yet implemented #const farmmodel = Observable("FieldManager") #XXX not yet implemented +const species = Observable("Skylark") #const targetspecies = Observable() #TODO not sure how to configure a list? #const insectmodel = Observable() #TODO not sure how to configure a list? const cropmodel = Observable("ALMaSS") #XXX alternatives not yet implemented