Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[4 - Future] - Fonctions métier #19

Closed
7 tasks done
PMHLambert opened this issue Nov 24, 2020 · 11 comments
Closed
7 tasks done

[4 - Future] - Fonctions métier #19

PMHLambert opened this issue Nov 24, 2020 · 11 comments
Assignees

Comments

@PMHLambert
Copy link
Collaborator

PMHLambert commented Nov 24, 2020

consider several mortatlity cursors per country (to regionalise a little more the anthropogenic pressure), or even cursors for 2 or 3 periods (to keep track of trends in management). IRisk to lose simplicity in the interactivity and therefore in the effectiveness of the message.

ThinkR:

  • Permettre une seconde entrée pour les mortalités (Avant 2050, Après 2050)
  • En sortie, on reprend la meme chose que "Changement Climatique"
  • Explorer les scripts fournis: diades.atlas.data
  • Première version de la fonction qui lance une simulation HyDiaD. Nécessite probablement encore de l'optimisation
    HyDiaDsimulation.zip
  • Implémenter la vignette adéquate et les fonctions
  • Implémenter les tests unitaires
  • Ajouter à l'interface
@statnmap statnmap changed the title improvement page "future" [UI] Page 3 - page "future" Dec 15, 2020
@statnmap statnmap mentioned this issue Dec 15, 2020
8 tasks
@statnmap
Copy link
Collaborator

statnmap commented Dec 15, 2020

  • Define all parameters needed => Add info in issue [4 - Future] Meta #23
  • Fix list of all parameters that can be tested
  • What are the model specifications to be used for predictions ? Can we get scripts ?
  • Prepare script to calculate predictions under different parameters choice.
  • Create map of predictions

image

@statnmap statnmap changed the title [UI] Page 3 - page "future" [Rmd] Page 3 - page "future" Dec 15, 2020
@statnmap statnmap changed the title [Rmd] Page 3 - page "future" [Rmd] Page 4 - page "future" Aug 10, 2021
@statnmap statnmap changed the title [Rmd] Page 4 - page "future" [Rmd] Page 4 - Future - Content Aug 11, 2021
@statnmap
Copy link
Collaborator

On pourra voir si on peut faire les prédictions directement dans la base

@ColinFay
Copy link
Collaborator

@PMHLambert nous n'avons pas le code permettant de calculer les prédictions, est-ce qu'ils sont disponibles ?

@statnmap statnmap changed the title [Rmd] Page 4 - Future - Content [4 - Future] - Fonctions métier Dec 1, 2021
@statnmap
Copy link
Collaborator

statnmap commented Dec 1, 2021

Les données et scripts sont dans: diades.atlas.data.
A explorer.

@statnmap statnmap self-assigned this Mar 21, 2022
statnmap added a commit that referenced this issue Apr 5, 2022
Why?

- There will be modeling in page 4

What?

- Explore queries in data-raw

issue #19
statnmap added a commit that referenced this issue Apr 26, 2022
Why?

- There will be modeling in page 4

What?

- Explore queries in data-raw

issue #19
statnmap added a commit that referenced this issue May 4, 2022
Why?

- There will be modeling in page 4

What?

- Explore queries in data-raw

issue #19
statnmap added a commit that referenced this issue May 4, 2022
Why?

- Need to read and test required tables of the database

What?

- `get_data_simulation()` prepares datasets

issue #19
statnmap added a commit that referenced this issue May 4, 2022
Why?

- Allow multiple mortality sliders and two periods

What?

- Update UI
- Add new generate dataset for countries list

issue #19
statnmap added a commit that referenced this issue May 4, 2022
Why?

- Multiple mortality entries are possible,
the current UI is not totally user friendly

What?

- Add an editable {DT} table

issue  #19
statnmap added a commit that referenced this issue May 4, 2022
Why?

- Using database calculation make it a little quicker

What?

- Make prediction functions working
- Present in the vignette
- Update vignette/
issue #19
@statnmap statnmap mentioned this issue May 4, 2022
9 tasks
@statnmap
Copy link
Collaborator

statnmap commented May 4, 2022

Exploration du jour sur les scripts modèle

Le code est toujours en cours de développement, mais je met mes observations ici au fur et à mesure pour ne pas les perdre

  • Reprise du code tel quel, sans essayer d'optimiser ou de vérifier s'il est correct
  • Modifications lorsque nécessaire pour que les fonctions marchent avec la base de données le plus loin possible
  • Séparation des fonctions dans les fonctions:
    • identification des paramètres non déclarés dans la fonction: cela fonctionne avant séparation car les variables sont utilisées comme variables globales, mais il vaut mieux tout déclarer. En sortant la fonction, on se rend compte plus vite des variables manquantes.
  • Pas de moyen de vérifier que les calculs matriciels sont corrects.
    • Le code fait appel a plusieurs calculc matriciels ou entre vecteurs. Ils sont de la même taille et supposés correspondre aux bons bassins versants / années. Pour cela, le code arrange() les variables par ordre alphabétique. Mais cela ne garantit pas une correspondance parfaite. Le mieux est de passer par des data.frame autant que possible de façon à faire des jointures sur la base d'une colonne commune.
    • J'ai réalisé cette opération pour le calcul avec spawnersTo_50 parce qu'ils étaient créés trop loin dans le code pour être sûr qu'ils correspondaient. Ci dessus le code modifié. Ici, on passe de data.frame à matrix et inversement, mais en théorie on devrait pouvoir tout faire en data.frame, à condition de le faire depuis le début.
    • Il y a peu de raison qu'il y ait des erreurs d'appairage, mais ce n'est pas garanti dans le code original
# catchment_spawnersTo_50 est une table créé au départ à la place de `spawnersTo_50` pour conserver le nom des BV
# > catchment_spawnersTo_50
# Source:     lazy query [?? x 3]
# Database:   postgres
#   [diadesatlas_owner@localhost:5432/diades]
# Ordered by: basin_name
   basin_name surface_area
   <chr>             <dbl>
 1 Authie             1305
 2 Orkla              3092
 3 Vefsna             4122
 4 Aulne              1495

  # survival offspring
  if (parameter$withAllee) {
    # => Safe version: Join Spawners to be sure that basins are in the same order
    catchment_spawnersTo_50_collect <- catchment_spawnersTo_50 %>% collect()
    # Keep in order of `spawnersTo`
    survivalOffsprings <- as.data.frame(spawnersTo) %>% 
      # get back rownames as column for the join
      rownames_to_column(var = "basin_name") %>% # count() # 134
      rename(spawnersTo = V1) %>% 
      # Join
      left_join(catchment_spawnersTo_50_collect, by = "basin_name") %>% # %>% count()
      # Calculate survivalOffsprings with correct basin
      mutate(
        survivalOffsprings = parameter$r * 
          (spawnersTo^2 / (spawnersTo_50^2 + spawnersTo^2)) * spawnersTo) %>% 
      # Back to matrix for the calculations
      column_to_rownames(var = "basin_name") %>% 
      select(survivalOffsprings) %>% 
      as.matrix() #%>% 
      # head() %>% is()
    
    # => Original version: calculate the proportion of active spawners
    # survivalOffsprings <- parameter$r * (spawnersTo^2 / (spawnersTo_50^2 + spawnersTo^2)) * spawnersTo
  } else {
    survivalOffsprings <- parameter$r * spawnersTo 
  }

statnmap added a commit that referenced this issue May 5, 2022
Why?

- Need of more JS to allow dropdown rendering

What?

- Add show trigger from dropdown
- Allow modal to disappear whereever we click

issue #19
statnmap added a commit that referenced this issue May 10, 2022
Why?

- Multiple countries available, a table is easier to read and fill

What?

- Fix checks with the new functions for table

issue #19

Issues
@statnmap
Copy link
Collaborator

@PMHLambert
J'ai récupéré tout le code inclus dans le zip pour le mettre les simulations dans des fonctions du package et faire un Rmarkdown d'exploration.
Le code de tes fonctions à changé un peu.
Tu dois quand même pouvoir t'y retrouver si tu veux apporter des modifications.

En effet, le temps de calcul des prédictions est long et je ne suis pas sûr que ça passe dans Shiny car l'application pourrait se fermer avant la fin des résultats. Il y a une limite de temps qu'on peut difficilement changer.
J'ai ajouté dans le README du projet, les instructions pour que tu puisses récupérer le projet en local et explorer le code et les fonctions du package dans la partie "Retrieve package and develop": https://github.com/inrae/diades.atlas

Si tu veux t'aventurer, c'est l'occasion. Par ailleurs, ça te permet d'avoir les fonctions retravaillées pour tout travaux que tu voudrais faire avec ces données.

Tu verras le code dans la page du site web et les résultats pour l'onglet 4 ici: https://inrae.github.io/diades.atlas/articles/be-page4-future.html (dans qq minutes dès qu'il aura fini de construire)

La phase suivante pour moi, c'est de commencer à implémenter tout cela dans l'app Shiny, mais il va falloir trouver une stratégie maline de stockage et affichage des données, pour ne pas attendre trop longtemps les résultats.
Je vais y réfléchir...

@PMHLambert
Copy link
Collaborator Author

j'ai commencé à m'aventurer ... en commençant par me tromper de branche. Il y a deux commit maladroits dans main :-( Je n'ai pas réussi à revenir en arrière. J'avoue ne pas avoir trop cherché de peur de faire plus de bêtises.
J'ai réussi à créer ma banche pour regarder le code. A moi l'aventure

@statnmap
Copy link
Collaborator

Ahlala !
Surtout, ne touches plus à rien dans main ! Si c'est envoyé sur le serveur, on ne revient plus en arrière.
Peut-être qu'on peut empêcher l'envoi sur la branche main, mais je ne suis pas administrateur, alors je ne peux pas le faire moi-même.
Et il me faudrait quand même les droits pour que je puisse envoyer dans main directement de mon côté si nécessaire
A voir avec @equinton ?

@equinton
Copy link
Member

equinton commented May 13, 2022 via email

@PMHLambert
Copy link
Collaborator Author

je peux continuer à faire des bêtises sur main . J'en ai profité pour retirer ce que j'avais fait précédemment

statnmap added a commit that referenced this issue May 18, 2022
Why?

Separating functions an using more database may generate output modifications

What?

- Create unit test to verify expected outputs
- Use SQL as mush as possible

issue #19
@statnmap statnmap mentioned this issue May 18, 2022
11 tasks
@statnmap
Copy link
Collaborator

statnmap commented Jun 2, 2022

Traité dans #126

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants