[Developers] Control files and basic MCMC

Arni Magnusson arnima at hafro.is
Fri Jan 10 12:00:39 PST 2014

Happy new year to you, core developers!

As Johnoel mentions, there is a wishlist item #11 in the Reykjavik 
Workshop Report that says:

"Flag/switch class Simplify the use of control and MCMC files, perhaps 
MFCL-like object capability"

This wishlist item is really about two things:


(1) Sometimes we want to make ADMB applications general and user-friendly. 
By user-friendly, I don't mean beginner-friendly, but an efficient 
interface for running a variety of related models without recompiling. 
Fixing parameters and setting bounds, phases, and initial values, and 
various model-specific settings. This is sometimes done inside the main 
data file and sometimes in a separate control file.

Take http://www.hafro.is/~arnima/pella/pella.tpl for example. The data and 
parameter sections are rather convoluted, in order to provide a PLUI 
(phase,lower,upper,init) interface for controlling the parameter 

Of course the exact implementation will vary from model to model. But 
writing the PLUI code feels unnecessarily clunky and repetitive. The code 
for switching to the control file is rather ugly, and and so is the code 
to set the parameter phases, bounds and inits. Perhaps these tasks are so 
common and so useful that we can provide some new functionality to make 
them easier for the ADMB programmer.

This example is a tiny model with very few parameters. The importance of 
this wishlist item becomes greater with dozens of parameters.


(2) MCMC is an important feature of ADMB. I like telling potential and new 
users that it's a piece of cake to run MCMC for any ADMB model: you 
basically just type mymodel -mcmc.

Well, sort of.

The http://www.hafro.is/~arnima/pella/pella.tpl example shows a common 
approach. First we have if(mceval_phase()) write_mcmc(); and later we have 
FUNCTION write_mcmc, with a long workaround to put a header for each 
column in the MCMC output.

Wouldn't it be cool if the user could actually type mymodel -mcmc without 
all that stuff, and get a text file with column headers, ready to plot. 
For the most advanced users, the PSV file is just that, but for the 
majority of users that's not a very intuitive or accessible format. Again, 
a task that is so common and so useful could be made easier to use.

A related idea is an MCMC_SECTION with a stream object that's ready to 
use, mcmc<<"blah"<<..., much like the report stream object in the 


As you can tell, I'm interested in both of these wishlist items. They may 
not be top priority, but potential areas where ADMB could be a bit 
smoother around the edges. We can revisit them at the next workshop, to 
decide whether and how some of this could be done. We did not look at this 
at the Reykjavik workshop, but included it in the report as a reminder of 
a discussion item after the workshop.

All the best,


On Fri, 10 Jan 2014, Johnoel Ancheta wrote:

> Hi all,
> Happy New Years.
> I looked over the workshop report and noticed a priority task 
> "Flag/Switch class to simplify the use of control and MCMC files..."
> It says someone is working on this, but did not say who?
> Johnoel

More information about the Developers mailing list