ó
;™xTc           @   s‰   d  d l  m Z d „  Z d „  Z e d d d „ Z d „  Z d	 „  Z d
 „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   divisionc         C   sd   |  j  d ƒ } t | ƒ d k rR d d l m } | t | d ƒ t | d ƒ ƒ St |  ƒ d d S(   Nt   /i   iÿÿÿÿ(   t   inti    i   (   t   splitt   lent   boost.rationalR   t   eval(   t   st   fldst   rint(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   number_from_string   s
    !c         C   s|   x  d D] } |  j  | d ƒ }  q W|  j ƒ  } g  } x@ | D]8 } y t | ƒ } Wn t k
 rf d  SX| j | ƒ q< W| S(   Ns	   ,;|{}()[]t    (   t   replaceR   R
   t	   Exceptiont   Nonet   append(   t   stringt   cR   t   numst   fldt   num(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   nums_from_string	   s    i   i   i   c      	   C   sÇ  d d l  m } d d l m } d  } |  j ƒ  } t | ƒ d k rM d } n  y( | j d | d d d	 | d
 | ƒ } Wn% t k
 rŠ }	 n# t	 k
 rœ }	 n X| j
 ƒ  j ƒ  St | ƒ }
 |
 d  k	 rÃt |
 ƒ d k rS|  j d ƒ d k  r| j |
 d  |
 d f ƒ } qÀ| j |
 d  |
 d d !|
 d d !|
 d |
 d |
 d f f ƒ } qÃt |
 ƒ d k r�| j |
 d  d f ƒ } qÃt |
 ƒ d k rÃ| r¢d } n d } | j | |
 f ƒ } qÃn  | S(   Niÿÿÿÿ(   t   sgtbx(   t   matrixi    s   a,b,ct   symbolt
   stop_charst    t   r_dent   t_deni   t   |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    (   t   cctbxR   t   scitbxR   R   t   stripR   t   change_of_basis_opt
   ValueErrort   RuntimeErrort   c_invt   as_rationalR   t   findt   rt(   R   t   default_r_identityR   R   R   R   t   resultR   t   cb_opt   eR   t   r(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   rt_from_string   s<    		 $	c         C   sB   d d l  m } | d |  | j d d ƒ j d d ƒ f ƒ ‚ d  S(   Niÿÿÿÿ(   t   Sorrys'   Uninterpretable expression for %s: "%s"s   
R   s   (   t   libtbx.utilsR.   R   (   t   whatt
   expressionR.   (    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   raise_uninterpretable9   s    c         C   s2   t  |  d t ƒ} | d  k r. t d |  ƒ n  | S(   NR(   s   change-of-basis matrix(   R-   t   TrueR   R2   (   R   t   p(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   p_from_string?   s    c         C   s,   t  |  ƒ } | d  k r( t d |  ƒ n  | S(   Ns   symmetry matrix(   R-   R   R2   (   R   t   w(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   w_from_stringE   s    c         C   sD   t  |  ƒ } | d  k s* t | ƒ d k r: t d |  ƒ n  t | ƒ S(   Ni   t   coordinates(   R   R   R   R2   t   tuple(   R   R   (    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   xyz_from_stringK   s    c         C   sG   g  } x4 |  D], } | d k  r( d } n  | j  d | ƒ q Wt | ƒ S(   Ng»½×Ùß|Û=i    s   %.6g(   R   R9   (   R   R)   R   (    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   fmt_numsQ   s     	c         C   sN   xG t  d ƒ D]9 } d t |  | d ƒ |  | d ƒ |  | d ƒ f ƒ GHq Wd  S(   Ni   s     (%9s %9s %9s)i    i   i   (   t   xrangeR;   (   R,   t   ir(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt	   display_rX   s    c         C   sk   |  j  |  j j } } xN t d ƒ D]@ } d t | | d ƒ | | d ƒ | | d ƒ | | f ƒ GHq# Wd  S(   Ni   s     (%9s %9s %9s | %9s)i    i   i   (   R,   t   tt   elemsR<   R;   (   R'   R,   R?   R=   (    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt
   display_rt\   s    c         C   s5   d d l  m } | j |  d d d d d f ƒ } | S(   Niÿÿÿÿ(   t	   cgi_utilst   p_or_qt   Pt   p_transposet   offt   cb_exprR   t   obj_typet   xyzt   obj_expr(   s   p_or_qRD   (   s   p_transposeRF   (   s   cb_exprR   (   s   obj_typeRI   (   s   obj_exprR   (   t	   cctbx.webRB   t   inp_from_form(   t   formRB   t   inp(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   interpret_form_dataa   s    	c         C   s¯  d GHd d l  m } t d | j ƒ } | j d# k s< t ‚ | j d k rZ | j ƒ  } n  | j d$ k so t ‚ | j d k r¢ | j | j	 j
 ƒ  | j f ƒ } n  d	 GHt | ƒ H| j ƒ  } d
 GHt | ƒ Ht | j j ƒ  ƒ d k r¦| j d% k r€t d | j ƒ } | j d k rPd GHHd G| GHHd G| j	 | j | ƒ | j j GHHq£d GHHd G| GHHd G| j | ƒ | j	 j GHHq¦| j d k r8d d l m } | j | j ƒ } d GHHd G| GHH| j d | j ƒ  ƒ }	 d GHt |	 ƒ H| j	 j
 ƒ  |	 | j	 }
 d GHt |
 ƒ H| j d |
 j ƒ  ƒ } d G| GHHq¦| j d k r�t d | j ƒ } d GHHd GHt | ƒ H| | | } d  GHt | ƒ Hq¦t d! | j ƒ ‚ n  d" GHd  S(&   Ns   <pre>iÿÿÿÿ(   R   R   RD   t   QRF   t   ons   P:s   Q:i    RI   t   hkls   Transformation law: (Q,q) xyzs     xyz:s     xyz':s   Transformation law: hkl Ps     hkl:s     hkl':t	   unit_cell(   t   uctbxs   Transformation law: Pt G Ps
   unit cell:t   sym_mat3s   metrical matrix:s   metrical matrix':t   metrical_matrixs   unit cell':t   Wws%   Transformation law: (Q,q) (W,w) (P,p)s   (W, w):s   (W, w)':s   Unknown obj_type: %ss   </pre>(   RD   RP   (   s   offRQ   (   s   xyzRR   (   R   R   R5   RG   RC   t   AssertionErrort   inverseRE   R'   R,   t	   transposeR?   RA   R   RJ   R    RH   R:   t   colR@   t   rowR   RT   RS   t   symRV   R>   t   as_sym_mat3R7   R#   (   t   server_infoRN   t   statusR   R4   t   qt   tripleRT   t   uct   gt   gpt   ucpR6   t   wp(    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   runk   s€    $

			

	

Ni�   iÀ  (   t
   __future__R    R
   R   t   FalseR-   R2   R5   R7   R:   R;   R>   RA   RO   Rh   (    (    (    sD   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/web/change_basis.pyt   <module>   s   		#								
