I am working with a linear map $V: A \to B$, and I want to generate a sample of a unitary 1-design over the Hilbert space $A$ in Python. Specifically, the 1-design is defined as:
$$ \chi_0 = \left\{ Q P Q^\dagger : P \in \mathcal{P},\ Q^\dagger|\psi_i\rangle = |i\rangle \right\}, $$
where:
- $\mathcal{P}$ is the generalized Pauli group over $A$ (i.e., $n$-qubit Pauli group),
- $\{|\psi_i\rangle\}$ is the eigenbasis of the operator $V^\dagger V$,
- $\{|i\rangle\}$ is the computational basis spanning A,
- $Q$ is a unitary that maps $|\psi_i\rangle$ to $|i\rangle$ (i.e., $Q^\dagger |\psi_i\rangle = |i\rangle$).
I would like to:
- Construct or sample from such a set $\chi_0$ in Python.
- Know how to implement this when $A$ is a space of $n$ qubits, using libraries like QuTiP, Qiskit, or NumPy.
How can I build such a set $\chi_0$ numerically? Are there any existing utilities or recommended approaches to do the change of basis and apply Pauli twirling efficiently?
Any help (including examples) would be greatly appreciated.