Skip to content

Commit 82b2f6d

Browse files
authored
Fix SBML validation (#168)
Fixes #166 (double logging) Fixes #167 (ignoring severity)
1 parent 47362d3 commit 82b2f6d

File tree

2 files changed

+10
-13
lines changed

2 files changed

+10
-13
lines changed

petab/models/sbml_model.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from . import MODEL_TYPE_SBML
1010
from .model import Model
1111
from ..sbml import (get_sbml_model, is_sbml_consistent, load_sbml_from_string,
12-
log_sbml_errors, write_sbml)
12+
write_sbml)
1313

1414

1515
class SbmlModel(Model):
@@ -109,9 +109,7 @@ def symbol_allowed_in_observable_formula(self, id_: str) -> bool:
109109
return self.sbml_model.getElementBySId(id_) or id_ == 'time'
110110

111111
def is_valid(self) -> bool:
112-
valid = is_sbml_consistent(self.sbml_model.getSBMLDocument())
113-
log_sbml_errors(self.sbml_model.getSBMLDocument())
114-
return valid
112+
return is_sbml_consistent(self.sbml_model.getSBMLDocument())
115113

116114
def is_state_variable(self, id_: str) -> bool:
117115
return (self.sbml_model.getSpecies(id_) is not None

petab/sbml.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,18 @@ def log_sbml_errors(
6262
minimum_severity: Minimum severity level to report (see libsbml
6363
documentation)
6464
"""
65-
65+
severity_to_log_level = {
66+
libsbml.LIBSBML_SEV_INFO: logging.INFO,
67+
libsbml.LIBSBML_SEV_WARNING: logging.WARNING,
68+
}
6669
for error_idx in range(sbml_document.getNumErrors()):
6770
error = sbml_document.getError(error_idx)
68-
if error.getSeverity() >= minimum_severity:
71+
if (severity := error.getSeverity()) >= minimum_severity:
6972
category = error.getCategoryAsString()
70-
severity = error.getSeverityAsString()
73+
severity_str = error.getSeverityAsString()
7174
message = error.getMessage()
72-
if severity == libsbml.LIBSBML_SEV_INFO:
73-
logger.info(f'libSBML {severity} ({category}): {message}')
74-
elif severity == libsbml.LIBSBML_SEV_WARNING:
75-
logger.warning(f'libSBML {severity} ({category}): {message}')
76-
else:
77-
logger.error(f'libSBML {severity} ({category}): {message}')
75+
logger.log(severity_to_log_level.get(severity, logging.ERROR),
76+
f'libSBML {severity_str} ({category}): {message}')
7877

7978

8079
def globalize_parameters(

0 commit comments

Comments
 (0)