ó
yJ[c           @  s¥  d  d l  m Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 m Z m Z d  d l m Z m Z d  d l Td  d l m Z d  d	 l m Z m Z d  d
 l m Z m Z e rÕ d  d l Z n  d „  Z d „  Z d „  Z d d „ Z d d „ Z d „  Z  d „  Z! d „  Z" d e" _# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d „  Z- d „  Z. d „  Z/ d  „  Z0 d S(!   iÿÿÿÿ(   t   print_functionN(   t   assert_raises(   t
   PatsyError(   t   atleast_2d_column_defaultt   have_pandast   have_pandas_categorical(   t   Termt	   INTERCEPT(   t   *(   t   C(   t   balancedt   LookupFactor(   t   DesignMatrixt
   DesignInfoc         C  sp   t  |  ƒ }  |  j d d k r# t St j j |  ƒ \ } } } t j | d k ƒ } | |  j d k sl t ‚ d  S(   Ni   i    g»½×Ùß|Û=(   R   t   shapet   Truet   npt   linalgt   svdt   sumt   AssertionError(   t   mt   ut   st   vt   rank(    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   assert_full_rank   s    c           C  så   t  t j d ƒ ƒ t  d d g d d g d d g d d g g ƒ t t t  d d g d d g g ƒ t t t  d d g d d g g ƒ t t t  d d d g d d d g g ƒ t t t  d d d g d d d	 g d d	 d
 g g ƒ d  S(   Ni
   i   i    i   i   i   id   i   i   i   (   R   R   t   eyeR   R   (    (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_assert_full_rank#   s    ."c          G  sG   g  } x: |  D]2 } | j  t g  | D] } t | ƒ ^ q# ƒ ƒ q W| S(   N(   t   appendR   R   (   t   entriest   termst   entryt   name(    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   make_termlist0   s    0c         C  s‡   t  |  ƒ t |  j j ƒ t | ƒ k s. t ‚ | d  k	 rU |  j j | k sU t ‚ n  |  j d k sj t ‚ |  j d | k sƒ t ‚ d  S(   Ni   i   (	   R   t   sett   design_infoR   R   t   Nonet   column_namest   ndimR   (   t   mmt   expected_rankt   termlistR&   (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   check_design_matrix6   s    
$c   	        s½   t  | Œ  } ‡  f d †  } t | g | d d ƒ} t | ˆ  ƒ } | d } | d j | j j k sk t ‚ | d j | j j k sŠ t ‚ | j | d k s£ t ‚ t | | | d | ƒ| S(   Nc           3  s	   ˆ  Vd  S(   N(    (    (   t   data(    s/   lib/python2.7/site-packages/patsy/test_build.pyt
   iter_maker@   s    t   eval_envi    R&   (   R"   t   design_matrix_builderst   build_design_matricest   term_slicesR$   R   R&   R+   (	   R,   R)   R   R&   R*   R-   t   design_infost   matricest   matrix(    (   R,   s/   lib/python2.7/site-packages/patsy/test_build.pyt   make_matrix>   s    


c       
   C  sÃ  t  d d d d ƒ }  t j d d t |  d ƒ ƒ } |  d <|  d d } |  d <t |  d d g g d d	 d
 g ƒ} t j | d d g d d g d d g d d g g ƒ s² t ‚ t |  d g  d g g d d d g ƒ} t j | d d g d d g d d g d d g g ƒ st ‚ t |  d d d g g d d d d d g ƒ} t j | d d d d g d d d d g d d d d g d d d d g g ƒ s–t ‚ t |  d g  d g d g d d g g d d d d d g ƒ} t j | d d d d g d d d d g d d d d g d d d d g g ƒ s&t ‚ t |  d g  d g d g d d g g d d d d d g ƒ} t j | d d d d g d d d d g d d d d g d d d d g g ƒ s¶t ‚ t |  d d g d g d d g g d d	 d
 d d g ƒ} t j | d d | d d g d d | d d g d d | d | d g d d | d | d g g ƒ s[t ‚ t |  d d g d g d d g g d d d d g ƒ} t j | t j | | | | f ƒ ƒ s¿t ‚ d  S(   Nt   ai   t   bi    i   t   x1t   x2R&   s   a[a1]s   a[a2]t	   Intercepts   a[T.a2]i   s   a[a1]:b[b1]s   a[a2]:b[b1]s   a[a1]:b[b2]s   a[a2]:b[b2]s   b[T.b2]s   a[T.a2]:b[T.b2]s   b[T.b2]:a[T.a2]s
   a[T.a2]:x1i   s   x2:x1(   R
   R   t   linspacet   lenR5   t   allcloseR   t   column_stack(   R,   R8   R9   R   (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_simpleN   sJ    '$<'<''$&$c          C  s¢   t  d d d d d d ƒ }  t j d d t |  d ƒ ƒ |  d <t |  d g  d d g g ƒ t |  d	 d d g d d g g ƒ t |  d	 d d g d d g g ƒ d  S(
   NR6   i   R7   t   ci    i   t   xi   i   (   R
   R   R;   R<   R5   (   R,   (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_R_bugs|   s
    #"c            sb  t  d d d d d d ƒ }  t j d d t |  d ƒ ƒ |  d <|  d d |  d	 <‡  f d
 †  ‰  t ˆ  d ƒ ƒ } t ˆ  | ƒ ƒ } t t | ƒ ƒ d d g d d g d d g d d g d d g g } d } d d  l } | j ƒ  } x\| D]T} t | ƒ } x?| D]( \ }	 }
 |	 | k r|
 | k rPqqWt ƒ  } x’ | D]Š } t g  | D] } | j	 d ƒ rP| ^ qPƒ } g  | D] } | j	 d ƒ s{| ^ q{} x+ ˆ  | ƒ D] } | j
 t | | ƒ ƒ q©Wq@Wt | ƒ } | d d g k rt t t |  | | ƒ n t |  | | ƒ | d 7} | d d k rë t d | ƒ që që Wt d | j ƒ  | f ƒ d  S(   NR6   i   R7   t   repeati   i    i   R8   R9   c         3  sc   |  s t  ƒ  VnN |  d } xA ˆ  |  d ƒ D]/ } t  t | ƒ ƒ Vt  t | f | ƒ ƒ Vq, Wd  S(   Ni    i   (   t   tuplet   sorted(   t   lt   objt   subset(   t   all_subsets(    s/   lib/python2.7/site-packages/patsy/test_build.pyRI   –   s    
iÿÿÿÿRA   id   s
   Completed:s   Took %0.2f seconds(   R6   R7   R8   R9   (   R7   (   R6   (   R9   (   R8   (   R7   R9   (   R6   R8   (   R6   R7   R9   (   R6   R7   R8   (   R7   R8   R9   (   R6   R8   R9   (    (    (   (    (   R
   R   R;   R<   t   listt   printt   timeR#   RD   t
   startswitht   addt	   frozensetR   R   R5   (   R,   t	   all_termst   all_termlist_templatest	   redundantt   countRL   t   startt   termlist_templatet   termlist_sett   dispreferredt	   preferredt   expanded_termst   term_templatet   tt   numerict   restt   subset_restR)   (    (   RI   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_redundancy_thoroughlyŽ   sH    #						.(
i   c       
   C  sJ  i d d d d g d 6d d d d g d 6}  t  |  ƒ } g  | d D] } | j d	 ƒ ^ qC | d <i d d d d g d 6d d d d g d 6} t  |  ƒ } g  | d D] } t j | ƒ ^ q¥ | d <t j t t |  d |  d ƒ ƒ d
 d d t f g ƒ} t j t t |  d |  d ƒ ƒ d
 d d t f g ƒ} | j	 t j
 ƒ } | j	 t j
 ƒ } |  | | | | g } t r®t j | ƒ }	 | j |	 ƒ t j | ƒ }
 | j |
 ƒ n  x• | D] } t | d d g d d g g d d d d d g ƒ} t j | d d d d g d d d d g d d d d g d d d d g g ƒ sµt ‚ qµWd  S(   Nt   a1t   a2R6   i   i   i   i   RA   t   asciit   dtypet   S2t   U2R&   s   a[a1]s   a[a2]s   a[a1]:xs   a[a2]:xi    (   R6   Rd   (   R6   Re   (   t   dictt   encodet   sixt	   text_typeR   t   arrayRJ   t   zipt   intt   viewt   recarrayR   t   pandast	   DataFrameR   R5   R=   R   (   t
   basic_dictt   basic_dict_bytesR   t   basic_dict_unicodet   structured_array_bytest   structured_array_unicodet   recarray_bytest   recarray_unicodet   datast   df_bytest
   df_unicodeR,   R   (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_data_typesÈ   s<    **	c            s  i d d d g d 6‰  ‡  f d †  }  t  t d ƒ g |  d ƒ d } t | g ˆ  ƒ d } | j t j t j ƒ k s{ t ‚ t | g ˆ  d t j ƒd } | j t j t j ƒ k s» t ‚ t t d ƒ rt | g ˆ  d t j	 ƒd } | j t j t j	 ƒ k st ‚ n  d  S(	   Ni   i   i   RA   c           3  s	   ˆ  Vd  S(   N(    (    (   R,   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   í   s    i    Rc   t   float128(
   R/   R"   R0   Rc   R   t   float64R   t   float32t   hasattrR|   (   R-   t   buildert   mat(    (   R,   s/   lib/python2.7/site-packages/patsy/test_build.pyt    test_build_design_matrices_dtypeë   s    !!c            s•   i d d d g d 6‰  ‡  f d †  }  t  t d ƒ g |  d ƒ d } t | g ˆ  d d ƒd } t | t ƒ su t ‚ t t t | g ˆ  d d	 ƒd  S(
   Ni   i   i   RA   c           3  s	   ˆ  Vd  S(   N(    (    (   R,   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   ý   s    i    t   return_typeR4   t   asdfsadf(   R/   R"   R0   t
   isinstanceR   R   R   R   (   R-   R€   R   (    (   R,   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_return_typeû   s    c       	     s[  i d d d g d 6d d d g d 6‰  ‡  f d †  }  t  t d d ƒ g |  d	 ƒ d	 } t | g i d
 t j d g d 6t j d d d  g d t ƒd 6ƒ d	 } | j d k s´ t	 ‚ t j
 | d d d
 g g ƒ sØ t	 ‚ t | g i d
 t j d g d 6t j d d d  g d t ƒd 6d d ƒd	 } | j d k s;t	 ‚ t j
 | d d d
 g g ƒ s_t	 ‚ d d l m } | d g  ƒ } t | g i d
 t j g d 6t j d d g d t ƒd 6d | ƒd	 } | j d k sÛt	 ‚ t j j | d d d
 g d d t j g g ƒ t t t | g i d
 t j d g d 6t j d d d  g d t ƒd 6d d ƒd  S(   Ni   i   i   RA   t   c1t   c2R@   c           3  s	   ˆ  Vd  S(   N(    (    (   t   initial_data(    s/   lib/python2.7/site-packages/patsy/test_build.pyR-     s    i    g      $@g      4@Rc   g      ð?g        t	   NA_actiont   dropiÿÿÿÿ(   t   NAActiont   NA_typest   raise(   i   i   (   i   i   (   i   i   (   R/   R"   R0   R   t   nant   asarrayR%   t   objectR   R   t   array_equalt   patsy.missingRŒ   t   testingt   assert_array_equalR   R   (   R-   R€   R   RŒ   RŠ   (    (   R‰   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_NA_action
  s@    &"	$	$	.c            sß   i d t  j d g d 6d d d g d 6‰  ‡  f d †  }  t t d d ƒ g |  d	 ƒ d	 } | j d
 d d d g k s{ t ‚ t | g ˆ  ƒ \ } | j d k s¥ t ‚ t  j | d d d d g d d d d g g ƒ sÛ t ‚ d  S(   Ng      ð?g      @RA   R‡   Rˆ   t   c3R@   c           3  s	   ˆ  Vd  S(   N(    (    (   R,   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   ;  s    i    s   c[c1]s   c[c2]s   c[c3]i   i   g        (   i   i   (	   R   R   R/   R"   R&   R   R0   R   R’   (   R-   R$   R   (    (   R,   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_NA_drop_preserves_levels7  s    )"!c       	     s
  t  s
 d  St j i d d d g d 6d d d g d 6d	 d
 d	 g d 6d d d d g ƒ‰  ‡  f d †  }  t t g  ƒ g |  d ƒ \ } t t d ƒ t d ƒ g |  d d ƒ\ } } t t d d ƒ g |  d d ƒ\ } t t d d ƒ g |  d d ƒ\ } t t t | g i ˆ  d d 6ˆ  d d  d  d … d 6ƒ t t t | | g i ˆ  d d 6ˆ  d d  d  d … d 6ƒ d t j f d „  ƒ  Y} t t t | g | ˆ  ƒ ƒ t | g i ˆ  d d 6d d d g d 6ƒ \ } t j	 | d d g d d g d d g g ƒ st
 ‚ t | | g ˆ  d d ƒ\ } }	 t | t j ƒ s@t
 ‚ t |	 t j ƒ sXt
 ‚ t j | d g d g d g g ƒ s‚t
 ‚ t j |	 d g d g d g g ƒ s¬t
 ‚ t j | j d d d g ƒ sÐt
 ‚ t j |	 j d d d g ƒ sôt
 ‚ t j | j d g ƒ st
 ‚ t j |	 j d g ƒ s0t
 ‚ | j j d g k sKt
 ‚ |	 j j d g k sft
 ‚ | j j d g k st
 ‚ |	 j j d g k sœt
 ‚ t | | g i d d d g d 6ˆ  d d 6d d ƒ\ } }	 t | t j ƒ sðt
 ‚ t |	 t j ƒ st
 ‚ t j | d g d g d g g ƒ s2t
 ‚ t j |	 d g d g d g g ƒ s\t
 ‚ t j | j d d d g ƒ s€t
 ‚ t j |	 j d d d g ƒ s¤t
 ‚ t j | j d g ƒ sÂt
 ‚ t j |	 j d g ƒ sàt
 ‚ | j j d g k sût
 ‚ |	 j j d g k st
 ‚ | j j d g k s1t
 ‚ |	 j j d g k sLt
 ‚ t | g i d d d g d 6ˆ  d d 6d d ƒ\ }
 t |
 t j ƒ sšt
 ‚ t j |
 d d d g d d d g d d d g g ƒ sÖt
 ‚ t j |
 j d d d g ƒ sút
 ‚ t | g i d d d g d 6d d  d! g d 6d d ƒ\ } t | t j ƒ sMt
 ‚ t j | d d g d  d g d! d g g ƒ s€t
 ‚ t j | j d d d g ƒ s¤t
 ‚ t | g ˆ  d d ƒ\ } t | t j ƒ s×t
 ‚ t j | d g d g d g g ƒ st
 ‚ | j j t j d d d g ƒ ƒ s+t
 ‚ d d  l } | j j  } z< t | j _  t t t | g i d d d g d 6d d ƒWd  | | j _  Xt | g i d" t j d# g d 6t j d  d
 d	 g d$ t ƒd 6d% d& d d ƒ\ }	 |	 j j t j d g ƒ ƒ st
 ‚ d  S('   Ni   i   i   RA   i   i   i   t   yR`   Ra   R6   t   indexi
   i   i   c           3  s	   ˆ  Vd  S(   N(    (    (   R,   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   O  s    i    R.   iÿÿÿÿt   CheatingDataFramec           B  s   e  Z d  „  Z RS(   c         S  sC   | d k r, t  j j |  | ƒ d  d  d … St  j j |  | ƒ Sd  S(   NRA   iÿÿÿÿ(   Ro   Rp   t   __getitem__(   t   selft   key(    (    s/   lib/python2.7/site-packages/patsy/test_build.pyRœ   j  s     (   t   __name__t
   __module__Rœ   (    (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyR›   i  s   i(   i2   i<   Rƒ   t	   dataframei   i   i	   iþÿÿÿiýÿÿÿi   i   g      ð?g      @Rc   RŠ   R‹   (   R   Ro   Rp   R/   R"   R   R   R0   R   R=   R   R…   R’   Rš   t   columnsR$   R&   t
   term_namest   equalst   Indext   patsy.buildt   buildt   FalseR   R   R%   R‘   (   R-   t   int_buildert	   y_buildert	   x_buildert   x_a_buildert   x_y_builderR›   R   t   y_dft   x_dft   x_a_dft   x_y_dft   int_dft   patsyt
   had_pandas(    (   R,   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_return_type_pandasG  s¼    0	*	'3**$$!**$$	!<$	&3$**'	c            s¦  d d d g t  t t  g f t d d d g d d d d g ƒt d d d g d d d d g ƒf d g d g d g g d d g d d g d d g g f d d d g d d d g d d d g g d d g d d g d d g g f g }  d d d g d d d g f d d d g t d d d g ƒ f t  t t  g t d d d g ƒ f t  t t  g d d d g f g } d d d g d d d g f g } t d	 g ƒ ‰  ‡  f d
 †  } ‡  f d †  } xH |  D]@ \ } } | | | ƒ | | | ƒ | | | ƒ | | | ƒ q·Wx. | D]& \ } } | | | ƒ | | | ƒ qWx. | D]& \ } } | | | ƒ | | | ƒ q3Wt t t i d d d g d	 6d d d d g d 6d d	 g d g g ƒ d  S(   Ni   i   i   R6   R7   R@   t   levelst   dRA   c           sq   ‡  ‡ f d †  } yA t  ˆ g | d ƒ } t | i ˆ  d 6ƒ t | i ˆ d 6ƒ Wn t k
 rf n Xt ‚ d  S(   Nc           3  s   i ˆ  d 6Vi ˆ d 6Vd  S(   NRA   (    (    (   t   data1t   data2(    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   Ý  s    i    RA   (   R/   R0   R   R   (   R¸   R¹   R-   t   builders(   R*   (   R¸   R¹   s/   lib/python2.7/site-packages/patsy/test_build.pyt   t_incrementalÜ  s    c           sB   ‡  f d †  } t  ˆ g | d ƒ } t t t | i | d 6ƒ d  S(   Nc           3  s   i ˆ  d 6Vd  S(   NRA   (    (    (   R¸   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   é  s    i    RA   (   R/   R   R   R0   (   R¸   R¹   R-   Rº   (   R*   (   R¸   s/   lib/python2.7/site-packages/patsy/test_build.pyt   t_setup_predictè  s    i   R™   (   R   R¨   R	   R"   R   R   R5   (   t   test_cases_twowayt   test_cases_onewayt   setup_predict_onlyR»   R¼   R6   R7   (    (   R*   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_data_mismatchÅ  s6    !$6N!!!!)c    	        s8  i d d d g d 6‰  ‡  f d †  }  t  t ƒ  g |  d ƒ d } t t t | g ˆ  ƒ t  t g  ƒ g |  d d ƒd } t t t | g ˆ  ƒ t t t | | g ˆ  ƒ t rt | | g t j ˆ  ƒ ƒ \ } } t j	 | d g d g d g g ƒ sü t
 ‚ | j d k st
 ‚ n  t d g ƒ } t  | t ƒ  g |  d d ƒ} t | ˆ  ƒ \ } } t j	 | d g d g d g g ƒ s€t
 ‚ | j d	 k s•t
 ‚ t  | t g  ƒ g |  d d ƒ} t | ˆ  ƒ \ } } t | ˆ  ƒ \ } } t j	 | d g d g d g g ƒ s
t
 ‚ t j	 | d g d g d g g ƒ s4t
 ‚ d  S(
   Ni   i   i   RA   c           3  s	   ˆ  Vd  S(   N(    (    (   R,   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-      s    i    R.   (   i   i    (   i   i    (   R/   R"   R   R   R0   R   Ro   Rp   R   R=   R   R   (	   R-   t   null_buildert   intercept_buildert   int_mt   null_mt
   x_termlistRº   t   x_mt   intercept_m(    (   R,   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_data_independent_builderþ  s>    *	*	*c            s  i d d d g d 6d d d g d 6‰  ‡  f d †  }  t  d g ƒ } t  d d g ƒ } t | | g |  d	 d
 ƒ} t | ˆ  ƒ \ } } t | d | d d g ƒt j | d g d g d g g ƒ sÉ t ‚ t | d | d d d g ƒt j | d d
 g d
 d g d d
 g g ƒ st ‚ d  S(   Ni   i   i   RA   R`   Ra   R6   c           3  s	   ˆ  Vd  S(   N(    (    (   R,   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   1  s    R.   i    R&   s   x:a[a1]s   x:a[a2](   R"   R/   R0   R+   R   R=   R   (   R-   t   t1t   t2Rº   t   m1t   m2(    (   R,   s/   lib/python2.7/site-packages/patsy/test_build.pyt    test_same_factor_in_two_matrices/  s    &*c            sH   i d d d g d 6‰  ‡  f d †  }  t  t t t d ƒ g |  d ƒ d  S(   Ni   i   i   RA   c           3  s	   ˆ  Vd  S(   N(    (    (   R,   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   >  s    t   foo(   R   t	   TypeErrorR/   R"   (   R-   (    (   R,   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_eval_env_type_builder<  s    c          C  s¯   i d d d g d 6}  i t  d d d g ƒ d 6} |  | g } t rs i t j d d d g ƒ d 6} | j | ƒ n  d „  } x, | D]$ } x | D] } | | | ƒ q Wqƒ Wd  S(   NR`   Ra   R6   c           sA   ‡  f d †  } t  t d g ƒ g | d d ƒ} t | | ƒ d  S(   Nc           3  s	   ˆ  Vd  S(   N(    (    (   R¸   (    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   J  s    R6   R.   i    (   R/   R"   R0   (   R¸   R¹   R-   Rº   (    (   R¸   s/   lib/python2.7/site-packages/patsy/test_build.pyR[   I  s
    	(   R	   R   Ro   t   CategoricalR   (   t   data_stringst
   data_categRx   t   data_pandasR[   R¸   R¹   (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_categoricalB  s    	c       	   C  s”  d d l  m }  m } d d d d g } t i t | ƒ d 6d d g g d d	 d
 d g ƒ} t j | d d d g d d d g d d d g d d d g g ƒ s¤ t ‚ x– | | ƒ  f D]… } t i t | | ƒ d 6d d g g d d d d g ƒ} t j | d d d g d d d g d d d g d d d g g ƒ s´ t ‚ q´ Wt i t | | d d ƒ ƒ d 6d d g g d d d d g ƒ} t j | d d d g d d d g d d d g d d d g g ƒ sÅt ‚ t i t | ƒ d 6d g  d g g d d d d g ƒ} t j | d d d g d d d g d d d g d d d g g ƒ sDt ‚ x™ | | ƒ  f D]ˆ } t i t | | ƒ d 6d g  d g g d d d d g ƒ} t j | d d d g d d d g d d d g d d d g g ƒ sTt ‚ qTWt i t | | d d ƒ ƒ d 6d g  d g g d d d d g ƒ} t j | d d d g d d d g d d d g d d d g g ƒ skt ‚ t i t | d d g d d g d d g g ƒ d 6d d g g d d d g ƒ} t j | d d g d d g d d g d d g g ƒ söt ‚ t i t | |  d d g d d g d d g g d d g ƒ ƒ d 6d d g g d d d  g ƒ} t j | d d g d d g d d g d d g g ƒ st ‚ d  S(!   Niÿÿÿÿ(   t   ContrastMatrixt   SumR`   t   a3Ra   R6   i   R&   s   a[a1]s   a[a2]s   a[a3]i   i    s   a[mean]s   a[S.a1]s   a[S.a2]t   omits   a[S.a3]R:   s   a[T.a2]s   a[T.a3]i   i   i   i   i   s
   a[custom0]s
   a[custom1]s   [foo]s   [bar]s   a[foo]s   a[bar](   t   patsy.contrastsRÖ   R×   R5   R	   R   R=   R   (   RÖ   R×   t   valuesR   R   (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_contrastT  sv    "%.%(1						c            s7  i d d g d 6d d g d d g g d 6d	 d
 g d 6‰ t  d d d ƒ }  ‡ f d †  } t |  g | d ƒ d ‰  t ˆ  g ˆ ƒ d ‰ ‡  ‡ ‡ f d †  } | d d d d g t d  ƒ ƒ | d d d g d d d g t d  ƒ ƒ t j s+| t d ƒ t d ƒ t d ƒ g d d d g t d  ƒ ƒ n  | |  d d d g t d  ƒ ƒ | |  d d |  d g d d d g t d  ƒ ƒ | d d d g d d g ƒ | d d g d d g d d g ƒ t j sò| t d ƒ t d ƒ g d d g d d g ƒ n  | |  d |  d g d d g d d g ƒ | |  d d g d d g d d g ƒ | d d d g d d g ƒ | d d g d d g d d g ƒ | t j d ƒ t j 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 g d g d d g ƒ | t j d ƒ g d g d d g ƒ | |  d g d g d d g ƒ t	 t
 ˆ  j d ƒ t	 t ˆ  j d ƒ t	 t ˆ  j d g ƒ t	 t ˆ  j t d g ƒ g ƒ t d d d g ƒ } | j d d g ƒ } | j d d g k st ‚ | j d  k s3t ‚ d  S(   Ni   i   RA   gÍÌÌÌÌÌ@gš™™™™™	@gffffff@gÍÌÌÌÌÌ@R™   i   i   t   zc           3  s	   ˆ  Vd  S(   N(    (    (   t   all_data(    s/   lib/python2.7/site-packages/patsy/test_build.pyR-   ¬  s    i    c           s²   ˆ  j  |  ƒ } i  } x | D] } ˆ | | | <q Wt | g | ƒ d } ˆ d  d  … | f } t |  t j ƒ s– t |  ƒ t | j ƒ k s– t ‚ n  t j	 | | ƒ s® t ‚ d  S(   Ni    (
   RH   R0   R…   Rh   t   string_typesR<   R   R   R   R’   (   t   which_termst	   variablesR¢   t   sub_design_infot   sub_datat   variablet
   sub_matrixt   sub_full_matrix(   t   all_builderRÞ   t   full_matrix(    s/   lib/python2.7/site-packages/patsy/test_build.pyR[   ±  s    $s   ~ 0 + x + y + zs   ~ 0 + x + zi   s   ~ 0 + z + xs   ~ 0 + ys   a ~ as   ~ asdft   asdfR6   R7   R@   (   R"   R/   R0   t   sliceR%   Rh   t   PY3t   unicodeRi   R   R   RH   t   KeyErrorR   R   R&   R   R   (   RP   R-   R[   t   min_dit   min_di_subset(    (   Rç   RÞ   Rè   s/   lib/python2.7/site-packages/patsy/test_build.pyt   test_DesignInfo_subset¢  sP    	(	!0"	1*&"4*&% (1   t
   __future__R    Rh   t   numpyR   t
   nose.toolsR   R³   R   t
   patsy.utilR   R   R   t
   patsy.descR   R   R¦   t   patsy.categoricalR	   t   patsy.user_utilR
   R   t   patsy.design_infoR   R   Ro   R   R   R"   R%   R+   R5   R?   RB   R_   t   slowR{   R‚   R†   R–   R˜   Rµ   RÀ   RÈ   RÍ   RÐ   RÕ   RÜ   Rð   (    (    (    s/   lib/python2.7/site-packages/patsy/test_build.pyt   <module>
   sD   
				.		8		#			-		~	9	1				N