1  About openMSE 2.0

openMSE v2.0 represents a major update from earlier versions of openMSE and its component packages.

These updates include a complete code refactoring, where all existing source code was restructured to improve efficiency, readability, and ease of maintenance, and a redesign of the core object classes in the openMSE framework and the related functions .

The majority of these revisions have been done in the MSEtool package. The following package versions are required to use openMSE v2.0:

Important

Currently only MSEtool v4.0 has been developed and needs to be installed from Github:

pak::pkg_install('blue-matter/MSEtool@prerelease')

Despite what it says above, all code in this Technical Manual will work with existing CRAN versions of openMSE, DLMtool, and SAMtool.

These packages will be updated to the latest versions specified above once MSEtool v4.0 is stable and released on CRAN.

1.1 Backwards Compability

The openMSE v2.0 packages are completely backwards compatible with earlier versions, so all code developed using earlier versions of openMSE and its component packages should still work without any changes. Please file an issue if you experience issues where openMSE 2.0 has caused issues with existing code.

Other than fixes to maintain backwards compatibility, the legacy code base will not be updated. For new applications, users are recommended to update to openMSE v2.0 and follow the structure outlined in this manual.

1.2 Overview of Major Changes

This section is primarily relevant to readers who have been working with openMSE in the past and are interested in learning about the technical differences between openMSE 2.0 and earlier versions of the packages.

The majority of the new developments have occurred in the MSEtool package. The most significant changes are the development of new object classes and new accessor and assignment functions related to those objects.

Table 1.1 provides on overview of the new object classes, and some examples of the accessor and assignment functions that operate on those objects.

Lowercase names are used for all new object classes, however the accessor and assignment functions use either uppercase for acronyms (e.g., OM()) or regular case (e.g., Stock()).

The function examples in Table 1.1 are primarily intended for demonstration purposes and, particularly the assignment functions, in practice may require additional arguments. Consult the help documentation for the respective object class (e.g., ?OM ) for further information.

The new object classes and related functions are described in more detail elsewhere in this manual.

Table 1.1: A brief description of the primary new object classes developed for openMSE 2.0
New Class Description Key Functions Examples Deprecated Class
om

S4 object containing the operating model information.

Used for both single-stock/fleet and multi-stock/fleet models.

OM(): Create new om-class object

OM

MOM

stock S4 object containing information relating to the biological characteristics of a stock.

Stock() : Create a new stock-class object

Stock(OM) : Access a stock-class object from an om-class object

Stock(OM) <- Stock() : Assign a stock-class object to an om-class object

Stock
fleet S4 object containing information relating to the exploitation characteristics of a stock.

Fleet() : Create a new fleet-class object

Fleet(OM): Access a fleet-class object from an om-class object

Fleet(OM) <- Fleet() : Assign a fleet-class object to an om-class object

Fleet
obs S4 object containing information related to the observation model used to generate fishery data.

Obs() : Create a new obs-class object

Obs(OM): Access an obs-class object from an om-class object

Obs(OM) <- Obs() : Assign an obs-class object to an om-class object

Obs
imp

S4 object containing information related to the implementation error for management advice produced by management procedures.

Note: Implementation error is currently not implemented in openMSE 2.0 .

Imp() : Create a new imp-class object

Imp(OM): Access an imp-class object from an om-class object

Imp(OM) <- Imp() : Assign an imp-class object to an om-class object

Imp
data

S4 object containing information related to fishery data.

A data-class object contains the data from all fleets in an OM .

Each OM has a data-class object for each Stock , or for each stock complex.

Data() : Create a new data-class object

Data(OM): Access a data-class object from an om-class object

Data(OM) <- Data() : Assign a data-class object to an om-class object

Data
mp Function that takes a data -class object and returns an advice-class object.
MyMP <- function(Data, ...) {
Advice()
}
class(MyMP) <- 'mp'
MP
advice S4 object returned by a mp-class function and containing information related management advice. Advice(): Create a new advice-class object Rec
hist

S4 object containing the simulated historical fishery and information for future population dynamics.

Used for both single-stock/fleet and multi-stock/fleet models.

Hist(MSE) : return historical time series information from an mse-class object.

Note: The object returned by Hist(MSE) is not a complete hist-class object, but only contains the historical time series data. Other information in hist-class objects is stored elsewhere in mse-class objects

Hist

multiHist

mse

S4 object containing all information from the historical and projection periods.

Used for both single-stock/fleet and multi-stock/fleet models.

Used by performance metric and summary table functions.

Note: performance metric functions have not yet been developed for mse-class objects.

MSE

MMSE