NEWS.md
stock column in likelihood data can now contain name parts as well as full stock namesg3_to_r-produced model functions will accept both a list & data.frame parameter templateg3_to_r models can include arbitary R functions, see vignettes/writing_actions #194g3_array_agg, g3_array_combine #193 #213g3a_spmodel #209g3_array_plot
detail_x__num to dstart_x__num #200g3a_spawn() splits offspring into multiple stocks correctly?g3a_predate / ?g3a_predate_catchability_predator #29g3a_otherfood, g3a_otherfood_normalparam, g3a_otherfood_normalcv #155g3l_catchdistribution #95g3l_distribution_surveyindices_*() can now be broken down by age without errorg3_parameterized('x', by_year = 1998:2099) to override year range for parametersg3a_initialconditions_normalcv for initialconditions driven by a lencv parameterg3a_renewal_normalcv for initialconditions driven by a lencv parameterby_predator parameter for g3_parameterized
g3_suitability_exponentiall50
g3_init_val() helper, to replace gadgetutils::g3_init_guess()
g3_areas() helper to create numbered area vectorsg3_distribution_preview() helper to see how observatation data will be converted to arrayperiod now optional for g3l_random_walk(), g3l_random_dnorm()
g3l_bounds_penalty() can now generate bounds from actions which update automaticallyg3l_distribution_surveyindices_* now default to beta = 1, set beta = NULL to restore previous behaviour.stock_param() & stock_param_table() replaced with stock_prepend()g3_to_tmb(adreport_re) option #60M now by-age by default #113g3_suitability_andersenfleet() now uses by_predator = TRUE by default #133g3_parameterized('x', by_step = TRUE) for seasonal parameters #115group_by(length = cut(...)) can be used as well as MFDB for groupings #112g3l_understocking(), g3a_naturalmortality(), g3a_renewal_normalparam()g3a_renewal_vonb_t0() & g3a_renewal_vonb_recl(), with g3a_renewal_vonb() being an alias to the latterg3_suitability_andersen() now produces sensible values - https://github.com/gadget-framework/gadget3/issues/108
g3a_age() now supports stocks with a single age (i.e. minage == maxage)recage parameter to g3a_renewal_vonb / g3a_renewal_initabund
g3_suitability_andersenfleet(), a fleet-specialised andsersen suitability function.g3_is_stock() publicg3_eval(), to evaluate snippets of a gadget3 model.g3l_distribution_*(transform_fs = ...) now happens before aggregation, not after. Any matrix used now has to be expressed in terms of the stock, not aggregated age.
g3_param_table() now returns NaN (and warns) on a missing value, instead of aborting.
optim(g3_tmb_par(...)) is now an error. When optimising, always use obj.fun$par.