Skip to content
Pasqal Documentation

StateRepr

class pulser.backend.StateRepr(*, eigenstates)

Bases: State

Define a backend-independent quantum state representation.

Allows the user to define a quantum state with the usual dedicated class method from_state_amplitudes, which requires:

  • eigenstates: The basis states (e.g., (‘r’, ‘g’)).

  • amplitudes: A mapping between basis state combinations and complex amplitudes (e.g., {“rgr”: 0.5, “grg”: 0.5}).

The created state, supports de/serialization methods for remote backend execution.

Examples

>>> eigenstates = ("r", "g")
>>> amplitudes = {"rgr": 0.5, "grg": 0.5}
>>> state = StateRepr.from_state_amplitudes(
>>>     eigenstates=eigenstates, amplitudes=amplitudes
>>> )

Attributes

eigenstates

The eigenstates that form a qudit's eigenbasis.

n_qudits

The number of qudits in the state.

qudit_dim

The dimensions (ie number of eigenstates) of a qudit.

Methods

from_state_amplitudes

Construct the state from its basis states' amplitudes.

get_basis_state_from_index

Generates a basis state combination from its index in the state.

infer_one_state

Infers the state measured as 1 from the eigenstates.

overlap

overlap not implemented in StateRepr.

sample

sample not implemented in StateRepr.

Signatures

classmethod from_state_amplitudes(*, eigenstates, amplitudes)

Construct the state from its basis states’ amplitudes.

Only states constructed with this method are allowed in remote backend.

Parameters:
  • eigenstates (Sequence[Literal['u', 'd', 'r', 'g', 'h', 'x'] | Literal['0', '1']]) – The basis states (e.g., (‘r’, ‘g’)).

  • amplitudes (Mapping[str, TypeVar(ArgScalarType)]) – A mapping between basis state combinations and complex amplitudes (e.g., {“rgr”: 0.5, “grg”: 0.5}).

Return type:

TypeVar(StateType, bound= State)

Returns:

The state constructed from the amplitudes.

get_basis_state_from_index(index)

Generates a basis state combination from its index in the state.

Assumes a state vector representation regardless of the actual support of the state.

Parameters:

index (int) – The position of the state in a state vector.

Return type:

str

Returns:

The basis state combination for the desired index.

infer_one_state()

Infers the state measured as 1 from the eigenstates.

Only works when the eigenstates form a known eigenbasis with a well-defined “one state”.

Return type:

Literal['u', 'd', 'r', 'g', 'h', 'x'] | Literal['0', '1']

overlap(other, /)

overlap not implemented in StateRepr.

Return type:

None

sample(*, num_shots, one_state=None, p_false_pos=0.0, p_false_neg=0.0)

sample not implemented in StateRepr.

Return type:

Counter[str]

property eigenstates: tuple[Literal['u', 'd', 'r', 'g', 'h', 'x', '0', '1'], ...]

The eigenstates that form a qudit’s eigenbasis.

The order of the states should match the order in a numerical (ie state vector or density matrix) representation. For example, with eigenstates (“a”, “b”, …), “a” will be associated to eigenvector (1, 0, …), “b” to (0, 1, …) and so on.

property n_qudits: int

The number of qudits in the state.

property qudit_dim: int

The dimensions (ie number of eigenstates) of a qudit.