generate_rb_experiments

forest.benchmarking.randomized_benchmarking.generate_rb_experiments(benchmarker: pyquil.api._benchmark.BenchmarkConnection, qubit_groups: Sequence[Sequence[int]], depths: Sequence[int], interleaved_gate: pyquil.quil.Program = None, random_seed: int = None) → List[forest.benchmarking.observable_estimation.ObservablesExperiment]

Creates list of ObservablesExperiments which, when run in series, constitute a simultaneous randomized benchmarking experiment on the disjoint qubit_groups.

The number of ObservablesExperiments returned is equal to len(depths). A particular ObservablesExperiment consists of

  • a program, which is a random sequence of Clifford gates compiled down to native gates.
    If len(qubit_groups) > 1 then the program is actually the sum of len(qubit_groups) many separate random sequences; each sequence acts only on the group of qubits in a particular element of the input ‘qubit_groups’ list.
  • settings; for each group within qubit_groups there will be settings which dictate that
    each qubit in that group is initialized to the |0> state and that some observable which is a tensor product of Z and I factors is measured for that group. All of these settings are initialized within the ObservablesExperiment to be run in parallel.

Specifying a interleaved_gate will generate a Clifford sequence which alternates depth many times between a random Clifford and the specified gate. The gate itself should be a Program written as a sequence of native gates implementing a Clifford element. The sequence will still contain depth many random Cliffords (excluding the interleaved gate) including the final inverting Clifford.

For standard RB see [RB]. For interleaved RB see [IRB].

[RB]Scalable and Robust Randomized Benchmarking of Quantum Processes. Magesan et al. Phys. Rev. Lett. 106, 180504 (2011). https://dx.doi.org/10.1103/PhysRevLett.106.180504 https://arxiv.org/abs/1009.3639
[IRB]Efficient measurement of quantum gate error by interleaved randomized benchmarking. Magesan et al. Phys. Rev. Lett. 109, 080505 (2012). https://dx.doi.org/10.1103/PhysRevLett.109.080505 https://arxiv.org/abs/1203.4550
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 sequence in the experiment
  • interleaved_gate – optional gate to interleave throughout the sequence, see [IRB]
  • random_seed – Random seed passed to benchmarker to seed sequence generation.
Returns:

a list of ObservablesExperiments which constitute a simultaneous RB or IRB experiment