
Ic           @   s  d  d l  Z  y e Wn! e k
 r7 d  d l m Z n Xy d  d l Z Wn- e k
 rw d  d l m Z e d   n Xd  d l m	 Z	 d d g d d	 g d
 d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d  g d! d" g d# d$ g d% d& g g Z
 d' d' d' d' d' d' d' d' d' d' d( d( d( d( d( d( d( g Z d) e  j f d*     YZ e d+ k re  j d, d-  Z e  j d. e  n  d S(/   iN(   t   Set(   t   MissingExternalDependencyErrors)   Install NumPy if you want to use Bio.kNN.(   t   kNNig)\iiu   g
ףp=pi9   gףp=
odi   ggi   gGzkiU   gGz>hgQfi   gQfig(\fi:   gR=pi~   gGzyi   g
ףp=2oiq   gGzpi   gp=
׏si   g(\ji   gwi]   gGz2ri   i    t   TestKNNc           B   s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C   s   d } t  j t t |  } |  j | j t d d g   t t  } x t |  D]q } |  j	 | j | d f t | d d  |  j	 | j | d f t | d d  |  j | j | t |  qS W|  j | j
 |  d  S(   Ni   i    i   i   (   R   t   traint   xst   yst   assertEqualt   classest   sett   lent   ranget   assertAlmostEqualt   k(   t   selfR   t   modelt   nt   i(    (    s   test_kNN.pyt   test_calculate_modelA   s    ((c         C   so   d } t  j t t |  } t  j | d d g  } |  j | d  t  j | d d g  } |  j | d  d  S(   Ni   i   gqVjei   i5  g>
pi    (   R   R   R   R   t   classifyR   (   R   R   R   t   result(    (    s   test_kNN.pyt   test_classifyL   s    c         C   s   d } t  j t t |  } t  j | d d g  } |  j | d d d  |  j | d d d  t  j | d d	 g  } |  j | d d d  |  j | d d d  t  j | d
 d g  } |  j | d d d  |  j | d d d  d  S(   Ni   i   gqVjei    g        i   g      @i5  g>
piu   g
ףp=pg       @g      ?(   R   R   R   R   t	   calculateR   (   R   R   R   t   weights(    (    s   test_kNN.pyt   test_calculate_probabilityT   s    c         C   s   d } d } t  j t t |  } d d d d d d d d d d d d d d d d d g } xa t t |   D]M } t  j | t |  } |  j | | |  | t | k rm | d 7} qm qm W|  j | d  d  S(   Ni    i   i   i   (   R   R   R   R   R   R
   R   R   (   R   t   correctR   R   t   predictionsR   t
   prediction(    (    s   test_kNN.pyt   test_model_accuracya   s    9c         C   s  d } d } t  j t t |  } d d d d d d d d d d d d d d d d d g } x t t |   D] } t  j t |  t | d t |  t | d |  } t  j | t |  } |  j | | |  | t | k rm | d 7} qm qm W|  j | d  d  S(   Ni    i   i   i   (   R   R   R   R   R   R
   R   R   (   R   R   R   R   R   R   R   (    (    s   test_kNN.pyt   test_leave_one_outm   s    95(   t   __name__t
   __module__R   R   R   R   R   (    (    (    s   test_kNN.pyR   ?   s
   				t   __main__t	   verbosityi   t
   testRunner(   t   unittestR	   t	   NameErrort   setsR    t   numpyt   ImportErrort   BioR   R   R   R   t   TestCaseR   R   t   TextTestRunnert   runnert   main(    (    (    s   test_kNN.pyt   <module>	   sb   																	;