generate_unitarity_experiments¶
-
forest.benchmarking.randomized_benchmarking.
generate_unitarity_experiments
(benchmarker: pyquil.api._benchmark.BenchmarkConnection, qubit_groups: Sequence[Sequence[int]], depths: Sequence[int], random_seed: int = None, use_self_inv_seqs=False) → List[forest.benchmarking.observable_estimation.ObservablesExperiment]¶ Creates list of ObservablesExperiments which, when run in series, constitute a simultaneous unitarity experiment on the disjoint qubit_groups.
- Similar to a standard RB experiment, save for two changes:
- the sequence of Cliffords need not be self-inverting
- currently the purity of the output state is estimated by measuring each of the
- observables in the Pauli basis on the given qubits. As such not all Observables can be estimate simultaneously and we use the simultaneous grouping offered by operator_estimation
Unitarity algorithm is due to [ECN].
[ECN] Estimating the Coherence of Noise. Wallman et al. New Journal of Physics 17, 113020 (2015). https://dx.doi.org/10.1088/1367-2630/17/11/113020 https://arxiv.org/abs/1503.07865 Parameters: - benchmarker – object returned from get_benchmarker() used to generate clifford sequences
- qubit_groups – the disjoint groups qubits for which random sequences will be generated and merged into a series of programs each of which runs groups of disjoint sequences ‘simultaneously’.
- depths – the depth of each sequences in the experiment.
- random_seed – Random seed passed to benchmarker to seed sequence generation.
- use_self_inv_seqs – by default False, unlike with a typical RB sequence the last Clifford does not invert the sequence. If True, the subset of Z*I observable experiment results can equally well be analyzed as a unitarity or RB experiment. This argument does not affect the total number of Cliffords in the sequence.
Returns: a list of ObservablesExperiments which constitute a simultaneous unitarity experiment