get_params_to_statetensor_func

qujax.get_params_to_statetensor_func(gate_seq, qubit_inds_seq, param_inds_seq, n_qubits=None)

Creates a function that maps circuit parameters to a statetensor.

Parameters:
  • gate_seq (Sequence[str | Array | Callable[[Array], Array] | Callable[[], Array]]) – Sequence of gates. Each element is either a string matching a unitary array or function in qujax.gates, a custom unitary array or a custom function taking parameters and returning a unitary array. Unitary arrays will be reshaped into tensor form (2, 2,…)

  • qubit_inds_seq (Sequence[Sequence[int]]) – Sequences of sequences representing qubit indices (ints) that gates are acting on. i.e. [[0], [0,1], [1]] tells qujax the first gate is a single qubit gate acting on the zeroth qubit, the second gate is a two qubit gate acting on the zeroth and first qubit etc.

  • param_inds_seq (Sequence[None | Sequence[int]]) – Sequence of sequences representing parameter indices that gates are using, i.e. [[0], [], [5, 2]] tells qujax that the first gate uses the zeroth parameter (the float at position zero in the parameter vector/array), the second gate is not parameterised and the third gate uses the parameters at position five and two.

  • n_qubits (int | None) – Number of qubits, if fixed.

Returns:

Function which maps parameters (and optional statetensor_in) to a statetensor. If no parameters are found then the function only takes optional statetensor_in.

Return type:

Union[Callable[[ndarray, Optional[ndarray]], ndarray], Callable[[Optional[ndarray]], ndarray]]