ó
~™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 m Z d  d l	 Z	 d  d l
 Z e j j d ƒ Z d	 e f d
 „  ƒ  YZ d S(   iÿÿÿÿ(   t   division(   t   miller(   t   crystal(   t   sgtbx(   t   uctbx(   t   flexNt   iotbx_dtrek_extt	   reflnlistc           B   s\   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d d d „ Z	 d e e
 d d „ Z RS(	   c         C   s‡  | |  _  d |  _ |  j ƒ  j ƒ  } t | ƒ d k s< t ‚ g  | D] } t | ƒ ^ qC } t | ƒ d k r} | j d ƒ n  | d |  _ |  j d k sŸ t ‚ | d |  _	 | d |  _
 | d |  _ g  |  _ x3 t |  j ƒ D]" } |  j j |  j ƒ  j ƒ  ƒ qß Wg  |  _ |  j |  j	 |  j
 } g  |  _ xÑ t | ƒ D]Ã } |  j ƒ  j ƒ  } t | ƒ d k skt ‚ | d d k s�t ‚ | |  j k  r©| d d k sît ‚ nE | |  j |  j	 k  rØ| d d k sît ‚ n | d d	 k sît ‚ |  j j | ƒ q;Wd
 |  j k st ‚ d |  j k s,t ‚ |  j d  d d d g k sNt ‚ | rid  |  _ d  |  _ nt j ƒ  |  _ i  |  _ d  d  d  g } x“ t d | ƒ D]‚ } | |  j k  rË| j t j ƒ  ƒ n? | |  j |  j	 k  r÷| j t j ƒ  ƒ n | j t j ƒ  ƒ | d |  j |  j | <q WxN|  j ƒ  }	 |	 d  k rEPn  |	 j ƒ  }
 t |
 ƒ | k svt d |  j ƒ ‚ g  |
 d  D] } t | ƒ ^ q�} |  j j | ƒ d } x; t | |  j ƒ D]' } t |
 | ƒ } | | j | ƒ qÂW|  j } x? t | | |  j	 ƒ D]' } t |
 | ƒ } | | j | ƒ qW| |  j	 7} x, t | | ƒ D] } | | j |
 | ƒ qUWq)|  `  |  ` d  S(   Ni    i   i   i   i   t   nfst   nt   ft   st
   fIntensityt   fSigmaIt   nHt   nKt   nLiÿÿÿÿs   Line no. %d(   i   i   (   t   filet   line_not	   next_linet   splitt   lent   AssertionErrort   intt   appendt   NumIntst	   NumFloatst
   NumStringst   NumInfoLinest	   InfoLinest   xranget   stript   column_infot   column_namest   Nonet   miller_indicest   column_dictR   t   miller_indext   doublet
   std_stringt   float(   t   selfR   t   header_onlyt   line_1t   fieldt   it   num_columnst   column_namet   column_listt   linet   data_valuest   vt   ht   offset(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyt   __init__   s‚    			 		"		%#	c         C   s2   |  j  j ƒ  } | d k r d  S|  j d 7_ | S(   Nt    i   (   R   t   readlineR"   R   (   R)   R1   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyR   T   s
     c         C   sm   xf |  j  D][ } | j ƒ  j d ƒ r
 | d d k s; t ‚ | d  j d d ƒ d } t j d | ƒ Sq
 Wd  S(   Ns   CRYSTAL_SPACEGROUP=iÿÿÿÿt   ;t   =i   t   symbol(   R   t   uppert
   startswithR   R   R   t   space_group_infoR"   (   R)   t	   info_linet   space_group_number(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyR>   Z   s    c         C   sj   xc |  j  D]X } | j ƒ  j d ƒ r
 | d d k s; t ‚ | d  j d d ƒ d } t j | ƒ Sq
 Wd  S(   Ns   CRYSTAL_UNIT_CELL=iÿÿÿÿR9   R:   i   (   R   R<   R=   R   R   R   t	   unit_cellR"   (   R)   R?   RA   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyRA   b   s    c         C   s"   t  j d |  j ƒ  d |  j ƒ  ƒ S(   NRA   R>   (   R   t   symmetryRA   R>   (   R)   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyt   crystal_symmetryj   s    	R7   c         C   sy   | d  k r t j } n  |  j ƒ  j d | d | ƒ | | d Id j |  j d ƒ IJ| | d I|  j j ƒ  IJd  S(   NR
   t   prefixs   Column names:t    i   s   Number of reflections:(	   R"   t   syst   stdoutRC   t   show_summaryt   joinR!   R#   t   size(   R)   t   outRD   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyRH   o   s
     $c         C   s“  |  j  ƒ  } | j d | d | ƒ } | d  k rE t j d d ƒ } n  g  } |  j d } | j t j d t j d | d |  j	 d	 t
 ƒ d
 |  j d d | ƒ j | d k ƒ j | j d d d g d | ƒ ƒ j ƒ  ƒ d |  j k rd |  j k sù t ‚ d |  j k st ‚ d |  j k s#t ‚ | j ƒ  d  k rDt j ƒ  } n | j ƒ  } t j | |  j	 |  j d |  j d |  j d |  j d ƒ }	 | j t j d t j d | d |	 j	 ƒ  d	 t ƒ d
 |	 j ƒ  d |	 j ƒ  ƒ j | j d d d g d | ƒ ƒ j ƒ  ƒ n  x† |  j D]{ }
 |
 d k r(qn  | j t j d t j d | d |  j	 d	 t
 ƒ d
 |  j |
 ƒ j | j d |
 d g d | ƒ ƒ ƒ qW| S(   Nt   other_symmetryt   forcet   source_typet   dtrek_reflnlistR   t
   miller_setRC   t   indicest   anomalous_flagt   dataR   t   sigmasi    t   labelst	   Intensityt   SigmaIt   crystal_symmetry_from_files   fIntensity+s   fSigmaI+s   fIntensity-s   fSigmaI-s   Intensity+-s   SigmaI+-R   R   R   i   (	   s   nHs   nKs   nLs   fSigmaIs
   fIntensitys   fIntensity+s   fSigmaI+s   fIntensity-s   fSigmaI-(   RC   t   join_symmetryR"   R   t
   array_infoR$   R   t   arrayt   setR#   t   Falset   selectt   set_infot   customized_copyt#   set_observation_type_xray_intensityR   R>   R   t   space_groupt	   dtrek_extt   anomalous_combinedt   TrueRS   RT   R!   (   R)   RC   t   force_symmetryt   merge_equivalentst   base_array_infoRX   t   miller_arraysRT   Rb   t   acR/   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyt   as_miller_arraysu   sv    							


			  					N(   t   __name__t
   __module__R]   R6   R   R>   RA   RC   R"   RH   Re   Rk   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyR      s   F				(   t
   __future__R    t   cctbxR   R   R   R   t   cctbx.array_familyR   RF   t   boost.pythont   boostt   pythont
   import_extRc   t   objectR   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/dtrek/reflnlist_reader.pyt   <module>   s   