Skip to content

Commit

Permalink
Updates to compat wrapper for new api on staging
Browse files Browse the repository at this point in the history
  • Loading branch information
jsnel committed Feb 15, 2025
1 parent d37865d commit 8afd3dc
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 29 deletions.
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ repos:
args: [--remove]

- repo: https://github.com/PyCQA/docformatter
rev: v1.7.5
rev: 06907d0
hooks:
- id: docformatter
additional_dependencies: [tomli]
Expand Down
62 changes: 36 additions & 26 deletions pyglotaran_extras/compat/compat_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,85 +6,95 @@
import numpy as np

if TYPE_CHECKING:
import xarray as xr
from glotaran.model.experiment_model import ExperimentModel
from glotaran.parameter.parameters import Parameters

from glotaran.project.result import Result
from glotaran.utils.ipython import MarkdownStr
from tabulate import tabulate


class CompatResult(Result):
"""A compatibility class for Result.
"""A v0.7 compatibility wrapper for a v0.8 Result.
Inherits:
data: dict[str, xr.Dataset]
datasets: dict[str, OptimizationResult]
experiments: dict[str, ExperimentModel]
optimization: OptimizationResult
parameters_intitial: Parameters
parameters_optimized: Parameters
optimization_info: OptimizationInfo
initial_parameters: Parameters
optimized_parameters: Parameters
"""

@property
def number_of_function_evaluations(self) -> int:
return self.optimization.number_of_function_evaluations
return self.optimization_info.number_of_function_evaluations

@property
def success(self) -> bool:
return self.optimization_info.success

@property
def termination_reason(self) -> str:
return self.optimization_info.termination_reason

@property
def glotaran_version(self) -> str:
return "v0.7.3" # self.optimization_info.glotaran_version

@property
def number_of_residuals(self) -> int:
return self.optimization.number_of_data_points
return self.optimization_info.number_of_data_points

@property
def number_of_free_parameters(self) -> int:
return self.optimization.number_of_parameters
return self.optimization_info.number_of_parameters

@property
def number_of_clps(self) -> int:
return self.optimization.number_of_clps
return self.optimization_info.number_of_clps

@property
def degrees_of_freedom(self) -> int:
return self.optimization.degrees_of_freedom
return self.optimization_info.degrees_of_freedom

@property
def chi_square(self) -> float:
return self.optimization.chi_square
return self.optimization_info.chi_square

@property
def reduced_chi_square(self) -> float:
return self.optimization.reduced_chi_square
return self.optimization_info.reduced_chi_square

@property
def reduced_chi_squared(self) -> float:
return self.optimization.reduced_chi_square
return self.optimization_info.reduced_chi_square

@property
def root_mean_square_error(self) -> float:
return self.optimization.root_mean_square_error
return self.optimization_info.root_mean_square_error

@property
def additional_penalty(self) -> float | None:
return self.optimization.additional_penalty

@property
def optimized_parameters(self) -> Parameters:
return self.parameters_optimized
return self.optimization_info.additional_penalty

@property
def initial_parameters(self) -> Parameters:
return self.parameters_intitial
def data(self) -> dict[str, xr.Dataset]:
return self.datasets

@property
def model(self) -> ExperimentModel:
return self.experiments[next(iter(self.experiments.keys()))]

@classmethod
def from_result(cls, result: Result) -> CompatResult:
"""Create a CompatResult from a Result object."""
# new format
return cls(
data=result.data,
datasets=result.datasets,
experiments=result.experiments,
optimization=result.optimization,
parameters_intitial=result.parameters_intitial,
parameters_optimized=result.parameters_optimized,
optimization_info=result.optimization_info,
initial_parameters=result.initial_parameters,
optimized_parameters=result.optimized_parameters,
)

def markdown(
Expand Down
7 changes: 5 additions & 2 deletions pyglotaran_extras/compat/convert_result_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ def _adjust_fitted_data(ds: xr.Dataset, *, cleanup: bool = False) -> None:
if cleanup:
ds = ds.drop_vars("fit")


def _adjust_concentrations(ds: xr.Dataset, *, cleanup: bool = False) -> None:
"""Adjust the concentrations to spectra names."""
# Check for species associated concentration variables
Expand Down Expand Up @@ -178,8 +179,10 @@ def convert_result(result: Result, cleanup: bool = False) -> CompatResult:
converted_result = CompatResult.from_result(result)

# convert the datasets
for key in converted_result.data:
converted_result.data[key] = convert_dataset(converted_result.data[key], cleanup=cleanup)
for key in converted_result.datasets:
converted_result.datasets[key] = convert_dataset(
converted_result.datasets[key], cleanup=cleanup
)

# convert the parameters
return converted_result

0 comments on commit 8afd3dc

Please sign in to comment.