ó
X_Sc           @   sõ   d  Z  d d l Z d d l Z d d l Td d l m Z d d l Td 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 d k rñ e j ƒ  n  d S(   s   Unit test for ScopiÿÿÿÿN(   t   *(   t   StringIOt	   test_scopc           B   s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sÉ  t  d ƒ } zT | j ƒ  } | j ƒ  t  d ƒ } | j ƒ  } | j ƒ  t  d ƒ } | j ƒ  } Wd  | j ƒ  Xt j t | ƒ t | ƒ t | ƒ ƒ } t ƒ  } | j | ƒ | j ƒ  | k sÏ t | j ƒ  ƒ ‚ t ƒ  } | j	 | ƒ | j ƒ  | k s	t | j ƒ  ƒ ‚ t ƒ  } | j
 | ƒ | j ƒ  | k sCt | j ƒ  ƒ ‚ | j d }	 |  j |	 j d ƒ | j }
 |  j t |
 ƒ d ƒ |  j |
 d j d ƒ |  j d	 | j k ƒ |  j d
 | j k ƒ d  S(   Ns   scop/dir.cla.scop.txt_tests   scop/dir.des.scop.txt_tests   scop/dir.hie.scop.txt_testt   d1hbia_i”:  i   i   iŒ:  i‘ÿÿÿs   no such domain(   t   testdata_streamt   readt   closet   Scopt   parse_filesR   t	   write_clat   getvaluet   AssertionErrort	   write_dest	   write_hiet   domains_by_sidt   assertEqualt   sunidt   domainst   lent   assertFalset   nodes_by_sunid(   t   selft   ft   clat   dest   hiet   scopt   cla_outt   des_outt   hie_outt   domainR   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt	   testParse'   s6    

'	$	$	$	c         C   s³   |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d	 d ƒ d ƒ |  j  t d	 d
 ƒ d ƒ d  S(   Ns   a.1.1.1i    s   a.1.1.2i   s   a.1.1.11iÿÿÿÿs   a.1.2.2s   a.5.1.11s   b.1.2.2s   b.1.2(   R   t   cmp_sccs(   R   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   testSccsOrderM   s    c         C   s³   |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d d ƒ d ƒ |  j  t d	 d ƒ d ƒ |  j  t d	 d
 ƒ d ƒ d  S(   Ns   a.1.1.1i   s   a.1.1.2s   a.1.1.11s   a.1.2.2i    s   a.5.1.11iÿÿÿÿs   b.1.2.2s   b.1.2(   R   t   sccs_relation(   R   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   test_sccs_relationsV   s    c         C   sw   t  j j t  j j t ƒ d d ƒ } t j d | d d ƒ } |  j t | t ƒ ƒ | j	 d } |  j
 | j d ƒ d  S(   Ni    s	   data/scopt   dir_patht   versiont   testR   i”:  (   t   ost   patht   joint   splitt   __file__R   t   parset
   assertTruet
   isinstanceR   R   R   (   R   R$   R   R   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   testConstructFromDirectorya   s
    %c         C   sÖ   t  j j t  j j t ƒ d d ƒ } t j d | d d ƒ } | j d } | j d ƒ } |  j	 | j
 d ƒ | j d	 ƒ } |  j	 | j
 d
 ƒ | j d ƒ } |  j | d  k ƒ | j d ƒ } |  j | d  k ƒ d  S(   Ni    s	   data/scopR$   R%   R&   R   t   cfiyµ  t   superfamilyizµ  t   px(   R'   R(   R)   R*   R+   R   R,   R   t	   ascendentR   R   R-   t   None(   R   R$   R   R   t   foldt   sfR2   t   px2(    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   testGetAscendenth   s    %c         C   sÿ   t  j j t  j j t ƒ d d ƒ } t j d | d d ƒ } | j d } | j d ƒ } |  j	 t
 | ƒ d ƒ x! | D] } |  j	 | j d ƒ qv W| j d	 ƒ } |  j	 t
 | ƒ d
 ƒ x! | D] } |  j	 | j d ƒ q¿ W| j d ƒ } |  j	 | g  ƒ d S(   s   Test getDescendents methodi    s	   data/scopR$   R%   R&   iyµ  R2   i   R1   i   R6   t   clN(   R'   R(   R)   R*   R+   R   R,   R   t   descendentsR   R   t   type(   R   R$   R   R5   R   t   dt   sfsR9   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   test_get_descendentsz   s    %(   t   __name__t
   __module__R   R!   R#   R/   R8   R>   (    (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR   %   s   	&					t   DesTestsc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s&   t  d ƒ } | j |  _ | j ƒ  d  S(   Ns   scop/dir.des.scop.txt_test(   R   t   namet   filenameR   (   R   t   file(    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   setUp   s    c         C   sV   t  |  j ƒ A } d } x! t j | ƒ D] } | d 7} q( W|  j | d ƒ Wd  QXd  S(   Ni    i   i   (   t   openRC   t	   DesRecordt   recordsR   (   R   R   t   countt   rec(    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt
   test_parse”   s
    c         C   s[   t  |  j ƒ F } x< | D]4 } t | ƒ } |  j t | ƒ j ƒ  | j ƒ  ƒ q WWd  QXd  S(   N(   RF   RC   RG   R   t   strt   rstrip(   R   R   t   lineRJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   testStr›   s    c         C   s   d } |  j  t t | ƒ d  S(   Ns   49268	sp	b.1.2.1	-
(   t   assertRaisest
   ValueErrorRG   (   R   t
   corruptRec(    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt	   testError¢   s    c         C   s   d } d } t  | ƒ } |  j | j | d ƒ |  j | j | d ƒ |  j | j | d	 ƒ |  j | j | d
 ƒ |  j | j | d ƒ d  S(   Ns,   49268	sp	b.1.2.1	-	Human (Homo sapiens)    
itÀ  t   sps   b.1.2.1t    s   Human (Homo sapiens)i    i   i   i   i   (   itÀ  s   sps   b.1.2.1RU   s   Human (Homo sapiens)(   RG   R   R   t   nodetypet   sccsRB   t   description(   R   t   recLinet	   recFieldsRJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt
   testRecord¦   s    (   R?   R@   RE   RK   RO   RS   R[   (    (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRA      s
   				t   test_scop_clac           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s&   t  d ƒ } | j |  _ | j ƒ  d  S(   Ns   scop/dir.cla.scop.txt_test(   R   RB   RC   R   (   R   RD   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRE   ³   s    c         C   sV   t  |  j ƒ A } d } x! t j | ƒ D] } | d 7} q( W|  j | d ƒ Wd QXd S(   s   Can we parse a CLA file?i    i   i   N(   RF   RC   t	   ClaRecordRH   R   (   R   R   RI   RJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR   ¸   s
    c         C   s[   t  |  j ƒ F } x< | D]4 } t | ƒ } |  j t | ƒ j ƒ  | j ƒ  ƒ q WWd  QXd  S(   N(   RF   RC   R]   R   RL   RM   (   R   R   RN   RJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRO   À   s    c         C   s   d } |  j  t t | ƒ d  S(   Ns   49268	sp	b.1.2.1	-
(   RP   RQ   R]   (   R   RR   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRS   Ç   s    c      
   C   sÓ   d } t  | ƒ } |  j | j d ƒ |  j | j j d ƒ |  j | j j d d f ƒ |  j | j d	 ƒ |  j | j d
 ƒ |  j | j d d g d d g d d g d d g d d g d d g d d
 g g ƒ d  S(   Nse   d1dan.1	1dan	T:,U:91-106	b.1.2.1	21953	cl=48724,cf=48725,sf=49265,fa=49266,dm=49267,sp=49268,px=21953s   d1dan.1t   1dant   TRU   t   Ut   91t   106s   b.1.2.1iÁU  R9   iT¾  R0   iU¾  R6   iqÀ  t   fairÀ  t   dmisÀ  RT   itÀ  R2   (   R_   RU   RU   (   R`   Ra   Rb   (	   R]   R   t   sidt   residuest   pdbidt	   fragmentsRW   R   t	   hierarchy(   R   RY   RJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR[   Ë   s    $(   R?   R@   RE   R   RO   RS   R[   (    (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR\   ±   s
   				t   DomTestsc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s&   t  d ƒ } | j |  _ | j ƒ  d  S(   Ns   scop/domtest.txt(   R   RB   RC   R   (   R   RD   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRE   Ú   s    c         C   sV   t  |  j ƒ A } d } x! t j | ƒ D] } | d 7} q( W|  j | d ƒ Wd  QXd  S(   Ni    i   i
   (   RF   RC   t	   DomRecordRH   R   (   R   R   RI   RJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR   ß   s
    c         C   sd   t  |  j ƒ O } xE | D]= } | r t | ƒ } |  j t | ƒ j ƒ  | j ƒ  ƒ q q WWd  QXd  S(   N(   RF   RC   Rk   R   RL   RM   (   R   R   RN   RJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRO   æ   s
    c         C   s   d } |  j  t t | ƒ d  S(   Ns   49xxx268	sp	b.1.2.1	-
(   RP   RQ   Rk   (   R   t
   corruptDom(    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRS   í   s    c         C   sh   d } t  | ƒ } |  j | j d ƒ |  j | j j d ƒ |  j | j j d ƒ |  j | j d ƒ d  S(	   Ns%   d7hbib_	7hbi	b:	1.001.001.001.001.001t   d7hbib_t   7hbit   bRU   s   1.001.001.001.001.001(   Ro   RU   RU   (   (   Ro   RU   RU   (   Rk   R   Re   Rf   Rg   Rh   Ri   (   R   RY   RJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR[   ñ   s    (   R?   R@   RE   R   RO   RS   R[   (    (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRj   Ù   s
   				t   ResiduesTestsc           B   sÅ   e  Z d  d$ f d d& f d d( f d d* f d d, f d d. f d d0 f d d2 f d d4 f d d5 d6 f f d d7 d8 f f d d9 d: d; f f f Z d „  Z d „  Z d  „  Z d! „  Z d" „  Z d# „  Z RS(<   t   -s   A:t   ARU   s   1:t   1s   1-100t   100s   B:1-101t   Bt   101s	   1:1a-100at   1at   100as   a:-100a--1at   as   -100as   -1as   -1-100s   -1s   A:12-19,A:23-25t   12t   19t   23t   25s   12-19,1:23-25s   0-1,1:-1a-25a,T:t   0t   25aR_   c         C   sP   xI |  j  D]> } t | d ƒ } | j | d k s
 t t | j ƒ ƒ ‚ q
 Wd  S(   Ni    i   (   t   rest   ResiduesRh   R   RL   t	   locations(   R   t   loct   r(    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR     s    c         C   sB   x; |  j  D]0 } t | d ƒ } |  j t | ƒ | d ƒ q
 Wd  S(   Ni    (   R€   R   R   RL   (   R   Rƒ   R„   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRO     s    c         C   sX   xQ |  j  D]F } t d | d d ƒ } | j | d k s
 t t | j ƒ ƒ ‚ q
 Wd S(   sd   Astral encloses residue subsets in brackets. Lets make sure we
        can parse those too.
        t   (i    t   )i   N(   R€   R   Rh   R   RL   R‚   (   R   Rƒ   R„   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   testAstralParse  s    c         C   sê   d } xÝ |  j  D]Ò } t d | d d ƒ } |  j | j | ƒ |  j t | ƒ | d | d ƒ t | d | d ƒ } |  j | j | ƒ |  j t | ƒ | d | d ƒ t d ƒ } |  j | j d ƒ |  j | j d ƒ q Wd  S(   Nt   1ddfs   	 1ddf 	i    s   	


t    s   104l A:112-113t   104lRr   t   112t   113(   Rr   R‹   RŒ   (   (   Rr   R‹   RŒ   (   R€   R   R   Rg   RL   Rh   (   R   Rg   Rƒ   R„   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt	   testPdbId  s    ""c         C   s3   t  d ƒ } |  j | j d ƒ | j s/ t ‚ d  S(   Nt   1sds(   R   R   Rg   Rh   R   (   R   R„   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   testJustPdbId,  s    c         C   s   |  j  t t d ƒ d  S(   Ns   09324923423hh./;,.389(   RP   RQ   R   (   R   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   testParseError2  s    (    (   Rr   RU   RU   (   (   Rr   RU   RU   (   Rs   RU   RU   (   (   Rs   RU   RU   (   RU   Rs   Rt   (   (   RU   Rs   Rt   (   Ru   Rs   Rv   (   (   Ru   Rs   Rv   (   Rs   Rw   Rx   (   (   Rs   Rw   Rx   (   Ry   s   -100as   -1a(   (   Ry   s   -100as   -1a(   RU   s   -1Rt   (   (   RU   s   -1Rt   (   RU   s   -1Rt   (   (   RU   s   -1Rt   (   Rr   s   12R{   (   Rr   R|   R}   (   RU   s   12R{   (   Rs   R|   R}   (   RU   R~   Rs   (   Rs   s   -1aR   (   R_   RU   RU   (	   R?   R@   R€   R   RO   R‡   R   R   R   (    (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRp   ú   s$   														t   HieTestsc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s&   t  d ƒ } | j |  _ | j ƒ  d  S(   Ns   scop/dir.hie.scop.txt_test(   R   RB   RC   R   (   R   RD   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRE   8  s    c         C   sY   t  |  j ƒ D } d } x! t j | ƒ D] } | d 7} q( W|  j | d d ƒ Wd  QXd  S(   Ni    i   i   s   Wrong number of records?!(   RF   RC   t	   HieRecordRH   R   (   R   R   RI   RJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR   =  s
    c         C   s[   t  |  j ƒ F } x< | D]4 } t | ƒ } |  j t | ƒ j ƒ  | j ƒ  ƒ q WWd  QXd  S(   N(   RF   RC   R’   R   RL   RM   (   R   R   RN   RJ   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRO   D  s    c         C   s   d } |  j  t t | ƒ d  S(   Nt   4926sdfhjhfgyjdfyg(   RP   RQ   R’   (   R   RR   (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyRS   K  s    (   R?   R@   RE   R   RO   RS   (    (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyR‘   6  s   			t   __main__(   t   __doc__t   os.pathR'   t   unittestt   corebio.db.scopt   corebio._py3kR   t   test_corebiot   TestCaseR   RA   R\   Rj   Rp   R‘   R?   t   main(    (    (    sJ   /Users/gec/Work/Projects/corebioproj/weblogo-3.4/test_corebio/test_scop.pyt   <module>   s   

h$(!<