Skip to content

Commit

Permalink
replace List with Dict
Browse files Browse the repository at this point in the history
  • Loading branch information
nkanazawa1989 committed Jun 27, 2022
1 parent 8515ef2 commit 44cc681
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 16 deletions.
22 changes: 10 additions & 12 deletions qiskit_experiments/curve_analysis/composite_curve_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,18 +178,18 @@ def _format_data(

def _evaluate_quality(
self,
fit_data: List[CurveFitResult],
fit_data: Dict[str, CurveFitResult],
) -> Union[str, None]:
"""Evaluate quality of the fit result.
Args:
fit_data: Fit outcome.
fit_data: Fit outcome keyed on the analysis name.
Returns:
String that represents fit result quality. Usually "good" or "bad".
"""
for fit_datum, analysis in zip(fit_data, self._analyses):
if analysis._evaluate_quality(fit_datum) != "good":
for analysis in self._analyses:
if analysis._evaluate_quality(fit_data[analysis.name]) != "good":
return "bad"
return "good"

Expand Down Expand Up @@ -236,14 +236,14 @@ def _run_curve_fit(

def _create_analysis_results(
self,
fit_data: List[CurveFitResult],
fit_data: Dict[str, CurveFitResult],
quality: str,
**metadata,
) -> List[AnalysisResultData]:
"""Create analysis results based on all analysis outcomes.
Args:
fit_data: Fit outcome.
fit_data: Fit outcome keyed on the analysis name.
quality: Quality of fit outcome.
Returns:
Expand Down Expand Up @@ -325,7 +325,7 @@ def _run_analysis(
if self.options.plot:
self.drawer.initialize_canvas()

fit_dataset = []
fit_dataset = {}
for analysis in self._analyses:
metadata = analysis.options.extra.copy()
metadata["group"] = analysis.name
Expand Down Expand Up @@ -421,7 +421,7 @@ def _run_analysis(
analysis._create_curve_data(curve_data=formatted_data, models=analysis.models)
)

fit_dataset.append(fit_data)
fit_dataset[analysis.name] = fit_data

total_quality = self._evaluate_quality(fit_dataset)

Expand All @@ -439,10 +439,8 @@ def _run_analysis(
if isinstance(res.value, (float, UFloat)):
report += f"{analysis_result_to_repr(res)}\n"
chisqs = []
for analysis, fit_data in zip(self._analyses, fit_dataset):
chisqs.append(
r"reduced-$\chi^2$ = " + f"{fit_data.reduced_chisq: .4g} ({analysis.name})"
)
for group, fit_data in fit_dataset.items():
chisqs.append(r"reduced-$\chi^2$ = " + f"{fit_data.reduced_chisq: .4g} ({group})")
report += "\n".join(chisqs)
self.drawer.draw_fit_report(description=report)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

"""Cross resonance Hamiltonian tomography experiment analysis."""

from typing import List
from typing import List, Dict
import numpy as np

import qiskit_experiments.curve_analysis as curve
Expand Down Expand Up @@ -87,16 +87,16 @@ def _default_options(cls):

def _create_analysis_results(
self,
fit_data: List[curve.CurveFitResult],
fit_data: Dict[str, curve.CurveFitResult],
quality: str,
**metadata,
) -> List[AnalysisResultData]:
outcomes = []

for control in ("z", "i"):
for target in ("x", "y", "z"):
p0_val = fit_data[0].ufloat_params[f"p{target}"]
p1_val = fit_data[1].ufloat_params[f"p{target}"]
p0_val = fit_data["ctrl0"].ufloat_params[f"p{target}"]
p1_val = fit_data["ctrl1"].ufloat_params[f"p{target}"]

if control == "z":
coef_val = 0.5 * (p0_val - p1_val) / (2 * np.pi)
Expand Down

0 comments on commit 44cc681

Please sign in to comment.