
F3Ic           @   s   y d  d l  Z  Wn- e k
 r? d  d l m Z e d   n Xd  d l Z d e j f d     YZ e d k r d e _ e j	 d d	  Z
 e j d
 e
  n  d S(   iN(   t   MissingExternalDependencyErrors-   Install NumPy if you want to use Bio.Cluster.t   TestClusterc           B   sM   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   s   Bio.Clusterc         C   s  t  j d k r( d d l m } m } n( t  j d k rP d d l m } m } n  t j d d d g  } |  j | |  d d  |  j | |  d	 d  d
 d d d g } |  j | |  d d  |  j | |  d d  d d d d
 d d d d g } |  j | |  d d  |  j | |  d d  d d d d d d d d g } |  j | |  d d  |  j | |  d d  d  S(   Ns   Bio.Clusteri(   t   meant   mediant	   Pyclustergfffff&A@i   i   g333333*@g      @i   i
   i   i   g      )@i   i   i   i   i   g     @g      @id   i   g      ?gffffff?g`"/@g333333?(	   R   t   modulet   Bio.ClusterR   R   R   t   numpyt   arrayt   assertAlmostEqual(   t   selfR   R   t   data(    (    s   test_Cluster.pyt   test_median_mean   s     c            s
  t  j d k r" d d l m  n" t  j d k rD d d l m  n  t j 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  } d d d d d g d d d d d	 g d d d d d g d d
 d d d g g } d  d! d" d# d$ g d% d& d' d( g d) d! d* g d d+ d, d- d, g g   d. d/ d0 d1 d2 g d. d/ d0 d1 d3 g d. d/ d0 d  d  g g  d4 d5 d6 d7 d8 g d  d4 d9 d9 d9 d9 g g  d3  i d: d g d d; g g d< 6 g   d  g  y  |  Wn |  j d=  n Xy  |  Wn |  j d>  n X|  j	 t
    f d?    |  j	 t
   f d@    |  j	 t
   f dA    |  j	 t
   f dB    |  j	 t
   f dC    |  j	 t
   f dD    |  j	 t
   f dE    d  S(F   Ns   Bio.Clusteri(   t   treeclusterR   g?g333333?gffffff?g?g      ?g       @g333333?gffffff?g@g@g@gffffff
@g@g333333@gffffff@g      @g      @g@g@g@g	@g333333@gffffff@g333333?g      ?g333333(@g        gfffffV@gW@g33333SW@gW@g     W@gfffffFW@gLW@g33333V@gW@gfffffW@g33333V@g      W@g     V@g     W@gffffff@g@g333333@g@g      @t   snoopyg7@g3333337@gL7@gffffff7@g     7@g      7@gffffff@gffffff@t   as)   treecluster failed to accept matrix data1s)   treecluster failed to accept matrix data2c              s
       S(   N(    (    (   t   data3R   (    s   test_Cluster.pyt   <lambda>c   s    c              s
       S(   N(    (    (   t   data4R   (    s   test_Cluster.pyR   d   s    c              s
       S(   N(    (    (   t   data5R   (    s   test_Cluster.pyR   e   s    c              s
       S(   N(    (    (   t   data6R   (    s   test_Cluster.pyR   f   s    c              s
       S(   N(    (    (   t   data7R   (    s   test_Cluster.pyR   g   s    c              s
       S(   N(    (    (   t   data8R   (    s   test_Cluster.pyR   h   s    c              s
       S(   N(    (    (   t   data9R   (    s   test_Cluster.pyR   i   s    (   R   R   R   R   R   R   R   t   Nonet   failt   assertRaisest	   TypeError(   R
   t   data1t   data2(    (   R   R   R   R   R   R   R   R   s   test_Cluster.pyt   test_matrix_parse(   sd    												c         C   s  t  j d k r" d d l m } n" t  j d k rD d d l m } n  d } t j d d d d d g  } t j d d d	 d
 d g d d d d d g d d d d d g d d d d d g g  } t j d d d d d g d d d d d g d d d d d g d d d d d g g t  } | | d | d | d | d d d d d  d! d" d# \ } } } |  j t	 |  t	 |   d d d d$ g }	 g  t
 |  D] }
 | |	 j |
  ^ q} x6 t
 t	 |   D]" }
 |  j | |
 | |	 |
  qWt j d d g  } t j 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  } t j 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 t  } | | d d d | d | d d d d d  d! d" d# \ } } } |  j t	 |  t	 |   d d d d d d d d d$ d d d d g }	 g  t
 |  D] }
 | |	 j |
  ^ q} x6 t
 t	 |   D]" }
 |  j | |
 | |	 |
  qWd  S(.   Ns   Bio.Clusteri(   t   kclusterR   i   i   g?g@gffffff
@g@g      @g@g	@g?g333333@g      ?gffffff@g333333?g@g      ?g333333(@g       @g        g      @t	   nclusterst   maskt   weightt	   transposei    t   npassid   t   methodR   t   distt   ei   g333333?gffffff?g333333?gffffff?g@g@g333333@gffffff@g@(   R   R   R   R   R   R   R   t   intt   assertEqualt   lent   ranget   index(   R
   R   R    R"   R   R!   t	   clusteridt   errort   nfoundt   correctt   it   mapping(    (    s   test_Cluster.pyt   test_kclusterk   sj    ?, 																						?-,c   	      C   s8  t  j d k r" d d l m } n" t  j d k rD d d l m } n  t j d d d d d g  } t j d d d d	 d
 g d d d d d g d d d d d g d d d d d g g  } t j d d d d d g d d d d d g d d d d d g d d d d d g g t  } d g } d d g } d g } | | d | d | d | d | d d  d! d" d# d } |  j | d$ d  | | d | d | d | d | d d  d! d" d# d } |  j | d% d  | | d | d | d | d | d d  d! d" d# d } |  j | d& d  t j d d g  } t j 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  } t j 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 t  } d d d d g } d0 d1 d2 d3 g } d4 g } | | d | d | d | d | d d  d! d" d# d } |  j | d5 d  | | d | d | d | d | d d  d! d" d# d } |  j | d6 d  | | d | d | d | d | d d  d! d" d# d } |  j | d7 d  d  S(8   Ns   Bio.Clusteri(   t   clusterdistanceR   i   g?g@gffffff
@g@g      @g@g	@g?g333333@g      ?gffffff@g333333?g@g      ?g333333(@g       @g        g      @i    i   i   R!   R"   t   index1t   index2R&   R'   R%   R   R#   g@g/$A@@g#~j<.@g333333?gffffff?g333333?gffffff?g@g@g333333@gffffff@g@i   i   i   i   i   gET@gMb
@g
ףp=
?(	   R   R   R   R4   R   R   R   R(   R	   (	   R
   R4   R"   R   R!   t   c1t   c2t   c3t   distance(    (    s   test_Cluster.pyt   test_clusterdistance   st    		666																							666c   	      C   sm  t  j d k r" d d l m } n" t  j d k rD d d l m } n  d d d d d g } t j d d d d	 d
 g d d d d d g d d d d d g d d d d d g g  } t j d d d d d g d d d d d g d d d d d g d d d d d g g t  } | d | d | d | d d d d d d   } |  j t	 |  t	 |  d  |  j | d j
 d!  |  j | d j d  |  j | d j d" d#  |  j | d j
 d  |  j | d j d  |  j | d j d$ d#  |  j | d! j
 d#  |  j | d! j d%  |  j | d! j d& d#  | d | d | d | d d d d' d d   } |  j t	 |  t	 |  d  |  j | d j
 d  |  j | d j d!  |  j | d j d" d#  |  j | d j
 d  |  j | d j d  |  j | d j d( d#  |  j | d! j
 d%  |  j | d! j d#  |  j | d! j d) d#  | d | d | d | d d d d* d d   } |  j t	 |  t	 |  d  |  j | d j
 d  |  j | d j d!  |  j | d j d" d#  |  j | d j
 d  |  j | d j d  |  j | d j d+ d#  |  j | d! j
 d%  |  j | d! j d#  |  j | d! j d, d#  | d | d | d | d d d d- d d   } |  j t	 |  t	 |  d  |  j | d j
 d!  |  j | d j d  |  j | d j d" d#  |  j | d j
 d  |  j | d j d  |  j | d j d. d#  |  j | d! j
 d#  |  j | d! j d%  |  j | d! j d/ d#  d d g } t j d0 d1 g d2 d3 g d4 d5 g d6 d7 g d8 d9 g d: d; g d< d= g d> d? g d@ dA g dB dC g dD dE g dF dG g dH dI g g  } t j 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 t  } | d | d | d | d d d d d d   } |  j t	 |  t	 |  d  |  j | d j
 dJ  |  j | d j dK  |  j | d j dL d#  |  j | d j
 dM  |  j | d j dN  |  j | d j dO d#  |  j | d! j
 d!  |  j | d! j d  |  j | d! j dP d#  |  j | d# j
 dQ  |  j | d# j d%  |  j | d# j dR d#  |  j | dK j
 dS  |  j | dK j dT  |  j | dK j dU d#  |  j | dJ j
 dV  |  j | dJ j dW  |  j | dJ j dX d#  |  j | dY j
 dZ  |  j | dY j d  |  j | dY j d[ d#  |  j | dV j
 d  |  j | dV j d#  |  j | dV j d\ d#  |  j | d] j
 d^  |  j | d] j d_  |  j | d] j d` d#  |  j | dM j
 d]  |  j | dM j da  |  j | dM j db d#  |  j | dT j
 dc  |  j | dT j dY  |  j | dT j dd d#  |  j | dQ j
 de  |  j | dQ j df  |  j | dQ j dg d#  | d | d | d | d d d d' d d   } |  j t	 |  t	 |  d  |  j | d j
 dK  |  j | d j dJ  |  j | d j dL d#  |  j | d j
 dM  |  j | d j dN  |  j | d j dO d#  |  j | d! j
 dQ  |  j | d! j d%  |  j | d! j dh d#  |  j | d# j
 d  |  j | d# j d!  |  j | d# j dP d#  |  j | dK j
 dT  |  j | dK j dZ  |  j | dK j di d#  |  j | dJ j
 dV  |  j | dJ j dW  |  j | dJ j dj d#  |  j | dY j
 d  |  j | dY j dS  |  j | dY j dk d#  |  j | dV j
 d_  |  j | dV j d  |  j | dV j dl d#  |  j | d] j
 d#  |  j | d] j d^  |  j | d] j dm d#  |  j | dM j
 da  |  j | dM j d]  |  j | dM j dn d#  |  j | dT j
 df  |  j | dT j dc  |  j | dT j do d#  |  j | dQ j
 dY  |  j | dQ j de  |  j | dQ j dp d#  | d | d | d | d d d d* d d   } |  j t	 |  t	 |  d  |  j | d j
 dK  |  j | d j dJ  |  j | d j dL d#  |  j | d j
 dN  |  j | d j dM  |  j | d j dO d#  |  j | d! j
 d  |  j | d! j d!  |  j | d! j dP d#  |  j | d# j
 d%  |  j | d# j dQ  |  j | d# j dq d#  |  j | dK j
 dT  |  j | dK j dS  |  j | dK j dr d#  |  j | dJ j
 dW  |  j | dJ j dV  |  j | dJ j ds d#  |  j | dY j
 d  |  j | dY j dZ  |  j | dY j dt d#  |  j | dV j
 d#  |  j | dV j d  |  j | dV j du d#  |  j | d] j
 d_  |  j | d] j d^  |  j | d] j dv d#  |  j | dM j
 da  |  j | dM j d]  |  j | dM j dw d#  |  j | dT j
 dY  |  j | dT j dc  |  j | dT j dx d#  |  j | dQ j
 df  |  j | dQ j de  |  j | dQ j dy d#  | d | d | d | d d d d- d d   } |  j t	 |  t	 |  d  |  j | d j
 dJ  |  j | d j dK  |  j | d j dL d#  |  j | d j
 dM  |  j | d j dN  |  j | d j dO d#  |  j | d! j
 d!  |  j | d! j d  |  j | d! j dP d#  |  j | d# j
 dQ  |  j | d# j dT  |  j | d# j di d#  |  j | dK j
 d%  |  j | dK j dS  |  j | dK j dz d#  |  j | dJ j
 dZ  |  j | dJ j d  |  j | dJ j d{ d#  |  j | dY j
 dW  |  j | dY j dV  |  j | dY j d| d#  |  j | dV j
 d  |  j | dV j d#  |  j | dV j d} d#  |  j | d] j
 d^  |  j | d] j dc  |  j | d] j d~ d#  |  j | dM j
 d]  |  j | dM j dY  |  j | dM j d d#  |  j | dT j
 df  |  j | dT j d_  |  j | dT j d d#  |  j | dQ j
 de  |  j | dQ j da  |  j | dQ j d d#  d  S(   Ns   Bio.Clusteri(   R   R   i   g?g@gffffff
@g@g      @g@g	@g?g333333@g      ?gffffff@g333333?g@g      ?g333333(@g       @g        g      @R   R!   R"   R#   i    R%   R   R&   R'   i   g@i   g333333@ig+Y5@t   sg333333@g7A`)@t   cg@gZd;o3@t   mg!@g/$A@@gHP?gX9v?gCl?gGx$(?g@ǘ?g0*?g.!u@g0*?g$(~k?g؁sF?g%C?g$?gHPs@gMbX@g7A`P@g@@g6>W[1	@gN@a
@gMJ@glxz,C@gMb@g<,Ԛ@g0*Є@g5^IB@gPsג@gB>٬@i   i   g~jth?i	   i   gV-?gZd;?i   gQ?ii
   gMb?i   igy&1?i   igK7A?g/$?i   iig/$?igZd;	@ig%C@iigZd{)@gL7A`?gʡE?gZd;O?g`"?grh|?g|?5^?g`"?g~jt@gHzG@gT㥛 ?gCl?gx&1?gd;O?g(\?g r?g/$@gZd;O@gOn'@gS?g/$?gS?g333333?g`"?g@gQ@gCl6@(   R   R   R   R   R   R   R   R(   R)   R*   t   leftt   rightR	   R:   (	   R
   R   t   weight1R   t   mask1t   treet   weight2R   t   mask2(    (    s   test_Cluster.pyt   test_treecluster   s   - - - - 																						- - - - c         C   s  t  j d k r" d d l m } n" t  j d k rD d d l m } n  d d d d d g } t j d d d d	 d
 g d d d d d g d d d d d g d d d d d g g  } t j d d d d d g d d d d d g d d d d d g d d d d d g g t  } | d | d | d | d d d d d d d  d! d" d# d$ d%  	\ } } |  j t	 |  t	 |   |  j t	 | d  d&  d d g } t j 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  } t j 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 t  } | d | d | d | d d d d d d d  d! d" d# d$ d%  	\ } } |  j t	 |  t	 |   |  j t	 | d  d&  d  S(0   Ns   Bio.Clusteri(   t
   somclusterR   i   g?g@gffffff
@g@g      @g@g	@g?g333333@g      ?gffffff@g333333?g@g      ?g333333(@g       @g        g      @R   R!   R"   R#   i    t   nxgridi
   t   nygridt   inittaug{Gz?t   niterid   R&   R'   i   g333333?gffffff?g333333?gffffff?g@g@g333333@gffffff@g@(
   R   R   R   RG   R   R   R   R(   R)   R*   (   R
   RG   R"   R   R!   R-   t   celldata(    (    s   test_Cluster.pyt   test_somcluster  s\    E																						Ec   
      C   s+  t  j d k r( d d l m } m } n( t  j d k rP d d l m } m } n  t j d d d g d d	 d
 g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g	  } t j d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g	 t  } t j d d d  g  } | | d! | d" | } |  j	 | d d d# d$  |  j	 | d% d d& d$  |  j	 | d% d d' d$  |  j	 | d$ d d( d$  |  j	 | d$ d d) d$  |  j	 | d$ d% d* d$  |  j	 | d+ d d, d$  |  j	 | d+ d d- d$  |  j	 | d+ d% d. d$  |  j	 | d+ d$ d/ d$  |  j	 | d0 d d1 d$  |  j	 | d0 d d2 d$  |  j	 | d0 d% d3 d$  |  j	 | d0 d$ d4 d$  |  j	 | d0 d+ d5 d$  |  j	 | d6 d d7 d$  |  j	 | d6 d d8 d$  |  j	 | d6 d% d9 d$  |  j	 | d6 d$ d: d$  |  j	 | d6 d+ d; d$  |  j	 | d6 d0 d< d$  |  j	 | d= d d> d$  |  j	 | d= d d? d$  |  j	 | d= d% d@ d$  |  j	 | d= d$ dA d$  |  j	 | d= d+ dB d$  |  j	 | d= d0 dC d$  |  j	 | d= d6 dD d$  |  j	 | dE d dF d$  |  j	 | dE d dG d$  |  j	 | dE d% dH d$  |  j	 | dE d$ dI d$  |  j	 | dE d+ dJ d$  |  j	 | dE d0 dK d$  |  j	 | dE d6 dL d$  |  j	 | dE d= dM d$  | | dN dO \ } } }	 |  j
 | d d0  |  j
 | d d0  |  j
 | d% d%  |  j
 | d$ d0  |  j
 | d+ d0  |  j
 | d0 d0  |  j
 | d6 d0  |  j
 | d= d0  |  j
 | dE d%  |  j	 | dP d$  d  S(Q   Ns   Bio.Clusteri(   t   distancematrixt   kmedoidsR   g@gffffff
@g@g @gffffff?gffffff@g333333@g      "@g333333?g      @gffffff@g      ?g@g333333@gffffff?g@g@g"@g333333@g333333#@g333333?g!@g?i   i    g       @g      ?g      ?R!   R"   gS?i   i   g 9@g{GzF@g
ףp=
@gV-@gE=@i   gHzG@g%C@g3=@gʡE?i   g{Gz?gQ@gHzgA@g{Gz?g\(\?i   g7A`?gS㥛?gQ~E@gFx@g|?5^@gzG@i   g/$ @gMb@gףp=
gP@g{Gz(@gCl%@g        gq=
ףp!@i   g rhQ%@guV3@g{Gz?gm0@g+w/@gR@@gjtD2@g r2@R$   i  gQ@(   R   R   R   RN   RO   R   R   R   R(   R	   R)   (
   R
   RN   RO   R   R!   R"   t   matrixR-   R.   R/   (    (    s   test_Cluster.pyt   test_distancematrix_kmedoids+  s    (
   t   __name__t
   __module__R   R   R   R3   R;   RF   RM   RQ   (    (    (    s   test_Cluster.pyR      s   		C	?	G	 	6t   __main__s   Bio.Clustert	   verbosityi   t
   testRunner(   R   t   ImportErrort   BioR    t   unittestt   TestCaseR   RR   R   t   TextTestRunnert   runnert   main(    (    (    s   test_Cluster.pyt   <module>   s     r	