library(R2admb)
setup_admb()
source("wildflower_ADMB_funs.R")
sessionInfo()

fdat <- read.csv("../DATA/wildflower_pods_complete.csv")

data4ADMB <- setup_wildflower_data(fdat)
	
write_dat("wildflowers", L=data4ADMB)

params4ADMB <- setup_wildflower_params(data4ADMB$nfixed, data4ADMB$nplants, data4ADMB$nyears)
		
write_pin("wildflowers", L=params4ADMB)

compile_admb("wildflowers", safe=TRUE, re=TRUE, verbose=TRUE)

st1 <- system.time(run_admb("wildflowers", verbose=FALSE, extra.args="-shess -noinit -nox"))["elapsed"]
st1 <- unname(st1)

fit_admb <- read_admb("wildflowers")

ev <- try(eigen(solve(vcov(fit_admb)))$value)
eratio <- if (inherits(ev,"try-error")) NA else min(ev)/max(ev)

fpars <- 1:6
vcpars <- 7:9
coef.fixef <- coef(fit_admb)[fpars]
stdEr.fixef <- stdEr(fit_admb)[fpars]
confint.fixef <- confint(fit_admb,method="quad")[fpars,]
coef.sd <- coef(fit_admb)[vcpars]
coef.vc <- coef.sd^2
stdEr.sd <- stdEr(fit_admb)[vcpars]
## delta method: Var(S^2) = (2*S)^2*Var(S)
##               sd(S^2) =  2*S*sd(S)
stdEr.vc <- 2*coef.sd*stdEr.sd
confint.vc <- cbind(lo=coef.vc-1.96*stdEr.vc,hi=coef.vc+1.96*stdEr.vc)

results <- list(obj=-logLik(fit_admb),  ## objective function/Neg log likelihood (NULL for MCMC)
                coef=c(coef.fixef,coef.vc),
                sd=c(stdEr.fixef,stdEr.vc),
                confint.quad=rbind(confint.fixef,confint.vc),
                time=c(fit=st1),
                terminfo=c(maxgrad=fit_admb$maxgrad,eratio=eratio) ## MLE termination info
                )

save("results",file="fit.RData")
clean_admb("wildflowers")
