Skip to content
Snippets Groups Projects
server.R 3.99 KiB
Newer Older
thierrychambert's avatar
thierrychambert committed
server <- function(output, input){
  observe({
    shinyjs::hide("morta_type")
    shinyjs::hide("nber_park")
    shinyjs::hide("nber_wind_turbine")
    shinyjs::hide("temporality")
    shinyjs::hide("data")
    shinyjs::hide("expert")
    shinyjs::hide("run_expert")
    shinyjs::hide("M1")
    shinyjs::hide("M1_se")
    shinyjs::hide("M1_ic")
    shinyjs::hide("mort_cons")
    shinyjs::hide("N_type")
    shinyjs::hide("expert_2")
    shinyjs::hide("N00_mu")
    shinyjs::hide("N00_se")
    shinyjs::hide("IC_2")
    shinyjs::hide("lambda_type")
    shinyjs::hide("lam0_mu")
    shinyjs::hide("lam0_se")
    shinyjs::hide("IC_3")
    shinyjs::hide("trend")
    shinyjs::hide("trend_2")
    shinyjs::hide("auto")
    shinyjs::hide("mat_params_demog")

    if(input$Mortality%%2 == 1){
      shinyjs::show("morta_type")
      shinyjs::show("nber_wind_turbine")
      shinyjs::show("temporality")
      shinyjs::show("data")
      shinyjs::show("mort_cons")
      if(input$morta_type == "cumulees"){
        shinyjs::show("nber_park")
        shinyjs::show("nber_wind_turbine")}
      if(input$data == "Suivi (observations terrains + EolApp)" | input$data == "Modele predictif (type Band)"){
        shinyjs::show("M1")
        shinyjs::show("M1_se")
        shinyjs::show("M1_ic")
      }
      if(input$data == "Dire d'expert"){
        shinyjs::show("expert")
        shinyjs::show("run_expert")
      }}

    if(input$pop_size%%2 == 1){
      shinyjs::show("N_type")
      #if(input$N_type == "Npair"){
       shinyjs::show("N00_mu")
       shinyjs::show("N00_se")
       shinyjs::show("IC_2")
      #}
      #if(input$N_type == "Effectif total"){
        #shinyjs::show("expert_2")
      #}
    }

    if(input$pop_trend%%2 == 1){
      shinyjs::show("lambda_type")
      shinyjs::show("lam0_mu")
      shinyjs::show("lam0_se")
      shinyjs::show("IC_3")
      shinyjs::show("trend")
      shinyjs::show("trend_2")
    }

    if(input$params_demog%%2 == 1){
      shinyjs::show("auto")
      shinyjs::show("mat_params_demog")
    }

  })

  out <- reactiveValues(N = NULL)


  observeEvent({
    input$run
  }, {

    run0 <- run_simul(nsim = nsim,
                     fatalities_mean = c(M0, input$M1),
                     fatalities_se = c(M0_se, input$M1_se),
                     pop_size_mean = input$N00_mu,
                     pop_size_se = input$N00_se,
                     pop_size_type = input$N_type,
                     pop_growth_mean = input$lam0_mu,
                     pop_growth_se = input$lam0_se,
                     survivals_mean = s_input,
                     fecundities_mean = f_input,
                     model_demo = model_demo,
                     time_horzion = TH,
                     coeff_var_environ = cv_env,
                     fatal_constant = input$mort_cons)

    out$N <- run0$N

    print(input$M1)
    print(dim(out$N))
    print(get_metrics(N = out$N)[30,"avg","sc1"])
    print(get_metrics(N = out$N)[30,"lci","sc1"])
    print(get_metrics(N = out$N)[30,"uci","sc1"])
    print(is.null(out$N))

    print(
      print_it(impact = get_metrics(N = out$N)[30,"avg","sc1"],
               lci = get_metrics(N = out$N)[30,"lci","sc1"],
               uci = get_metrics(N = out$N)[30,"uci","sc1"])
    )

      })

  ## Output
  print_it <- function(impact, lci, uci){
    paste0("Impact sur la taille de population : ", round(impact, 2)*100, "%",
           " [", round(lci, 2)*100, "% ; ", round(uci, 2)*100, "%]")
  } # End function

  print_out <- reactive({
    if(is.null(out$N)){
      "Pas encore de resultat"
    } else {
      print_it(impact = get_metrics(N = out$N)[30,"avg","sc1"],
               lci = get_metrics(N = out$N)[30,"lci","sc1"],
               uci = get_metrics(N = out$N)[30,"uci","sc1"])
    }
  }) # end reactive

  ## Text : impact
    output$message <- renderText({ print_out() })
  #output$message <- renderText({ "Test" })



  # Plot trajectories
  plot_out <- function() if(is.null(out$N)) {} else {plot_impact(N = out$N)}
  output$graph <- renderPlot({
  plot_out()
  })

} # end server