merlin.core.state module

Photon input-state helpers.

This module intentionally stays lightweight and avoids classes that only expose static methods.

enum merlin.core.state.Enum(value)

Bases: object

Create a collection of name/value pairs.

Example enumeration:

>>> class Color(Enum):
...     RED = 1
...     BLUE = 2
...     GREEN = 3

Access them by:

  • attribute access:

>>> Color.RED
<Color.RED: 1>
  • value lookup:

>>> Color(1)
<Color.RED: 1>
  • name lookup:

>>> Color['RED']
<Color.RED: 1>

Enumerations can be iterated over, and know how many members they have:

>>> len(Color)
3
>>> list(Color)
[<Color.RED: 1>, <Color.BLUE: 2>, <Color.GREEN: 3>]

Methods can be added to enumerations, and members can have their own attributes – see the documentation for details.

The Enum and its members have the following methods:

name

The name of the Enum member.

value

The value of the Enum member.

enum merlin.core.state.StatePattern(value)

Bases: str, Enum

Input photon state patterns.

Member Type:

str

Valid values are as follows:

DEFAULT = <StatePattern.DEFAULT: 'default'>
SPACED = <StatePattern.SPACED: 'spaced'>
SEQUENTIAL = <StatePattern.SEQUENTIAL: 'sequential'>
PERIODIC = <StatePattern.PERIODIC: 'periodic'>
merlin.core.state.generate_state(n_modes, n_photons, state_pattern=StatePattern.DEFAULT)

Generate a Perceval Fock input state as a BasicState.

Return type:

BasicState

Args:

n_modes: Number of photonic modes. n_photons: Total number of photons. state_pattern: Placement strategy for the photons.

Returns:

A perceval.BasicState instance.

Raises:

ValueError: If the inputs are inconsistent or the pattern is unknown.