-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathbase_mixer.py
75 lines (57 loc) · 2.2 KB
/
base_mixer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
from abc import ABC, abstractmethod
class MixerBase(ABC):
"""
Base class for defining quantum mixing operations.
This is an abstract base class (ABC) that provides a common interface for
quantum mixing operations. Subclasses can inherit from this class to define
specific mixing operations.
Attributes:
circuit (QuantumCircuit): The quantum circuit associated with the mixer.
N_qubits (int): The number of qubits in the mixer circuit.
"""
def __init__(self) -> None:
"""
Initializes a MixerBase object.
The `circuit` attribute is set to None initially, and `N_qubits`
is not defined until `setNumQubits` is called.
"""
self.circuit = None
def setNumQubits(self, n):
"""
Set the number of qubits for the quantum mixer circuit.
Args:
n (int): The number of qubits to set.
"""
self.N_qubits = n
class Mixer(MixerBase):
"""
Abstract subclass for defining specific quantum mixing operations.
This abstract subclass of `MixerBase` is meant for defining concrete quantum
mixing operations. Subclasses of `Mixer` must implement the `create_circuit`
method to create the associated quantum circuit for mixing.
Attributes:
circuit (QuantumCircuit): The quantum circuit associated with the mixer.
Methods:
create_circuit(): Abstract method to create the quantum circuit
representing the mixing operation.
Note:
Subclasses of `Mixer` must provide an implementation for the `create_circuit`
method.
Example:
```python
class MyMixer(Mixer):
def create_circuit(self):
# Define the quantum circuit for the custom mixing operation.
...
```
"""
@abstractmethod
def create_circuit(self):
"""
Abstract method to create the quantum circuit representing the mixing operation.
Subclasses must implement this method to define the quantum circuit
that represents the specific mixing operation.
Returns:
QuantumCircuit: The quantum circuit representing the mixing operation.
"""
pass