Source code for graphix.noise_models.noiseless_noise_model
"""Noiseless noise model for testing."""from__future__importannotationsimportnumpyasnpimporttyping_extensionsfromgraphix.channelsimportKrausChannel,KrausDatafromgraphix.noise_models.noise_modelimportNoiseModel
[docs]classNoiselessNoiseModel(NoiseModel):"""Noiseless noise model for testing. Only return the identity channel. """
[docs]@typing_extensions.overridedefprepare_qubit(self)->KrausChannel:"""Return the channel to apply after clean single-qubit preparation. Here just identity."""returnKrausChannel([KrausData(1.0,np.eye(2))])
[docs]@typing_extensions.overridedefentangle(self)->KrausChannel:"""Return noise model to qubits that happens after the CZ gates."""returnKrausChannel([KrausData(1.0,np.eye(4))])
[docs]@typing_extensions.overridedefmeasure(self)->KrausChannel:"""Apply noise to qubit to be measured."""returnKrausChannel([KrausData(1.0,np.eye(2))])
[docs]@typing_extensions.overridedefbyproduct_x(self)->KrausChannel:"""Apply noise to qubits after X gate correction."""returnKrausChannel([KrausData(1.0,np.eye(2))])
[docs]@typing_extensions.overridedefbyproduct_z(self)->KrausChannel:"""Apply noise to qubits after Z gate correction."""returnKrausChannel([KrausData(1.0,np.eye(2))])
[docs]@typing_extensions.overridedefclifford(self)->KrausChannel:"""Apply noise to qubits that happens in the Clifford gate process."""returnKrausChannel([KrausData(1.0,np.eye(2))])
[docs]@typing_extensions.overridedeftick_clock(self)->None:"""Notion of time in real devices - this is where we apply effect of T1 and T2. See :meth:`NoiseModel.tick_clock`. """