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:
  1. the sequence of Cliffords need not be self-inverting
  2. 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