mimiqcircuits.operations.losschannel

Loss-channel operations.

Functions

Classes

Check()

Check operation.

Loss([p])

Loss operation.

MeasureCheck()

MeasureCheck operation.

Reload()

Reload operation.

class mimiqcircuits.operations.losschannel.Loss(p=1.0)[source]

Bases: Operation

Loss operation.

A qubit-loss event: the qubit is lost with probability p. Loss() is Loss(1.0), a certain loss. It replaces both LossErr and QubitLoss.

The probability is resolved by mimiqcircuits.Circuit.sample_losses(), which turns each Loss(p) into Loss(1.0) or removes it, and a circuit is turned into a runnable, loss-free form by mimiqcircuits.Circuit.resolve_losses().

Warning

This operation is non-reversible.

Parameters:

p – The loss probability, real and between 0 and 1. Defaults to 1.0.

Examples

>>> from mimiqcircuits import *
>>> c = Circuit()
>>> c.push(Loss(0.1), 0)
1-qubit circuit with 1 instruction:
└── Loss(0.1) @ q[0]

>>> c.push(Loss(), 1)
2-qubit circuit with 2 instructions:
├── Loss(0.1) @ q[0]
└── Loss(1.0) @ q[1]
__init__(p=1.0)[source]
evaluate(d={})[source]
inverse()[source]
power(p)[source]
control(num_qubits)[source]
iswrapper()[source]
class mimiqcircuits.operations.losschannel.Reload[source]

Bases: Operation

Reload operation.

Re-initialise a qubit to \(|0\rangle\) and mark it present. By default a reload always resets, regardless of whether the qubit was lost. It replaces QubitReload.

Warning

This operation is non-reversible.

Examples

>>> from mimiqcircuits import *
>>> c = Circuit()
>>> c.push(Reload(), 0)
1-qubit circuit with 1 instruction:
└── Reload @ q[0]

See also

Loss, Reset

inverse()[source]
power(p)[source]
control(num_qubits)[source]
iswrapper()[source]
class mimiqcircuits.operations.losschannel.Check[source]

Bases: Operation

Check operation.

Record whether a qubit is present into a classical bit (1 present, 0 lost). Like Measure records a qubit’s value, Check records its presence; it does not touch the quantum state. It replaces CheckLoss.

Warning

This operation is non-reversible.

Examples

>>> from mimiqcircuits import *
>>> c = Circuit()
>>> c.push(Check(), 0, 0)
1-qubit, 1-bit circuit with 1 instruction:
└── Check @ q[0], c[0]

See also

MeasureCheck, Loss, Reload

inverse()[source]
power(p)[source]
control(num_qubits)[source]
iswrapper()[source]
class mimiqcircuits.operations.losschannel.MeasureCheck[source]

Bases: Operation

MeasureCheck operation.

Measure a qubit if it is present, and record its presence. The first bit is the measurement result (0 if lost), the second is the presence (1 present, 0 lost). The state is collapsed only when the qubit is present. It replaces MeasureCheckLoss.

Warning

This operation is non-reversible.

Examples

>>> from mimiqcircuits import *
>>> c = Circuit()
>>> c.push(MeasureCheck(), 0, 0, 1)
1-qubit, 2-bit circuit with 1 instruction:
└── MeasureCheck @ q[0], c[0:1]

See also

Check, Measure, Loss

inverse()[source]
power(p)[source]
control(num_qubits)[source]
iswrapper()[source]
mimiqcircuits.operations.losschannel.LossErr(p)[source]
mimiqcircuits.operations.losschannel.QubitLoss()[source]
mimiqcircuits.operations.losschannel.QubitReload()[source]
mimiqcircuits.operations.losschannel.CheckLoss()[source]
mimiqcircuits.operations.losschannel.MeasureCheckLoss()[source]