# Bednet Optimisation App Data Extraction 

# read in functions
source("C:/repos/bed-net-mixture-app/R/run_simulation.R")
source("C:/repos/bed-net-mixture-app/R/calculate_optimum.R")
source("C:/repos/bed-net-mixture-app/R/optima_table.R")

# setup 
runext = rep(c(rep(1,4),0),3) # run or extract
strategy = rep(c(rep("Mixture",4),"Solo"),3) 
one = c(rep("New AI 1",5),rep("Pyrethroid",10))
two = c("Pyrethroid","Chlorfenapyr","Pyriproxyfen","New AI 1",NA,
        rep(c("PBO","Chlorfenapyr","Pyriproxyfen","New AI 1",NA),2))
pyrres = c(rep(2,10),rep(0,5)) # preexisting pyrethroid resistance 
budget = rep(seq(0.5,6,by=0.25),15)

# data to save 
resultsdata = matrix(NA,length(strategy)*length(budget),9*3)

for(ii in 1:length(strategy)){
  for(iii in 1:length(budget)){
    if(runext[ii]==1){ # generate data
      output = run_simulation(os=strategy[ii],iA=one[ii],iB=two[ii],
                              xb=budget[iii],er=pyrres[ii])
      result = optima_table(output)
      resultsdata[iii+(ii-1)*length(budget),] = c(as.vector(unlist(result[floor(median(which(result[,1]=="Joint MC"))),])),
                                                  as.vector(unlist(result[floor(median(which(result[,1]=="Joint CW"))),])),
                                                  as.vector(unlist(result[floor(median(which(result[,1]=="Joint BL"))),])))
    } else { # extract data 
      resultsdata[iii+(ii-1)*length(budget),] = c(as.vector(unlist(result[floor(median(which(result[,1]=="Solo 1 MC"))),])),
                                                  as.vector(unlist(result[floor(median(which(result[,1]=="Solo 1 CW"))),])),
                                                  as.vector(unlist(result[floor(median(which(result[,1]=="Solo 1 BL"))),])))
    }
  }
  print(paste0(round(100*(ii/length(strategy)),1),"% complete"))
}  




# END