Skip to content

Commit

Permalink
fix bugs in doc for doctest
Browse files Browse the repository at this point in the history
  • Loading branch information
BoxiLi committed Oct 22, 2021
1 parent dd804b7 commit 247576b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 15 deletions.
13 changes: 6 additions & 7 deletions doc/source/qip-processor.rst
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ Like a real quantum device, the processor is determined by a list of Hamiltonian

processor = Processor(2)
processor.add_control(sigmaz(), cyclic_permutation=True) # sigmaz for all qubits
processor.pulses[0].coeffs = np.array([[1.0, 1.5, 2.0], [1.8, 1.3, 0.8]])
processor.pulses[0].tlist = np.array([0.1, 0.2, 0.4, 0.5])
processor.set_coeffs = np.array([[1.0, 1.5, 2.0], [1.8, 1.3, 0.8]])
processor.set_tlist = np.array([0.1, 0.2, 0.4, 0.5])

It defines a :math:`\sigma_z` operator on both qubits and a pulse that acts on the first qubit.
An equivalent approach is using the :meth:`.Processor.add_pulse` method.
Expand Down Expand Up @@ -159,19 +159,19 @@ To let it find the optimal pulses, we need to give the parameters for :func:`~qu


# Same parameter for all the gates
qc = QubitCircuit(N=1)
qc = QubitCircuit(1)
qc.add_gate("SNOT", 0)

num_tslots = 10
evo_time = 10
processor = OptPulseProcessor(N=1, drift=sigmaz())
processor = OptPulseProcessor(1, drift=sigmaz())
processor.add_control(sigmax())
# num_tslots and evo_time are two keyword arguments
tlist, coeffs = processor.load_circuit(
qc, num_tslots=num_tslots, evo_time=evo_time)

# Different parameters for different gates
qc = QubitCircuit(N=2)
qc = QubitCircuit(2)
qc.add_gate("SNOT", 0)
qc.add_gate("SWAP", targets=[0, 1])
qc.add_gate('CNOT', controls=1, targets=[0])
Expand Down Expand Up @@ -212,8 +212,7 @@ It is called implicitly when calling the method
qc.add_gate("X", targets=1)

processor = LinearSpinChain(2)
compiler = SpinChainCompiler(
2, params=processor.params, pulse_dict=processor.pulse_dict)
compiler = SpinChainCompiler(2, params=processor.params)
resolved_qc = qc.resolve_gates(["RX", "RZ", "ISWAP"])
tlists, coeffs = compiler.compile(resolved_qc)
print(tlists)
Expand Down
13 changes: 6 additions & 7 deletions src/qutip_qip/device/optpulseprocessor.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,12 +45,12 @@ class OptPulseProcessor(Processor):
A list of size `num_qubits` or a float for all qubits.
"""

def __init__(self, num_qubits, drift=None, dims=None, **params):
def __init__(self, num_qubits=None, drift=None, dims=None, **params):
super(OptPulseProcessor, self).__init__(
num_qubits, dims=dims, **params
)
if drift is not None:
self.add_drift(drift, list(range(num_qubits)))
self.add_drift(drift, list(range(self.num_qubits)))
self.spline_kind = "step_func"

def load_circuit(
Expand All @@ -77,11 +77,11 @@ def load_circuit(
>>> from qutip_qip.circuit import QubitCircuit
>>> from qutip_qip.device import OptPulseProcessor
>>> qc = QubitCircuit(num_qubits=1)
>>> qc = QubitCircuit(1)
>>> qc.add_gate("SNOT", 0)
>>> num_tslots = 10
>>> evo_time = 10
>>> processor = OptPulseProcessor(num_qubits=1, drift=sigmaz())
>>> processor = OptPulseProcessor(1, drift=sigmaz())
>>> processor.add_control(sigmax())
>>> # num_tslots and evo_time are two keyword arguments
>>> tlist, coeffs = processor.load_circuit(\
Expand All @@ -91,12 +91,11 @@ def load_circuit(
>>> from qutip_qip.circuit import QubitCircuit
>>> from qutip_qip.device import OptPulseProcessor
>>> qc = QubitCircuit(num_qubits=2)
>>> qc = QubitCircuit(2)
>>> qc.add_gate("SNOT", 0)
>>> qc.add_gate("SWAP", targets=[0, 1])
>>> qc.add_gate('CNOT', controls=1, targets=[0])
>>> processor = OptPulseProcessor(\
num_qubits=2, drift=tensor([sigmaz()]*2))
>>> processor = OptPulseProcessor(2, drift=tensor([sigmaz()]*2))
>>> processor.add_control(sigmax(), cyclic_permutation=True)
>>> processor.add_control(sigmay(), cyclic_permutation=True)
>>> processor.add_control(tensor([sigmay(), sigmay()]))
Expand Down
3 changes: 2 additions & 1 deletion src/qutip_qip/device/processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,8 @@ def add_control(
``[0,1]``, ``[1,2]`` and ``[2,0]``.
label : str, optional
The label (name) of the control Hamiltonian. If ``None``,
The hashable label (name) of the control Hamiltonian.
If ``None``,
it will be set to the current number of
control Hamiltonians in the system.
"""
Expand Down

0 comments on commit 247576b

Please sign in to comment.