-
Notifications
You must be signed in to change notification settings - Fork 0
Parameter and Table Display and Content
Home > Model Development Topics > Parameter and Table Display and Content
This topic describes how to control the display and presence of parameters and tables using statements in model code.
- Parameter groups Organizing parameters into a hierarchy
- Table groups Organizing tables into a hierarchy
- Dual UI Specifying a user interface with switchable simplified and detailed views
- Model trim down Creating a trimmed-down model by removing parameters and tables
- Derived parameters as tables Output derived parameters as tables
A parameter group is a named, ordered list of parameters and other parameter groups. Parameter groups can be used to organize the parameters of a model into a hierarchical structure for display and navigation in the model UI. A parameter or parameter group can be a component of zero, one, or more than one parameter groups.
In the hierarchical display of input parameters in the model UI, parameters and parameter groups which are not part of any other parameter group are displayed at the root level in lexicographical order by name.
Parameter groups can also be used to identify groups of parameters in other model code statements
such as hide
, parameters_retain
, or (for derived parameters) parameters_to_tables
.
The following example declares a parameter group named PG12_SchoolOneFate
which consists of the model input parameter Educ1Model
followed by three other parameter groups.
parameter_group PG12_SchoolOneFate //EN Primary School
{
Educ1Model,
PG10_SchoolOneFateBase,
PG11_SchoolOneFateRefined,
PG10_ShoolOneTracking
};
The name of a model code module, quoted, can also be an element of a parameter group. It will be expanded into a list of all the parameters declared in the module, in lexicographical order. For example
parameter_group PG0_FertilityParameters //EN Fertility parameters
{
"Fertility.mpp"
};
declares a parameter group named PG0_FertilityParameters
containing all parameters declared in the Fertility.mpp
model code module.
Derived parameters in a parameter_group
are absent from the hierarchical display of parameters in the model UI.
Derived parameters can be displayed in the UI as described below.
Modgen-specific: The Modgen-specific statement model_generated_parameter_group
is treated as a synonym of parameter_group
by OpenM++.
Table groups are very similar to Parameter groups. They are used to display a model's tables in a hierarchy in the model UI. A table or table group can be a component of zero, one, or more than one table groups.
In the hierarchical display of tables in the model UI, tables and table groups which are not part of any other table group are displayed at the root level in lexicographical order by name.
Table groups are also used to identify groups of tables in other model code statements such as hide
or tables_retain
.
Table groups can be used for run-time table selection using model options Tables.Retain
or Tables.Suppress
.
The following example declares a table group named TG04_Education
which consists of three other table groups.
table_group TG04_Education //EN Education
{
TG04_Preschool,
TG04_Primary,
TG04_Secondary
};
The name of a model code module, quoted, can also be an element of a table group. It will be expanded into a list of all the tables declared in the module, in lexicographical order. For example
table_group TG0_AllTables //EN All tables in Tables.mpp
{
"Tables.mpp"
};
declares a table group named TG0_AllTables
containing all tables declared in the Tables.mpp
model code module.
The OpenM++ UI can present either a simplified or a detailed model interface to the user,
and the user can switch between the two dynamically in the UI by tapping a button.
The simplified interface can contain fewer parameters and tables than the detailed interface.
Which parameters and tables are displayed in each interface is specified in model source code using one or more hide
or show
statements.
A model can contain either hide
statements or show
statements, but not both.
If a model contains no hide
or show
statements,
it has a single interface and the button to choose the simplified or detailed interface is absent from the UI.
If a model has both interfaces, the simplified interface is displayed by default.
The hide
statement syntax is like:
hide P02_Fertility, TG01_Life_Tables;
The arguments to hide
can be the names of tables, parameters, or groups.
The show
statement has the same syntax. The show
statement hides all parameters, tables, and groups except those listed as arguments to show
statements.
hide
and show
do not change which parameters or tables are present in the model.
They should not be confused with suppress or retain statements in model code
which burn in parameters or remove tables from the model itself when it is built:
parameters_retain
, parameters_suppress
, tables_retain
, tables_suppress
.
hide
and show
should also not be confused with the run-time model options Tables.Suppress
and Tables.Retain
which specify which tables are output in a model run.
Modgen-specific: The Modgen hide
syntax which surrounds arguments in parentheses is also recognized,
and treated as described in the description of hide
above.
Modgen hide
functionality is similar but not equivalent to ompp hide
functionality.
Modgen hide
of a table suppresses it from the model,
and is similar to the ompp tables_suppress
statement.
Modgen hide
of a parameter does not remove it,
but instructs the UI to not display it.
A family of four model code statements can be used to trim down a model at build time
by selectively suppressing parameters using parameters_suppress
or tables using tables_suppress
.
Suppression of parameters or tables does not affect the simulation.
The complementary statements parameters_retain
and tables_retain
specify that the model is only to contain specified parameters or tables,
suppressing all others.
Suppress and retain are mutually exclusive:
The OpenM++ compiler will raise an error if model code contains both parameters_suppress
and parameters_retain
statements,
or both tables_suppress
and tables_retain
statements.
Suppressed parameters are burned into the executable using values published when the model is built. Suppressed parameters are absent from the user interface and the model database, and from metadata in the database. Large models can benefit both in build time and start-up time by suppressing parameters, because there is no need to read suppressed parameters from the database when launching the model. Suppressing parameters can also simplify the UI of a deployed model.
Suppressed tables are completely removed from the model. Large models can benefit both in build time and run time by suppressing tables.
Table dependencies specified using the dependency
statement are nevertheless respected if a suppressed table is required by a non-suppressed table. Suppressed tables which are required by other tables are computed internally but are otherwise invisible.
Branches of the parameter or table hierarchy which become empty because of parameter or table suppression are suppressed from the model metadata and the user interface.
The following example is an extract from a model code module SuppressRetain.ompp
which was added to the large OncoSim model to create a trimmed-down test version of the model which contained only parameters and tables related to breast cancer.
parameters_retain
SimulationSeed,
SimulationCases,
Breast_Cancer_Parameters
;
tables_retain
TG01_Breast_Cancer_Tables
;
OpenM++ also includes the ability to selectively suppress tables at run-time using the model run options Tables.Suppress
and Tables.Retain
. These options allow a model user to economize processing time and storage by restricting output to specific tables of interest from the available tables in the model.
Unlike the model run options Tables.Suppress
and Tables.Retain
, the model code statements tables_suppress
and tables_retain
remove tables completely from a model. That can improve model build time, run time, and run storage, but tables suppressed at build time are not available to users at run time.
A model with suppressed parameters builds faster because its metadata and Default values are not published to the model database. The model also launches faster because there is no need for it to read the suppressed parameters from the database when the model starts. A suppressed parameter can be made visible and editable in the model UI by changing the suppress/retain statement and rebuilding the model. This can be simpler than using the Fixed parameter mechanism which requires moving the file containing the parameter values between two folders.
Models can contain diagnostic tables used for testing and development, but which are only needed occasionally subsequently. Instead of commenting out or removing such tables, they can be kept, but added to a table group and then suppressed using tables_suppress
. Doing so ensures that the diagnostic tables continue to be parsed and verified when the model is built, without imposing additional complexity or costs to the published model.
During model development, a model is often modified, built, and run repeatedly when working on a specific component. That iterative development process can be accelerated by using parameters_retain
and tables_retain
temporarily to focus only on the parameters and tables associated with the current development activity. That optimizes the model to the current development activity without changing the simulation logic. After the development activity is complete, the temporary parameters_retain
and tables_retain
statements can be removed.
A derived parameter is normally invisible in model inputs and outputs
but can be made visible by exporting it as a derived table
using the parameters_to_tables
statement.
The argument of parameters_to_tables
is a comma separated list of derived parameters or groups of derived parameters.
Model code can contain multiple occurrences of parameters_to_tables
.
The corresponding derived table
- has the same name as the derived parameter
- has the same metadata as the derived parameter including parameter label, note, dimension labels, and dimension names
- converts parameter values to
double
, with classifications, ranges, and partitions converted to{0,1,2,...}
andbool
converted to{0,1}
, where0
isfalse
and1
istrue
. - has an implicit dimension for sub/member/replicate for runs with multiple subs
- computes, for overall run results, the average across subs (like other derived tables)
A derived table created by parameters_to_tables
acts like other derived tables and can be
- displayed in the UI as a multi-dimensional table
- organized in the hierarchical display of tables in the model UI using
table_group
- suppressed or retained in model outputs using
tables_suppress
ortables_retain
- exported in
csv
format for downstream analysis either from the UI or by usingdbcopy
- used in model output comparisons with
test_models
A derived parameter (aka model-generated parameter) is declared using the derived
keyword.
It is computed by model code before the simulation starts using values of other parameters.
Modgen-specific: In Modgen, derived parameters are declared using the keyword model_generated
.
OpenM++ treats model_generated
as a synonym of derived
.
In Modgen, derived tables are declared using the keyword user_table
.
OpenM++ treats user_table
as a synonym of derived_table
.
For example, here's the declaration of the derived parameter ImmigrantDonors
in the OzProj
model:
parameters
{
...
//EN Number of immigrant donors in initial population
model_generated int ImmigrantDonors;
...
};
OzProj
computes the value of ImmigrantDonors
in the function PersonCore_PreSimulation
by counting microdata input records which satisfy particular conditions.
The computation depends on the input parameter MicroDataInputFile
which gives the name of the file containing input microdata.
Derived parameters are not editable and are not present in the hierarchical display of parameters in the model UI.
However, parameters_to_tables
makes selected derived parameters visible in the UI by converting them to derived tables.
The following statement in OzProj
makes the 7 derived parameters in OzProj
visible as identically-named derived tables in the model UI.
parameters_to_tables
EmigrationHazard,
FertilityHazard,
MortalityHazard,
ImmigrantDonors,
EmigrationHazard,
FertilityHazard,
MortalityHazard
;
Every parameter specifies the type of its value(s), e.g. double
, int
, bool
, REGION
, AGE_GROUP
.
Because the value of a table cell is always double
,
parameters_to_tables
may need to convert the parameter value type to double
in the derived table.
The conversion follows normal C++ type conversion rules.
This includes converting parameter values of type Range
, Classification
or Partition
to {0,1,2,...}
,
and parameter values of type bool
to {0,1}
, where 0
is false
and 1
is true
.
Derived parameters transformed to derived tables can be members of a table group, e.g.
table_group DerivedParameters //EN Derived Parameters
{
EmigrationHazard,
FertilityHazard,
MortalityHazard,
ImmigrantDonors,
EmigrationHazard,
FertilityHazard,
MortalityHazard
};
This allows them to be organized hierarchically in the UI,
or suppressed/retained as a group using tables_suppress
or tables_retain
.
- Windows: Quick Start for Model Users
- Windows: Quick Start for Model Developers
- Linux: Quick Start for Model Users
- Linux: Quick Start for Model Developers
- MacOS: Quick Start for Model Users
- MacOS: Quick Start for Model Developers
- Model Run: How to Run the Model
- MIT License, Copyright and Contribution
- Model Code: Programming a model
- Windows: Create and Debug Models
- Linux: Create and Debug Models
- MacOS: Create and Debug Models
- MacOS: Create and Debug Models using Xcode
- Modgen: Convert case-based model to openM++
- Modgen: Convert time-based model to openM++
- Modgen: Convert Modgen models and usage of C++ in openM++ code
- Model Localization: Translation of model messages
- How To: Set Model Parameters and Get Results
- Model Run: How model finds input parameters
- Model Output Expressions
- Model Run Options and ini-file
- OpenM++ Compiler (omc) Run Options
- OpenM++ ini-file format
- UI: How to start user interface
- UI: openM++ user interface
- UI: Create new or edit scenario
- UI: Upload input scenario or parameters
- UI: Run the Model
- UI: Use ini-files or CSV parameter files
- UI: Compare model run results
- UI: Aggregate and Compare Microdata
- UI: Filter run results by value
- UI: Disk space usage and cleanup
- UI Localization: Translation of openM++
- Authored Model Documentation
- Built-in Attributes
- Censor Event Time
- Create Import Set
- Derived Tables
- Entity Attributes in C++
- Entity Function Hooks
- Entity Member Packing
- Entity Tables
- Enumerations
- Events
- Event Trace
- External Names
- Generated Model Documentation
- Groups
- Illustrative Model
Align1
- Lifecycle Attributes
- Local Random Streams
- Memory Use
- Microdata Output
- Model Code
- Model Documentation
- Model Languages
- Model Localization
- Model Metrics Report
- Model Resource Use
- Model Symbols
- Parameter and Table Display and Content
- Population Size and Scaling
- Screened Tables
- Symbol Labels and Notes
- Tables
- Test Models
- Time-like and Event-like Attributes
- Use Modules
- Weighted Tabulation
- File-based Parameter Values
- Oms: openM++ web-service
- Oms: openM++ web-service API
- Oms: How to prepare model input parameters
- Oms: Cloud and model runs queue
- Use R to save output table into CSV file
- Use R to save output table into Excel
- Run model from R: simple loop in cloud
- Run RiskPaths model from R: advanced run in cloud
- Run RiskPaths model in cloud from local PC
- Run model from R and save results in CSV file
- Run model from R: simple loop over model parameter
- Run RiskPaths model from R: advanced parameters scaling
- Run model from Python: simple loop over model parameter
- Run RiskPaths model from Python: advanced parameters scaling
- Windows: Use Docker to get latest version of OpenM++
- Linux: Use Docker to get latest version of OpenM++
- RedHat 8: Use Docker to get latest version of OpenM++
- Quick Start for OpenM++ Developers
- Setup Development Environment
- 2018, June: OpenM++ HPC cluster: Test Lab
- Development Notes: Defines, UTF-8, Databases, etc.
- 2012, December: OpenM++ Design
- 2012, December: OpenM++ Model Architecture, December 2012
- 2012, December: Roadmap, Phase 1
- 2013, May: Prototype version
- 2013, September: Alpha version
- 2014, March: Project Status, Phase 1 completed
- 2016, December: Task List
- 2017, January: Design Notes. Subsample As Parameter problem. Completed
GET Model Metadata
- GET model list
- GET model list including text (description and notes)
- GET model definition metadata
- GET model metadata including text (description and notes)
- GET model metadata including text in all languages
GET Model Extras
GET Model Run results metadata
- GET list of model runs
- GET list of model runs including text (description and notes)
- GET status of model run
- GET status of model run list
- GET status of first model run
- GET status of last model run
- GET status of last completed model run
- GET model run metadata and status
- GET model run including text (description and notes)
- GET model run including text in all languages
GET Model Workset metadata: set of input parameters
- GET list of model worksets
- GET list of model worksets including text (description and notes)
- GET workset status
- GET model default workset status
- GET workset including text (description and notes)
- GET workset including text in all languages
Read Parameters, Output Tables or Microdata values
- Read parameter values from workset
- Read parameter values from workset (enum id's)
- Read parameter values from model run
- Read parameter values from model run (enum id's)
- Read output table values from model run
- Read output table values from model run (enum id's)
- Read output table calculated values from model run
- Read output table calculated values from model run (enum id's)
- Read output table values and compare model runs
- Read output table values and compare model runs (enun id's)
- Read microdata values from model run
- Read microdata values from model run (enum id's)
- Read aggregated microdata from model run
- Read aggregated microdata from model run (enum id's)
- Read microdata run comparison
- Read microdata run comparison (enum id's)
GET Parameters, Output Tables or Microdata values
- GET parameter values from workset
- GET parameter values from model run
- GET output table expression(s) from model run
- GET output table calculated expression(s) from model run
- GET output table values and compare model runs
- GET output table accumulator(s) from model run
- GET output table all accumulators from model run
- GET microdata values from model run
- GET aggregated microdata from model run
- GET microdata run comparison
GET Parameters, Output Tables or Microdata as CSV
- GET csv parameter values from workset
- GET csv parameter values from workset (enum id's)
- GET csv parameter values from model run
- GET csv parameter values from model run (enum id's)
- GET csv output table expressions from model run
- GET csv output table expressions from model run (enum id's)
- GET csv output table accumulators from model run
- GET csv output table accumulators from model run (enum id's)
- GET csv output table all accumulators from model run
- GET csv output table all accumulators from model run (enum id's)
- GET csv calculated table expressions from model run
- GET csv calculated table expressions from model run (enum id's)
- GET csv model runs comparison table expressions
- GET csv model runs comparison table expressions (enum id's)
- GET csv microdata values from model run
- GET csv microdata values from model run (enum id's)
- GET csv aggregated microdata from model run
- GET csv aggregated microdata from model run (enum id's)
- GET csv microdata run comparison
- GET csv microdata run comparison (enum id's)
GET Modeling Task metadata and task run history
- GET list of modeling tasks
- GET list of modeling tasks including text (description and notes)
- GET modeling task input worksets
- GET modeling task run history
- GET status of modeling task run
- GET status of modeling task run list
- GET status of modeling task first run
- GET status of modeling task last run
- GET status of modeling task last completed run
- GET modeling task including text (description and notes)
- GET modeling task text in all languages
Update Model Profile: set of key-value options
- PATCH create or replace profile
- DELETE profile
- POST create or replace profile option
- DELETE profile option
Update Model Workset: set of input parameters
- POST update workset read-only status
- PUT create new workset
- PUT create or replace workset
- PATCH create or merge workset
- DELETE workset
- POST delete multiple worksets
- DELETE parameter from workset
- PATCH update workset parameter values
- PATCH update workset parameter values (enum id's)
- PATCH update workset parameter(s) value notes
- PUT copy parameter from model run into workset
- PATCH merge parameter from model run into workset
- PUT copy parameter from workset to another
- PATCH merge parameter from workset to another
Update Model Runs
- PATCH update model run text (description and notes)
- DELETE model run
- POST delete model runs
- PATCH update run parameter(s) value notes
Update Modeling Tasks
Run Models: run models and monitor progress
Download model, model run results or input parameters
- GET download log file
- GET model download log files
- GET all download log files
- GET download files tree
- POST initiate entire model download
- POST initiate model run download
- POST initiate model workset download
- DELETE download files
- DELETE all download files
Upload model runs or worksets (input scenarios)
- GET upload log file
- GET all upload log files for the model
- GET all upload log files
- GET upload files tree
- POST initiate model run upload
- POST initiate workset upload
- DELETE upload files
- DELETE all upload files
Download and upload user files
- GET user files tree
- POST upload to user files
- PUT create user files folder
- DELETE file or folder from user files
- DELETE all user files
User: manage user settings
Model run jobs and service state
- GET service configuration
- GET job service state
- GET disk usage state
- POST refresh disk space usage info
- GET state of active model run job
- GET state of model run job from queue
- GET state of model run job from history
- PUT model run job into other queue position
- DELETE state of model run job from history
Administrative: manage web-service state
- POST a request to refresh models catalog
- POST a request to close models catalog
- POST a request to close model database
- POST a request to open database file
- POST a request to cleanup database file
- GET the list of database cleanup log(s)
- GET database cleanup log file(s)
- POST a request to pause model run queue
- POST a request to pause all model runs queue
- PUT a request to shutdown web-service