Skip to content

Commit 30910eb

Browse files
Using PEtab constants (#208)
* Using PEtab constants where found * Amibguous imprt in C.py of constants - closes #176
1 parent ba41228 commit 30910eb

6 files changed

Lines changed: 313 additions & 222 deletions

File tree

src/petab_gui/C.py

Lines changed: 140 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Constants for the PEtab edit GUI."""
22

33
import numpy as np
4+
import petab.v1.C as PETAB_C
45

56
#: Application name
67
APP_NAME = "PEtab-GUI"
@@ -11,73 +12,94 @@
1112

1213
COLUMNS = {
1314
"measurement": {
14-
"observableId": {"type": np.object_, "optional": False},
15-
"preequilibrationConditionId": {"type": np.object_, "optional": True},
16-
"simulationConditionId": {"type": np.object_, "optional": False},
17-
"time": {"type": np.float64, "optional": False},
18-
"measurement": {"type": np.float64, "optional": False},
19-
"observableParameters": {"type": np.object_, "optional": True},
20-
"noiseParameters": {"type": np.object_, "optional": True},
21-
"datasetId": {"type": np.object_, "optional": True},
22-
"replicateId": {"type": np.object_, "optional": True},
15+
PETAB_C.OBSERVABLE_ID: {"type": np.object_, "optional": False},
16+
PETAB_C.PREEQUILIBRATION_CONDITION_ID: {
17+
"type": np.object_,
18+
"optional": True,
19+
},
20+
PETAB_C.SIMULATION_CONDITION_ID: {
21+
"type": np.object_,
22+
"optional": False,
23+
},
24+
PETAB_C.TIME: {"type": np.float64, "optional": False},
25+
PETAB_C.MEASUREMENT: {"type": np.float64, "optional": False},
26+
PETAB_C.OBSERVABLE_PARAMETERS: {"type": np.object_, "optional": True},
27+
PETAB_C.NOISE_PARAMETERS: {"type": np.object_, "optional": True},
28+
PETAB_C.DATASET_ID: {"type": np.object_, "optional": True},
29+
PETAB_C.REPLICATE_ID: {"type": np.object_, "optional": True},
2330
},
2431
"simulation": {
25-
"observableId": {"type": np.object_, "optional": False},
26-
"preequilibrationConditionId": {"type": np.object_, "optional": True},
27-
"simulationConditionId": {"type": np.object_, "optional": False},
28-
"time": {"type": np.float64, "optional": False},
29-
"simulation": {"type": np.float64, "optional": False},
30-
"observableParameters": {"type": np.object_, "optional": True},
31-
"noiseParameters": {"type": np.object_, "optional": True},
32-
"datasetId": {"type": np.object_, "optional": True},
33-
"replicateId": {"type": np.object_, "optional": True},
32+
PETAB_C.OBSERVABLE_ID: {"type": np.object_, "optional": False},
33+
PETAB_C.PREEQUILIBRATION_CONDITION_ID: {
34+
"type": np.object_,
35+
"optional": True,
36+
},
37+
PETAB_C.SIMULATION_CONDITION_ID: {
38+
"type": np.object_,
39+
"optional": False,
40+
},
41+
PETAB_C.TIME: {"type": np.float64, "optional": False},
42+
PETAB_C.SIMULATION: {"type": np.float64, "optional": False},
43+
PETAB_C.OBSERVABLE_PARAMETERS: {"type": np.object_, "optional": True},
44+
PETAB_C.NOISE_PARAMETERS: {"type": np.object_, "optional": True},
45+
PETAB_C.DATASET_ID: {"type": np.object_, "optional": True},
46+
PETAB_C.REPLICATE_ID: {"type": np.object_, "optional": True},
3447
},
3548
"observable": {
36-
"observableId": {"type": np.object_, "optional": False},
37-
"observableName": {"type": np.object_, "optional": True},
38-
"observableFormula": {"type": np.object_, "optional": False},
39-
"observableTransformation": {"type": np.object_, "optional": True},
40-
"noiseFormula": {"type": np.object_, "optional": False},
41-
"noiseDistribution": {"type": np.object_, "optional": True},
49+
PETAB_C.OBSERVABLE_ID: {"type": np.object_, "optional": False},
50+
PETAB_C.OBSERVABLE_NAME: {"type": np.object_, "optional": True},
51+
PETAB_C.OBSERVABLE_FORMULA: {"type": np.object_, "optional": False},
52+
PETAB_C.OBSERVABLE_TRANSFORMATION: {
53+
"type": np.object_,
54+
"optional": True,
55+
},
56+
PETAB_C.NOISE_FORMULA: {"type": np.object_, "optional": False},
57+
PETAB_C.NOISE_DISTRIBUTION: {"type": np.object_, "optional": True},
4258
},
4359
"parameter": {
44-
"parameterId": {"type": np.object_, "optional": False},
45-
"parameterName": {"type": np.object_, "optional": True},
46-
"parameterScale": {"type": np.object_, "optional": False},
47-
"lowerBound": {"type": np.float64, "optional": False},
48-
"upperBound": {"type": np.float64, "optional": False},
49-
"nominalValue": {"type": np.float64, "optional": False},
50-
"estimate": {"type": np.object_, "optional": False},
51-
"initializationPriorType": {"type": np.object_, "optional": True},
52-
"initializationPriorParameters": {
60+
PETAB_C.PARAMETER_ID: {"type": np.object_, "optional": False},
61+
PETAB_C.PARAMETER_NAME: {"type": np.object_, "optional": True},
62+
PETAB_C.PARAMETER_SCALE: {"type": np.object_, "optional": False},
63+
PETAB_C.LOWER_BOUND: {"type": np.float64, "optional": False},
64+
PETAB_C.UPPER_BOUND: {"type": np.float64, "optional": False},
65+
PETAB_C.NOMINAL_VALUE: {"type": np.float64, "optional": False},
66+
PETAB_C.ESTIMATE: {"type": np.object_, "optional": False},
67+
PETAB_C.INITIALIZATION_PRIOR_TYPE: {
68+
"type": np.object_,
69+
"optional": True,
70+
},
71+
PETAB_C.INITIALIZATION_PRIOR_PARAMETERS: {
72+
"type": np.object_,
73+
"optional": True,
74+
},
75+
PETAB_C.OBJECTIVE_PRIOR_TYPE: {"type": np.object_, "optional": True},
76+
PETAB_C.OBJECTIVE_PRIOR_PARAMETERS: {
5377
"type": np.object_,
5478
"optional": True,
5579
},
56-
"objectivePriorType": {"type": np.object_, "optional": True},
57-
"objectivePriorParameters": {"type": np.object_, "optional": True},
5880
},
5981
"condition": {
60-
"conditionId": {"type": np.object_, "optional": False},
61-
"conditionName": {"type": np.object_, "optional": False},
82+
PETAB_C.CONDITION_ID: {"type": np.object_, "optional": False},
83+
PETAB_C.CONDITION_NAME: {"type": np.object_, "optional": False},
6284
},
6385
"visualization": {
64-
"plotId": {"type": np.object_, "optional": False},
65-
"plotName": {"type": np.object_, "optional": True},
66-
"plotTypeSimulation": {
86+
PETAB_C.PLOT_ID: {"type": np.object_, "optional": False},
87+
PETAB_C.PLOT_NAME: {"type": np.object_, "optional": True},
88+
PETAB_C.PLOT_TYPE_SIMULATION: {
6789
"type": np.object_,
6890
"optional": True,
6991
},
70-
"plotTypeData": {"type": np.object_, "optional": True},
71-
"datasetId": {"type": np.object_, "optional": True},
72-
"xValues": {"type": np.object_, "optional": True},
73-
"xOffset": {"type": np.float64, "optional": True},
74-
"xLabel": {"type": np.object_, "optional": True},
75-
"xScale": {"type": np.object_, "optional": True},
76-
"yValues": {"type": np.object_, "optional": True},
77-
"yOffset": {"type": np.float64, "optional": True},
78-
"yLabel": {"type": np.object_, "optional": True},
79-
"yScale": {"type": np.object_, "optional": True},
80-
"legendEntry": {"type": np.object_, "optional": True},
92+
PETAB_C.PLOT_TYPE_DATA: {"type": np.object_, "optional": True},
93+
PETAB_C.DATASET_ID: {"type": np.object_, "optional": True},
94+
PETAB_C.X_VALUES: {"type": np.object_, "optional": True},
95+
PETAB_C.X_OFFSET: {"type": np.float64, "optional": True},
96+
PETAB_C.X_LABEL: {"type": np.object_, "optional": True},
97+
PETAB_C.X_SCALE: {"type": np.object_, "optional": True},
98+
PETAB_C.Y_VALUES: {"type": np.object_, "optional": True},
99+
PETAB_C.Y_OFFSET: {"type": np.float64, "optional": True},
100+
PETAB_C.Y_LABEL: {"type": np.object_, "optional": True},
101+
PETAB_C.Y_SCALE: {"type": np.object_, "optional": True},
102+
PETAB_C.LEGEND_ENTRY: {"type": np.object_, "optional": True},
81103
},
82104
}
83105

@@ -126,36 +148,48 @@
126148

127149
# Default Configurations of Default Values
128150
ALLOWED_STRATEGIES_OBS = {
129-
"observableId": STRATEGIES_DEFAULT,
130-
"observableName": STRATEGIES_DEFAULT,
131-
"observableFormula": STRATEGIES_DEFAULT,
132-
"observableTransformation": [USE_DEFAULT, NO_DEFAULT, MODE],
133-
"noiseFormula": [COPY_FROM, USE_DEFAULT, NO_DEFAULT, MODE],
134-
"noiseDistribution": [USE_DEFAULT, NO_DEFAULT, MODE],
151+
PETAB_C.OBSERVABLE_ID: STRATEGIES_DEFAULT,
152+
PETAB_C.OBSERVABLE_NAME: STRATEGIES_DEFAULT,
153+
PETAB_C.OBSERVABLE_FORMULA: STRATEGIES_DEFAULT,
154+
PETAB_C.OBSERVABLE_TRANSFORMATION: [USE_DEFAULT, NO_DEFAULT, MODE],
155+
PETAB_C.NOISE_FORMULA: [COPY_FROM, USE_DEFAULT, NO_DEFAULT, MODE],
156+
PETAB_C.NOISE_DISTRIBUTION: [USE_DEFAULT, NO_DEFAULT, MODE],
135157
}
136158
ALLOWED_STRATEGIES_PAR = {
137-
"parameterId": STRATEGIES_DEFAULT,
138-
"parameterName": STRATEGIES_DEFAULT,
139-
"parameterScale": [USE_DEFAULT, NO_DEFAULT, MODE],
140-
"lowerBound": [MIN_COLUMN, MAX_COLUMN, USE_DEFAULT, NO_DEFAULT, MODE],
141-
"upperBound": [MAX_COLUMN, MAX_COLUMN, USE_DEFAULT, NO_DEFAULT, MODE],
142-
"nominalValue": [USE_DEFAULT, NO_DEFAULT, SBML_LOOK],
143-
"estimate": [USE_DEFAULT, NO_DEFAULT, MODE],
159+
PETAB_C.PARAMETER_ID: STRATEGIES_DEFAULT,
160+
PETAB_C.PARAMETER_NAME: STRATEGIES_DEFAULT,
161+
PETAB_C.PARAMETER_SCALE: [USE_DEFAULT, NO_DEFAULT, MODE],
162+
PETAB_C.LOWER_BOUND: [
163+
MIN_COLUMN,
164+
MAX_COLUMN,
165+
USE_DEFAULT,
166+
NO_DEFAULT,
167+
MODE,
168+
],
169+
PETAB_C.UPPER_BOUND: [
170+
MAX_COLUMN,
171+
MAX_COLUMN,
172+
USE_DEFAULT,
173+
NO_DEFAULT,
174+
MODE,
175+
],
176+
PETAB_C.NOMINAL_VALUE: [USE_DEFAULT, NO_DEFAULT, SBML_LOOK],
177+
PETAB_C.ESTIMATE: [USE_DEFAULT, NO_DEFAULT, MODE],
144178
}
145179
ALLOWED_STRATEGIES_COND = {
146-
"conditionId": STRATEGIES_DEFAULT,
147-
"conditionName": STRATEGIES_DEFAULT,
180+
PETAB_C.CONDITION_ID: STRATEGIES_DEFAULT,
181+
PETAB_C.CONDITION_NAME: STRATEGIES_DEFAULT,
148182
}
149183
ALLOWED_STRATEGIES_MEAS = {
150-
"observableId": STRATEGIES_DEFAULT,
151-
"preequilibrationConditionId": STRATEGIES_DEFAULT_EXT,
152-
"simulationConditionId": STRATEGIES_DEFAULT_EXT,
153-
"time": [NO_DEFAULT, USE_DEFAULT, MODE],
154-
"measurement": [NO_DEFAULT, USE_DEFAULT, MODE],
155-
"observableParameters": STRATEGIES_DEFAULT_EXT,
156-
"noiseParameters": STRATEGIES_DEFAULT_EXT,
157-
"datasetId": [COPY_FROM, USE_DEFAULT, NO_DEFAULT, MODE],
158-
"replicateId": [COPY_FROM, USE_DEFAULT, NO_DEFAULT, MODE],
184+
PETAB_C.OBSERVABLE_ID: STRATEGIES_DEFAULT,
185+
PETAB_C.PREEQUILIBRATION_CONDITION_ID: STRATEGIES_DEFAULT_EXT,
186+
PETAB_C.SIMULATION_CONDITION_ID: STRATEGIES_DEFAULT_EXT,
187+
PETAB_C.TIME: [NO_DEFAULT, USE_DEFAULT, MODE],
188+
PETAB_C.MEASUREMENT: [NO_DEFAULT, USE_DEFAULT, MODE],
189+
PETAB_C.OBSERVABLE_PARAMETERS: STRATEGIES_DEFAULT_EXT,
190+
PETAB_C.NOISE_PARAMETERS: STRATEGIES_DEFAULT_EXT,
191+
PETAB_C.DATASET_ID: [COPY_FROM, USE_DEFAULT, NO_DEFAULT, MODE],
192+
PETAB_C.REPLICATE_ID: [COPY_FROM, USE_DEFAULT, NO_DEFAULT, MODE],
159193
}
160194
ALLOWED_STRATEGIES = {
161195
"observable": ALLOWED_STRATEGIES_OBS,
@@ -164,34 +198,49 @@
164198
"measurement": ALLOWED_STRATEGIES_MEAS,
165199
}
166200
DEFAULT_OBS_CONFIG = {
167-
"observableId": {
201+
PETAB_C.OBSERVABLE_ID: {
168202
"strategy": COPY_FROM,
169-
SOURCE_COLUMN: "observableFormula",
203+
SOURCE_COLUMN: PETAB_C.OBSERVABLE_FORMULA,
170204
DEFAULT_VALUE: "new_observable",
171205
},
172-
"observableName": {"strategy": COPY_FROM, SOURCE_COLUMN: "observableId"},
173-
"noiseFormula": {"strategy": USE_DEFAULT, DEFAULT_VALUE: 1},
174-
"observableTransformation": {
206+
PETAB_C.OBSERVABLE_NAME: {
207+
"strategy": COPY_FROM,
208+
SOURCE_COLUMN: PETAB_C.OBSERVABLE_ID,
209+
},
210+
PETAB_C.NOISE_FORMULA: {"strategy": USE_DEFAULT, DEFAULT_VALUE: 1},
211+
PETAB_C.OBSERVABLE_TRANSFORMATION: {
212+
"strategy": USE_DEFAULT,
213+
DEFAULT_VALUE: PETAB_C.LIN,
214+
},
215+
PETAB_C.NOISE_DISTRIBUTION: {
175216
"strategy": USE_DEFAULT,
176-
DEFAULT_VALUE: "lin",
217+
DEFAULT_VALUE: PETAB_C.NORMAL,
177218
},
178-
"noiseDistribution": {"strategy": USE_DEFAULT, DEFAULT_VALUE: "normal"},
179219
}
180220
DEFAULT_PAR_CONFIG = {
181-
"parameterName": {
221+
PETAB_C.PARAMETER_NAME: {
182222
"strategy": COPY_FROM,
183-
SOURCE_COLUMN: "parameterId",
223+
SOURCE_COLUMN: PETAB_C.PARAMETER_ID,
184224
DEFAULT_VALUE: "new_parameter",
185225
},
186-
"parameterScale": {"strategy": USE_DEFAULT, DEFAULT_VALUE: "log10"},
187-
"lowerBound": {"strategy": MIN_COLUMN},
188-
"upperBound": {"strategy": MAX_COLUMN},
189-
"estimate": {"strategy": USE_DEFAULT, DEFAULT_VALUE: 1},
190-
"nominalValue": {"strategy": SBML_LOOK},
226+
PETAB_C.PARAMETER_SCALE: {
227+
"strategy": USE_DEFAULT,
228+
DEFAULT_VALUE: PETAB_C.LOG10,
229+
},
230+
PETAB_C.LOWER_BOUND: {"strategy": MIN_COLUMN},
231+
PETAB_C.UPPER_BOUND: {"strategy": MAX_COLUMN},
232+
PETAB_C.ESTIMATE: {"strategy": USE_DEFAULT, DEFAULT_VALUE: 1},
233+
PETAB_C.NOMINAL_VALUE: {"strategy": SBML_LOOK},
191234
}
192235
DEFAULT_COND_CONFIG = {
193-
"conditionId": {"strategy": USE_DEFAULT, DEFAULT_VALUE: "new_condition"},
194-
"conditionName": {"strategy": COPY_FROM, SOURCE_COLUMN: "conditionId"},
236+
PETAB_C.CONDITION_ID: {
237+
"strategy": USE_DEFAULT,
238+
DEFAULT_VALUE: "new_condition",
239+
},
240+
PETAB_C.CONDITION_NAME: {
241+
"strategy": COPY_FROM,
242+
SOURCE_COLUMN: PETAB_C.CONDITION_ID,
243+
},
195244
}
196245
DEFAULT_MEAS_CONFIG = {}
197246
DEFAULT_CONFIGS = {

src/petab_gui/controllers/default_handler.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import numpy as np
77
import pandas as pd
8+
import petab.v1 as petab
89

910
from ..C import (
1011
COPY_FROM,
@@ -94,9 +95,9 @@ def _min_column(self, column_name, par_scale=None):
9495
if column_name not in self.model:
9596
return ""
9697
column_data = self.model[column_name].replace("", np.nan).dropna()
97-
if column_name in ["upperBound", "lowerBound"]:
98+
if column_name in [petab.C.UPPER_BOUND, petab.C.LOWER_BOUND]:
9899
column_data = column_data.loc[
99-
self.model["parameterScale"] == par_scale
100+
self.model[petab.C.PARAMETER_SCALE] == par_scale
100101
]
101102
if not column_data.empty:
102103
return column_data.min()
@@ -106,9 +107,9 @@ def _max_column(self, column_name, par_scale=None):
106107
if column_name not in self.model:
107108
return ""
108109
column_data = self.model[column_name].replace("", np.nan).dropna()
109-
if column_name in ["upperBound", "lowerBound"]:
110+
if column_name in [petab.C.UPPER_BOUND, petab.C.LOWER_BOUND]:
110111
column_data = column_data.loc[
111-
self.model["parameterScale"] == par_scale
112+
self.model[petab.C.PARAMETER_SCALE] == par_scale
112113
]
113114
if not column_data.empty:
114115
return column_data.max()

0 commit comments

Comments
 (0)