ó
Ý™xTc        	   @   s^  d  Z  d d l m Z d d l Td d l m Z d d l Z d d l Z d „  Z d e j	 f d „  ƒ  YZ
 d	 e j	 f d
 „  ƒ  YZ d e j	 f d „  ƒ  YZ d e j	 f d „  ƒ  YZ d e j	 f d „  ƒ  YZ d e j	 f d „  ƒ  YZ e j d e j d d ƒ j e j e j e
 ƒ e j e ƒ e j e ƒ e j e ƒ e j e ƒ e j e ƒ f ƒ ƒ d S(   s-   
http://pypi.python.org/pypi/cluster/1.1.1b3
iÿÿÿÿ(   t   division(   t   *(   t   SequenceMatcherNc         C   sŠ   g  |  D] } t  | ƒ ^ q } g  | D] } t  | ƒ ^ q& } t } x | D] } | | | k M} qK Wx | D] } | | | k M} ql W| S(   s‘   
   Compare lists by content. Ordering does not matter.
   Returns True if both lists contain the same items (and are of identical
   length)
   (   t   sett   True(   t   xt   yt   clustert   cmpxt   cmpyt   all_okt   cset(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   compare_list   s    t   HClusterSmallListTestCasec           B   s    e  Z d  Z d „  Z d „  Z RS(   s    Test for Bug #1516204 c         C   s5   t  d g d „  ƒ } |  j d g | j d ƒ ƒ d S(   sN   Testing if hierarchical clustering a set of length 1 returns a set of length 1il  c         S   s   t  |  | ƒ S(   N(   t   abs(   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   <lambda>6   s    i(   N(   t   HierarchicalClusteringt   assertEqualt   getlevel(   t   selft   cl(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testClusterLen14   s    c         C   s/   t  g  d „  ƒ } |  j g  | j d ƒ ƒ d S(   sF   Testing if hierarchical clustering an empty list returns an empty listc         S   s   t  |  | ƒ S(   N(   R   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   ;   s    i(   N(   R   R   R   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testClusterLen09   s    (   t   __name__t
   __module__t   __doc__R   R   (    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   1   s   	t   HClusterIntegerTestCasec           B   s   e  Z d  „  Z d „  Z RS(   c         C   sI   d d d d d d d d d	 d
 d d d d d d d d d d g |  _  d  S(   Ni  i¼  i¤  i|   i4  iT   i   im  iR  i¬  iŽ  iË  iƒ   i  iP  i  iC  i†   i‡  (   t   _HClusterIntegerTestCase__data(   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   setUp@   s    !c         C   s�   t  |  j d „  ƒ } | j ƒ  |  j d g d d d d g d d d d d	 d
 g d d d g d g d g d g d d d g g | j d ƒ ƒ d S(   s0   Basic Hierarchical Clustering test with integersc         S   s   t  |  | ƒ S(   N(   R   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   F   s    i   iT   i|   iƒ   i†   iP  im  iŽ  i‡  i¬  i¼  iË  i  iC  i¤  i  i4  i  i(   N(   R   R   R   R   R   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testClusterD   s    
(   R   R   R   R   (    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   >   s   	t   HClusterStringTestCasec           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s#   t  d „  | | ƒ } d | j ƒ  S(   Nc         S   s
   |  d k S(   Ns   . -(    (   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   W   s    i   (   R   t   ratio(   R   R   R   t   sm(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   simV   s    c         C   s   d j  ƒ  |  _ d  S(   Ns…   Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut elit. Phasellus consequat ultricies mi. Sed congue leo at neque. Nullam.(   t   splitt   _HClusterStringTestCase__data(   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   Z   s    c         C   sR   t  |  j |  j ƒ } x6 | j d ƒ D]% } |  j t | ƒ t g  ƒ d ƒ q% Wd S(   s   Test for bug #?g      à?s   Every item should be a list!N(   R   R#   R!   R   R   t   type(   R   R   t   item(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testDataTypes]   s
    c         C   s�   t  |  j |  j ƒ } |  j d g d g d g d g d g d d g d d	 d	 d	 g d
 d d g d d d d g d g d g g | j d ƒ ƒ d S(   s.   Basic Hierachical clustering test with stringss   Nullam.t   Seds   mi.t	   ultriciest	   Phaselluss   amet,t   att   sits   elit.t   leot   Loremt   dolors   neque.t   conguet   consectetuert	   consequatt   ipsumt
   adipiscingg      à?N(   R   R#   R!   R   R   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   e   s    		(   R   R   R!   R   R&   R   (    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   T   s   			t   KClusterSmallListTestCasec           B   s   e  Z d  „  Z d „  Z RS(   c         C   sK   t  d g ƒ } |  j d g | j d ƒ ƒ |  j d g | j d ƒ ƒ d S(   s@   Testing that a search space of length 1 returns only one clusteril  i   i   N(   t   KMeansClusteringR   t   getclusters(   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   z   s    c         C   sB   t  g  ƒ } |  j g  | j d ƒ ƒ |  j g  | j d ƒ ƒ d S(   s8   Testing if clustering an empty set, returns an empty seti   i   N(   R5   R   R6   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   €   s    (   R   R   R   R   (    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR4   x   s   	t   KCluster2DTestCasec           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sQ   t  d d d d g d d „  ƒ} |  j t | j d ƒ |  j t | j d ƒ d	 S(
   s9   Test that asking for less than 2 clusters raises an erroril  i{   iX  i¤  t   distancec         S   s   t  |  | ƒ S(   N(   R   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   Š   s    i    i   N(   R5   t   assertRaisest   ClusteringErrorR6   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testClusterCountˆ   s    !c         C   s5   t  d d g d d „  ƒ} |  j t | j d ƒ d S(   sL   Test that asking for more clusters than data-items available raises an erroril  i{   R8   c         S   s   t  |  | ƒ S(   N(   R   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   �   s    i   N(   R5   R9   R:   R6   (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testNonsenseClusterŽ   s    c         C   sA   d d d d d d d d d d d d g } |  j  t t | ƒ d
 S(   sH   Test if there is an item in the cluster that has a different cardinalityi   i   i   i   i   i   i   i   i	   N(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   (   i   i   (   i   i   (   i   i   (   i	   i   (   i	   i   (   R9   t
   ValueErrorR5   (   R   t   data(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testUniformLength“   s    *c         C   s·   d d d d d d d d d d d d d d  d! d" g } t  | ƒ } | j d ƒ } d# d$ d% d& d' d( d) d* g d+ d, d- d. d/ d0 d1 d2 g g } |  j t t | | ƒ d | | f ƒ d S(3   s   test for bug #1604868i   i   i   i   i   i   i   i   i
   i    i   i   i   i   i   i   s   Elements differ!
%s
%sN(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i
   (   i    i    (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i
   (   i    i    (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R5   R6   R   R   R   (   R   R>   R   t   clusterst   expected(    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testPointDoubling˜   s    !!c         C   sŒ   d d d d d d d d d d d d g } t  | ƒ } | j d ƒ } |  j | j d ƒ d d d d d d g d d d d  d! d" g g ƒ d
 S(#   s   Basic clustering testi   i   i   i   i   i   i   i   i	   N(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i	   i   (   i   i   (   i	   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i	   i   (   i	   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R5   R6   R   (   R   R>   R   R@   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testClustering¥   s    *(   R   R   R;   R<   R?   RB   RC   (    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR7   †   s
   				t   KClusterSFBugsc           B   s   e  Z d  „  Z RS(   c         C   sc   t  d	 d
 d g d „  ƒ } | j d ƒ } d d d g } |  j t t | | ƒ d | | f ƒ d S(   s   test for bug #1727558i   i   i(   i)   c         S   s   |  | S(   N(    (   R   R   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyR   ³   s    i   s   Elements differ!
%s
%sN(   i   i   (   i   i(   (   i   i)   (   i   i   (   i   i(   (   i   i)   (   R5   R6   R   R   R   (   R   R   R@   RA   (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   testLostFunctionReference±   s    (   R   R   RE   (    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyRD   ¯   s   t   streamt	   verbosityi    (   R   t
   __future__R    t   libtbx.clustert   difflibR   t   unittestt   sysR   t   TestCaseR   R   R   R4   R7   RD   t   TextTestRunnert   stdoutt   runt	   TestSuitet	   makeSuite(    (    (    sA   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/clusterTests.pyt   <module>   s(   
	$)