From cb32d940159aadf8590574bb483c4e5ebb2f084e Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Tue, 22 Jul 2025 12:28:50 +0200 Subject: [PATCH] v1v2-converter: handle log10-normal PEtab v2 does not support log10-type distributions. When upconverting PEtab v1 problems, replace log10-normal by log-normal and emit a warning. --- petab/v2/petab1to2.py | 11 +++++++++++ tests/v2/test_conversion.py | 3 +++ 2 files changed, 14 insertions(+) diff --git a/petab/v2/petab1to2.py b/petab/v2/petab1to2.py index 4b040df7..5e5c5ae7 100644 --- a/petab/v2/petab1to2.py +++ b/petab/v2/petab1to2.py @@ -4,6 +4,7 @@ import re import shutil +import warnings from contextlib import suppress from pathlib import Path from tempfile import TemporaryDirectory @@ -386,6 +387,16 @@ def update_noise_dist(row): else: new_dist = f"{trans}-{dist}" + if new_dist == "log10-normal": + warnings.warn( + f"Noise distribution `{new_dist}' for " + f"observable `{row[v1.C.OBSERVABLE_ID]}'" + f" is not supported in PEtab v2. " + "Using `log-normal` instead.", + stacklevel=2, + ) + new_dist = v2.C.LOG_NORMAL + if new_dist not in v2.C.NOISE_DISTRIBUTIONS: raise NotImplementedError( f"Noise distribution `{new_dist}' for " diff --git a/tests/v2/test_conversion.py b/tests/v2/test_conversion.py index 6bcbb22c..eb8f9d45 100644 --- a/tests/v2/test_conversion.py +++ b/tests/v2/test_conversion.py @@ -30,6 +30,9 @@ def test_petab1to2_remote(): ) +@pytest.mark.filterwarnings( + "ignore:.*Using `log-normal` instead.*:UserWarning" +) @parametrize_or_skip def test_benchmark_collection(problem_id): """Test that we can upgrade all benchmark collection models."""