ó
kûhPc           @   sˆ   d  d l  Z  d  d l Z d „  Z d d
 d „  ƒ  YZ d „  Z d „  Z d  d l Z e d k r„ d e j f d	 „  ƒ  YZ	 e j
 ƒ  n  d S(   iÿÿÿÿNc         C   sI   x< t  d |  ƒ D]+ } t j | | |  ƒ d k r d | g Sq Wd d g S(   Ni   i   i    (   t   ranget   sackintt	   intmodexp(   t   pt   qt   t(    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   find_ta   s    t	   metacyc_tc           B   sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C   s…   t  j | | | ƒ } | | d k rL d GHd G| Gd G| Gd G| GHt ‚ n  | | |  _ | | |  _ | |  _ | |  _ | |  _ d  S(   Ni   s   metacyc:  t^q must be 1 mod ps   Got p =s   q =s   t =(   R   R   t   RuntimeErrort   it   jR   R   R   (   t   selfR	   R
   R   R   R   t   tq(    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   __init__j   s    			c         C   s"   |  j  | j  k o! |  j | j k S(   N(   R	   R
   (   t   at   b(    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   __eq__~   s    c         C   s   |  | k S(   N(    (   R   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   __ne__   s    c         C   s³   |  j  | j  k s6 |  j | j k s6 |  j | j k rD d GHt ‚ n  |  j | j t j |  j |  j |  j  ƒ |  j  } |  j | j |  j } t | | |  j  |  j |  j ƒ } | S(   Ns!   Parameter mismatch in metacyc mul(	   R   R   R   R   R	   R   R   R
   R   (   R   R   t   cit   cjt   c(    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   __mul__„   s    6	3!c         C   sV   |  j  t j |  j |  j |  j ƒ } |  j } t | | |  j |  j |  j ƒ } | S(   N(   R	   R   R   R   R
   R   R   R   (   R   R   R   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   inv   s    '
!c         C   sd   t  j d | ƒ j ƒ  } t | ƒ d k r3 t ‚ n  |  j t | d ƒ t | d ƒ | | | ƒ d  S(   Ns   ^(\d)+,(\d+)$i   i    i   (   t   ret   matcht   groupst   lent   IOErrorR   t   int(   R   t   stringt   argpt   argqt   argtR   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   scan“   s    	c         C   s   t  |  j ƒ d t  |  j ƒ S(   Nt   ,(   t   strR	   R
   (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   __str__™   s    c         C   s
   |  j  ƒ  S(   N(   R$   (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   __repr__œ   s    (
   t   __name__t
   __module__R   R   R   R   R   R!   R$   R%   (    (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyR   h   s   								c         C   së   t  j d |  ƒ } t | ƒ d k rW t | d ƒ } t | d ƒ } t | d ƒ } n‡ t | ƒ d k rÊ t | d ƒ } t | d ƒ } t | | ƒ \ } } | sÞ d G| Gd G| GHd G|  GHt ‚ qÞ n d	 GHd G|  GHt ‚ | | | g S(
   NR"   i   i    i   i   s   metacyc_t:  No t found for p =s   q =s   Got: s:   metacyc_tm.from_string:  expected parameters p,q or p,q,t.(   R   t   splitR   R   R   R   (   t   params_stringt   pqtR   R   R   t   got_it(    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   params_from_stringŸ   s"    		c         C   sG   t  | ƒ \ } } } t d d | | | ƒ } | j |  | | | ƒ | S(   Ni    (   R,   R   R!   (   t   value_stringR)   R   R   R   t   obj(    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   from_string´   s    t   __main__t
   test_casesc           B   sk   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test_find_tÀ   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test___init__Ã   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test___eq__Æ   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test___ne__É   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test___mul__Ì   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test_invÏ   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt	   test_scanÒ   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test___str__Õ   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test___repr__Ø   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test_params_from_stringÛ   s    c         C   s   d  S(   N(    (   R   (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   test_from_stringÞ   s    (   R&   R'   R2   R3   R4   R5   R6   R7   R8   R9   R:   R;   R<   (    (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyR1   ¿   s   										(    (   R   R   R   R   R,   R/   t   unittestR&   t   TestCaseR1   t   main(    (    (    sH   /homepages/25/d321765456/htdocs/pub_http_internet/src/sack/metacyc_tm.pyt   <module>   s   S	7		#