Summary
PEtab's observableTransformation = log (natural log) has no PyBNF noise family. import_job refuses it:
NotImplementedError: Observable 'observable_0ac': the gaussian family on the ln scale
(from noiseDistribution 'normal' / observableTransformation 'log') is not implemented
The refusal is correct and preferable to mis-scaling — PyBNF's native lognormal token is log10 (Gaussian(additive_on=LOG10)), not natural log — but it leaves a documented PEtab transform unsupported.
Reproducer
from pybnf.petab import petab1to2_preserve_scale, import_job
import tempfile
for p in ("Blasi_CellSystems2016", "Laske_PLOSComputBiol2019"):
v2 = petab1to2_preserve_scale(f"{p}/{p}.yaml", tempfile.mkdtemp())
import_job(v2, f"out_{p}", job_type="gntr") # NotImplementedError
Why it is not just an alias for the log10 family
The two differ by more than a constant in the fit: the residual is ln(sim) - ln(obs) rather than log10(sim) - log10(obs), the estimated sigma lives on the ln scale, and — the part that matters for benchmark scoring — the change-of-variables Jacobian in the normalized log-likelihood is Σ log(y_obs) instead of Σ log(y_obs · ln10). Reporting a log10 lnL for an ln-scale problem would give a wrong information_criteria.txt and therefore a wrong optimality gap, so aliasing is not a safe shortcut.
Suggested fix
Add the natural-log member of the additive-scale Gaussian family (Gaussian(additive_on=LN)) alongside the existing LOG10 one, with its own Jacobian term in the pointwise log-density, and route observableTransformation = log to it in petab1to2_preserve_scale / the importer's noise-family selection (the same seam ADR-0073 added for log10).
Impact
Blocks Blasi_CellSystems2016 and Laske_PLOSComputBiol2019 — 2 of the 4 remaining unimported subset-I problems in the Grein et al. 2026 benchmark collection.
Summary
PEtab's
observableTransformation = log(natural log) has no PyBNF noise family.import_jobrefuses it:The refusal is correct and preferable to mis-scaling — PyBNF's native
lognormaltoken is log10 (Gaussian(additive_on=LOG10)), not natural log — but it leaves a documented PEtab transform unsupported.Reproducer
Why it is not just an alias for the log10 family
The two differ by more than a constant in the fit: the residual is
ln(sim) - ln(obs)rather thanlog10(sim) - log10(obs), the estimatedsigmalives on the ln scale, and — the part that matters for benchmark scoring — the change-of-variables Jacobian in the normalized log-likelihood isΣ log(y_obs)instead ofΣ log(y_obs · ln10). Reporting a log10 lnL for an ln-scale problem would give a wronginformation_criteria.txtand therefore a wrong optimality gap, so aliasing is not a safe shortcut.Suggested fix
Add the natural-log member of the additive-scale Gaussian family (
Gaussian(additive_on=LN)) alongside the existing LOG10 one, with its own Jacobian term in the pointwise log-density, and routeobservableTransformation = logto it inpetab1to2_preserve_scale/ the importer's noise-family selection (the same seam ADR-0073 added for log10).Impact
Blocks
Blasi_CellSystems2016andLaske_PLOSComputBiol2019— 2 of the 4 remaining unimported subset-I problems in the Grein et al. 2026 benchmark collection.