|
21 | 21 | import numpy as np |
22 | 22 |
|
23 | 23 | from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister |
24 | | -from qiskit.circuit import Qubit, Gate, ControlFlowOp, ForLoopOp |
| 24 | +from qiskit.circuit import Qubit, Gate, ControlFlowOp, ForLoopOp, Measure, library as lib, Parameter |
25 | 25 | from qiskit.circuit.library import quantum_volume |
26 | 26 | from qiskit.compiler import transpile |
27 | 27 | from qiskit.transpiler import CouplingMap, Layout, PassManager, TranspilerError, Target |
@@ -1576,6 +1576,28 @@ def test_parse_seed_transpiler_raises_value_error(self): |
1576 | 1576 | ): |
1577 | 1577 | generate_preset_pass_manager(seed_transpiler=0.1) |
1578 | 1578 |
|
| 1579 | + @data(0, 1, 2, 3) |
| 1580 | + def test_preserves_circuit_metadata(self, optimization_level): |
| 1581 | + """Test that basic metadata is preserved.""" |
| 1582 | + metadata = {"experiment_id": "1234", "execution_number": 4} |
| 1583 | + name = "my circuit" |
| 1584 | + circuit = QuantumCircuit(4, metadata=metadata.copy(), name=name) |
| 1585 | + circuit.h(0) |
| 1586 | + circuit.cx(0, 3) |
| 1587 | + |
| 1588 | + num_qubits = 10 |
| 1589 | + target = Target(num_qubits) |
| 1590 | + for inst in (lib.IGate(), lib.PhaseGate(Parameter("t")), lib.SXGate()): |
| 1591 | + target.add_instruction(inst, {(i,): None for i in range(num_qubits)}) |
| 1592 | + target.add_instruction(CXGate(), {pair: None for pair in CouplingMap.from_line(num_qubits)}) |
| 1593 | + |
| 1594 | + pm = generate_preset_pass_manager( |
| 1595 | + optimization_level=optimization_level, target=target, seed_transpiler=42 |
| 1596 | + ) |
| 1597 | + res = pm.run(circuit) |
| 1598 | + self.assertEqual(res.metadata, metadata) |
| 1599 | + self.assertEqual(res.name, name) |
| 1600 | + |
1579 | 1601 |
|
1580 | 1602 | @ddt |
1581 | 1603 | class TestIntegrationControlFlow(QiskitTestCase): |
|
0 commit comments