sf.ops.ThermalLossChannel

class ThermalLossChannel(T, nbar)[source]

Bases: strawberryfields.ops.Channel

Perform a thermal loss channel operation on the specified mode.

This channel couples mode \(\a\) to another bosonic mode \(\hat{b}\) prepared in a thermal state with mean photon number \(\bar{n}\), using the following transformation:

\[\a \mapsto \sqrt{T} a+\sqrt{1-T} \hat{b}\]
Parameters
  • T (float) – the loss parameter \(0\leq T\leq 1\).

  • nbar (float) – mean photon number of the environment thermal state

Definition

Thermal loss is implemented by coupling mode \(\a\) to another bosonic mode \(\hat{b}\) prepared in the thermal state \(\ket{\bar{n}}\), by using the following transformation

\[\a \to \sqrt{T} \a+\sqrt{1-T} \hat{b}\]

and then tracing it out. Here, \(T\) is the energy transmissivity. For \(T = 0\) the state is mapped to the thermal state \(\ket{\bar{n}}\) with mean photon number \(\bar{n}\), and for \(T=1\) one has the identity map.

Note that if \(\bar{n}=0\), the thermal loss channel is equivalent to the loss channel.

measurement_deps

Extra dependencies due to parameters that depend on measurements.

ns

measurement_deps

Extra dependencies due to parameters that depend on measurements.

Returns

dependencies

Return type

set[RegRef]

ns = 1

apply(reg, backend, **kwargs)

Ask a local backend to execute the operation on the current register state right away.

decompose(reg, **kwargs)

Decompose the operation into elementary operations supported by the backend API.

merge(other)

Merge the operation with another (acting on the exact same set of subsystems).

apply(reg, backend, **kwargs)

Ask a local backend to execute the operation on the current register state right away.

Takes care of parameter evaluations and any pending formal transformations (like dagger) and then calls Operation._apply().

Parameters
  • reg (Sequence[RegRef]) – subsystem(s) the operation is acting on

  • backend (BaseBackend) – backend to execute the operation

Returns

the result of self._apply

Return type

Any

decompose(reg, **kwargs)

Decompose the operation into elementary operations supported by the backend API.

See strawberryfields.backends.base.

Parameters

reg (Sequence[RegRef]) – subsystems the operation is acting on

Returns

decomposition as a list of operations acting on specific subsystems

Return type

list[Command]

merge(other)

Merge the operation with another (acting on the exact same set of subsystems).

Note

For subclass overrides: merge may return a newly created object, or self, or other, but it must never modify self or other because the same Operation objects may be also used elsewhere.

Parameters

other (Operation) – operation to merge this one with

Returns

other * self. The return value None represents the identity gate (doing nothing).

Return type

Operation, None

Raises

MergeFailure – if the two operations cannot be merged