ó
y™xTc           @   s¹   d  d l  m Z d  d l Z d  d l m Z d  d l m Z e f Z e	 f Z
 e f Z d e f d „  ƒ  YZ e d k rµ d  d l Z e j d Z e e ƒ Z e j ƒ  e j ƒ  n  d S(	   iÿÿÿÿ(   t   divisionN(   t	   ADSCImage(   t   DetectorImageBaset	   NoirImagec           B   s/   e  Z d  „  Z d „  Z d d „ Z d „  Z RS(   c         C   s   t  j |  | ƒ d |  _ d  S(   Nt   RAXIS(   R   t   __init__t
   vendortype(   t   selft   filename(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/noir.pyR      s    c         C   sL   | j  d ƒ } x d | k r. | j d ƒ q Wg  | D] } | | ƒ ^ q6 S(   Nt    t    (   t   splitt   remove(   R   t   inputstrt   typefunct   parsedt   I(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/noir.pyt   getTupleofType   s    i   c         C   s  |  j  st |  j d ƒ j | ƒ } | j d ƒ } | j d ƒ } | | d | | !|  _ i  |  _  xŒd d t f d d t f d d t f d d t f d	 d	 t f d
 d
 t	 f d d t
 f d d t f d d t f d d t f d d t f d d t
 f d d t f d d t f d d t
 f d d t f d d t f d d t f d d t
 f g D]  \ } } } t j | d d ƒ } | j |  j ƒ }	 t |	 ƒ d k rNt | ƒ t d) ƒ k rÔ|  j |	 d  | d ƒ |  j  | <qî| |	 d  ƒ |  j  | <qNqNW|  j  d	 j d! ƒ d k st ‚ |  j  d
 d |  j k s4t ‚ |  j  d d |  j |  j  d" <t |  j  d d d# ƒ |  j  d$ <|  j  d d |  j |  j  d% <|  j  d d |  j |  j  d& <t |  j  d d |  j  d d d# ƒ |  j  d' <d( }
 |
 |  j  d |  j  d <n  d  S(*   Nt   rbt   {t   }i   t   SATURATED_VALUEt   HEADER_BYTESt   SIZE1t   SIZE2t   NOIR1_DETECTOR_DESCRIPTIONt   NOIR1_DETECTOR_DIMENSIONSt   NOIR1_DETECTOR_SIZEt   NOIR1_GONIO_DESCRIPTIONt   NOIR1_GONIO_NAMESt   NOIR1_GONIO_NUM_VALUESt   NOIR1_GONIO_UNITSt   NOIR1_GONIO_VALUESt   DISTANCEt   NOIR1_ACTUAL_DISTANCEt
   WAVELENGTHt   NOIR1_ACTUAL_ENERGYt   NOIR1_SPATIAL_BEAM_POSITIONt   TWOTHETAt   NOIR1_ACTUAL_THETAt
   BYTE_ORDERt   AXISt   ROTATION_AXIS_NAMEt   ROTATIONs
   \nROTATIONt   =s   (.*);i    iÿÿÿÿt   NOIRt
   PIXEL_SIZEi   t	   OSC_STARTt   BEAM_CENTER_Xt   BEAM_CENTER_Yt	   OSC_RANGEin0  (   i    i   (   t
   parameterst   openR   t   readt   indext   headert   floatt   intt   strt   INTt   FLOATt   STRt   ret   compilet   findallt   lent   typeR   t   findt   AssertionErrort   size1t   roundt
   pixel_size(   R   t	   maxlengtht   rawdatat
   headeropent   headercloset   tagt   searcht   datatypet   patternt   matchest   hc(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/noir.pyt
   readHeader   sZ    		" !	'c         C   s›   d d l  m } t |  j d ƒ } | j |  j ƒ  ƒ | j |  j |  j |  j	 ƒ  ƒ } |  j
 | | |  j ƒ  |  j |  j |  j |  j |  j ƒ  ƒ ƒ d  S(   Niÿÿÿÿ(   t	   ReadRAXISR   (   t   iotbx.detectorsRS   R4   R   t   seekt
   dataoffsetR5   RE   t   size2t   integerdeptht   bin_safe_set_datat   bint   endian_swap_required(   R   RS   t   Ft   chardata(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/noir.pyR5   W   s    #(   t   __name__t
   __module__R   R   RR   R5   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/noir.pyR   
   s   		Bt   __main__i   (   t
   __future__R    R>   t   iotbx.detectors.adscR   t   iotbx.detectors.detectorbaseR   R9   R;   R8   R<   R:   R=   R   R^   t   syst   argvt   it   aRR   R5   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/noir.pyt   <module>   s   			W
