Skip to content

Commit

Permalink
add multi group curve analysis class and update hamtomo analysis
Browse files Browse the repository at this point in the history
  • Loading branch information
nkanazawa1989 committed Jun 9, 2022
1 parent d91ce05 commit a1be2e5
Show file tree
Hide file tree
Showing 8 changed files with 496 additions and 139 deletions.
2 changes: 2 additions & 0 deletions qiskit_experiments/curve_analysis/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,7 @@ def _create_analysis_results(self, fit_data, quality, **metadata):
BaseCurveAnalysis
CurveAnalysis
MultiGroupCurveAnalysis
Data Classes
============
Expand Down Expand Up @@ -548,6 +549,7 @@ def _create_analysis_results(self, fit_data, quality, **metadata):
"""
from .base_curve_analysis import BaseCurveAnalysis
from .curve_analysis import CurveAnalysis
from .grouped_curve_analysis import MultiGroupCurveAnalysis
from .curve_data import (
CurveData,
CurveFitResult,
Expand Down
8 changes: 5 additions & 3 deletions qiskit_experiments/curve_analysis/base_curve_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,6 @@ class BaseCurveAnalysis(BaseAnalysis, ABC):
This method to creates analysis results for important fit parameters
that might be defined by analysis options ``result_parameters``.
In addition, another entry for all fit parameters is created when
the analysis option ``return_fit_parameters`` is ``True``.
.. rubric:: _create_curve_data
Expand Down Expand Up @@ -391,13 +389,16 @@ def _run_curve_fit(
self,
curve_data: CurveData,
models: List[lmfit.Model],
init_guesses: Dict[str, float],
) -> CurveFitResult:
"""Perform curve fitting on given data collection and fit models.
Args:
curve_data: Formatted data to fit.
models: A list of LMFIT models that are used to build a cost function
for the LMFIT minimizer.
init_guesses: Dictionary of fit parameter initial guesses keyed on the
fit parameter name.
Returns:
The best fitting outcome with minimum reduced chi-squared value.
Expand All @@ -419,10 +420,11 @@ def _run_curve_fit(

default_fit_opt = FitOptions(
parameters=unite_parameter_names,
default_p0=self.options.p0,
default_p0=init_guesses,
default_bounds=self.options.bounds,
**self.options.lmfit_options,
)

# Bind fixed parameters if not empty
if self.options.fixed_parameters:
fixed_parameters = {
Expand Down
7 changes: 4 additions & 3 deletions qiskit_experiments/curve_analysis/curve_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ def _run_analysis(
fit_data = self._run_curve_fit(
curve_data=formatted_data,
models=self._models,
init_guesses=self.options.p0,
)

if fit_data.success:
Expand All @@ -201,15 +202,15 @@ def _run_analysis(
quality = "bad"

if self.options.return_fit_parameters:
# Store fit status entry regardless of success.
# Store fit status overview entry regardless of success.
# This is sometime useful when debugging the fitting code.
fit_parameters = AnalysisResultData(
overview = AnalysisResultData(
name=PARAMS_ENTRY_PREFIX + self.__class__.__name__,
value=fit_data,
quality=quality,
extra=self.options.extra,
)
analysis_results.append(fit_parameters)
analysis_results.append(overview)

# Create figure and result data
if fit_data.success:
Expand Down
Loading

0 comments on commit a1be2e5

Please sign in to comment.