Computational model calibration
Calibration, or parameter estimation, consists in solving the inverse problem of finding descriptors (species, parameters or compartments) values such that the computational model outputs match some user-defined fitness criteria.
Fitness function
The fitness is a metric of the match between outputs of the simulation and the expected behaviors that are covered by the Objectives in the Advanced oupt sets and / or the data tables used as calibration inputs.
The 'Outputs' tab of the calibration consists of a list of output sets and / or data tables, where having at least one item selected is mandatory. The fitness function will be defined as the weigthed sum of the different elements defined as objectives in the Advanced output set and the data tables. In the calibration results, it it called 'optimizationWeigthedScore'.Other outputs(scalar or time series) can also be used in a calibration, but they will only be output for visualization and not used in the fitness function.
Output sets
In Jinkō, you can create two types of output sets
- Simple output sets allow to define the time series and scalar outputs to be visualized as output of a trial.
- Advanced output sets also allow to define some scalar outputs but with more flexibility by using formulas, and more importantly in the context of a calibration, it allows to define objectives and constraints that will be used in the the fitness function. As opposed to the data tables, these objectives and constraints can be qualitative and not directly data.
The output sets are further detailed in the specific documentation, when you can learn how to define outputs.
Data table
Format
To be used in a calibration, a data-table must have its columns abide by the following format, here described in the form of a JSON schema:
{
"oneOf": [
{
"properties": {
"obsId": {
"type": "string"
},
"time": {
"type": "string",
"format": "ISO8601"
},
"value": {
"type": "number"
},
"unit": {
"type": "string",
"format": "physical_unit"
},
"armScope": {
"type": "string"
},
"wideRangeLowBound": {
"type": "number"
},
"wideRangeHighBound": {
"type": "number"
},
"weight": {
"type": "number",
"minimum": 0
},
"experimentRef": {
"type": "string"
}
},
"required": [
"obsId",
"time",
"value"
],
"type": "object"
},
{
"properties": {
"obsId": {
"type": "string"
},
"time": {
"type": "string",
"format": "ISO8601"
},
"narrowRangeLowBound": {
"type": "number"
},
"narrowRangeHighBound": {
"type": "number"
},
"unit": {
"type": "string",
"format": "physical_unit"
},
"armScope": {
"type": "string"
},
"wideRangeLowBound": {
"type": "number"
},
"wideRangeHighBound": {
"type": "number"
},
"weight": {
"type": "number",
"minimum": 0
},
"experimentRef": {
"type": "string"
}
},
"required": [
"obsId",
"time",
"narrowRangeLowBound",
"narrowRangeHighBound"
],
"type": "object"
}
]
}
More details about the format
· obsId (required)
An advanced output formula describing the quantity of interest derived from the computational model to be compared with the data. In particular, it may be a simple reference to a model constituent, i.e. the identifier of a parameter, compartment or species.
· time (required)
Time of the observation following the ISO 8601 duration format.
💡 In Jinkō's web interface, you may also have plain numbers in this column provided that the time unit is specified in the CSV header with
time(<time_unit>)where<time_unit>can be any ofsecond,minute,hour,day,week,monthandyear. We are currently working on supporting this feature when using the API as well.
· value (required if narrowRangeLowBound and narrowRangeHighBound are unset)
A real number representing the observed value of obsId at time time.
The calibration score is equal to if the simulated value is equal to value and decreases towards as it gets further away from it.
The following table of variation summarizes the behavior of the score as a function of obsId:
· narrowRangeLowBound and narrowRangeHighBound (required if value is unset)
Two real values describing the "narrow range" of values taken by obsId within which the score is equal to .
In this case, the table of variations becomes: