Skip to content

Commit b699a2b

Browse files
authored
Merge branch 'develop' into refactor_schema
2 parents 02c24be + 5d8f7ff commit b699a2b

File tree

3 files changed

+12
-218
lines changed

3 files changed

+12
-218
lines changed

petab/core.py

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
logger = logging.getLogger(__name__)
1616
__all__ = ['get_simulation_df', 'write_simulation_df', 'get_visualization_df',
1717
'write_visualization_df', 'get_notnull_columns',
18-
'get_observable_id', 'flatten_timepoint_specific_output_overrides',
18+
'flatten_timepoint_specific_output_overrides',
1919
'concat_tables', 'to_float_if_float', 'is_empty',
2020
'create_combine_archive', 'unique_preserve_order']
2121

@@ -90,30 +90,6 @@ def get_notnull_columns(df: pd.DataFrame, candidates: Iterable):
9090
if col in df and not np.all(df[col].isnull())]
9191

9292

93-
def get_observable_id(parameter_id: str) -> str:
94-
"""Get PEtab observable ID from PEtab-style sigma or observable
95-
`AssignmentRule`-target ``parameter_id``.
96-
97-
e.g. for 'observable_obs1' -> 'obs1', for 'sigma_obs1' -> 'obs1'
98-
99-
Arguments:
100-
parameter_id: Some parameter ID
101-
102-
Returns:
103-
Observable ID
104-
"""
105-
warn("This function will be removed in future releases.",
106-
DeprecationWarning)
107-
108-
if parameter_id.startswith(r'observable_'):
109-
return parameter_id[len('observable_'):]
110-
111-
if parameter_id.startswith(r'sigma_'):
112-
return parameter_id[len('sigma_'):]
113-
114-
raise ValueError('Cannot extract observable id from: ' + parameter_id)
115-
116-
11793
def flatten_timepoint_specific_output_overrides(
11894
petab_problem: 'petab.problem.Problem') -> None:
11995
"""Flatten timepoint-specific output parameter overrides.

petab/sbml.py

Lines changed: 11 additions & 188 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,17 @@
1111
import petab
1212

1313
logger = logging.getLogger(__name__)
14-
__all__ = ['add_global_parameter',
15-
'add_model_output',
16-
'add_model_output_sigma',
17-
'add_model_output_with_sigma',
18-
'create_assigment_rule',
19-
'get_model_for_condition',
20-
'get_model_parameters',
21-
'get_sbml_model',
22-
'globalize_parameters',
23-
'is_sbml_consistent',
24-
'load_sbml_from_file',
25-
'load_sbml_from_string',
26-
'log_sbml_errors',
27-
'sbml_parameter_is_observable',
28-
'sbml_parameter_is_sigma',
29-
'write_sbml']
14+
__all__ = [
15+
'get_model_for_condition',
16+
'get_model_parameters',
17+
'get_sbml_model',
18+
'globalize_parameters',
19+
'is_sbml_consistent',
20+
'load_sbml_from_file',
21+
'load_sbml_from_string',
22+
'log_sbml_errors',
23+
'write_sbml'
24+
]
3025

3126

3227
def is_sbml_consistent(sbml_document: libsbml.SBMLDocument,
@@ -123,178 +118,6 @@ def globalize_parameters(sbml_model: libsbml.Model,
123118
law.removeParameter(lp.getId())
124119

125120

126-
def add_global_parameter(sbml_model: libsbml.Model,
127-
parameter_id: str,
128-
parameter_name: str = None,
129-
constant: bool = False,
130-
units: str = 'dimensionless',
131-
value: float = 0.0) -> libsbml.Parameter:
132-
"""Add new global parameter to SBML model
133-
134-
Arguments:
135-
sbml_model: SBML model
136-
parameter_id: ID of the new parameter
137-
parameter_name: Name of the new parameter
138-
constant: Is parameter constant?
139-
units: SBML unit ID
140-
value: parameter value
141-
142-
Returns:
143-
The created parameter
144-
"""
145-
146-
if parameter_name is None:
147-
parameter_name = parameter_id
148-
149-
p = sbml_model.createParameter()
150-
p.setId(parameter_id)
151-
p.setName(parameter_name)
152-
p.setConstant(constant)
153-
p.setValue(value)
154-
p.setUnits(units)
155-
return p
156-
157-
158-
def create_assigment_rule(sbml_model: libsbml.Model,
159-
assignee_id: str,
160-
formula: str,
161-
rule_id: str = None,
162-
rule_name: str = None) -> libsbml.AssignmentRule:
163-
"""Create SBML AssignmentRule
164-
165-
Arguments:
166-
sbml_model: Model to add output to
167-
assignee_id: Target of assignment
168-
formula: Formula string for model output
169-
rule_id: SBML id for created rule
170-
rule_name: SBML name for created rule
171-
172-
Returns:
173-
The created ``AssignmentRule``
174-
"""
175-
warn("This function will be removed in future releases.",
176-
DeprecationWarning)
177-
178-
if rule_id is None:
179-
rule_id = assignee_id
180-
181-
if rule_name is None:
182-
rule_name = rule_id
183-
184-
rule = sbml_model.createAssignmentRule()
185-
rule.setId(rule_id)
186-
rule.setName(rule_name)
187-
rule.setVariable(assignee_id)
188-
rule.setFormula(formula)
189-
190-
return rule
191-
192-
193-
def add_model_output(sbml_model: libsbml.Model,
194-
observable_id: str,
195-
formula: str,
196-
observable_name: str = None) -> None:
197-
"""Add PEtab-style output to model
198-
199-
We expect that all formula parameters are added to the model elsewhere.
200-
201-
Arguments:
202-
sbml_model: Model to add output to
203-
formula: Formula string for model output
204-
observable_id: ID without "observable\\_" prefix
205-
observable_name: Any observable name
206-
"""
207-
warn("This function will be removed in future releases.",
208-
DeprecationWarning)
209-
210-
if observable_name is None:
211-
observable_name = observable_id
212-
213-
prefixed_id = f'observable_{observable_id}'
214-
add_global_parameter(sbml_model, prefixed_id, observable_name)
215-
create_assigment_rule(sbml_model=sbml_model,
216-
assignee_id=prefixed_id,
217-
formula=formula)
218-
219-
220-
def add_model_output_sigma(sbml_model: libsbml.Model,
221-
observable_id: str,
222-
formula: str) -> None:
223-
"""Add PEtab-style sigma for the given observable id
224-
225-
We expect that all formula parameters are added to the model elsewhere.
226-
227-
Arguments:
228-
sbml_model: Model to add to
229-
observable_id: Observable id for which to add sigma
230-
formula: Formula for sigma
231-
"""
232-
warn("This function will be removed in future releases.",
233-
DeprecationWarning)
234-
235-
add_global_parameter(sbml_model, f'sigma_{observable_id}')
236-
create_assigment_rule(sbml_model, f'sigma_{observable_id}', formula)
237-
238-
239-
def add_model_output_with_sigma(
240-
sbml_model: libsbml.Model,
241-
observable_id: str,
242-
observable_formula: str,
243-
observable_name: str = None) -> None:
244-
"""Add PEtab-style output and corresponding sigma with single
245-
(newly created) parameter
246-
247-
We expect that all formula parameters are added to the model elsewhere.
248-
249-
Arguments:
250-
sbml_model:
251-
Model to add output to
252-
observable_formula:
253-
Formula string for model output
254-
observable_id:
255-
ID without "observable\\_" prefix
256-
observable_name:
257-
Any name
258-
"""
259-
warn("This function will be removed in future releases.",
260-
DeprecationWarning)
261-
262-
add_model_output(sbml_model=sbml_model,
263-
observable_id=observable_id,
264-
observable_name=observable_name,
265-
formula=observable_formula)
266-
267-
noise_parameter_id = f'noiseParameter1_{observable_id}'
268-
add_global_parameter(sbml_model=sbml_model,
269-
parameter_id=noise_parameter_id)
270-
271-
add_model_output_sigma(sbml_model=sbml_model,
272-
observable_id=observable_id,
273-
formula=noise_parameter_id)
274-
275-
276-
def sbml_parameter_is_observable(sbml_parameter: libsbml.Parameter) -> bool:
277-
"""
278-
Returns whether the ``libsbml.Parameter`` ``sbml_parameter``
279-
matches the defined observable format.
280-
"""
281-
warn("This function will be removed in future releases.",
282-
DeprecationWarning)
283-
284-
return sbml_parameter.getId().startswith('observable_')
285-
286-
287-
def sbml_parameter_is_sigma(sbml_parameter: libsbml.Parameter) -> bool:
288-
"""
289-
Returns whether the ``libsbml.Parameter`` ``sbml_parameter``
290-
matches the defined sigma format.
291-
"""
292-
warn("This function will be removed in future releases.",
293-
DeprecationWarning)
294-
295-
return sbml_parameter.getId().startswith('sigma_')
296-
297-
298121
def get_model_parameters(sbml_model: libsbml.Model, with_values=False
299122
) -> Union[List[str], Dict[str, float]]:
300123
"""Return SBML model parameters which are not Rule targets

tests/test_petab.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,6 @@ def test_serialization(petab_problem):
145145
== len(petab_problem.sbml_model.getListOfParameters())
146146

147147

148-
def test_get_observable_id():
149-
assert petab.get_observable_id('observable_obs1') == 'obs1'
150-
assert petab.get_observable_id('sigma_obs1') == 'obs1'
151-
152-
153148
def test_get_priors_from_df():
154149
"""Check petab.get_priors_from_df."""
155150
parameter_df = pd.DataFrame({

0 commit comments

Comments
 (0)