From 7c37ebeeaa45ae7cc8273b50b4c8f7deef90610f Mon Sep 17 00:00:00 2001 From: "Frank T. Bergmann" Date: Thu, 5 Dec 2024 15:20:03 +0100 Subject: [PATCH 1/3] - allow to initialize from sbml str --- petab/v1/models/sbml_model.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/petab/v1/models/sbml_model.py b/petab/v1/models/sbml_model.py index fd57f2dc..0ac95fc8 100644 --- a/petab/v1/models/sbml_model.py +++ b/petab/v1/models/sbml_model.py @@ -80,6 +80,22 @@ def from_file(filepath_or_buffer, model_id: str = None): sbml_document=sbml_document, model_id=model_id, ) + + @staticmethod + def from_string(sbml_string, model_id: str = None): + sbml_reader, sbml_document, sbml_model = load_sbml_from_string( + sbml_string + ) + + if not model_id: + model_id = sbml_model.getIdAttribute() + + return SbmlModel( + sbml_model=sbml_model, + sbml_reader=sbml_reader, + sbml_document=sbml_document, + model_id=model_id, + ) @property def model_id(self): From 33cb1b1ef9254d00b5408bc3f89ddd7c79b529b9 Mon Sep 17 00:00:00 2001 From: "Frank T. Bergmann" Date: Thu, 5 Dec 2024 15:20:19 +0100 Subject: [PATCH 2/3] - disambiguate between warning and errors --- petab/v1/sbml.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/petab/v1/sbml.py b/petab/v1/sbml.py index 0a8fd20f..4ed16a79 100644 --- a/petab/v1/sbml.py +++ b/petab/v1/sbml.py @@ -43,12 +43,17 @@ def is_sbml_consistent( libsbml.LIBSBML_CAT_UNITS_CONSISTENCY, False ) - has_problems = sbml_document.checkConsistency() - if has_problems: + has_issues = sbml_document.checkConsistency() + + # we only have an issue with errors or fatals + has_problems = sbml_document.getNumErrors(libsbml.LIBSBML_SEV_ERROR) + \ + sbml_document.getNumErrors(libsbml.LIBSBML_SEV_FATAL) + if has_issues: log_sbml_errors(sbml_document) - logger.warning( - "WARNING: Generated invalid SBML model. Check messages above." - ) + if has_problems: + logger.warning( + "WARNING: Generated invalid SBML model. Check messages above." + ) return not has_problems From 195f534619d9cd9f4bb807af8ad89b53034ffb08 Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Thu, 5 Dec 2024 15:28:45 +0100 Subject: [PATCH 3/3] ruff --- petab/v1/models/sbml_model.py | 2 +- petab/v1/sbml.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/petab/v1/models/sbml_model.py b/petab/v1/models/sbml_model.py index 0ac95fc8..5102715d 100644 --- a/petab/v1/models/sbml_model.py +++ b/petab/v1/models/sbml_model.py @@ -80,7 +80,7 @@ def from_file(filepath_or_buffer, model_id: str = None): sbml_document=sbml_document, model_id=model_id, ) - + @staticmethod def from_string(sbml_string, model_id: str = None): sbml_reader, sbml_document, sbml_model = load_sbml_from_string( diff --git a/petab/v1/sbml.py b/petab/v1/sbml.py index 4ed16a79..6395e41b 100644 --- a/petab/v1/sbml.py +++ b/petab/v1/sbml.py @@ -46,8 +46,9 @@ def is_sbml_consistent( has_issues = sbml_document.checkConsistency() # we only have an issue with errors or fatals - has_problems = sbml_document.getNumErrors(libsbml.LIBSBML_SEV_ERROR) + \ - sbml_document.getNumErrors(libsbml.LIBSBML_SEV_FATAL) + has_problems = sbml_document.getNumErrors( + libsbml.LIBSBML_SEV_ERROR + ) + sbml_document.getNumErrors(libsbml.LIBSBML_SEV_FATAL) if has_issues: log_sbml_errors(sbml_document) if has_problems: