ó
v™xTc           @   s†  d  d l  m Z d  d l Z d  d l Z d  d l Z e j j d ƒ Z d  d l	 Td  d l
 m Z d  d l Z d e j f d „  ƒ  YZ d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l m  Z  d  d l! m" Z" d  d l# m$ Z$ d  d l% m& Z& d  d l' m( Z( d  d l) m* Z* d  d l+ m, Z, d  d l- m. Z. d  d l- m/ Z/ d  d l0 m1 Z1 d  d l2 m3 Z3 d e* e, f d „  ƒ  YZ4 d e f d „  ƒ  YZ5 e4 e" e  e$ e e e e e e e e5 e( e e& g Z6 y d  d l7 Z7 Wn e8 k
 r:n Xe6 j9 d e3 ƒ e. e/ e1 g Z: d  „  Z; d! „  Z< d" e= f d# „  ƒ  YZ> d S($   iÿÿÿÿ(   t   divisionNt   iotbx_detectors_ext(   t   *(   t   Bruker_baset   ImageExceptionc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyR      s   (   t	   ADSCImage(   t   HamamatsuImage(   t   MARImage(   t
   MARIPImage(   t   CBFImage(   t
   DTREKImage(   t
   RAXISImage(   t   NonSquareRAXISImage(   t   DIPImage(   t   SaturnImage(   t	   NoirImage(   t   BrukerImage(   t   PilatusImage(   t   EDFImage(   t   DetectorImageBase(   t   pilatus_slice_from_file_url(   t   pilatus_slice_from_http_url(   t   ADSC_module_from_file_url(   t
   EIGERImaget
   EDFWrapperc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  j |  | ƒ d |  _ d  S(   Ns   Pilatus Single Module(   R   t   __init__t
   vendortype(   t   selft   filename(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyR   #   s    c         C   sm   t  j |  ƒ d |  j d <|  j d |  j d <|  j d |  j d <d |  j d <d |  j d	 <d
 |  j d <d  S(   Ngj¼t“Æ?t
   PIXEL_SIZEt   Dim_1t   SIZE1t   Dim_2t   SIZE2g        t   BEAM_CENTER_Xt   BEAM_CENTER_Yg      Y@t   DISTANCE(   R   t
   readHeadert
   parameters(   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyR'   &   s    (   R   R   R   R'   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyR   "   s   	t   SMVImagec           B   s   e  Z d  „  Z RS(   c         C   s   t  j |  | ƒ d |  _ d  S(   Ns   SMV(Generic)(   R   R   R   (   R   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyR   0   s    (   R   R   R   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyR)   /   s   i    c   	      C   s  d d l  m } d d l m } t j j |  ƒ r� t j |  t j ƒ sZ | d |  ƒ ‚ n  d d l	 m
 } | j |  ƒ } | |  ƒ } | j ƒ  S| j |  ƒ } | j ƒ  r x@ t D]8 } y | |  ƒ } | j ƒ  | SWq± t k
 rè q± Xq± Wt |  d ƒ ‚ n  t |  d ƒ ‚ d  S(   Niÿÿÿÿ(   t   url_support(   t   Sorrys   No read access to file %s(   t   Registrys)    does not work as a functioning image URLs0    not recognized as any known detector image type(   t   iotbx.detectorsR*   t   libtbx.utilsR+   t   ost   patht   isfilet   accesst   R_OKt   dxtbx.format.RegistryR,   t   findt   get_detectorbaset   potential_url_requestt   is_url_requestt   all_url_typesR'   t	   ExceptionR   (	   R   R*   R+   R,   t   format_instancet   instancet   At   utypet   I(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyt   ImageFactoryB   s(    

c         C   sþ  d „  } d  } } } d  } } t j j |  ƒ rH t j j |  ƒ } n3 t j j |  ƒ ro t j j |  ƒ } n d s{ t ‚ | d  k	 r± t j j | ƒ } | | ƒ \ } } } n  t j | ƒ } i  } i  }	 i  }
 x%| D]} | d  k	 r{| j	 | ƒ rö| j
 | ƒ rö| | ƒ \ } } } | | k rD| | j t | ƒ ƒ qxd t | ƒ |	 | <t | ƒ g | | <| |
 | <qöqÙ | | ƒ \ } } } | d k rÙ | | k rÂ| | j t | ƒ ƒ qöt | ƒ g | | <d t | ƒ |	 | <| |
 | <qÙ qÙ Wg  } x÷ t | j ƒ  ƒ D]ã } g  } d  } } xk t | | ƒ D]Y } | d  k rU| } n8 | d  k	 r�| | d	 k r�| j | | f ƒ | } n  | } q:W| j | | f ƒ d
 | |	 | |
 | f } t d t j j | | ƒ d | ƒ } | j | ƒ qW| S(   Nc         S   s]   t  j j t  j j |  ƒ ƒ \ } } | j d ƒ } | d } d j | d  ƒ } | | | f S(   Nt   _iÿÿÿÿ(   R/   R0   t   splitextt   basenamet   splitt   join(   t
   file_name_t   baset   extt   fieldst   suffixt   common_base(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyt   get_file_name_componentsY   s
    $
i    t   #s   .imgs   .oscs   .ccds   .mccds   .cbfi   s   %s_%s%st	   base_namet   ranges(   s   .imgs   .oscs   .ccds   .mccds   .cbf(   t   NoneR/   R0   R1   t   abspatht   isdirt   AssertionErrort   dirnamet   listdirt
   startswitht   endswitht   appendt   intt   lent   sortedt   keyst   dataset_infoRE   (   t	   path_nameRL   RJ   RK   t
   common_extt	   file_namet   dir_namet	   all_filest   stackst   suffixest
   extensionst   fnt   base2t   suffix2t   ext2t   resultsRG   RO   t	   img_startt   img_lastt   xt	   file_baset   dataset(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyt   identify_datasetX   sb    	

		
	R]   c           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   RN   RO   (   R   RN   RO   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyR   ˜   s    	c         C   ss   g  } xP |  j  D]E \ } } | | k r> | j t | ƒ ƒ q | j d | | f ƒ q Wd |  j d j | ƒ f S(   Ns   %d-%ds   %s (%s)t   ,(   RO   RX   t   strRN   RE   (   R   t   ranges_strst   startt   end(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyt   formatœ   s    c         C   s
   |  j  ƒ  S(   N(   Rv   (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyt   __str__¥   s    c         C   sW   t  | t ƒ r | d k s! t ‚ d |  j j d ƒ } t j d | |  j ƒ } | | S(   Ni    s   %%0%ddRM   s   [#]{1,}(   t
   isinstanceRY   RS   RN   t   countt   ret   sub(   R   t   framet   serial_formatt
   format_str(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyt   get_frame_path¨   s    !(   R   R   R   Rv   Rw   R   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyR]   —   s   				(?   t
   __future__R    R/   Rz   t   boost.pythont   boostt   pythont
   import_extRH   R   t   iotbx_detectors_bruker_extR   t
   exceptionsR:   R   t   iotbx.detectors.adscR   t   iotbx.detectors.hamamatsuR   t   iotbx.detectors.marR	   t   iotbx.detectors.marIPR
   t   iotbx.detectors.cbfR   t   iotbx.detectors.dtrekR   t   iotbx.detectors.raxisR   t   iotbx.detectors.raxis_nonsquareR   t   iotbx.detectors.macscienceR   t   iotbx.detectors.saturnR   t   iotbx.detectors.noirR   t   iotbx.detectors.brukerR   t   iotbx.detectors.pilatus_minicbfR   t   iotbx.detectors.edfR   t   iotbx.detectors.detectorbaseR   t   iotbx.detectors.pilatus_sliceR   R   t   iotbx.detectors.adsc_moduleR   t   iotbx.detectors.eigerR   R   R)   t   all_image_typest   h5pyt   ImportErrort   insertR9   R@   Rp   t   objectR]   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/detectors/__init__.pyt   <module>   sT   
			?