tensorcircuit.noisemodelΒΆ

General Noise Model Construction.

class tensorcircuit.noisemodel.NoiseConf[source]ΒΆ

Bases: object

Noise Configuration class.

error1 = tc.channels.generaldepolarizingchannel(0.1, 1)
error2 = tc.channels.thermalrelaxationchannel(300, 400, 100, "ByChoi", 0)
readout_error = [[0.9, 0.75], [0.4, 0.7]]

noise_conf = NoiseConf()
noise_conf.add_noise("x", error1)
noise_conf.add_noise("h", [error1, error2], [[0], [1]])
noise_conf.add_noise("readout", readout_error)
__init__() None[source]ΒΆ

Establish a noise configuration.

add_noise(gate_name: str, kraus: KrausList | Sequence[KrausList], qubit: Sequence[Any] | None = None) None[source]ΒΆ

Add noise channels on specific gates and specific qubits in form of Kraus operators.

Parameters:
  • gate_name (str) – noisy gate

  • kraus (Sequence[Gate]) – noise channel

  • qubit (Optional[Sequence[Any]], optional) – the list of noisy qubit, defaults to None, indicating applying the noise channel on all qubits

add_noise_by_condition(condition: Callable[[Dict[str, Any]], bool], kraus: KrausList, name: Any | None = 'custom') None[source]ΒΆ

Add noise based on specified condition

Parameters:
  • condition (Callable[[Dict[str, Any]], bool]) – a function to decide if the noise should be added to the qir.

  • kraus (KrausList) – the error channel

  • name (Any) – the name of the condition. A metadata that does not affect the numerics.

channel_count(c: Circuit) int[source]ΒΆ

Count the total number of channels in a given circuit

Parameters:

c (Circuit) – the circuit to be counted

Returns:

the count

Return type:

int

tensorcircuit.noisemodel.apply_qir_with_noise(c: Any, qir: List[Dict[str, Any]], noise_conf: NoiseConf, status: Any | None = None) Any[source]ΒΆ
Parameters:
  • c (AbstractCircuit) – A newly defined circuit

  • qir (List[Dict[str, Any]]) – The qir of the clean circuit

  • noise_conf (NoiseConf) – Noise Configuration

  • status (1D Tensor, optional) – The status for Monte Carlo sampling, defaults to None

Returns:

A newly constructed circuit with noise

Return type:

AbstractCircuit

tensorcircuit.noisemodel.circuit_with_noise(c: AbstractCircuit, noise_conf: NoiseConf, status: Any | None = None) Any[source]ΒΆ

Noisify a clean circuit.

Parameters:
  • c (AbstractCircuit) – A clean circuit

  • noise_conf (NoiseConf) – Noise Configuration

  • status (1D Tensor, optional) – The status for Monte Carlo sampling, defaults to None

Returns:

A newly constructed circuit with noise

Return type:

AbstractCircuit

tensorcircuit.noisemodel.expectation_noisfy(c: Any, *ops: Tuple[Node, List[int]], noise_conf: NoiseConf | None = None, nmc: int = 1000, status: Any | None = None, **kws: Any) Any[source]ΒΆ

Calculate expectation value with noise configuration.

Parameters:
  • c (Any) – The clean circuit

  • noise_conf (Optional[NoiseConf], optional) – Noise Configuration, defaults to None

  • nmc (int, optional) – repetition time for Monte Carlo sampling for noisfy calculation, defaults to 1000

  • status (Optional[Tensor], optional) – external randomness given by tensor uniformly from [0, 1], defaults to None, used for noisfy circuit sampling

Returns:

expectation value with noise

Return type:

Tensor

tensorcircuit.noisemodel.sample_expectation_ps_noisfy(c: Any, x: Sequence[int] | None = None, y: Sequence[int] | None = None, z: Sequence[int] | None = None, noise_conf: NoiseConf | None = None, nmc: int = 1000, shots: int | None = None, statusc: Any | None = None, status: Any | None = None, **kws: Any) Any[source]ΒΆ

Calculate sample_expectation_ps with noise configuration.

Parameters:
  • c (Any) – The clean circuit

  • x (Optional[Sequence[int]], optional) – sites to apply X gate, defaults to None

  • y (Optional[Sequence[int]], optional) – sites to apply Y gate, defaults to None

  • z (Optional[Sequence[int]], optional) – sites to apply Z gate, defaults to None

  • noise_conf (Optional[NoiseConf], optional) – Noise Configuration, defaults to None

  • nmc (int, optional) – repetition time for Monte Carlo sampling for noisfy calculation, defaults to 1000

  • shots (Optional[int], optional) – number of measurement shots, defaults to None, indicating analytical result

  • statusc (Optional[Tensor], optional) – external randomness given by tensor uniformly from [0, 1], defaults to None, used for noisfy circuit sampling

  • status (Optional[Tensor], optional) – external randomness given by tensor uniformly from [0, 1], defaults to None, used for measurement sampling

Returns:

sample expectation value with noise

Return type:

Tensor