|
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, Measure |
| 24 | +from qiskit.circuit import Qubit, Gate, ControlFlowOp, ForLoopOp, Measure, library as lib, Parameter |
25 | 25 | from qiskit.compiler import transpile |
26 | 26 | from qiskit.transpiler import ( |
27 | 27 | CouplingMap, |
@@ -1499,6 +1499,28 @@ def test_parse_seed_transpiler_raises_value_error(self): |
1499 | 1499 | ): |
1500 | 1500 | generate_preset_pass_manager(seed_transpiler=0.1) |
1501 | 1501 |
|
| 1502 | + @data(0, 1, 2, 3) |
| 1503 | + def test_preserves_circuit_metadata(self, optimization_level): |
| 1504 | + """Test that basic metadata is preserved.""" |
| 1505 | + metadata = {"experiment_id": "1234", "execution_number": 4} |
| 1506 | + name = "my circuit" |
| 1507 | + circuit = QuantumCircuit(4, metadata=metadata.copy(), name=name) |
| 1508 | + circuit.h(0) |
| 1509 | + circuit.cx(0, 3) |
| 1510 | + |
| 1511 | + num_qubits = 10 |
| 1512 | + target = Target(num_qubits) |
| 1513 | + for inst in (lib.IGate(), lib.PhaseGate(Parameter("t")), lib.SXGate()): |
| 1514 | + target.add_instruction(inst, {(i,): None for i in range(num_qubits)}) |
| 1515 | + target.add_instruction(CXGate(), {pair: None for pair in CouplingMap.from_line(num_qubits)}) |
| 1516 | + |
| 1517 | + pm = generate_preset_pass_manager( |
| 1518 | + optimization_level=optimization_level, target=target, seed_transpiler=42 |
| 1519 | + ) |
| 1520 | + res = pm.run(circuit) |
| 1521 | + self.assertEqual(res.metadata, metadata) |
| 1522 | + self.assertEqual(res.name, name) |
| 1523 | + |
1502 | 1524 |
|
1503 | 1525 | @ddt |
1504 | 1526 | class TestIntegrationControlFlow(QiskitTestCase): |
|
0 commit comments