ó
‘™xTc           @   s  d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l Z d „  Z d d „ Z	 d e j
 j f d	 „  ƒ  YZ d
 „  Z d „  Z d „  Z d „  Z d „  Z e e d „ Z d „  Z d d d d „ Z e d „ Z e e e e e d „ Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿ(   t   divisionN(   t   file_reader(   t   Sorryc         C   s\   d d l  m } |  d  k r  d St |  | j ƒ r< t |  ƒ S| j d |  ƒ } t | ƒ Sd  S(   Niÿÿÿÿ(   t   sgtbxt    t   group(   t   cctbxR   t   Nonet
   isinstancet   space_group_infot   str(   t   space_groupR   t   sg_info(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   space_group_as_str   s    
t    c         C   sk   t  | t ƒ r | d k s! t ‚ |  d  k	 rc | j g  t d ƒ D] } d ^ q@ ƒ } | |  j ƒ  Sd Sd  S(   NR   i   s   %g(   R   R
   t   AssertionErrorR   t   joint   ranget
   parameters(   t	   unit_cellt	   separatort   it   format(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   unit_cell_as_str   s
    !(t   reflections_handlerc           B   sÖ  e  Z d  Z d Z d0 d0 e d e d „ Z d0 d0 d „ Z d „  Z d „  Z	 d0 d0 d „ Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d  „  Z# d! „  Z$ d" „  Z% d# „  Z& d$ „  Z' d% „  Z d0 d0 d0 d0 d& „ Z( d' „  Z) d( „  Z* d) „  Z+ d* „  Z, d+ „  Z- d0 d0 d, d- „ Z. d0 d0 d. „ Z/ d/ „  Z0 RS(1   t   hklt   Reflectionsi   c         C   s;   t  j j j |  d | d | d | ƒ| |  _ | |  _ d  S(   Nt   allowed_param_namest   allowed_multiple_paramst   debug(   t   iotbxt	   gui_toolst   managert   __init__t   minimum_data_scoret   prefer_amplitudes(   t   selfR   R   R   R"   R#   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR!      s    	c         C   s•   |  j  d | d | ƒ } | d  k r( d  Sxf | j j D]X } | j ƒ  j ƒ  } | j ƒ  j } | | k s‰ | | k s‰ d j | ƒ | k r5 | Sq5 Wd  S(   Nt	   file_namet   file_param_namet   ,(   t   get_fileR   t   file_servert   miller_arrayst   infot   label_stringt   labelsR   (   R$   R-   R%   R&   t   hkl_filet   arrayt   array_label_stringt   array_labels(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_miller_array*   s    	c         O   sD   |  j  | | Ž  } | d  k	 r@ | j ƒ  } | d  k	 r@ | j Sn  d  S(   N(   R2   R   R+   t
   wavelength(   R$   t   argst   kwdsR/   R+   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_wavelength8   s    
c         O   sg   |  j  | | Ž  } | j } | j d } | j ƒ  d  k sL | j ƒ  d  k rc t d d d ƒ ‚ n  t S(   Ni    s7   Incomplete symmetry for this reflections file.  Please sC   use a format that includes both space group and unit cell, such as s    an MTZ or merged Scalepack file.(   R(   R)   R*   R   R   R   R   t   True(   R$   R4   R5   R.   t
   hkl_servert   ma(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   check_symmetry@   s    	$c         C   s   | d  k	 r | j j ƒ  Sd  S(   N(   R   t   file_objectt	   file_type(   R$   R%   t
   input_file(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_file_type_labelJ   s    c         O   s±   |  j  | | Ž  } | d  k r| g  } x† |  j ƒ  D]D \ } } | j j } | j g  | D] } | j ƒ  j ƒ  ^ qV ƒ q1 Wn1 | j j } g  | D] } | j ƒ  j ƒ  ^ q� } | S(   N(   R(   R   t   input_filesR)   R*   t   extendR+   R,   (   R$   R4   R5   R.   R-   R%   R*   t   a(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_all_labelsN   s    3%c         O   s   | j  d d  ƒ } |  j | | Ž  } g  } | d  k	 rœ| j } | j d d  d d  d d  d t d d d t d	 d
 ƒ } | d  k	 rYg  } g  }	 g  }
 xu | D]m } | d } | j ƒ  j ƒ  j	 ƒ  } d | k rÞ |	 j
 | ƒ qš d | k rú | j
 | ƒ qš |
 j
 | ƒ qš W| r0t |	 ƒ d k r0|	 |
 } qY| rYt | ƒ d k rY| |
 } qYn  t | ƒ d k rœg  | D] \ } } | j ƒ  j ƒ  ^ qr} qœn  | S(   Nt   neutronR%   t   labelt   test_flag_valuet   disable_suitability_testt   parameter_scopeR   t   return_all_valid_arrayst   minimum_scorei   i    t   xray(   t   popR   R(   R)   t   get_r_free_flagst   FalseR7   R+   R,   t   lowert   appendt   len(   R$   R4   R5   t   prefer_neutronR.   R-   R8   t   arrays_and_flagst   xray_arrayst   neutron_arrayst   other_arrayst   array_and_flag_valueR/   RD   RA   t   fl(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_rfree_labelsZ   s@    			
1c         O   s   t  |  j | | Ž  ƒ d k S(   Ni    (   RP   RX   (   R$   R4   R5   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt	   has_rfree}   s    c         O   sN   t  | d <|  j | | Ž  } g  | D] } d | j ƒ  k ^ q# j t  ƒ d k S(   NRC   i    (   R7   RX   RN   t   count(   R$   R4   R5   R-   t   l(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   has_neutron_rfree€   s    
c         O   s©   |  j  | | Ž  } d  } | d  k	 r¥ | j } | j d d  d d  d d  d t d d d t d d	 ƒ } x? | D]4 \ } }	 | j ƒ  j ƒ  }
 |
 | k rj |	 } Pqj qj Wn  | S(
   NR%   RD   RE   RF   RG   R   RH   RI   i   (   R(   R   R)   RL   RM   R7   R+   R,   (   R$   t
   array_nameR4   R5   R.   t   flagR8   RR   t   miller_arrayt
   array_flagRD   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_rfree_flag_value…   s$    			c         O   sŒ   |  j  | | Ž  } g  } | d  k	 rˆ | j } | j d | j d d  d t d d d t d d ƒ } g  | D] } | j ƒ  j ƒ  ^ qg } n  | S(	   NR%   R-   t   ignore_all_zerosRG   R   RH   RI   i   (   R(   R   R)   t   get_experimental_phasesR%   R7   R+   R,   (   R$   R4   R5   R.   R-   R8   R*   R/   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_experimental_phase_labels™   s    				(c         O   s   t  |  j | | Ž  ƒ d k S(   Ni    (   RP   Rd   (   R$   R4   R5   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt
   has_phases¨   s    c         O   st   |  j  | | Ž  } g  } | d  k	 rp | j } | j d | j d d  d t d d  d d  d d  d t d d	 ƒ } | Sg  S(
   NR%   R-   t   convert_to_phases_if_necessaryt   original_phase_unitsRG   t   parameter_nameRH   RI   i   (   R(   R   R)   t   get_phases_degR%   RM   R7   (   R$   R4   R5   R.   R-   R8   R*   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_phase_arrays«   s    				c         O   sa   |  j  | | Ž  } g  } xB | D]: } | j ƒ  j ƒ  } | j d ƒ rL q n  | j | ƒ q W| S(   Nt   FOM(   Rj   R+   R,   t
   startswithRO   (   R$   R4   R5   R*   R-   R/   t
   labels_str(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_phase_deg_labels¼   s     c         O   sm   g  } |  j  | | Ž  } xN | D]F } x= | j ƒ  j D], } | j ƒ  j d ƒ r5 | j | ƒ Pq5 q5 Wq W| S(   Nt   PH(   Rj   R+   R-   t   upperRl   RO   (   R$   R4   R5   R-   R*   R/   RD   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_phase_column_labelsÅ   s    c         O   sª  | j  d d  ƒ } |  j | | Ž  } | d  k	 r¦| j } | j d d  d d  d t d d d t d |  j ƒ } |  j rÈ g  } g  } x7 | D]/ }	 |	 j	 ƒ  rª | j
 |	 ƒ qˆ | j
 |	 ƒ qˆ W| | } nÚ | d  k	 r¢g  }
 g  } g  } xk | D]c }	 |	 j ƒ  j ƒ  j ƒ  } d | k r'| j
 |	 ƒ qí d	 | k rC|
 j
 |	 ƒ qí | j
 |	 ƒ qí W| ryt | ƒ d
 k ry| | } q¢| r¢t |
 ƒ d
 k r¢|
 | } q¢n  | Sg  S(   NRC   R%   R-   Rb   RG   R   RH   RI   RJ   i    (   RK   R   R(   R)   t   get_xray_dataRM   R7   R"   R#   t   is_xray_amplitude_arrayRO   R+   R,   RN   RP   (   R$   R4   R5   RQ   R.   R8   R*   t   f_arraysRU   R/   RS   RT   RD   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_data_arraysÏ   sH    			c         O   s   t  |  j | | Ž  ƒ S(   N(   t   extract_labelsRu   (   R$   R4   R5   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_data_labels÷   s    c         O   s}   | j  d t ƒ } |  j | | Ž  } | d  k	 ry | j } | j d d  d d  d | d d d d d t d	 d
 d t ƒ } | Sg  S(   Nt   allow_conversionR%   R-   t"   convert_to_amplitudes_if_necessaryRG   R   Rh   RH   RI   i   t   strict(   RK   RM   R(   R   R)   t   get_amplitudesR7   (   R$   R4   R5   Rx   R.   R8   R*   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_amplitude_arraysú   s    			c         O   s   t  |  j | | Ž  ƒ S(   N(   Rv   R|   (   R$   R4   R5   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_amplitude_labels  s    c         O   sG   |  j  | | Ž  } g  } x( | D]  } | j | j ƒ  j d ƒ q W| S(   Ni    (   R|   R@   R+   R-   (   R$   R4   R5   R*   R-   R/   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_amplitude_column_labels  s
    c         O   sI   |  j  | | Ž  } g  } x* | D]" } | j ƒ  r | j | ƒ q q W| S(   N(   Ru   t   is_xray_intensity_arrayRO   (   R$   R4   R5   R*   t   i_arraysR/   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_intensity_arrays  s    c         O   s   t  |  j | | Ž  ƒ S(   N(   Rv   R�   (   R$   R4   R5   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_intensity_labels  s    c         O   sA   |  j  | | Ž  } g  | D] } d j | j ƒ  j ƒ ^ q } | S(   NR   (   Ru   R   R+   R-   (   R$   R4   R5   R*   R/   R-   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_data_labels_for_wizard"  s    +c         O   s   t  |  j | | Ž  ƒ d k S(   Ni    (   RP   Rw   (   R$   R4   R5   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   has_data'  s    c         O   sN   t  | d <|  j | | Ž  } g  | D] } d | j ƒ  k ^ q# j t  ƒ d k S(   NRC   i    (   R7   Rw   RN   RZ   (   R$   R4   R5   R-   R[   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   has_neutron_data*  s    
c   	      O   s×   t  | ƒ } | j d t ƒ } |  j | | Ž  } g  } | d  k	 rÓ | j } | j d d  d d  d t d d d t d |  j ƒ } xR | D]G } | j	 ƒ  r… | j
 ƒ  r° | r° q… n  | j | j ƒ  j ƒ  ƒ q… q… Wn  | S(	   Nt   allow_reconstructed_amplitudesR%   R-   Rb   RG   R   RH   RI   (   t   dictRK   R7   R(   R   R)   Rr   RM   R"   t   anomalous_flagt%   is_xray_reconstructed_amplitude_arrayRO   R+   R,   (	   R$   R4   R5   t
   allow_danoR.   R-   R8   R*   R/   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_anomalous_data_labels/  s(    		#c         O   s   t  |  j | | Ž  ƒ d k S(   Ni    (   RP   R‹   (   R$   R4   R5   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   has_anomalous_dataE  s    c         O   s­   |  j  | | Ž  } | j d t ƒ } |  j | | Ž  } | d  k	 r© xd | j j D]S } | j ƒ  rO | j ƒ  j	 ƒ  } | j
 d ƒ r¢ | j | j ƒ  j d ƒ q¢ qO qO Wn  | S(   Nt   first_column_onlyt   FWTi    (   t   get_fmodel_labelsRK   RM   R(   R   R)   R*   t   is_complex_arrayR+   R,   Rl   RO   R-   (   R$   R4   R5   R-   R�   R.   R_   Rm   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_phaser_map_fc_labelsH  s    'c         O   sá   | j  d t ƒ } |  j | | Ž  } g  } | d  k	 rÝ x¤ | j j D]“ } | j ƒ  rC | j ƒ  j ƒ  } | j	 d ƒ s  | j
 ƒ  j	 d ƒ s  | j
 ƒ  j	 d ƒ rÖ | rÃ | j | j ƒ  j d ƒ qÓ | j | ƒ qÖ qC qC Wn  | S(   NR�   s   F-modelt   FMODELt   FCi    (   RK   RM   R(   R   R)   R*   R�   R+   R,   Rl   Rp   RO   R-   (   R$   R4   R5   R�   R.   t   labels_listR_   R-   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR�   T  s    c         O   s€   i  } i  } x? t  | ƒ D]1 } | d k r< | | | | <q | | | | <q W|  j | | Ž  } | d  k	 r| t | j | � Sg  S(   NR%   R&   (   s	   file_names   file_param_name(   R‡   R(   R   t   get_map_coeff_labelsR)   (   R$   R4   R5   t
   kwds_basict	   kwds_mapst   kwdR.   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR•   e  s    c         O   s/   |  j  | | Ž  } | d  k	 r+ t | j ƒ Sg  S(   N(   R(   R   t   get_map_coeffs_for_buildR)   (   R$   R4   R5   R.   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_map_coeff_labels_for_builds  s    c         O   s†   |  j  | | Ž  } g  } | d  k	 r‚ t | j d t ƒ} xF | D]; } t | t ƒ re | j | ƒ q@ | j d j | ƒ ƒ q@ Wn  | S(   Nt   keep_array_labelsR   (	   R(   R   R•   R)   R7   R   R
   RO   R   (   R$   R4   R5   R.   R”   t
   all_labelsR-   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_map_coeff_labels_for_ffty  s    	c         O   s‚   |  j  | | Ž  } g  } | d  k	 r~ xW | j j D]F } | j ƒ  j ƒ  } | j d ƒ sg | j d ƒ r1 | j | ƒ q1 q1 Wn  | S(   NRŽ   t   2FOFC(   R(   R   R)   R*   R+   R,   Rl   RO   (   R$   R4   R5   R.   R”   R/   R-   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_two_fofc_map_labels†  s    c         O   s‚   |  j  | | Ž  } g  } | d  k	 r~ xW | j j D]F } | j ƒ  j ƒ  } | j d ƒ sg | j d ƒ r1 | j | ƒ q1 q1 Wn  | S(   Nt   DELFWTt   FOFC(   R(   R   R)   R*   R+   R,   Rl   RO   (   R$   R4   R5   R.   R”   R/   R-   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_fofc_map_labels�  s    c         O   sG   |  j  | | Ž  } g  } x( | D]  } | j | j ƒ  j d ƒ q W| S(   Ni    (   R|   R@   R+   R-   (   R$   R4   R5   R*   R-   R/   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR~   š  s
    c         C   sI  d d l  m } g  } | d  k r‚ | d  k r‚ xü |  j j ƒ  D]= \ } } |  j | ƒ } | d  k	 r> | j | j j ƒ q> q> Wn« |  j | | ƒ }	 |	 d  k r¤ d Sx† |	 j j D]x }
 |
 j	 ƒ  j
 ƒ  } | d  k	 rñ | | k r)|
 g } Pq)q± | d  k	 r| | k r)| j |
 ƒ q)q± | j |
 ƒ q± W| | ƒ \ } } | | f S(   Niÿÿÿÿ(   t   get_best_resolution(   NN(   t   iotbx.reflection_file_editorR£   R   t   _param_filest	   iteritemsR(   R@   R)   R*   R+   R,   RO   (   R$   R%   R&   R]   t   array_namesR£   R*   t	   phil_nameR=   R.   R_   RD   t   d_maxt   d_min(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt	   d_max_min¢  s,    	c         O   s:   |  j  | | Ž  \ } } | d  k r( d Sd | | f Sd  S(   NR   s   (%.3f - %.3f)(   R«   R   (   R$   R4   R5   R©   Rª   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_resolution_range½  s    c         O   s`   |  j  | | Ž  \ } } d \ } } | d  k	 r= d | } n  | d  k	 rV d | } n  | | f S(   NR   s   (%.3f)(   R   R   (   R«   R   (   R$   R4   R5   R©   Rª   t	   d_max_strt	   d_min_str(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_resolution_limitsÄ  s    c         O   s,   |  j  | | Ž  } | d  k	 r( | j ƒ  Sd  S(   N(   t   crystal_symmetryR   R   (   R$   R4   R5   t   symm(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR   Í  s    
c         O   s   |  j  | | Ž  } t | ƒ S(   N(   R   R   (   R$   R4   R5   R   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR   Ó  s    c         O   s,   |  j  | | Ž  } | d  k	 r( | j ƒ  Sd  S(   N(   R°   R   R   (   R$   R4   R5   R±   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR   ×  s    
R   c         C   s   |  j  | | ƒ } t | | ƒ S(   N(   R   R   (   R$   R%   R&   R   R   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR   Ý  s    c   
      C   så   d  } | d  k r� | d  k r� xÀ |  j j ƒ  D]Z \ } } |  j | ƒ } | j j } x0 | D]( } | j ƒ  } | d  k	 r\ | } Pq\ q\ Wq. WnR |  j | | ƒ }	 |	 d  k	 rá |	 j j } t | ƒ d k rá | d j ƒ  } qá n  | S(   Ni    (   R   R¥   R¦   R(   R)   R*   R°   RP   (
   R$   R%   R&   t
   final_symmt
   param_nameR=   R*   R/   R±   R.   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR°   â  s     c         C   s   d  S(   N(    (   R$   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   check_symmetry_consistencyõ  s    N(1   t   __name__t
   __module__R<   t   file_type_labelR   RM   R!   R2   R6   R:   R>   RB   RX   RY   R\   Ra   Rd   Re   Rj   Rn   Rq   Ru   Rw   R|   R}   R~   R�   R‚   Rƒ   R„   R…   R‹   RŒ   R‘   R�   R•   Rš   R�   RŸ   R¢   R«   R¬   R¯   R   R   R   R   R°   R´   (    (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR      sh   		
		#									
	(																	
	
							c         C   s#   g  |  D] } | j  ƒ  j ƒ  ^ q S(   N(   R+   R,   (   R*   R/   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyRv   ø  s    c         C   sÙ   d d l  m } d d l m } m } | d  k s> |  d  k rB d Sy | j |  ƒ } Wn t k
 rk } d SX| j | ƒ } | j	 ƒ  } | j
 ƒ  }	 | | ƒ j | d ƒ | ƒ }
 | |	 ƒ j | d ƒ | ƒ } |
 | f S(   Niÿÿÿÿ(   t   sasaki(   t   Decimalt   ROUND_HALF_UPs   0.01(   NN(   NN(   t   cctbx.eltbxR¸   t   decimalR¹   Rº   R   t   tablet	   Exceptiont   at_angstromt   fpt   fdpt   quantize(   t   guess_haR3   R¸   R¹   Rº   R½   t   et   fp_fdpt   f_primet   f_double_primeRÀ   t   fpp(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_fp_fpp_from_sasakiû  s    c         C   sc   d  } xV |  j D]K } y1 | j ƒ  } | d  k s= | | k  rF | } n  Wq t k
 rZ q Xq W| S(   N(   R   R*   Rª   R¾   (   t   serverRª   R_   t	   array_min(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_high_resolution  s    c         C   sœ   d d l  m } |  j ƒ  } | d  k r, d S| j ƒ  } | d  k	 rS t | ƒ } n d  } | j ƒ  } | d  k	 rŒ t | j d | ƒ ƒ } n d  } | | f S(   Niÿÿÿÿ(   R   R   (   NN(	   R   R   R°   R   R   R   R   R
   R	   (   R_   R   R±   R   t   ucR   t   sg(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_miller_array_symmetry  s    c         C   sÅ   d d l  m } |  j ƒ  } | j ƒ  } | d k r8 d S| d k rH d
 S|  j ƒ  s` |  j ƒ  rs | j | ƒ rs d Sd d d d  d! d" d# g } x0 | D]( \ } } t |  | ƒ } | ƒ  r• | Sq• Wd S($   Niÿÿÿÿ(   t   reflection_file_utilst   PHIt   PHIBt   PHIMt   PHICt   PhasesRk   t   FOMMt   Weightss   R-free flagR�   s
   Map coeffsRs   t	   AmplitudeR   t	   Intensityt   is_hendrickson_lattman_arrays	   HL coeffst   is_bool_arrayt   Booleant   is_integer_arrayt   Integert   is_real_arrays   Floating-pointt   Unknown(   RÑ   RÒ   RÓ   RÔ   (   s   FOMRÖ   (   s   is_complex_arrays
   Map coeffs(   s   is_xray_amplitude_arrayRØ   (   s   is_xray_intensity_arrayRÙ   (   s   is_hendrickson_lattman_arrays	   HL coeffs(   s   is_bool_arrayRÜ   (   s   is_integer_arrayRÞ   (   Rß   s   Floating-point(   R   RÐ   R+   R,   RÝ   RÛ   t   looks_like_r_free_flags_infot   getattr(   R_   RÐ   R+   R-   t   methods_and_meaningst   methodt   desct   test(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_array_description'  s,    		c         C   s—   |  d  k r t j | ƒ }  n  |  j d k rB |  j j ƒ  d k sH t ‚ |  j j ƒ  } | j ƒ  d } | j ƒ  } | j	 ƒ  d j ƒ  } d | | f S(   NR   t   ccp4_mtziÿÿÿÿs   /%s/%s(
   R   R   t   any_fileR<   R;   R   t   file_contentt   crystalst   namet   datasets(   R=   R%   Rê   t   last_crystalt   crystalt   dataset(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   get_mtz_label_prefix?  s    c   	      C   s�   d  } d  } d  } x_ |  D]W } | j ƒ  j ƒ  } | | k rF | } q | | k r[ | } q | | k r | } q q W| | | f S(   N(   R   R+   R,   (	   R*   t   f_labt   phi_labt   fom_labt   f_arrayt	   phi_arrayt	   fom_arrayR_   R-   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   extract_map_coeffsJ  s    		t   FPRÓ   RÖ   c         C   sñ   t  j j |  ƒ s! t d ƒ ‚ n  t j |  ƒ } | j d ƒ | j j } t	 | | | | ƒ \ } } } | d  k	 rˆ | j ƒ  rˆ | }	 ne | d  k s  | d  k r¹ t d | | f ƒ ‚ n  | d  k	 rÒ | | }
 n | }
 |
 j | d t ƒ}	 |	 S(   Ns1   No map coefficients are available for conversion.R   s3   One or more of the columns %s and %s was not found.t   deg(   t   ost   patht   isfileR   R   Ré   t   assert_file_typeR)   R*   Rø   R   R�   t   phase_transferR7   (   t   mtz_filet   f_labelt	   phi_labelt	   fom_labelt   mtz_inR*   Rõ   Rö   R÷   t
   map_coeffst
   weighted_f(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   map_coeffs_from_mtz_fileY  s$    	c   
      C   s]  | d  k s! t | t ƒ s! t ‚ t j j |  ƒ sB t d ƒ ‚ n  t j	 |  ƒ } | j
 d ƒ | j j } t | ƒ d k s‚ t ‚ i d d 6d d 6d d	 6d
 d 6} g  } x¬ | D]¤ } | j ƒ  r± | j ƒ  j ƒ  } | j d ƒ rê q± n  | d  k	 r| | k rq± n  | j ƒ  j d } | j | ƒ }	 |	 d  k r?| }	 n  | j | |	 f ƒ q± q± W| S(   Ns1   No map coefficients are available for conversion.R   i    s   2mFo-DFct   2FOFCWTs   mFo-DFct   FOFCWTs   2mFo-DFc_no_fillt   2FOFCWT_no_fills   mFo-DFc_no_fillt   FOFCWT_no_fills   F-model(   R   R   t   listR   Rû   Rü   Rý   R   R   Ré   Rþ   R)   R*   RP   R�   R+   R,   Rl   R-   t   getRO   (
   R   t   limit_arraysR  R*   t	   map_namest   output_arraysR_   R-   R  t   map_name(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt    extract_phenix_refine_map_coeffsp  s2    !

	c         C   s7  g  } g  } g  } xH |  j  D]= }	 |	 j ƒ  j ƒ  }
 |
 j d ƒ r | r | j |
 ƒ q q W|  j d  d  t d  d  d  t d ƒ } x| D]}	 |	 j ƒ  j ƒ  } |	 j	 ƒ  r² qˆ qˆ |	 j
 ƒ  rs| j d ƒ së | j d ƒ së | j d ƒ r÷ | r÷ qˆ n! | j ƒ  j d ƒ r| rqˆ n  | rc| d d !d k rp| d k rP| j d | ƒ q`| j | ƒ qpqŸ| j | ƒ qˆ |	 j ƒ  j d j d ƒ rˆ | j | ƒ qˆ qˆ W|  j d d  d d  d t d d d d d t d d d t ƒ } | r{xK| D]ˆ }	 |	 j ƒ  j ƒ  } xm | D]e } | | g } t | ƒ d k rc| rcx8 | D]  } | | g } | j | ƒ q<Wq| j | ƒ qWqìWn¸ xµ | D]­ }	 |	 j ƒ  j d } | d d k r‚| d k r‚xu | D]j } d | | f } t | ƒ d k r| rx9 | D]! } | d | } | j | ƒ qóWq¾| j | ƒ q¾Wq‚q‚W| S(   NRk   i   s   F-modelR’   R“   t   ANOMi    i   R¡   t   DELFs   FWT,PHWTs   2FOFCWT,PH2FOFCWTRÑ   R%   R-   Ry   RG   R   Rh   RH   RI   i   Rz   t   Fs   %s,%ss   ,%s(   s   FOFCR  R  (   s   FWT,PHWTs   2FOFCWT,PH2FOFCWT(   R*   R+   R,   Rl   RO   Ri   R   RM   R7   RÚ   R�   Rp   t   insertR-   R{   RP   (   RÊ   t
   build_onlyt   include_fomt   exclude_anomaloust   exclude_fmodelR›   Rœ   t
   phi_labelst
   fom_labelsR_   RD   t   phase_arraysR-   t
   amp_arrayst
   data_labelt   phase_labelt   hybrid_labelt   fomt   hybrid_label_R  t   final_label(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR•   ‹  sr    		c         C   s   t  |  d t ƒS(   NR  (   R•   R7   (   RÊ   (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyR™   Ñ  s    c         C   s   d |  | | f S(   Ns   FP=%s PHIB=%s FOM=%s(    (   R  R  R  (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   format_map_coeffs_for_resolveÔ  s    c         C   s–   |  j  ƒ  j ƒ  } d  } d  } d  } xb | D]Z } | j d ƒ \ } } | d k r[ | } q+ | d k rp | } q+ | d k r+ | } q+ q+ W| | | f S(   Nt   =Rù   RÒ   Rk   (   t   stript   splitR   (   R-   t   fieldsR  R  R  t   fieldt   resolve_labelt   array_label(    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   decode_resolve_map_coeffs×  s    		(   t
   __future__R    t   iotbx.gui_toolsR   R   t   libtbx.utilsR   Rû   R   R   R   R    R   Rv   RÉ   RÌ   RÏ   Rç   R   Rñ   Rø   R  R  RM   R7   R•   R™   R%  R-  (    (    (    sI   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/reflections.pyt   <module>   s4   	
ÿ ß						A		