U
    ?h                     @   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   b/var/www/html/venv/lib/python3.8/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stt |dd  dkst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AssertionError)imgr
   clffeatures_funcfeaturesoutr   r   r   )test_trainable_segmentation_singlechannel   s&    

r3   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stt |dd  dkst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
   r/   r1   r2   r   r   r   (test_trainable_segmentation_multichannel1   s&    

r7   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kstW 5 Q R X 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valuer-   )r.   r
   r/   r0   r1   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stt |dd dkstt j| | jfdd}tt	dd}t
||d}||| t j|j||dk  ||}t |dd dksPtt |dd dkslttt |t j|dd W 5 Q R X tt  |t j|gd dd W 5 Q R X dS )zFTest the object-oriented interface using the TrainableSegmenter class.r   r   Nr   r   r   r   r   Fr    r!   )r/   r0   r   r5   )Zaxis)r6   )r&   r'   r(   r)   r   r*   r+   r   r   r   r   r   ZtestingZassert_array_almost_equalr
   r   r,   r-   stackTr9   r:   r   Zexpand_dimsZconcatenate)r.   r
   r/   r0   Z	segmenterr2   Zimg_with_channelsr   r   r   test_trainable_segmentation_oo_   sF    


rB   )	functoolsr   numpyr&   r9   Zscipyr   Zskimage.futurer   r   r   Zskimage.featurer   r   r3   r7   r?   rB   r   r   r   r   <module>   s   