inbo / dhcurve

An R package for automated modelling of diameter-height relations for trees
https://inbo.github.io/dhcurve
GNU General Public License v3.0
0 stars 0 forks source link

functie `validatie.afgeleid` toont geen extra grafieken? #69

Closed leymanan closed 1 year ago

leymanan commented 1 year ago

ik krijg de extra grafieken niet (meer) te zien bij gebruik van de functie validatie.afgeleid met argument ExtraCurvesRapport = ExtraCurvesAfgeleid De html wordt aangemaakt, maar bevat geen grafieken. Doel was om een basismodel te plotten als afgeleid model, door het optrekken van min_basis tot 56. Dataframe ExtraCurvesAfgeleidwordt correct aangemaakt.

> ExtraCurvesAfgeleid
      DOMEIN_ID       BMS
968 DomWVL09073 Cors. Den
> temp <- validatie.afgeleid(Basismodel, Afgeleidmodel, ExtraCurvesRapport = ExtraCurvesAfgeleid, TypeRapport = "Dynamisch")
|============================================================================================================ | 99% ~0 s remaining     Het rapport is opgeslagen in de working directory: C:/05_DHcurves/02_aanmaak_dhcurves_ANB/src/main
ElsLommelen commented 1 year ago

Euh, kan je eens checken of het model in Afgeleidmodel[[1]] zit en de metingen van je te plotten curve in Afgeleidmodel[[2]]?

leymanan commented 1 year ago

Oeps, SORRY!!! OPGELOST! In foute folder gekeken, wordt op andere plaats weggeschreven dan de eerste. Blijkbaar als TypeRapport = "Dynamisch", dan in de working dir, en als TypeRapport = "Statisch" in de directory waar het script staat.

En ja, had al gecheckt of het model in de list zat:

t <- Afgeleidmodel[[1]] %>% filter(DOMEIN_ID == "DomWVL09073" & BMS == "Cors. Den")
t2 <- Afgeleidmodel[[2]] %>% filter(DOMEIN_ID == "DomWVL09073" & BMS == "Cors. Den")
ElsLommelen commented 1 year ago

Euh, dat is vreemd dat het rapport anders opgeslagen wordt als het een ander TypeRapport is. Weet je dit zeker? Normaal zou het opgeslagen moeten worden in de working directory, tenzij je expliciet een path meegeeft bij argument PathWD. Uiteraard kan de working directory variëren afhankelijk van je situatie:

Als bij het runnen van eenzelfde script in eenzelfde situatie je rapport bij Dynamisch en Statisch in een verschillende folder opgeslagen wordt, laat het dan a.u.b. weten, dan kijk ik na wat het probleem zou kunnen zijn. Maar ik zie in mijn script geen enkele reden waarom dit het geval zou kunnen zijn, omdat eigenlijk telkens hetzelfde basisrapport gebouwd wordt met iets andere grafieken.

leymanan commented 1 year ago

heel raar, nu is dat toch niet meer het geval, sorry!! (maar was paar dagen geleden zeker zo)

ElsLommelen commented 1 year ago

Geen probleem, belangrijkste is om te weten dat er niks met het package zelf scheelt. ;-)

leymanan commented 1 year ago

Els, ik heb het nu weer voor, dat afgeleide modellen niet getoond worden, terwijl ik ze wel als extracurvesmeegeef. Ik heb al opnieuw opgestart, package opnieuw gebouwd, en daarnet pc terug opgestart, maar probleem blijft. Hierna de gebruikte code temp <- validatie.afgeleid(Basismodel, Afgeleidmodel, ExtraCurvesRapport = ExtraCurvesAfgeleid, TypeRapport = "Dynamisch") Ter controle om zeker te zijn dat het model in Afgeleidmodelzit:

> ExtraCurvesAfgeleid %>% pull(DOMEIN_ID)
[1] "DomWVL09073"
> ExtraCurvesAfgeleid %>% pull(BMS)
[1] "Beuk"

> t <- Afgeleidmodel[[1]] %>% filter(DOMEIN_ID == "DomWVL09073" & BMS == "Beuk")
> t2 <- Afgeleidmodel[[2]] %>% filter(DOMEIN_ID == "DomWVL09073" & BMS == "Beuk")

t en t2 bevat de gevraagde gegevens

Ik zal je een mailtje sturen met in bijlage Rdata, zodat jij het ook eens kan proberen, OK?

ElsLommelen commented 1 year ago

Vreemd: ik opende je doorgestuurde gegevens, runde je code van hierboven, opende het gegenereerde validatierapport en zag daarin als 4de grafiek deze grafiek staan:

image

leymanan commented 1 year ago

heel raar, gisteren lukte het wel nog. Deze keer ben ik echt wel 100% zeker dat ik in de juiste file aan 't kijken ben. Misschien moet k die eerst eens verwijderen, dat heb ik nog niet geprobeerd. Maar dat gaf tot nu toe nog nooit problemen, dus vrees dat het daaraan niet ligt.

Ik zal maandag nog eens proberen, misschien als mijn laptop wat rust gekregen heeft??

ElsLommelen commented 1 year ago

Sowieso is het wel belangrijk dat die file niet open staat als je het rapport bouwt, want dan kan hij die niet overschrijven.

leymanan commented 1 year ago

ik heb nu eens gewoon zelfde gedaan als jij: nieuw script, Rdata ingeladen en code gerund, en lukt niet. Ik ga nog eens hetzelfde doen, maar vanuit een R-script ipv Rmd ... wie weet ...

ElsLommelen commented 1 year ago

Tja, ik weet het ook echt niet. Ik heb recent (= de laatste maanden) niks aangepast aan die functionaliteit, voor zover ik me kan herinneren, dus een iets oudere versie van het package zou niks mogen uitmaken.

Ah, kan je eens kijken naar het tijdstip dat je rapport gebouwd is?

ElsLommelen commented 1 year ago

Ah ja, zei je laatst niet dat je rapport bij een Rmd op een andere plaats opgeslagen wordt? Kijk je in de folder die vermeldt wordt als je het script gerund hebt?

leymanan commented 1 year ago

Ah ja, zei je laatst niet dat je rapport bij een Rmd op een andere plaats opgeslagen wordt? Kijk je in de folder die vermeldt wordt als je het script gerund hebt?

jaja, die fout maak ik geen 2x!

leymanan commented 1 year ago

Ah, kan je eens kijken naar het tijdstip dat je rapport gebouwd is?

daar kijk ik elke keer naar, tijdstip klopt altijd met moment waarop ik hert aangemaakt heb. maar rapport blijft leeg.

ElsLommelen commented 1 year ago

Volledig leeg, of die ene grafiek niet?

leymanan commented 1 year ago

nu heel sec volgend script gerund, na opnieuw opstarten R-project

library(dplyr)
library(tidyr)
library(dhcurve)

load(here::here("src/main/issue69.RData"))

ExtraCurvesAfgeleid %>% pull(DOMEIN_ID)
# [1] "DomWVL09073"
ExtraCurvesAfgeleid %>% pull(BMS)
# [1] "Beuk"

t <- Afgeleidmodel[[1]] %>% filter(DOMEIN_ID == "DomWVL09073" & BMS == "Beuk")
t2 <- Afgeleidmodel[[2]] %>% filter(DOMEIN_ID == "DomWVL09073" & BMS == "Beuk")

temp <- validatie.afgeleid(Basismodel, Afgeleidmodel, ExtraCurvesRapport = ExtraCurvesAfgeleid, TypeRapport = "Dynamisch")

Dan krijg ik melding "Het rapport is opgeslagen in de working directory: C:/05_DHcurves/02_aanmaak_dhcurves_ANB", en dan is 't OK

leymanan commented 1 year ago

idem dito in een nieuwe Rmd

Is precies of ik ergens packages ingeladen heb of instellingen heb in mijn scripts, die gedurende mijn sessie behouden blijven, maar erna weer gereset worden.

Nu ga ik nog eens proberen vanuit mijn eigen scripts ...

leymanan commented 1 year ago

ik start elk script met de volgende setup-chunck:

knitr::opts_chunk$set(
  eval = FALSE,  # bij het knitten wordt enkel tekst en code gerund, geen output
                  # GEVOLG: ook alle chunks runnen lukt dan niet
  message = FALSE,
  warning = FALSE 
  )

library(RODBC)
library(readr)
library(dplyr)
library(tidyr)
library(dhcurve)
library(readxl)
library(lintr)
library(here)
library(sf)
library(rgbif)
library(tidyverse)
library(xtable)

source(file = here::here("src/setup.R"))
leymanan commented 1 year ago

als ik deze chunck eerst run, dan krijg ik niet meer de gewenste html (is leeg)

in de file setup.R staan enkel paths ingesteld en het aanroepen van een file met enkele functies:

# hulpfuncties
source(file = here::here("src/hulpfuncties.R"))

db_metingen <- "DiamHoogteMetingen.accdb"  # !! kan niet gewijzigd worden, want functies package gebruiken deze naam
dbpath <- "C:/05_DHcurves/03_meetgegevens/"
hulpdbpath <- "C:/05_DHcurves/02_aanmaak_dhcurves_ANB/output/"
GISpath <- "C:/Users/anja_leyman/OneDrive - Vlaamse overheid - Office 365/GIS"
path_to_GIS <- "C:/Users/anja_leyman/OneDrive - Vlaamse overheid - Office 365/GIS"
BHI_laatste_versie <- "BHI_20220624"
ElsLommelen commented 1 year ago

Waarom die eval = FALSE? Dit zorgt ervoor dat de code in de chunks niet gerund wordt.

leymanan commented 1 year ago

Verdoeme!!!

Ik dacht dat dat enkel effect had als ik knit: ik zet dat op FALSE, om zo mijn tekst te krijgen van mijn script, want knitten mét resultaten met die achterliggende html-rapporten lukt niet, ik krijg dan steeds meldingen van chunks met zelfde naam ...

Maar anderzijds: ook als ik run vanuit een R-script (en niet een Rmd) lukt het niet meer.

En ik doe dat vaak, er staat dan eval = FALSE in mijn chunck, maar ik kan die code wel laten runnen (enkel niet als ik knit)

ElsLommelen commented 1 year ago

Ben je zeker dat dit nog lukt als je die eerste chunk ook gerund hebt? Of lukt het als je enkel bepaalde chunks runt?

leymanan commented 1 year ago

Als ik nu vanuit een nieuw script (R of Rmd) de simpele code run, lukt het niet meer. Ik zou weer opnieuw moeten opstarten en niks van packages inladen of van chunks_set ...

leymanan commented 1 year ago

even weg om kids ....

leymanan commented 1 year ago

ik run nu enkel volgende code in een R-script (geen Rmd) en het lukt niet meer

rm(list=ls())

library(dplyr)
library(tidyr)
library(dhcurve)

load(here::here("src/main/issue69.RData"))

ExtraCurvesAfgeleid %>% pull(DOMEIN_ID)
# [1] "DomWVL09073"
ExtraCurvesAfgeleid %>% pull(BMS)
# [1] "Beuk"

t <- Afgeleidmodel[[1]] %>% filter(DOMEIN_ID == "DomWVL09073" & BMS == "Beuk")
t2 <- Afgeleidmodel[[2]] %>% filter(DOMEIN_ID == "DomWVL09073" & BMS == "Beuk")

temp <- validatie.afgeleid(Basismodel, Afgeleidmodel, ExtraCurvesRapport = ExtraCurvesAfgeleid, TypeRapport = "Dynamisch")
leymanan commented 1 year ago

ik zal nog eens R afsluiten en openen, en enkel de packages inladen die ik standaard inlaad en kijken of er dan al iets niet meer lukt.

ElsLommelen commented 1 year ago

Om eens te testen: wat als je het deeltje knitr::opts_chunk$set(...) niet runt, maar enkel de packages laadt en de rest van je script runt? Want op zich lijkt het wel logisch dat je geen chunks of code meer kan runnen als je eerst code runt die de optie voor die chunks zet op eval=FALSE.

Sowieso heb ik er bij het ontwikkelen van dhcurves destijds geen rekening mee gehouden dat dit in een Rmd gerund zou worden. Ik zag het eerder als een R-script dat uitgevoerd zou worden, en waarvan het resultaat 'gebruikt' zou worden (en evt. via een Rmd gepubliceerd), maar niet de tussenstappen zelf.

leymanan commented 1 year ago

Om eens te testen: wat als je het deeltje knitr::opts_chunk$set(...) niet runt, maar enkel de packages laadt en de rest van je script runt?

Dat was ik net mee bezig stukje voor beetje toevoegen: al geen effect van packages en van setup.R.

leymanan commented 1 year ago

maar ligt inderdaad aan die eval = FALSEbij setup chunck, zelfs als ik die code run in een gewoon R-script (geen Rmd). Ik had echt niet op dat dat zo een vergaand effect had. Ik dacht echt dat dat enkel effect had bij knitten. Stom!

leymanan commented 1 year ago

maar is niet rap omgekeerd, ik moet echt terugeval = TRUE zetten, het gewoon niet vermelden zorgt ervoor dat het blijkbaar nog steeds in aangeroepen Rmd's zo gebruikt wordt.

knitr::opts_chunk$set(
  eval = TRUE,  
  message = FALSE,
  warning = FALSE
  )
leymanan commented 1 year ago

Bedankt om mee te zoeken!!! Blij dat het voor 't weekend opgelost is.

ElsLommelen commented 1 year ago

Of je moet het niet runnen (of R herstarten), of je moet inderdaad zorgen dat het terug ongedaan wordt. Trouwens: ook bij het runnen van chunks: als je de code selecteert en runt, run je enkel wat je geselecteerd hebt. Maar als je de chunks 'volledig' runt met het driehoekje rechtsboven, dan run je de hele chunk, inclusief eventuele opties die vermeld zijn voor die chunk, dus ook als je boven die chunk eval = FALSE hebt staan, zal die chunk niet gerund worden bij runnen met het driehoekje. Tja, programmeren is ook een beetje opletten wat je runt als je geen gewoon lineair R-script stap voor stap runt...

leymanan commented 1 year ago

Trouwens: ook bij het runnen van chunks: als je de code selecteert en runt, run je enkel wat je geselecteerd hebt. Maar als je de chunks 'volledig' runt met het driehoekje rechtsboven, dan run je de hele chunk, inclusief eventuele opties die vermeld zijn voor die chunk, dus ook als je boven die chunk eval = FALSE hebt staan, zal die chunk niet gerund worden bij runnen met het driehoekje. Tja, programmeren is ook een beetje opletten wat je runt als je geen gewoon lineair R-script stap voor stap runt...

jaja, dat weet ik wel. Zover was ik al ;-)