ó
áp7]c           @   s§   d  Z  d d l m Z d d l Z d d l Z d d „ Z d „  Z d „  Z	 d „  Z
 d d d	 „ Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   s7   
Compatibility tools for various data structure inputs
iÿÿÿÿ(   t   rangeNt   Mc         C   sž   d d l  m } m } t |  j | | f ƒ s= t d ƒ ‚ n  |  j j d  k	 r^ |  j j } n t	 j
 |  j ƒ } | j | ƒ sš t d j | | ƒ ƒ ‚ n  d  S(   Niÿÿÿÿ(   t   PeriodIndext   DatetimeIndexs0   The index must be a DatetimeIndex or PeriodIndexs   Expected frequency {}. Got {}(   t   pandasR   R   t
   isinstancet   indext
   ValueErrort   freqt   Nonet   freqstrt   pdt
   infer_freqt
   startswitht   format(   t   xR   R   R   t   inferred_freq(    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   _check_period_index	   s    c         C   s   t  |  t j ƒ S(   N(   R   R   t	   DataFrame(   t   obj(    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   is_data_frame   s    c         C   s   d d l  m } t |  | ƒ S(   Niÿÿÿÿ(   t   DesignMatrix(   t   patsyR   R   (   R   R   (    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   is_design_matrix   s    c         C   s"   t  |  t j ƒ o! |  j j d  k	 S(   N(   R   t   npt   ndarrayt   dtypet   namesR	   (   R   (    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   _is_structured_ndarray    s    c         C   sg  t  |  t j ƒ rŠ t |  ƒ rH | d k r9 |  j j } n  t |  ƒ } n |  } | d k rá g  t | j	 d ƒ D] } d | ^ qn } qá nW t
 |  ƒ rÀ |  j ƒ  }  |  j } |  j } |  j } n! t d j d t |  ƒ j ƒ ƒ ‚ t  | t ƒ sÿ t | ƒ } n  t | ƒ | j	 d k r't d ƒ ‚ n  | d k	 rZt | ƒ t | ƒ k rZt d ƒ ‚ n  | | | f S(   sC  
    Convert passed data structure to form required by estimation classes

    Parameters
    ----------
    data : ndarray-like
    colnames : sequence or None
        May be part of data structure
    rownames : sequence or None

    Returns
    -------
    (values, colnames, rownames) : (homogeneous ndarray, list)
    i   s   Y_%ds   Cannot handle input type {typ}t   typs;   length of colnames does not match number of columns in datas8   length of rownames does not match number of rows in dataN(   R   R   R   R   R	   R   R   t   struct_to_ndarrayR    t   shapeR   t   dropnat   valuest   columnsR   t	   TypeErrorR   t   typet   __name__t   listt   lenR   (   t   datat   colnamest   rownamesR!   t   i(    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   interpret_data$   s,    0		$c         C   s+   |  j  t t |  j j ƒ f f d t j ƒS(   NR$   (   t   viewt   floatR'   R   R   R   R   (   t   arr(    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyR   V   s    c         C   s4   t  |  ƒ t j k o3 t  | ƒ t j k p3 | d  k S(   N(   R$   R   R   R	   (   t   endogt   exog(    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   _is_using_ndarray_typeZ   s    c         C   s.   t  |  t j ƒ o- t  | t j ƒ p- | d  k S(   N(   R   R   R   R	   (   R0   R1   (    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   _is_using_ndarray_   s    c         C   s,   d d l  m } t |  | ƒ p+ t | | ƒ S(   Niÿÿÿÿ(   t   data_klasses(   t   statsmodels.compat.pandasR4   R   (   R0   R1   t   klasses(    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   _is_using_pandasd   s    c         C   s5   y& t  j |  ƒ }  t  j | ƒ } t SWn t SXd  S(   N(   R   t   asarrayt   Truet   False(   R0   R1   (    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   _is_array_likei   s    c         C   s"   t  |  ƒ o! t  | ƒ p! | d  k S(   N(   R   R	   (   R0   R1   (    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   _is_using_patsyr   s    c         C   s   t  |  t j j ƒ S(   s,   
    Returns true if data is a recarray
    (   R   R   t   coret   recarray(   R(   (    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   _is_recarrayx   s    (   t   __doc__t   statsmodels.compat.pythonR    t   numpyR   R   R   R   R   R   R   R	   R,   R   R2   R3   R7   R;   R<   R?   (    (    (    s5   lib/python2.7/site-packages/statsmodels/tools/data.pyt   <module>   s   			2							