o
    j                     @   sz   d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
 d dlmZ G dd dZdd	 Zd
d Zdd Zdd ZdS )    )partialN)spatial)fit_segmenterpredict_segmenterTrainableSegmenter)multiscale_basic_featuresc                   @   s   e Zd Zdd Zdd ZdS )DummyNNClassifierc                 C   s   || _ || _t| j | _d S )N)Xlabelsr   ZcKDTreetree)selfr	   r
    r   q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/skimage/future/tests/test_trainable_segmentation.pyfit   s   zDummyNNClassifier.fitc                 C   sT   |j d | jj d krtd| jj d  d|j d  d| j|d }| j| S )N   z	Expected z features but got .)shaper	   
ValueErrorr   queryr
   )r   r	   Znearest_neighborsr   r   r   predict   s   
zDummyNNClassifier.predictN)__name__
__module____qualname__r   r   r   r   r   r   r      s    r   c                  C   s   t d} d| d d< | dt jj| j  7 } t j| t jd}d|d d< d|dd < t }tt	ddd	dd
}|| }t
|||}t||}t |d d dksRJ t |dd  dks_J d S )N   r   r   
   皙?Zdtype   F      ?edgestexture	sigma_min	sigma_max)npzerosrandomrandnr   
zeros_likeuint8r   r   r   r   r   all)imgr
   clffeatures_funcfeaturesoutr   r   r   )test_trainable_segmentation_singlechannel   s&   

r2   c                  C   s   t d} d| d d< | dt jj| j  7 } t j| d t jd}d|d d< d|dd < t }t| d	d	d
ddd}t	|||}t
||}t |d d dksQJ t |dd  dks^J d S )N)r   r      r   r   r   ).r   r   r   r   Fr    )r"   r#   r$   r%   channel_axis)r&   r'   r(   r)   r   r*   r+   r   r   r   r   r,   )r-   r
   r.   r0   r1   r   r   r   (test_trainable_segmentation_multichannel1   s&   

r6   c                  C   s   t d} d| d d< | dt jj| j  7 } t j| t jd}d|d d< d|dd < t }tt	ddd	dd
}|| }t
|||}t jd}tt}t||}dt|jv sZJ W d    d S 1 sew   Y  d S )Nr   r   r   r   r   r   r   Fr    r!   )   r   r   ztype of features)r&   r'   r(   r)   r   r*   r+   r   r   r   r   pytestraisesr   r   strvalue)r-   r
   r.   r/   r0   Ztest_featureserr_r   r   r   #test_trainable_segmentation_predictG   s*   

"r>   c                  C   s  t d} d| dd< | dt jj| j  7 } t j| t jd}d|dd< d|dd< t }tt	d	d	d
dd}t
||d}|| | t j|j||dk  || }t |dd dks`J t |dd dksmJ t j| | jfdd}tt	dd}t
||d}||| t j|j||dk  ||}t |dd dksJ t |dd dksJ tt |t j|dd W d   n1 sw   Y  tt |t j|gd dd W d   dS 1 sw   Y  dS )zFTest the object-oriented interface using the TrainableSegmenter class.r   r   Nr   r   r   r   r   Fr    r!   )r.   r/   r   r4   )Zaxis)r5   )r&   r'   r(   r)   r   r*   r+   r   r   r   r   r   ZtestingZassert_array_almost_equalr
   r   r,   stackTr8   r9   r   Zexpand_dimsZconcatenate)r-   r
   r.   r/   Z	segmenterr1   Zimg_with_channelsr   r   r   test_trainable_segmentation_oo_   sJ   


"rA   )	functoolsr   numpyr&   r8   Zscipyr   Zskimage.futurer   r   r   Zskimage.featurer   r   r2   r6   r>   rA   r   r   r   r   <module>   s    