ó
™xTc           @   s±   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 Z d „  Z	 d e
 f d	 „  ƒ  YZ e d
 k r­ e e e j d ƒ ƒ j ƒ  j ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   miller(   t   crystal(   t   uctbx(   t   flexNc         C   s   |  j  d d ƒ d S(   Nt   =i   (   t   split(   t   line(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyt   get_rhs   s    t   readerc           B   st   e  Z e e d  „ Z d „  Z d „  Z d e d „ Z d e e d d „ Z	 d e e d d „ Z
 d e d d „ Z RS(   c   
      C   s´  t  | ƒ } | j ƒ  j ƒ  } | d d k s4 t ‚ | sP | d d k sP t ‚ | d d k |  _ | d d k r t |  _ n( | d d k rž |  j |  _ n	 t d	 ‚ d |  _	 d |  _
 d |  _ d d d g |  _ d |  _ d |  _ d |  _ d |  _ xÉ| D]Á} | j d
 ƒ rQt t | ƒ ƒ |  _
 d |  j
 k oCd k n sÀt ‚ qÿ | j d ƒ r{t j	 t | ƒ ƒ |  _	 qÿ | j d ƒ r¢t t | ƒ ƒ |  _ qÿ | j d ƒ rÊ|  j | ƒ |  j d <qÿ | j d ƒ rò|  j | ƒ |  j d <qÿ | j d ƒ r|  j | ƒ |  j d <qÿ | j d ƒ r>|  j | ƒ |  _ qÿ | j d ƒ rb|  j | ƒ |  _ qÿ | j d ƒ r†|  j | ƒ |  _ qÿ | j d ƒ r­t t | ƒ ƒ |  _ qÿ | j d ƒ rÿ Pqÿ qÿ W|  j	 d k	 sÙt ‚ |  j
 d k	 sît ‚ |  j d k	 st ‚ d |  j k st ‚ |  j d k	 s-t ‚ |  j d k	 sBt ‚ | rod |  _ d |  _ d |  _ d |  _ nAt j ƒ  |  _ t j ƒ  |  _ t j ƒ  |  _ d |  _ |  j d k	 rÆt j ƒ  |  _ n  xç | D]ß } | j d ƒ ræPn  | j ƒ  } t | ƒ |  j k st ‚ g  |  j D] } t | | ƒ ^ q}	 |  j j |	 ƒ |  j j t | |  j ƒ ƒ |  j j t | |  j ƒ ƒ |  j d k	 rÍ|  j j t | |  j ƒ ƒ qÍqÍWd S(   s/   http://www.mpimf-heidelberg.mpg.de/~kabsch/xds/i    s   !FORMAT=XDS_ASCIIi   s
   MERGE=TRUEs   MERGE=FALSEi   s   FRIEDEL'S_LAW=FALSEs   FRIEDEL'S_LAW=TRUEs!   Expected FRIEDEL'S_LAW=FALSE|TRUEs   !SPACE_GROUP_NUMBER=iæ   s   !UNIT_CELL_CONSTANTS=s%   !NUMBER_OF_ITEMS_IN_EACH_DATA_RECORD=s   !ITEM_H=s   !ITEM_K=s   !ITEM_L=s   !ITEM_IOBS=s   !ITEM_SIGMA(IOBS)=s	   !ITEM_ZD=s   !X-RAY_WAVELENGTH=s   !END_OF_HEADERs   !END_OF_DATAN(    t   itert   nextR   t   AssertionErrort   unmerged_datat   Truet   anomalous_flagt   RuntimeErrort   Nonet	   unit_cellt   space_group_numbert#   number_of_items_in_each_data_recordt   miller_index_columnst   iobs_columnt   sigma_iobs_columnt	   zd_columnt
   wavelengtht
   startswitht   intR   R   t   column_indext   floatt   miller_indicest   iobst
   sigma_iobst   zdR   t   miller_indext   doublet   lent   append(
   t   selft   file_handlet   header_onlyt   allow_unmergedt   ft   fldsR   t   datat   it   h(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyt   __init__   sŒ    								(				&c         C   s?   t  t | ƒ ƒ d } d | k o0 |  j k  n s; t ‚ | S(   Ni   i    (   R   R   R   R   (   R&   R   t   i_column(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyR   X   s    %c         C   s   t  j d |  j d |  j ƒ S(   NR   t   space_group_symbol(   R   t   symmetryR   R   (   R&   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyt   crystal_symmetry]   s    		c         C   s@   |  j  ƒ  } t j d | j d | d | ƒ d |  j d |  j ƒ S(   NR3   t   other_symmetryt   forcet   indicesR   (   R3   R   t   sett   join_symmetryR   R   (   R&   R3   t   force_symmetryt   crystal_symmetry_from_file(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyt
   miller_setb   s    				c         C   sÐ   | d  k r! t j d d ƒ } n  |  j ƒ  } t j d |  j d | d | ƒ d |  j d |  j ƒ j | j	 d d	 d
 g d | d |  j
 ƒ ƒ j ƒ  } | rÌ | j ƒ  } t | _ | j ƒ  j ƒ  j | ƒ } n  | S(   Nt   source_typet	   xds_asciiR;   R3   R9   R,   t   sigmast   labelsR   R    R:   R   (   R   R   t
   array_infoR3   t   arrayR;   R   R    t   set_infot   customized_copyR   t#   set_observation_type_xray_intensityt   infoR   t   mergedt   merge_equivalents(   R&   R3   R9   RG   t   base_array_infoR:   RA   RE   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyt   as_miller_arraym   s$    						c      	   C   s%   |  j  d | d | d | d | ƒ g S(   NR3   R9   RG   RH   (   RI   (   R&   R3   R9   RG   RH   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyt   as_miller_arrays†   s
    	c         C   s   | d  k r! t j d d ƒ } n  |  j ƒ  } t j d |  j d | d | ƒ d |  j ƒ j | j d d g d	 | d
 |  j	 ƒ ƒ S(   NR<   R=   R;   R3   R9   R,   R?   t   ZDR:   R   (
   R   R   R@   R3   RA   R;   R!   RB   RC   R   (   R&   R3   R9   RH   R:   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyt   batch_as_miller_array‘   s    					N(   t   __name__t
   __module__t   FalseR   R/   R   R3   R   R;   RI   RJ   RL   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyR	      s    K		
t   __main__i   (   t
   __future__R    t   cctbxR   R   R   t   cctbx.array_familyR   t   sysR   t   objectR	   RM   t   opent   argvRI   t   show_comprehensive_summary(    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/xds/read_ascii.pyt   <module>   s   	—