flowchart TD build([<a href='om_build.html'>Build</a>]) condition[[<a href='om_condition.html'>Condition</a>]] import[[<a href='om_import.html'>Import</a>]] convert[[<a href='om_convert.html'>Convert</a>]] om[<a href='object_om.html'>OM</a>] build:::process --> om condition:::function --> om import:::function --> om convert:::function --> om sim[[<a href='walkthrough_hist.html'>Simulate</a>]] om:::object --> sim:::function hist[<a href='object_hist.html'>Hist</a>] sim --> hist:::object mp[[<a href='management_procedures.html'>MP</a>]] data[<a href='object_data.html'>Data</a>] data:::object --> mp project[[<a href='object_mse.html'>Project</a>]] hist:::object --> project:::function mp:::function --> project mse[<a href='object_mse.html'>MSE</a>] project --> mse:::object classDef process fill:#fe218b, stroke:#111,stroke-width:1px, color:#000 classDef function fill:#fed700, stroke:#111,stroke-width:1px, color:#000 classDef object fill:#21b0fe, stroke:#111,stroke-width:1px, color:#000
3 Primary Objects and Functions
openMSE is designed with an object-oriented programming (OOP) paradigm, where the code is organized around objects, which contain relevant data, and functions (methods) that operate on those objects.
Figure 3.1 shows a conceptual overview of the MSE process in openMSE, with colors indicating the primary objects and the functions.
3.1 The OM Object
The Operating Model (OM) object is the main component of the MSE framework. It describes the characteristics of a fishery system and contains all the information required to simulate the population and fleet dynamics, the collection of fishery data, and the application of a management procedure.
OM objects can be constructed using one of the following methods:
- Build: a process rather than a single function, this method involves creating a new
OMobject, and manually populating the various elements of the object using a combination of expert judgement and available fishery data. - Condition: generate an
OMby fitting a fishery population dynamics model to time-series fishery data (e.g., historical catches, indices of abundance, age and/or length compositions). - Import: import an
OMfrom the output of an age-structured stock assessment. - Convert: convert
OMobjectsthat were created in earlier versions of openMSE (see Chapter 2) to the new object structure developed in openMSE 2.0.
Chapter 21 describes the OM object in more detail.
3.2 The Hist Object
Hist objects are created by applying the Simulate function to OM objects (Figure 3.1). These objects contain the simulated historical fishery dynamics and are used to project the model forward in time under a range of different management policies (i.e., management procedures).
Chapter 16 describes the Hist object in more detail.
3.3 The Data Object
Data objects contain the fishery data that can be used by management procedures (MPs) to generate management advice. This fishery data can either be real observed data (primarily for the historical period described in the Hist object) or simulated data generated by the model.
Chapter 12 describes the Data object in more detail.
3.4 Management Procedure (MP) Functions
A Management Procedures (MP) is a set of rules which define how a fishery will be managed. These rules can range from simple harvest policies to more complex arrangements.
In openMSE, MPs are defined as special R functions that take a Data object as the primary argument, and return an Advice object (see Chapter 10) that contains the management regulations that will be implemented into the fishery.
See the Management Procedures section for more details on management procedures.
3.5 The MSE Object
MSE objects are created by applying the Project function to Hist objects, together with the management procedure (MP) functions that will be used to provide the management advice that was implemented in the simulated fishery (Figure 3.1).
MSE objects contain the fishery dynamics from both the historical period (Hist) and the projection period where the MPs were applied.
Chapter 20 describes the MSE object in more detail.
3.6 Demonstration of the MSE Process
The following chapters in this section explore these objects and functions in more detail and provide a demonstration of the MSE process.