| 
							- from abp import GraphState, CircuitModel, clifford
 - import numpy as np
 - from numpy import random
 - import itertools as it
 - import pytest
 - import mock
 - ab = pytest.importorskip("ab")
 - 
 - 
 - REPEATS = 100
 - DEPTH = 100
 - PAULIS = ("px", "py", "pz")
 - 
 - def test_hadamard():
 -     """ Test hadamards """
 -     circuit = [(0, "hadamard")]
 -     ab.test_circuit(circuit, 1)
 - 
 - 
 - def test_local_rotations():
 -     """ Test local rotations """
 -     for i in list(range(REPEATS)):
 -         circuit = [(0, random.choice(list(range(24)))) for j in range(DEPTH)]
 -         ab.test_circuit(circuit, 1)
 - 
 - 
 - def test_times_table():
 -     """ Test times table """
 -     for i, j in it.product(list(range(24)), list(range(24))):
 -         circuit = [(0, i), (0, j)]
 -         ab.test_circuit(circuit, 1)
 - 
 - 
 - def test_cz_table():
 -     """ Test the CZ table """
 -     for i, j in it.product(list(range(24)), list(range(24))):
 -         circuit = [(0, i), (1, j), ((0, 1), "cz")]
 -         ab.test_circuit(circuit, 2)
 - 
 - 
 - def test_cz_hadamard(n=10):
 -     """ Test CZs and Hadamards at random """
 -     for i in list(range(REPEATS)):
 -         circuit = random.choice(["cz", "hadamard"], DEPTH)
 -         circuit = [(mock.random_pair(n), gate) if gate == "cz"
 -                    else (random.choice(list(range(n))), gate)
 -                    for gate in circuit]
 -         ab.test_circuit(circuit, n)
 - 
 - 
 - def test_all(n=10):
 -     """ Test everything """
 -     for i in list(range(REPEATS)):
 -         circuit = random.choice(["cz"] * 10 + list(range(24)), DEPTH)
 -         circuit = [(mock.random_pair(n), gate) if gate == "cz"
 -                    else (random.choice(list(range(n))), gate)
 -                    for gate in circuit]
 -         ab.test_circuit(circuit, n)
 - 
 - 
 - def test_single_qubit_measurement():
 -     """ Determinstic test of all single-qubit situations """
 -     space = it.product(list(range(24)), PAULIS, (0, 1))
 -     for rotation, measurement, outcome in space:
 -         a = mock.circuit_to_state(mock.ABPWrapper, 1, [(0, rotation)])
 -         b = mock.circuit_to_state(mock.AndersWrapper, 1, [(0, rotation)])
 -         result_a = a.measure(0, measurement, outcome)
 -         result_b = b.measure(0, measurement, outcome)
 -         assert result_a == result_b
 -         assert a == b
 - 
 - def test_two_qubit_measurement():
 -     """ Various two-qubit measurements on a Bell state"""
 -     for measurement, outcome in it.product(PAULIS, (0, 1)):
 -         circuit = mock.bell_pair()
 -         a = mock.circuit_to_state(mock.ABPWrapper, 2, circuit)
 -         b = mock.circuit_to_state(mock.AndersWrapper, 2, circuit)
 -         assert a.measure(0, measurement, outcome) == \
 -                b.measure(0, measurement, outcome)
 -         assert a == b
 -                 
 - def test_graph_state_measurement(n = 10):
 -     """ Measuring random graph states """
 -     space = list(it.product(list(range(REPEATS)), PAULIS, (0, 1)))
 -     for i, measurement, outcome in space:
 -         circuit = mock.random_graph_circuit(n, DEPTH)
 -         a = mock.circuit_to_state(mock.ABPWrapper, n, circuit)
 -         b = mock.circuit_to_state(mock.AndersWrapper, n, circuit)
 -         a.measure(0, measurement, outcome)
 -         b.measure(0, measurement, outcome)
 -         assert a == b
 - 
 - def test_stabilizer_state_measurement(n = 10):
 -     """ Measuring random stabilizer states """
 -     space = list(it.product(list(range(REPEATS)), PAULIS, (0, 1)))
 -     for i, measurement, outcome in space:
 -         circuit = mock.random_stabilizer_circuit(n, DEPTH)
 -         a = mock.circuit_to_state(mock.ABPWrapper, n, circuit)
 -         b = mock.circuit_to_state(mock.AndersWrapper, n, circuit)
 -         a.measure(0, measurement, outcome)
 -         b.measure(0, measurement, outcome)
 -         assert a == b
 -                     
 
 
  |