a
    =b
                     @   s4   d dl mZ ddlmZ dgZd	dddddZdS )
   )check_shape_equality   )contingency_tableadapted_rand_errorN)    )tableignore_labelsc                C   s   |dur| durt | | |du r4t| ||dd}n|}|j|j |  }|jddj }|jddj }|| |  }|| |  }	|| }
||	 }d|
 | |
|  }d| }||
|fS )	a3  Compute Adapted Rand error as defined by the SNEMI3D contest. [1]_

    Parameters
    ----------
    image_true : ndarray of int
        Ground-truth label image, same shape as im_test.
    image_test : ndarray of int
        Test image.
    table : scipy.sparse array in crs format, optional
        A contingency table built with skimage.evaluate.contingency_table.
        If None, it will be computed on the fly.
    ignore_labels : sequence of int, optional
        Labels to ignore. Any part of the true image labeled with any of these
        values will not be counted in the score.

    Returns
    -------
    are : float
        The adapted Rand error; equal to :math:`1 - \frac{2pr}{p + r}`,
        where ``p`` and ``r`` are the precision and recall described below.
    prec : float
        The adapted Rand precision: this is the number of pairs of pixels that
        have the same label in the test label image *and* in the true image,
        divided by the number in the test image.
    rec : float
        The adapted Rand recall: this is the number of pairs of pixels that
        have the same label in the test label image *and* in the true image,
        divided by the number in the true image.

    Notes
    -----
    Pixels with label 0 in the true segmentation are ignored in the score.

    References
    ----------
    .. [1] Arganda-Carreras I, Turaga SC, Berger DR, et al. (2015)
           Crowdsourcing the creation of image segmentation algorithms
           for connectomics. Front. Neuroanat. 9:142.
           :DOI:`10.3389/fnana.2015.00142`
    NF)r   Z	normalizer   )Zaxisr   g       @g      ?)r   r   datasumAZravel)Z
image_trueZ
image_testr   r   Zp_ijZ	sum_p_ij2Za_iZb_iZsum_a2Zsum_b2Z	precisionZrecallZfscoreZare r   Blib/python3.9/site-packages/skimage/metrics/_adapted_rand_error.pyr      s"    *
)NN)Z_shared.utilsr   Z_contingency_tabler   __all__r   r   r   r   r   <module>   s
   