PauliRegister¶
- class samplomatic.virtual_registers.PauliRegister(virtual_gates)[source]¶
- Bases: - GroupRegister- Virtual register of virtual projective Pauli gates. - Here, projective means we are modding out the centralizer, in other words, ignoring phases. - The Paulis I, X, Y, and Z correspond to 0, 2, 3, and 1 respectively. The non-alphabetical assignment of Y and Z is because it is more convenient in most calculations to have them in symplectic ordering. I.e., for a projective Pauli operation \(P = X^x Z^z\) with \(x,z\in\mathbb{Z}_2\), we order according to binary number zx. - Attributes Summary - Valid arguments for - convert_to().- The array shape of any single virtual gate. - The number of qubits each virtual gate acts on. - The group name in 1-1 correspondence with this virtual gate type. - Methods Summary - convert_to(register_type)- Convert this register type to some other type, if possible. - identity(num_subsystems, num_samples)- Instantiate a new register of identity virtual gates. - inplace_multiply(other[, subsystem_idxs])- Inplace-multiply each virtual gate with the corresponding element of - other.- invert()- Return a new virtual register that inverts each virtual gate. - multiply(other[, subsystem_idxs])- Multiply each virtual gate with the corresponding element of - other.- Attributes Documentation - CONVERTABLE_TYPES: frozenset[VirtualType] = frozenset({VirtualType.PAULI, VirtualType.U2, VirtualType.Z2})¶
- Valid arguments for - convert_to().
 - TYPE: VirtualType = 'pauli'¶
- The group name in 1-1 correspondence with this virtual gate type. 
 - Methods Documentation - convert_to(register_type)[source]¶
- Convert this register type to some other type, if possible. - Parameters:
- register_type – The type of register to convert to. 
- Returns:
- A new register of the specified output type, or this instance if its type is - register_type.
- Raises:
- VirtualGateError – If this type cannot be converted to the specified type. 
 
 - classmethod identity(num_subsystems, num_samples)[source]¶
- Instantiate a new register of identity virtual gates. 
 - inplace_multiply(other, subsystem_idxs: list[int] | slice = slice(None, None, None))[source]¶
- Inplace-multiply each virtual gate with the corresponding element of - other.- Parameters:
- other – Another virtual register of the same type. 
- subsystem_idxs – The indices of the subsystems to multiply, in self. 
 
- Raises:
- VirtualGateError – When the shapes do not match. 
 
 - multiply(other, subsystem_idxs: list[int] | slice = slice(None, None, None))[source]¶
- Multiply each virtual gate with the corresponding element of - other.- Parameters:
- other – Another virtual register of the same type. 
- subsystem_idxs – The indices of the subsystems to multiply, in self. 
 
- Returns:
- A new virtual register of the same type. 
- Raises:
- VirtualGateError – When the shapes do not match.