Current workflows require users to understand internal objects such as MCMCFun, simulateNewDataFun, discFun, structured control lists, NIMBLE node handling, and probably Nimble internals.
Goal
A new user should be able to install the package, open the README or vignette, copy one example, run one high-level function, and interpret the result using print(), summary(), and plot() without needing to understand the internal calibration engine.
A future user-facing workflow might look like:
res<- cppp_nimble(
model=model,
dataNames=NULL,
paramNames=NULL,
discrepancy="mean",
nReps=100,
mainMCMC=list(niter=5000, nburnin=1000),
calibrationMCMC=list(niter=500)
)
summary(res)
plot(res)
Some details
One possibility here is to think about this similarly as nimble sequential setup via runMCMC() vs the nimbleMCMC() one-line invocation
An option would be to keep the runCalibration() and runCalibrationNIMBLE() as the advanced generic functions and consider adding user-friendly functions, e.g., cppp() and cppp_nimble(). Those two functions can use runCalibration() internally and will handle setting a number of defaults for users.
Notes
paramNamesand dataNames can be optional; we can figure out roles of the nodes from nimble model
Current workflows require users to understand internal objects such as
MCMCFun,simulateNewDataFun,discFun, structuredcontrollists, NIMBLE node handling, and probably Nimble internals.Goal
A new user should be able to install the package, open the README or vignette, copy one example, run one high-level function, and interpret the result using
print(),summary(), andplot()without needing to understand the internal calibration engine.A future user-facing workflow might look like:
Some details
One possibility here is to think about this similarly as nimble sequential setup via
runMCMC()vs thenimbleMCMC()one-line invocationAn option would be to keep the
runCalibration()andrunCalibrationNIMBLE()as the advanced generic functions and consider adding user-friendly functions, e.g.,cppp()andcppp_nimble(). Those two functions can userunCalibration()internally and will handle setting a number of defaults for users.Notes
paramNamesanddataNamescan be optional; we can figure out roles of the nodes from nimble model