Exemple #1
0
def test_conversions() -> None:
    circ = get_match_circuit()
    coms = cirq_to_tk(circ)

    cirq_false = tk_to_cirq(coms, copy_all_qubits=False)
    cirq_true = tk_to_cirq(coms, copy_all_qubits=True)
    assert str(circ) == str(cirq_false)
    assert str(circ) != str(cirq_true)

    tket_false = cirq_to_tk(cirq_false)
    tket_true = cirq_to_tk(cirq_true)
    assert len(tket_false.get_commands()) + len(tket_false.qubits) == len(
        tket_true.get_commands())
    assert tket_true != coms
    assert tket_false == coms
Exemple #2
0
 def run_circuit(self, circuit: Circuit,
                 **kwargs: KwargTypes) -> BackendResult:
     cirq_circ = tk_to_cirq(circuit)
     bit_to_qubit_map = {b: q for q, b in circuit.qubit_to_bit_map.items()}
     if not cirq_circ.has_measurements():  # type: ignore
         n_shots = cast(int, kwargs.get("n_shots"))
         return self.empty_result(circuit, n_shots=n_shots)
     else:
         run = self._simulator.run(cirq_circ,
                                   repetitions=cast(int,
                                                    kwargs.get("n_shots")))
         run_dict = run.data.to_dict()
         c_bits = [
             bit for key in run_dict.keys()
             for bit in bit_to_qubit_map.keys() if str(bit) == key
         ]
         individual_readouts = [
             list(readout.values()) for readout in run_dict.values()
         ]
         shots = OutcomeArray.from_readouts(
             [list(r) for r in zip(*individual_readouts)])
         return BackendResult(shots=shots, c_bits=c_bits)
Exemple #3
0
def test_conversions() -> None:
    circ = get_match_circuit()
    coms = cirq_to_tk(circ)
    print(str(circ))
    print(str(tk_to_cirq(coms)))
    assert str(circ) == str(tk_to_cirq(coms))
Exemple #4
0
 def run_circuit_moments(
     self, circuit: Circuit, **kwargs: KwargTypes
 ) -> List[BackendResult]:
     cirq_circ = tk_to_cirq(circuit)
     _, q_bits = _get_default_uids(cirq_circ, circuit)
     return self.package_results(cirq_circ, q_bits)
Exemple #5
0
 def run_circuit(self, circuit: Circuit,
                 **kwargs: KwargTypes) -> BackendResult:
     cirq_circ = tk_to_cirq(circuit, copy_all_qubits=True)
     _, q_bits = _get_default_uids(cirq_circ, circuit)
     return self.package_result(cirq_circ, q_bits)
Exemple #6
0
#
# We can also view the qubit connectivity graph of a circuit:

G.get_qubit_graph()

# ### Via Qiskit

from pytket.extensions.qiskit import tk_to_qiskit

print(tk_to_qiskit(c))

# ### Via Cirq

from pytket.extensions.cirq import tk_to_cirq

print(tk_to_cirq(c))

# (Note that Cirq cannot represent all gates diagrammatically.)

# ### Via Latex

# We can create a Latex document containing a diagram of the circuit using the `to_latex_file()` method. This uses the `quantikz` library. The document can be viewed on its own or the Latex can easily be copied and pasted into a larger document.

c.to_latex_file("c.tex")

# ## Commands

# We can retrieve a list of operations comprising a circuit, each represented as a `Command` object:

cmds = c.get_commands()
print(cmds)