From af0de58901ef998412dc13ca40c80ca0a5b96ac0 Mon Sep 17 00:00:00 2001 From: Daniel Vedder <daniel.vedder@idiv.de> Date: Wed, 4 Sep 2024 10:17:30 +0200 Subject: [PATCH] Got PersefoneDesktop working with the newest version of Persefone --- desktop.jl | 0 guiparams.toml | 22 ++++++++++++---------- src/GUI.jl | 12 ++++++------ src/PersefoneDesktop.jl | 3 +-- src/logic.jl | 2 +- src/main.qml | 8 ++++---- src/variables.jl | 9 ++++----- 7 files changed, 28 insertions(+), 28 deletions(-) mode change 100755 => 100644 desktop.jl diff --git a/desktop.jl b/desktop.jl old mode 100755 new mode 100644 diff --git a/guiparams.toml b/guiparams.toml index b3ba1e8..4eb653b 100644 --- a/guiparams.toml +++ b/guiparams.toml @@ -10,31 +10,33 @@ configfile = "guiparams.toml" # location of the configuration file outdir = "desktop_results" # location and name of the output folder overwrite = true # overwrite the output directory? (true/false/"ask") +logoutput = "both" # log output to screen/file/none/both csvoutput = false # save collected data in CSV files visualise = false # generate result graphs storedata = true # keep collected data in memory -loglevel = "debug" # verbosity level: "debug", "info", "warn" +loglevel = "info" # verbosity level: "debug", "info", "warn" processors = 2 # number of processors to use on parallel runs seed = 2 # seed value for the RNG (0 -> random value) # dates to start and end the simulation -startdate = 2022-01-01 -enddate = 2022-12-31 +startdate = 2021-01-01 +enddate = 2023-12-31 [world] -#TODO point to files in the main data directory? (avoid file duplication) -landcovermap = "data/regions/jena-small/landcover.tif" # location of the landcover map -farmfieldsmap = "data/regions/jena-small/fields.tif" # location of the field geometry map -weatherfile = "data/regions/jena-small/weather.csv" # location of the weather data file +mapdirectory = "data/regions/jena-small" # the directory in which all geographic data are stored +mapresolution = 10 # map resolution in meters +landcovermap = "landcover.tif" # name of the landcover map in the map directory +farmfieldsmap = "fields.tif" # name of the field geometry map in the map directory +weatherfile = "weather.csv" # name of the weather data file in the map directory [farm] -farmmodel = "FieldManager" # which version of the farm model to use (not yet implemented) +farmmodel = "BasicFarmer" # which version of the farm model to use +setaside = 0.04 # proportion of farm area set aside as fallow +fieldoutfreq = "daily" # output frequency for crop/field data, daily/monthly/yearly/end/never [nature] -#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 [crop] cropmodel = "almass" # crop growth model to use, "almass" or "aquacrop" diff --git a/src/GUI.jl b/src/GUI.jl index cf461a4..a136a1d 100644 --- a/src/GUI.jl +++ b/src/GUI.jl @@ -58,14 +58,14 @@ function render_map(screen) launching[] && return display(screen, Figure().scene) # blank screen at launch println("Updating map") if isnothing(mapimage) - landcover = rotr90(load(@param(world.landcovermap))) + landcover = rotr90(load(joinpath(@param(world.mapdirectory), @param(world.landcovermap)))) mapimage = Figure() ax = Axis(mapimage[1,1]) hidedecorations!(ax) image!(mapimage[1,1], landcover) ax.aspect = DataAspect() - inds = @lift(@transform!(@subset(model.datatables["individuals"], - :Date .== $date-Day(1)), + inds = @lift(@transform!(@subset(@data("individuals"), + :X .!= -1, :Date .== $date-Day(1)), :Y = size(landcover)[2] .- :Y)) ncolors = max(2, length(@param(nature.targetspecies))) update_theme!(palette=(color=cgrad(:seaborn_bright, ncolors),), @@ -86,7 +86,7 @@ function render_plot(screen) if isnothing(plotimage) pops = @lift begin $date #needed to activate the lift, doesn't do anything - model.datatables["populations"] + @data("populations") end #XXX other colour schemes: :tab10, :Accent_8, :Dark2_8, :Paired_12, :Set1_9 # https://juliagraphics.github.io/ColorSchemes.jl/stable/catalogue/ @@ -135,13 +135,13 @@ end datestring = () -> Dates.format(date[], "dd U yyyy") function activateqmlfunctions() - @qmlfunction configwindow + #@qmlfunction configwindow @qmlfunction loadsimulation @qmlfunction savesimulation @qmlfunction nextstep @qmlfunction previousstep @qmlfunction datestring - @qmlfunction writeconfig + #@qmlfunction writeconfig @qmlfunction saveoutput end diff --git a/src/PersefoneDesktop.jl b/src/PersefoneDesktop.jl index bbcfa13..b9acdff 100644 --- a/src/PersefoneDesktop.jl +++ b/src/PersefoneDesktop.jl @@ -18,7 +18,6 @@ using TOML, Dates, Makie, - Agents, FileIO, CxxWrap, GLMakie, @@ -31,7 +30,7 @@ using include("variables.jl") include("logic.jl") -include("config.jl") +#include("config.jl") # ignore config for now include("GUI.jl") precompile(launch, ()) diff --git a/src/logic.jl b/src/logic.jl index 3e9ef54..b8795ec 100644 --- a/src/logic.jl +++ b/src/logic.jl @@ -13,7 +13,7 @@ model.date -= Day(1) Persefone.outputdata(model, true) # record data before run starts model.date += Day(1) - landcovermap = rotr90(load(@param(world.landcovermap))) + landcovermap = rotr90(load(joinpath(@param(world.mapdirectory), @param(world.landcovermap)))) date[] = model.date launching[] = false end diff --git a/src/main.qml b/src/main.qml index 6ce7279..8ebfc9e 100644 --- a/src/main.qml +++ b/src/main.qml @@ -24,10 +24,10 @@ ApplicationWindow { text: "&New Simulation" onTriggered: { vars.launching = true } //TODO select config file } - Action { - text: "&Configure Simulation" - onTriggered: { Julia.configwindow() } - } + /* Action { */ + /* text: "&Configure Simulation" */ + /* onTriggered: { Julia.configwindow() } */ + /* } */ Action { text: "&Load Saved State" onTriggered: { loadFileChooser.open() } diff --git a/src/variables.jl b/src/variables.jl index af18c91..6c20057 100644 --- a/src/variables.jl +++ b/src/variables.jl @@ -26,7 +26,7 @@ const runbuttontip = Observable("Run") ## configuration parameters -const userconfigfile = Observable("userconfig.toml") +const userconfigfile = Observable("userconfig.toml") #XXX not yet needed const outdir = Observable("persefone_output") const csvoutput = Observable(false) const loglevel = Observable("warn") @@ -34,15 +34,14 @@ const processors = Observable(1) const seed = Observable(2) const startdateday = Observable(1) const startdatemonth = Observable(1) -const startdateyear = Observable(2022) +const startdateyear = Observable(2021) const enddateday = Observable(31) 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 region = Observable("Jena") +const farmmodel = Observable("BasicFarmer") 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 -- GitLab