ó
…™xTc           @   sZ   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   division(   t   miller(   t   crystal(   t   flext   readerc           B   sJ   e  Z d d d  d „ Z d „  Z d „  Z d „  Z d e e d d „ Z	 RS(   i   c      	   C   sk  | | g j  d  ƒ d k s! t ‚ | d  k r< t | ƒ } n  | j ƒ  } t | ƒ } | d k sl t d ƒ ‚ | j ƒ  d  } xÙ d D]Ñ } | j ƒ  j ƒ  } | d d | k sÃ t d | d ƒ ‚ | d  k rÜ | d	 } n | d	 | k sø t d
 ƒ ‚ | j ƒ  j ƒ  } | d  d | j ƒ  k s8t d | d ƒ ‚ | d	 | k sƒ t d
 ƒ ‚ qƒ Wt j ƒ  |  _	 t j
 ƒ  |  _ t j
 ƒ  |  _ d |  _ xÖ| D]Î}	 |  j d 7_ y„ g  t d ƒ D]- }
 t |	 d |
 d d |
 d d !ƒ ^ qº} g  t d ƒ D]- }
 t |	 d |
 d d |
 d d !ƒ ^ qú} Wn2 t k
 rb} t d |  j t | ƒ f ƒ ‚ n XxS t d ƒ D]E }
 | d |
 d k  | d |
 d d k  k spt d |  j ƒ ‚ qpW| d d k r|  j	 j | ƒ |  j j | d ƒ |  j j | d ƒ n  | d d k r•|  j	 j g  | D] } | ^ q$ƒ |  j j | d ƒ |  j j | d ƒ q•q•Wd  S(   Ni   i   s    Exactly 4 data columns expected.t   +t   -i    t   Fs    header line expected.iÿÿÿÿs   Inconsistent wavelength label.i   s   sig of Fi   i   i
   s   Line %d: %si   s,   Line %d: Inconsistent observation and sigma.(   R   R   (   t   countt   Nonet   AssertionErrort   opent   readlinet   intt   splitR   t   miller_indext   _indicest   doublet   _datat   _sigmast   n_linest   xranget   floatt	   Exceptiont   RuntimeErrort   strt   append(   t   selft	   file_namet   file_objectt   max_header_linest   linet   n_data_columnst   labelt   signt   fldst   raw_linet   it   ht   dt   e(    (    sE   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/solve/fpfm_reader.pyt   __init__   sP    !
( 	@D#/$c         C   s   |  j  S(   N(   R   (   R   (    (    sE   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/solve/fpfm_reader.pyt   indices3   s    c         C   s   |  j  S(   N(   R   (   R   (    (    sE   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/solve/fpfm_reader.pyt   data6   s    c         C   s   |  j  S(   N(   R   (   R   (    (    sE   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/solve/fpfm_reader.pyt   sigmas9   s    c         C   s¬   | d  k r t j ƒ  } n  | d  k r< t j d d ƒ } n  t j d | d |  j ƒ  d t ƒ } t j d | d |  j	 ƒ  d |  j
 ƒ  ƒ j | j d	 d
 d g ƒ ƒ j ƒ  g S(   Nt   source_typet
   solve_fpfmt   crystal_symmetryR*   t   anomalous_flagt
   miller_setR+   R,   t   labelst   fpfmt
   sigma_fpfm(   R	   R   t   symmetryR   t
   array_infot   setR*   t   Truet   arrayR+   R,   t   set_infot   customized_copyt#   set_observation_type_xray_amplitude(   R   R/   t   force_symmetryt   merge_equivalentst   base_array_infoR1   (    (    sE   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/solve/fpfm_reader.pyt   as_miller_arrays<   s    				N(
   t   __name__t
   __module__R	   R)   R*   R+   R,   t   FalseR8   R@   (    (    (    sE   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/solve/fpfm_reader.pyR      s   +			N(	   t
   __future__R    t   cctbxR   R   t   cctbx.array_familyR   t   objectR   (    (    (    sE   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/solve/fpfm_reader.pyt   <module>   s   