From 19d29863ad1a4a37e73a1a97d1ec2a9dcb64859c Mon Sep 17 00:00:00 2001 From: dbrakenhoff Date: Thu, 23 Mar 2023 16:07:50 +0100 Subject: [PATCH] fix #549 - add na_rep to _table_formatter_stderr - use stderr formatter in fit_report --- pastas/model.py | 8 +++++--- pastas/plots.py | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/pastas/model.py b/pastas/model.py index db66f4521..757f83516 100644 --- a/pastas/model.py +++ b/pastas/model.py @@ -25,7 +25,7 @@ # Internal Pastas from pastas.decorators import get_stressmodel from pastas.io.base import _load_model, dump -from pastas.modelplots import Plotting +from pastas.modelplots import Plotting, _table_formatter_stderr from pastas.modelstats import Statistics from pastas.noisemodels import NoiseModel from pastas.solver import LeastSquares @@ -795,7 +795,7 @@ def solve( if solver is not None: self.fit = solver self.fit.set_model(self) - # Create the default solver is None is provided or already present + # Create the default solver if None is provided or already present elif self.fit is None: self.fit = LeastSquares() self.fit.set_model(self) @@ -1741,7 +1741,9 @@ def fit_report( parameters = self.parameters.loc[:, ["optimal", "stderr", "initial", "vary"]] stderr = parameters.loc[:, "stderr"] / parameters.loc[:, "optimal"] - parameters.loc[:, "stderr"] = stderr.abs().apply("±{:.2%}".format) + parameters.loc[:, "stderr"] = "±" + stderr.abs().apply( + _table_formatter_stderr, na_rep="nan" + ) # Determine the width of the fit_report based on the parameters width = len(parameters.to_string().split("\n")[1]) diff --git a/pastas/plots.py b/pastas/plots.py index 4c2942a27..36581b61b 100644 --- a/pastas/plots.py +++ b/pastas/plots.py @@ -924,7 +924,7 @@ def plot_track_solve_history(self, fig: Optional[Figure] = None) -> List[Axes]: return fig.axes -def _table_formatter_params(s: float) -> str: +def _table_formatter_params(s: float, na_rep: str = "") -> str: """Internal method for formatting parameters in tables in Pastas plots. Parameters @@ -938,7 +938,7 @@ def _table_formatter_params(s: float) -> str: float formatted as str. """ if np.isnan(s): - return "" + return na_rep elif np.floor(np.log10(np.abs(s))) <= -2: return f"{s:.2e}" elif np.floor(np.log10(np.abs(s))) > 5: @@ -947,7 +947,7 @@ def _table_formatter_params(s: float) -> str: return f"{s:.2f}" -def _table_formatter_stderr(s: float) -> str: +def _table_formatter_stderr(s: float, na_rep: str = "") -> str: """Internal method for formatting stderrs in tables in Pastas plots. Parameters @@ -961,7 +961,7 @@ def _table_formatter_stderr(s: float) -> str: float formatted as str. """ if np.isnan(s): - return "" + return na_rep elif np.floor(np.log10(np.abs(s))) <= -4: return f"{s * 100.:.2e}%" elif np.floor(np.log10(np.abs(s))) > 3: