diff --git a/quantum_enablement/circuits/__init__.py b/quantum_enablement/circuits/__init__.py index ea7c56b..6d04ec2 100644 --- a/quantum_enablement/circuits/__init__.py +++ b/quantum_enablement/circuits/__init__.py @@ -12,8 +12,8 @@ """Quantum circuit library and tools.""" -from ._qaoa import QAOALineCircuit +from ._qaoa import QAOAPathCircuit __all__ = [ - "QAOALineCircuit", + "QAOAPathCircuit", ] diff --git a/quantum_enablement/circuits/_qaoa.py b/quantum_enablement/circuits/_qaoa.py index 35742a3..1a189ab 100644 --- a/quantum_enablement/circuits/_qaoa.py +++ b/quantum_enablement/circuits/_qaoa.py @@ -22,7 +22,7 @@ # TODO: add graph max-cut weights input arg -class QAOALineCircuit(QuantumCircuit): +class QAOAPathCircuit(QuantumCircuit): """Parameterized QAOA acyclic line graph quantum circuit. The cost parameter-vector is labeled γ, and the mixer @@ -49,7 +49,7 @@ def __init__( barriers = bool(barriers) measurements = bool(measurements) - super().__init__(num_qubits, name=f"QAOALineCircuit<{num_qubits}, {depth}>") + super().__init__(num_qubits, name=f"QAOAPathCircuit<{num_qubits}, {depth}>") gammas = ParameterVector("γ", depth // 2) betas = ParameterVector("β", depth // 2) diff --git a/test/unit/circuits/test_qaoa.py b/test/unit/circuits/test_qaoa.py index b544020..4d107e7 100644 --- a/test/unit/circuits/test_qaoa.py +++ b/test/unit/circuits/test_qaoa.py @@ -16,7 +16,7 @@ from pytest import mark, raises # pylint: disable=import-error from qiskit import QuantumCircuit -from quantum_enablement.circuits._qaoa import QAOALineCircuit +from quantum_enablement.circuits._qaoa import QAOAPathCircuit def two_qubit_depth_filter(instruction): @@ -26,16 +26,16 @@ def two_qubit_depth_filter(instruction): return num_qubits > 1 and name != "barrier" -class TestQAOALineCircuit: - """Test suite for the QAOALineCircuit class.""" +class TestQAOAPathCircuit: + """Test suite for the QAOAPathCircuit class.""" @mark.parametrize("num_qubits", [4, 6]) @mark.parametrize("depth", [0, 2, 4]) def test_creation(self, num_qubits, depth): - """Test QAOALineCircuit creation.""" - circuit = QAOALineCircuit(num_qubits, depth, barriers=False, measurements=False) + """Test QAOAPathCircuit creation.""" + circuit = QAOAPathCircuit(num_qubits, depth, barriers=False, measurements=False) op_counts = circuit.count_ops() - assert isinstance(circuit, QuantumCircuit), "QAOALineCircuit must be a QuantumCircuit." + assert isinstance(circuit, QuantumCircuit), "QAOAPathCircuit must be a QuantumCircuit." assert circuit.num_qubits == num_qubits, "Wrong number of qubits." assert circuit.depth(two_qubit_depth_filter) == depth, "Wrong two-qubit depth." assert circuit.num_parameters == depth, "Wrong number of parameters." @@ -48,8 +48,8 @@ def test_creation(self, num_qubits, depth): assert op_counts.get("measure", 0) == 0, "Wrong number of measurements." def test_defaults(self): - """Test QAOALineCircuit defaults.""" - circuit = QAOALineCircuit(4, 4) # Note: default barriers and measurements are False. + """Test QAOAPathCircuit defaults.""" + circuit = QAOAPathCircuit(4, 4) # Note: default barriers and measurements are False. op_counts = circuit.count_ops() assert op_counts.get("barrier", 0) == 0, "By default barriers should not be present." assert op_counts.get("measure", 0) == 0, "By default measurements should not be present." @@ -57,49 +57,49 @@ def test_defaults(self): @mark.parametrize("num_qubits", [4, 6]) @mark.parametrize("depth", [0, 2, 4]) def test_barriers(self, num_qubits, depth): - """Test QAOALineCircuit barriers.""" - circuit = QAOALineCircuit(num_qubits, depth, barriers=True, measurements=False) + """Test QAOAPathCircuit barriers.""" + circuit = QAOAPathCircuit(num_qubits, depth, barriers=True, measurements=False) op_counts = circuit.count_ops() assert op_counts.get("barrier", 0) == depth // 2, "Wrong number of barriers." # circuit.remove_operations("barrier") - # assert circuit == QAOALineCircuit(num_qubits, depth, measurements=False, barriers=False) + # assert circuit == QAOAPathCircuit(num_qubits, depth, measurements=False, barriers=False) @mark.parametrize("num_qubits", [4, 6]) @mark.parametrize("depth", [0, 2, 4]) def test_measurements(self, num_qubits, depth): - """Test QAOALineCircuit measurements.""" - circuit = QAOALineCircuit(num_qubits, depth, barriers=False, measurements=True) + """Test QAOAPathCircuit measurements.""" + circuit = QAOAPathCircuit(num_qubits, depth, barriers=False, measurements=True) op_counts = circuit.count_ops() assert op_counts.get("measure", 0) == num_qubits, "Wrong number of measurements." assert op_counts.get("barrier", 0) == 1, "Measurements should be preceded by a barrier." # circuit.remove_final_measurements() - # assert circuit == QAOALineCircuit(num_qubits, depth, measurements=False, barriers=False) + # assert circuit == QAOAPathCircuit(num_qubits, depth, measurements=False, barriers=False) @mark.parametrize("num_qubits", [4, 6]) @mark.parametrize("depth", [0, 2, 4]) def test_name(self, num_qubits, depth): - """Test QAOALineCircuit name.""" - circuit = QAOALineCircuit(num_qubits, depth) - assert circuit.name == f"QAOALineCircuit<{num_qubits}, {depth}>", "Wrong circuit name." + """Test QAOAPathCircuit name.""" + circuit = QAOAPathCircuit(num_qubits, depth) + assert circuit.name == f"QAOAPathCircuit<{num_qubits}, {depth}>", "Wrong circuit name." def test_invalid_num_qubits(self): - """Test QAOALineCircuit with invalid number of qubits.""" + """Test QAOAPathCircuit with invalid number of qubits.""" with raises(ValueError, match=r"Number of qubits \(2\) must be greater than two."): - QAOALineCircuit(2, 2) + QAOAPathCircuit(2, 2) with raises(ValueError, match=r"Number of qubits \(3\) must be even\."): - QAOALineCircuit(3, 2) + QAOAPathCircuit(3, 2) with raises(TypeError, match=r"Invalid num\. qubits type .*, expected \."): - QAOALineCircuit("4", 2) # type: ignore + QAOAPathCircuit("4", 2) # type: ignore def test_invalid_depth(self): - """Test QAOALineCircuit with invalid depth.""" + """Test QAOAPathCircuit with invalid depth.""" with raises(ValueError, match=r"Depth \(-1\) must be positive\."): - QAOALineCircuit(4, -1) + QAOAPathCircuit(4, -1) with raises(ValueError, match=r"Depth \(1\) must be even\."): - QAOALineCircuit(4, 1) + QAOAPathCircuit(4, 1) with raises(TypeError, match=r"Invalid depth type .*, expected \."): - QAOALineCircuit(4, "2") # type: ignore + QAOAPathCircuit(4, "2") # type: ignore