-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.R
74 lines (48 loc) · 1.71 KB
/
app.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
library(shiny)
library(seacarb)
library(DBI)
library(RPostgreSQL)
con <- dbConnect(
drv = PostgreSQL(),
user = Sys.getenv("DB_USER"),
password = Sys.getenv("DB_PASSWORD"),
host = Sys.getenv("DB_HOST"),
dbname = Sys.getenv("DB_NAME")
)
ui <-fluidPage(
selectInput('crmSelect', label = 'CRM', choices = c()),
numericInput("temperature", label = "temperature", value = 12),
verbatimTextOutput("result")
)
server <- function(input, output, session){
observe({
opts <- dbGetQuery(con, "SELECT DISTINCT crm_number FROM lu_oa_crm ORDER BY crm_number;")
updateSelectInput(session, 'crmSelect', label = 'CRM (From DB)', opts$crm_number)
})
output$result <- renderText({
curr_CRM = input$crmSelect
curr_temp = input$temperature
library(readr)
df.CRM = read.csv("CRM_info.csv")
library(dplyr)
df.CRM.curr <- df.CRM %>%
filter(CRM == curr_CRM) %>%
mutate_at(c(3:6), ~(./10^6))
# Function
fxn.CRMpH=function(temp, df){
fxn_temp = as.numeric(temp)
#flag 15 = ALK & DIC, i.e. var 1 = ALK, var 2 = DIC
fullcarb = carb(flag = 15, var1 = df$TA_umolkg.1, var2 = df$DIC_umolkg.1, S = df$Salinity, T = fxn_temp, Pt = df$Phosphate_umolkg.1, Sit = df$Silicate_umolkg.1, k1k2 = "l", ks = "d", b = "l10")
CRMpH = fullcarb["pH"][[1]]
return(CRMpH)
}
if(nrow(df.CRM.curr) == 0){
result <- paste("No info on CRM batch")
}else{
pH_currtemp = fxn.CRMpH(curr_temp, df.CRM.curr)
result <- paste0("Expected pH at current temperature (",curr_temp," C) is: ", round(pH_currtemp, digits = 3))
}
paste(result)
})
}
shinyApp(ui = ui, server = server)