require(R2jags)

wildflower_BUGS_fit <- function(dataForJags,seed) {
  jags(model="wildflower_BUGS.txt",
       ## DIC=FALSE,  ## experiment
       ## this makes the model run, but something else is wrong ...
       data = dataForJags,
       parameters.to.save = c("yearInterceptPrecision",
         "plantInterceptPrecision",
         "plantSlopePrecision",
         "intercept", "slope",
         "yearInterceptEffect"),
       n.chains = 1, inits = list(list(yearInterceptPrecision = 1,
                       plantInterceptPrecision = 1,
                       plantSlopePrecision = 1,
                       intercept = rep(0,dataForJags$Nstage), slope = 0,
                       yearInterceptEffect = rnorm(dataForJags$Nyear),
                       plantInterceptEffect = rnorm(dataForJags$Nplant),
                       plantSlopeEffect = rnorm(dataForJags$Nplant),
                       .RNG.seed=seed)))
}

setup_wildflower_data <- function(rawData) {
  ## This takes as input the data read from the file and creates some new parts for use by JAGS.
  ## It add columns to the rawData for index stage, year, and plant.
  ## It makes a list with the data = rawData and also Nyear, Nstage, Ndata.

  ## note contrast between "State" (in rawData) and "stage" (in BUGS)
  
  year <- rawData$Year - min(rawData$Year) + 1  ## convert to an index
  plant <- as.integer(rawData$PlantID)
  stage <- as.integer(factor(rawData$State,
                             levels = c("F","L","M","S","D"))) ## match ADMB/R ordering
                             ## levels = c("D","S","M","L","F"))) ## Intuitive ordering of states
  Nyear <- length(unique(year))
  Nplant <- length(unique(plant))
  Ndata <- nrow(rawData)
  Nstage <- length(unique(stage))

  list(year = year,
       plant = plant,
       stage = stage,
       Pods = rawData$Pods,
       Nstage = Nstage,
       Nyear = Nyear,
       Nplant = Nplant,
       Ndata = Ndata,
       toF = rawData$toF)
  
}
