-
The resources can now be balanced, as mizer's single resource has always been:
setMultipleResources()gained aresource_levelargument and abalanceargument, and there are newresource_level()andresource_level<-()accessors. Giving exactly one ofresource_rate,resource_capacityorresource_levelnow by default determines the other one from the requirement that each resource replenishes at exactly the rate at which it is consumed, so that the current resource abundances are a steady state. Each resource is balanced with the balancing function belonging to its own dynamics, and resources whose dynamics has no such function are left alone. Passbalance = FALSEto switch this off, for exampleresource_capacity(params, balance = FALSE) <- capacity. The balancing is also available on its own asbalanceResources(). -
tuneSteadyState()now balances the resources of a multiple-resource model automatically. They are held at their stored abundances while the consumer spectra are solved for, exactly as mizer holds its own resource, and afterwards their capacities are derived from their rates so that those held abundances are a steady state of the resource dynamics under the new spectra. The model you get back is therefore at a fixed point of the resource dynamics as well as of the consumer dynamics, and mizer no longer reports theMRcomponent as one it is holding fixed without being able to handle. -
setMultipleResources()gained aresetargument that recalculates the resource rate and capacity from the resource parameters even if they were previously set by hand or by balancing. -
mizerMR now requires mizer (>= 3.3.0) and follows the plotting interface that mizer introduced in that release.
plotSpectra()andanimate()take thebiomassandper_log_sizeflags, whose sum is the power of the weight multiplying the number density;poweris still accepted and is the only way to ask for a power that is not such a sum, but apowerthat contradicts the flags is now an error rather than being silently resolved. -
plotSpectra(),animate()and theplot()methods of the resource array classes now honoursize_axis = "l",llim,log_x,log_yandlog, which used to be ignored. On a length axis the resources are converted with the weight-length relationship mizer uses for its own resource (aandbfromresource_params(), or mizer's defaults), which is the same one with which the combined resource enters the total, and a density picks up thedw/dlJacobian. The total is summed on the axis it is plotted against.plotSpectra()also honoursresource = FALSEand now labels its axes and places its legend exactly as mizer does. -
The resource arrays returned by
initialNResource(),NResource(),finalNResource()andgetResourceMort()carry mizer's newtypeattribute saying what kind of quantity they hold, and theirplot()method uses it: a density can be converted to a length axis or shown per logarithmic size, a rate cannot, and a proportion would be drawn on a linear axis from 0 to 1.MRArrayResourceBySize()andMRArrayTimeByResourceBySize()gained atypeargument. -
plotDiet()honourssize_axis,wlim,llim,log_xandlog_y, which used to be ignored. Itswlimdefault is nowc(NA, NA)as in mizer, rather than thec(1, NA)that never took effect. -
plotResourceLevel()shows the whole of the interval from 0 to 1 on its y axis, as mizer now does for a proportion. -
newMRParams()andsetMultipleResources()gained aninfo_levelargument and report through mizer's reporting mechanism, so that everything mizerMR says while building or changing a model obeysinfo_leveland arrives together with mizer's own reports at the end of the call. -
mizerMR now respects mizer's
second_order_wflag. When second-order bin-averaging is switched on, each resource's carrying capacity and replenishment rate are built from the exact bin averages of their power laws over the resource's size range (with the bins straddlingw_min/w_maxgetting the partial average) rather than point-sampled at the left bin edge, and the initial resource inherits the bin-averaged capacity.newMRParams()gains asecond_order_wargument that is passed through to mizer's constructor. The default (first-order) behaviour is unchanged and the package still works against mizer versions without thesecond_order_wslot. -
The resource accessors (
getResourceMort(),initialNResource(),finalNResource()andNResource()) now return classed objects (MRArrayResourceBySizeandMRArrayTimeByResourceBySize) that supportprint(),summary(),plot()andas.data.frame()methods, so you can do e.g.plot(getResourceMort(params))orplot(NResource(sim))with one coloured line per resource. This mirrors the corresponding classes added for the single resource in mizer. Requires mizer (>= 3.0.0.9002).
- Compatible with mizer version 3.0.0
setMultipleResources()now uses mizer's extension-chain methods for encounter and resource mortality instead of replacing entries inparams@rates_funcs, allowing composition with other extension packages.- Accessors and plots that need multiple-resource behaviour are now registered
as methods for mizer's generics.
plotlySpectra()has been removed. - The resource encounter rate is now computed with a single Fourier transform for all resources combined instead of one per resource, so the encounter cost no longer grows with the number of resources. A per-resource fallback is retained for models with a custom (non-Fourier) predation kernel.
scaleModel(),scaleRates(),setResource()andsummary()now have multiple-resource methods.scaleModel()andscaleRates()rescale all resource capacities, abundances and rates consistently (previouslyscaleModel()errored);setResource()warns that it only affects the silenced built-in resource; andsummary()reports the combined resource size range instead of the empty built-in resource.
plotSpectra()andplotlySpectra()work with multiple resources.- New plotting functions
plotResourceLevel()andplotResourcePred(). setMultipleResources()no longer changes the initial resource abundances unless supplied viainitial_resource.- Fix bug preventing
resource_params()from changing the resource arrays. plotDietMR()renamed toplotDiet().
setMultipleResources()now adds to theextensionsfield in params metadata.plotDietMR()is a replacement forplotDiet()that works with multiple resources.setMultipleResources()now sets theinital_n_ppslot to zero so that there are no spurious contributions togetDiet()for example.- The functions extracting information from MizerParams or MizerSim objects now all fall back onto core mizer functions when called with objects for which no multiple resources have been set up.
- The resource params are now saved in the
@other_paramsslot instead of theresource_paramsslot to avoid breaking core mizer code.
- First functional version of package, ready for testing.