ó
x™xTc           @   sò   d  d l  m Z d  d l Z d  d l Z d  d l Z d „  Z d d g Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z i d d 6d d 6d d 6i d d 6d d 6d d 6i d d 6d d 6d d 6i d d 6d d 6d d 6g Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   divisionNc      	   C   sC   |  j  } | d	 k r | g S| d k r; t |  ƒ r; | g Sg  Sd  S(
   Ni‘  i§  i½  i‰  i‘  i›  i�  i¿  (   i‘  i§  i½  i‰  i‘  i›  i�  i‘  (   t   serial_numbert   ADSC447_at_ALS(   t   iobjt   sn(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyt   known_als_detectors"   s    	  i‹  iº  c         C   s¯   d } x¢ d d t  f d d t  f d d t  f d d t  f g D]j \ } } } t j | d d	 ƒ } | j |  j ƒ } t | ƒ d
 k r= d
 } | | d ƒ |  j | <q= q= W| S(   Ni   t   BEAM_CENTER_Xt   DENZO_BEAM_CENTER_Xt   BEAM_CENTER_Yt   DENZO_BEAM_CENTER_Yt   DENZO_XBEAMt   DENZO_YBEAMt   =s   (.*);i    iÿÿÿÿ(   t   floatt   ret   compilet   findallt   headert   lent
   parameters(   R   t   beam_center_conventiont   tagt   searcht   datatypet   patternt   matches(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyt   als_beam_rules+   s    c         C   s
   d } | S(   Ni   (    (   R   R   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyt   als_beamline831_rules?   s    c         C   sZ   |  j  d k r t S|  j d } t j t j | ƒ ƒ } t j t j d ƒ ƒ } | | k S(   NiŽ  t   DATEs   Mon Jan 01 00:00:00 2007(   R   t   FalseR   t   timet   mktimet   strptime(   R   t   record_datet
   record_tset   cutoff_this(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyt   ADSC910_at_BioCARS†   s     c         C   s˜   |  j  d k r t d ƒ ‚ n  |  j d } y t j t j | ƒ ƒ } Wn, t k
 ru t j t j | d ƒ ƒ } n Xt j t j d ƒ ƒ } | | k  S(   Ni¿  s   wrong snR   s   %a %b %d %H:%M:%S %Z %Ys   Sun Nov 01 00:00:00 2009(   R   t	   ExceptionR   R   R   R    t
   ValueError(   R   R!   R"   t
   cutoff_447(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyR   Ž   s     c         C   s  d d d d d d d d d	 d
 d d d d d d g } d d d d d d d d d d d d d d d d  g } d! d" d# d$ g } |  j  d% k r¬ t |  ƒ s¬ | j d% ƒ q¬ n  | | t |  ƒ t | } |  j  | k rà d& } n8 t |  ƒ rõ d' } n# |  j  | k rd( GH| } n | } | S()   Ni’  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–  i—  iœ  i   iÚ  i�  iÁ  iØ  i¿  i   i    s]   WARNING (possibly fatal): new beamline; coordinate system unknown. Please contact the authors(   R   R   t   appendR   t   known_als831_detectorsR$   (   R   t   passthru_conventiont   beam5t   beam0t   KEKt   alldR   (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyt   other_beamlines˜   s     66			t   Q4Ut   typei  ¢ t   pixels_unbinnedi €( t   pixels_binnedt   Q4Rt   Q210i   i  € t   Q315i  €i   c         C   s4   | j  d  k r' t j | j  ƒ | _ n	 |  | _ d  S(   N(   t   convention_overridet   Nonet   copyt   spot_convention(   t   valuet   phil_params(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyt   set_convention´   s    c         C   s$  |  j  d k ry |  j t |  ƒ k r3 t |  ƒ } n d } t d | ƒ |  j t k rd t |  ƒ } n  t |  d | ƒ} nì|  j  d k rž d } t d | ƒ nÇ|  j  d k rÃ d } t d | ƒ n¢|  j  d k rè d } t d | ƒ n}|  j  d k rd } t d | ƒ nX|  j  d k r2d	 } t d | ƒ n3|  j  d
 k r¦d } t d | ƒ y; d d l m	 } | |  ƒ } | j
 ƒ  d% k rŽd	 } n  Wqet k
 r¢qeXn¿ |  j  d k rËd } t d | ƒ nš |  j  d k rðd } t d | ƒ nu |  j  d k rd } t d | ƒ nP |  j  d k r:d } t d | ƒ n+ |  j  d k r_d } t d | ƒ n d  } |  j  d k rž|  j d k rž|  j d k ržd |  _  n  |  j  d k r×|  j d k r×|  j d k r×d |  _  n  |  j  d k r|  j d k r|  j d k rd |  _  n  |  j  d k rI|  j d k rI|  j d k rId  |  _  n  |  j  d k r‚|  j d! k r‚|  j d k r‚d" |  _  n  |  j  d& k rûd } t d | ƒ | j j d  k rÅd# | j _ n  | j j d  k sé| j j d	 k r d	 | j _ q n% |  j  d$ k r d } t d | ƒ n  | S('   Nt   ADSCi    R*   s   SMV(Generic)t   CBFt
   MacSciences   Bruker Proteus CCDt   RigakuSaturni   t   MARCCDi   iÿÿÿÿ(   t   CompleteMarHeadert   11t   MARIPt   RAXISi   t   npy_rawt   EIGERs   Pilatus Single Moduleiß	  iŸ	  s
   Pilatus-6Mt   Pilatusi�  iÃ  s
   Pilatus-2Mik  iç  s   Pilatus-300KiÃ   s   Pilatus-100Ki—  s   Pilatus-200Kg      @t	   Hamamatsu(   RD   (   s
   Pilatus-6Ms
   Pilatus-2Ms   Pilatus-300Ks   Pilatus-100K(   t
   vendortypeR   R   R   R=   R)   R   R/   t   labelit.detectors.marRC   t   get_serial_numberR%   R8   t   size1t   size2t   distlt   minimum_signal_heightt   minimum_spot_area(   t   imageobjectR<   R   RC   t   C(    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyt(   beam_center_convention_from_image_object»   sš    	 (   t
   __future__R    R   R   R9   R   R)   R   R   R$   R   R/   t$   reference_information_ADSC_detectorsR=   RU   (    (    (    sU   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/context/config_detector.pyt   <module>   s   $ 			G		
		