def asymmetric_depolarize(
    p_x: float | None = None,
    p_y: float | None = None,
    p_z: float | None = None,
    error_probabilities: dict[str, float] | None = None,
    tol: float = 1e-8,
) -> AsymmetricDepolarizingChannel:
    r"""Returns an `AsymmetricDepolarizingChannel` with the given parameters.

    This channel applies one of $4^n$ disjoint possibilities: nothing (the
    identity channel) or one of the $4^n - 1$ pauli gates.

    This channel evolves a density matrix via

    $$
    \sum_i p_i P_i \rho P_i
    $$

    where i varies from $0$ to $4^n-1$ and $P_i$ represents n-qubit Pauli operator
    (including identity). The input $\rho$ is the density matrix before the
    depolarization.

    Args:
        p_x: The probability that a Pauli X and no other gate occurs.
        p_y: The probability that a Pauli Y and no other gate occurs.
        p_z: The probability that a Pauli Z and no other gate occurs.
        error_probabilities: Dictionary of string (Pauli operator) to its
            probability. If the identity is missing from the list, it will
            be added so that the total probability mass is 1.
        tol: The tolerance used making sure the total probability mass is
            equal to 1.

    Examples of calls:

    *     Single qubit: `AsymmetricDepolarizingChannel(0.2, 0.1, 0.3)`
    *     Single qubit: `AsymmetricDepolarizingChannel(p_z=0.3)`
    *     Two qubits: `AsymmetricDepolarizingChannel(error_probabilities={'XX': 0.2})`

    Raises:
        ValueError: if the args or the sum of the args are not probabilities.
    """
    return AsymmetricDepolarizingChannel(p_x, p_y, p_z, error_probabilities, tol)
Returns an `AsymmetricDepolarizingChannel` with the given parameters.

    This channel applies one of $4^n$ disjoint possibilities: nothing (the
    identity channel) or one of the $4^n - 1$ pauli gates.

    This channel evolves a density matrix via

    $$
    \sum_i p_i P_i \rho P_i
    $$

    where i varies from $0$ to $4^n-1$ and $P_i$ represents n-qubit Pauli operator
    (including identity). The input $\rho$ is the density matrix before the
    depolarization.

    Args:
        p_x: The probability that a Pauli X and no other gate occurs.
        p_y: The probability that a Pauli Y and no other gate occurs.
        p_z: The probability that a Pauli Z and no other gate occurs.
        error_probabilities: Dictionary of string (Pauli operator) to its
            probability. If the identity is missing from the list, it will
            be added so that the total probability mass is 1.
        tol: The tolerance used making sure the total probability mass is
            equal to 1.

    Examples of calls:

    *     Single qubit: `AsymmetricDepolarizingChannel(0.2, 0.1, 0.3)`
    *     Single qubit: `AsymmetricDepolarizingChannel(p_z=0.3)`
    *     Two qubits: `AsymmetricDepolarizingChannel(error_probabilities={'XX': 0.2})`

    Raises:
        ValueError: if the args or the sum of the args are not probabilities.
    
cirq-core/cirq/ops/common_channels.py