ó
S™xTc           @   sk   d  d l  m Z d „  Z d e f d „  ƒ  YZ d „  Z e d k rg d  d l Z e d e j d	 ƒ n  d S(
   iÿÿÿÿ(   t   divisionc            s  | j  ƒ  } | d k  j t ƒ } | j ƒ  } | d k rý | d k rý | j ƒ  GHd | | | | f GH| j | d k  ƒ } | j | d k ƒ } d d l m ‰  ‡  f d †  } | | ƒ } | | ƒ }	 d }
 |
 d	 GHx# t | |	 ƒ D] } |
 | GHqç Wn  d  S(
   Ni    s)   fraction_of_negative_obs: %.6g (%d of %d)iÿÿÿÿ(   t   flexc            sW   d d l  m } | ƒ  } ˆ  j d |  d d ƒ j d | d d d	 d
 ƒ | j ƒ  j ƒ  S(   Niÿÿÿÿ(   t   StringIOt   datat   n_slotsi
   t   ft   prefixs     t   format_cutoffss   %8.2f(   t	   cStringIOR   t	   histogramt   showt   getvaluet
   splitlines(   R   R   t   sio(   R   (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyt   hist   s
    	s
   %-35s | %ss#   Histogram of negative observations:s   positive observations:(   s#   Histogram of negative observations:s   positive observations:(	   R   t   countt   Truet   sizet   infot   selectt   cctbx.array_familyR   t   zip(   t   id_codet   obst   dt   n_negt   n_allt   negt   posR   t	   lines_negt	   lines_post   pair_fmtt   pair(    (   R   sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyt/   report_fraction_of_negative_observations_if_any   s&     t   extract_from_cif_filesc           B   sA   e  Z d  d d d d g Z d „  Z d „  Z d „  Z d „  Z RS(	   t   c_obst   xray_structuret   non_hydrogen_selectiont   non_hydrogen_iselectiont	   edge_listc         C   s(   x! |  j  D] } t |  | d  ƒ q
 Wd  S(   N(   t	   __slots__t   setattrt   None(   t   Ot   slot(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyt   init_slots_with_none%   s    c         C   s'   |  j  ƒ  |  j | | | | | ƒ d  S(   N(   R-   t   process(   R+   t	   report_idt	   refl_filet   refl_cift
   model_filet	   model_cif(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyt   __init__)   s    
c            sˆ  g  } g  } d d  l  ‰  ‡  f d †  } | | | ƒ | | | ƒ d d  l }	 |	 j j d | d | ƒ }
 |
 j ƒ  d  k r‰ t d ƒ ‚ n  |
 j ƒ  d  k rª t d ƒ ‚ n  | j ƒ  } g  } g  } x€ | D]x } t	 | j
 ƒ  ƒ } | j d ƒ d k rÉ | j ƒ  r| j | ƒ n | j ƒ  rÉ | j | ƒ n qÉ t | | ƒ qÉ qÉ Wt | ƒ d k rg| d |  _ n. t | ƒ d k r‰| d |  _ n t d	 ƒ ‚ |  j j d
 |
 ƒ |  _ d d GH|  j j ƒ  d d GH|	 j j j d | ƒ j ƒ  d |  _ |  j j d
 |
 ƒ |  _ |  j j ƒ  j ƒ  d d GH|  j j ƒ  |  _ |  j j ƒ  |  _ |  j | ƒ |  _  |  j  d  k	 r„d Gt |  j  ƒ G| GHn  d  S(   Niÿÿÿÿc            sI   xB |  j  ƒ  j ƒ  D]. } ˆ  j j j d | ƒ j } | j | ƒ q Wd  S(   Nt	   cif_block(   t   modelt   valuest   cift   builderst   crystal_symmetry_buildert   crystal_symmetryt   append(   R8   t   bufferR5   t   cs(   t   iotbx(    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyt   get_cs1   s    t   from_coordinate_filest   from_reflection_filess.   Unit cell not found in both cif and hkl files.s/   Space group not found in both cif and hkl file.t   _measi    s   Missing diffraction data.R;   t   .iO   t	   file_paths   len(edge_list):(!   t   iotbx.cif.builderst   cctbx.crystalt   crystalt   select_crystal_symmetryt	   unit_cellR*   t   RuntimeErrort   space_group_infot   as_miller_arrayst   strR   t   findt   is_xray_intensity_arrayR<   t   is_xray_amplitude_arrayR!   t   lenR#   t   customized_copyt   show_comprehensive_summaryt   xrayt	   structuret   from_cifR7   R$   t   show_summaryt   show_scattererst   hd_selectionR%   t
   iselectionR&   t   process_geom_bondR'   (   R+   R/   R0   R1   R2   R3   RA   RB   R@   t   cctbxt   combined_cst   miller_arrayst   meas_at   meas_it   mat   s(    (   R?   sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyR.   -   s^    				c         C   sf  |  j  } | j ƒ  } t t | j ƒ  t | j ƒ  ƒ ƒ ƒ } t | ƒ | j ƒ  k rX d  St	 ƒ  } xø | j
 ƒ  j ƒ  D]ä } g  d D] } | j d | ƒ ^ q� } | j d  ƒ d k r¹ d  St | d ƒ t | d ƒ k rÝ d  Sxx t | Œ  D]j }	 t t g  |	 D] }
 | j |
 ƒ ^ qý ƒ ƒ } | j d  ƒ d k r7d  S| | k rGd  S| j | ƒ qê Wqt Wt | ƒ S(   Nt   12t   _geom_bond_atom_site_label_i    i   (   R$   t
   scattererst   dictR   t   extract_labelst   rangeR   RR   R*   t   setR6   R7   t   getR   t   tuplet   sortedt   add(   R+   R3   t   xst   scst   i_seq_by_lblt   edge_setR5   Rc   t	   lbl_listst   lbl_pairt   lblt   i_seqs(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyR\   h   s*    	'	# .(   t   __name__t
   __module__R(   R-   R4   R.   R\   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyR"      s   				;c         C   s	  d d  l  } d d  l } d d  l } d d  l } | j d ƒ d d l m } | j d ƒ | j j	 j
 d d d d ƒ } | j ƒ  } g  } g  } xL |  D]D }	 |	 j d ƒ d k rÎ | j | j d	 |	 ƒ ƒ q— | j |	 ƒ q— W| j d
 | ƒ }
 |
 j ƒ  |
 j ƒ  } Ht | ƒ d k s&t d ƒ ‚ | d } | d } | j j d | ƒ } | j j d | ƒ } t d d d | d | d | d | ƒ } | j j ƒ  } | j ƒ  | j rÞ| j } d G| j t ƒ GH| j d | ƒ } Hn  | j } | j  r#| j! d | d d d t ƒ j" ƒ  j# ƒ  j$ ƒ  } n  | j% ƒ  sA| j& ƒ  sAt ‚ | j% ƒ  rh| } | j' d d ƒ } n | } | j( d d ƒ } | j ƒ  } | j) d | j* ƒ | j+ d  k rÄ| j- d | j. ƒ n | j/ d | j+ ƒ | j j	 j0 d  | d! | d" | d# | d$ | ƒ d  S(%   Niÿÿÿÿi    (   R   t   iteration_limitid   t   additional_phil_stringso   remove_hydrogen = True
  .type = bool
f_obs_is_f_calc = True
  .type = bool
reset_u_iso = None
  .type = float
t   =t   argt   sourcesi   s   refl_cif.hkl model.cifi   RE   R/   t
   cif_refineR0   R1   R2   R3   s   Removing hydrogen atoms:t	   selectionR$   t	   algorithmt   directt   cos_sin_tablet   xtal_3_7t   shelxlt   rms_differencet   spreadt   valuet   structure_idealt   structure_shaket   paramst   f_obst   i_obs(1   t   cctbx.omz.devt	   iotbx.cift
   cctbx.xrayt   randomt   seedR   R   t   set_random_seedt   omzt   devt   get_master_philt!   command_line_argument_interpreterRO   R<   R.   t   fetchR
   t   extractRR   t   AssertionErrorR8   t   readerR"   R$   t   deep_copy_scattererst   convert_to_isotropict   remove_hydrogenR%   R   t   FalseR   R#   t   f_obs_is_f_calct!   structure_factors_from_scattererst   f_calct
   amplitudest#   set_observation_type_xray_amplitudeRP   RQ   t	   f_sq_as_ft	   f_as_f_sqt   shake_sites_in_placet   shake_sites_rmsdt   reset_u_isoR*   t	   shake_adpt   shake_adp_spreadt	   set_u_isot   run_refinement(   t   argsR]   R?   R�   R   t   master_philt   argument_interpretert   phil_objectst   remaining_argsR|   t	   work_philRŠ   R0   R2   R1   R3   t   mgrRˆ   t   selR#   RŒ   R‹   R‰   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyt   run   s|    	


	
					t   __main__NR­   i   (	   t
   __future__R    R!   t   objectR"   Rµ   Rw   t   syst   argv(    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/omz/cif_refine.pyt   <module>   s   	c	T