Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions qiskit_experiments/framework/composite/composite_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

from typing import List, Dict, Union, Optional, Tuple
import numpy as np
from qiskit.result import marginal_counts
from qiskit.result import marginal_distribution
from qiskit.result.postprocess import format_counts_memory
from qiskit_experiments.framework import BaseAnalysis, ExperimentData
from qiskit_experiments.framework.analysis_result_data import AnalysisResultData
Expand Down Expand Up @@ -206,7 +206,13 @@ def _marginalized_component_data(self, composite_data: List[Dict]) -> List[List[
sub_data = {"metadata": metadata["composite_metadata"][i]}
if "counts" in datum:
if composite_clbits is not None:
sub_data["counts"] = marginal_counts(datum["counts"], composite_clbits[i])
# `marginal_distribution() doesn't support int64 values
# so detect and cast to an int. This can be removed
# when Qiskit/qiskit-terra#9976 is released
counts = datum["counts"]
if any(isinstance(x, np.integer) for x in counts.values()):
counts = {k: int(v) for k, v in counts.items()}
sub_data["counts"] = marginal_distribution(counts, composite_clbits[i])
else:
sub_data["counts"] = datum["counts"]
if "memory" in datum:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import numpy as np
import matplotlib.pyplot as plt
from qiskit.result import LocalReadoutMitigator
from qiskit.result import marginal_counts
from qiskit.result import marginal_distribution
from qiskit_experiments.framework import ExperimentData
from qiskit_experiments.framework.matplotlib import get_non_gui_ax
from qiskit_experiments.framework import BaseAnalysis, AnalysisResultData, Options
Expand Down Expand Up @@ -94,7 +94,7 @@ def _generate_matrices(self, data) -> List[np.array]:
marginalized_counts = []
shots = []
for i in range(2):
marginal_cts = marginal_counts(counts[i], [k])
marginal_cts = marginal_distribution(counts[i], [k])
marginalized_counts.append(marginal_cts)
shots.append(sum(marginal_cts.values()))

Expand Down
7 changes: 5 additions & 2 deletions qiskit_experiments/library/tomography/fitters/fitter_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from collections import defaultdict
import numpy as np

from qiskit.result import marginal_counts
from qiskit.result import marginal_distribution

from qiskit_experiments.exceptions import AnalysisError
from qiskit_experiments.library.tomography.basis import MeasurementBasis, PreparationBasis
Expand Down Expand Up @@ -89,7 +89,10 @@ def tomography_fitter_data(
if clbits:
count_clbits += clbits
if count_clbits:
counts = marginal_counts(counts, count_clbits)
# The input clbits might come in out of order, sort to ensure we
# don't permute the output during marginalization
count_clbits = list(sorted(count_clbits))
counts = marginal_distribution(counts, count_clbits)

# Accumulate counts
combined_counts = outcome_dict[basis_key]
Expand Down