ó
D™xTc           @   s  d  d l  m Z d  d l m Z d  d l Z d  d l m Z d  d l m Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d k rý e
 ƒ  e ƒ  e ƒ  e ƒ  e ƒ  e ƒ  e ƒ  e ƒ  e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   flexN(   t   maptbx(   t   millerc   	      C   sã   t  j d |  d | ƒ } | j ƒ  } | j ƒ  } | j ƒ  } | j ƒ  } t t | ƒ ƒ t t | ƒ ƒ k oƒ t t | ƒ ƒ k n sŽ t ‚ d d d g } x- t	 d ƒ D] } | | k j
 t ƒ | | <qª W| t | j ƒ  ƒ f S(   Nt   map_datat	   thresholdi    i   (   R   t   connectivityt   resultt   regionst   maximum_coorst   maximum_valuest   lent   listt   AssertionErrort   ranget   countt   True(	   t   cmapR   t   cot
   map_resultt   regst   coorst   valst   vt   i(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt   getvs   s    Fc          C   s™  d }  t  j j d d  d |  ƒ } | j ƒ  } t j d | j ƒ  d d d | j ƒ  ƒ } | j	 d d	 d
 d ƒ j
 ƒ  } t j d | d | ƒ } | j ƒ  } t j d | d d ƒ } | j ƒ  } t | j ƒ  ƒ }	 t |	 d ƒ }
 |	 j |
 ƒ } d d d g } x- t d ƒ D] } | | k j t ƒ | | <q
W| d d k sCt ‚ | d d k  sYt ‚ | d | d | d d k st ‚ |	 | d  k s•t ‚ d  S(   NsŽ   
CRYST1   10.000  10.000   10.000  90.00  90.00  90.00 P 1
HETATM    1  C    C      1       2.000   2.000   2.000  1.00 20.00           C
END
t   source_infot   linest	   unit_cellt   pre_determined_n_realid   t   space_group_infot   d_ming      ð?t	   algorithmt   directt   crystal_griddingt   fourier_coefficientsR   R   g      Y@i   i    i   i   i˜:  i@B (   id   id   id   (   t   iotbxt   pdbt   inputt   Nonet   xray_structure_simpleR   R"   R   R   t   structure_factorst   f_calcR   t   fft_mapt   real_map_unpaddedR   R   R   R   t   maxt   indexR   R   R   R   (   t   pdb_strt   pdb_inpt   xrst   cgt   fcR+   R   R   R   t   volumest
   max_volumet	   max_indexR   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt	   exercise1   s*    &c    	      C   s  d }  t  j j d d  d |  ƒ } | j ƒ  } t j d | j ƒ  d d d | j ƒ  ƒ } | j	 d d	 d
 d ƒ j
 ƒ  } t j d | d | ƒ } | j ƒ  | j ƒ  } t | d ƒ \ } } | d d d g k sÓ t ‚ | d  | k sé t ‚ t | d ƒ \ } } | d | d | d d k s$t ‚ | d d k s:t ‚ | d  | k sPt ‚ t | d ƒ \ } } | d | d | d d k s‹t ‚ t | d | d ƒ d k  s¯t ‚ | | k sÁt ‚ t | d ƒ \ } } | d d d g k sñt ‚ | d  | k st ‚ d  S(   NsÝ   
CRYST1   10.000  10.000   10.000  90.00  90.00  90.00 P 1
HETATM    1  C    C      1       2.000   2.000   2.000  1.00  2.00           C
HETATM    1  C    C      1       3.500   2.000   2.000  1.00  2.00           C
END
R   R   R   R   id   R   R   g      ð?R    R!   R"   R#   iœÿÿÿi    i@B i   i   i   i
   iè  (   id   id   id   (   R$   R%   R&   R'   R(   R   R"   R   R   R)   R*   R   R+   t   apply_sigma_scalingR,   R   R   t   abs(	   R/   R0   R1   R2   R3   R+   R   R   R4   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt	   exercise36   s0    
&&$c          C   sb  t  j t  j d d d ƒ ƒ }  |  j d ƒ x^ t d d ƒ D]M } xD t d d ƒ D]3 } x* t d d ƒ D] } d |  | | | f <qg WqQ Wq; Wt |  d ƒ \ } } | d d d g k s¼ t ‚ | d	  | k sÒ t ‚ t |  d
 ƒ \ } } | d d d g k st ‚ | d	  | k st ‚ t |  d ƒ \ } } | d d d g k sHt ‚ | d  | k s^t ‚ d  S(   Nid   i   i
   i   i   iX> iè  i    i   iûÿÿÿi@B (   R   t   doublet   gridt   fillR   R   R   (   R   R   t   jt   kR   R4   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt	   exercise4Z   s    c          C   sb  t  j t  j d d d ƒ ƒ }  |  j d ƒ x^ t d d ƒ D]M } xD t d d ƒ D]3 } x* t d d ƒ D] } d |  | | | f <qg WqQ Wq; Wt |  d ƒ \ } } | d d d g k s¼ t ‚ | d	  | k sÒ t ‚ t |  d
 ƒ \ } } | d d d g k st ‚ | d	  | k st ‚ t |  d ƒ \ } } | d d d g k sHt ‚ | d  | k s^t ‚ d  S(   Nid   i   i
   i   i   iX> iè  i    i   iûÿÿÿi@B (   R   t   intR<   R=   R   R   R   (   R   R   R>   R?   R   R4   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt
   exercise41m   s    c          C   sZ  t  j t  j d d d ƒ ƒ }  |  j d ƒ x  t d ƒ D]’ } x‰ t d ƒ D]{ } xr t d ƒ D]d } | d k  s| | d k r^ | d k  s” | d k r^ | d k  s¬ | d k r^ d |  | | | f <q^ q^ WqK Wq8 Wt |  d ƒ \ } } | d d d g k sþ t ‚ | d  | k st ‚ |  j d ƒ xt d ƒ D]} xÿ t d ƒ D]ñ } xè t d ƒ D]Ú } d | k  oqd k  n rÄd | k  o�d k  n rÄd | k  o©d k  n rÄd |  | | | f <n  d	 | k  oÛd
 k  n rTd	 | k  o÷d
 k  n rTd	 | k  od
 k  n rTd
 |  | | | f <qTqTWqAWq.Wt |  d ƒ \ } } | d d d g k sjt ‚ | | k s|t ‚ t |  d	 ƒ \ } } | d d d g k s¬t ‚ | d  | k sÂt ‚ |  j d ƒ x> t d ƒ D]0 } x' t d ƒ D] } d |  d | | f <qïWqÜWt |  d ƒ \ } } | d d d g k s@t ‚ | d  | k sVt ‚ d  S(   Nid   i    i
   iZ   i   i # i@  i   i   i   iÀA i@   i B i0 i'  (   R   R;   R<   R=   R   R   R   (   R   R   R>   R?   R   R4   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt	   exercise5�   s>    H"TT"c          C   sI  t  j t  j d d d ƒ ƒ }  |  j d ƒ d |  d <|  d	 <t |  d ƒ \ } } | d d d g k sm t ‚ | | k s t ‚ |  j d ƒ d |  d
 <|  d <t |  d ƒ \ } } | d d d g k sÎ t ‚ | | k sà t ‚ |  j d ƒ d |  d <|  d <t |  d ƒ \ } } | d d d g k s/t ‚ | d  | k sEt ‚ d  S(   Nid   i    i
   i   i   i   i>B (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   R   R;   R<   R=   R   R   (   R   R   R4   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt	   exercise6¨   s     c          C   sz  t  j t  j d d d ƒ ƒ }  |  j d ƒ xt d ƒ D]} xÿ t d ƒ D]ñ } xè t d ƒ D]Ú } d | k  o{ d k  n rÎ d | k  o— d k  n rÎ d | k  o³ d k  n rÎ d |  | | | f <n  d | k  oå d k  n r^ d | k  od k  n r^ d | k  od k  n r^ d |  | | | f <q^ q^ WqK Wq8 Wt j d |  d	 d ƒ } | j ƒ  } t | j	 ƒ  ƒ } | j
 d
 d ƒ } | d k j t ƒ d k s­t ‚ | d k j t ƒ d k sÎt ‚ | j
 d
 d ƒ } | d k j t ƒ d k st ‚ | d k j t ƒ d k s"t ‚ | j
 d
 d ƒ } | d k j t ƒ d k sUt ‚ | d k j t ƒ d k svt ‚ d  S(   Nid   i    i   i
   i   i   i   R   R   t   volume_cutoffi   i  i'? iÙ  ig? iè  i@B (   R   R;   R<   R=   R   R   R   R   R   R   t   volume_cutoff_maskR   R   R   (   R   R   R>   R?   R   R   R4   t   vol_mask(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt   exercise_volume_cutoff½   s*    TT"!!!!!c          C   s  t  j t  j d d d ƒ ƒ }  |  j d ƒ xt d ƒ D]} xÿ t d ƒ D]ñ } xè t d ƒ D]Ú } d | k  o{ d k  n rÎ d | k  o— d k  n rÎ d | k  o³ d k  n rÎ d |  | | | f <n  d | k  oå d k  n r^ d | k  od k  n r^ d | k  od k  n r^ d |  | | | f <q^ q^ WqK Wq8 Wd |  d <d |  d <t j d	 |  d
 d ƒ } t | j ƒ  ƒ } t | j	 ƒ  ƒ } t | j
 ƒ  ƒ } t | ƒ t | ƒ k oÏt | ƒ k n sÚt ‚ | d d d g k sõt ‚ | d d d g k st ‚ d  S(   Nid   i    i   i
   i   i   i   i   R   R   g        g      .@g      9@(   i   i   i   (   i   i   i   (   i    i    i    (   i   i   i   (   i   i   i   (   R   R;   R<   R=   R   R   R   R   R	   R
   R   R   R   (   R   R   R>   R?   R   t   m_coorst   m_valst   vols(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt   exercise_max_values×   s$    TT"

4c         C   sH   d Gt  |  j ƒ  ƒ GHd Gt  |  j ƒ  ƒ GHd Gt  |  j ƒ  ƒ GHd GHd  S(   Ns   volumes    :s   values     :s   coordinates:s   ============(   R   R   R
   R	   (   R   (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt   debug_printingì   s    c          C   s÷  t  j t  j d d d ƒ ƒ }  |  j d ƒ x* t d d ƒ D] } | |  | d d f <q; WxE t t d d ƒ t d d d ƒ ƒ D] \ } } | |  | d d f <q} WxB t t d d	 ƒ t d d
 ƒ ƒ D] \ } } | |  | d d f <qÂ WxE t t d	 d ƒ t d
 d d ƒ ƒ D] \ } } | |  | d d f <q
Wt j d |  d d ƒ } t j d |  d d ƒ } t j d |  d d ƒ } | j d | d d d t	 ƒ } | d k j
 t	 ƒ d k s´t ‚ | j d | d d ƒ } | d k j
 t	 ƒ d k sít ‚ | j d | d d ƒ } | d k j
 t	 ƒ d k s&t ‚ | j d | d d ƒ } | d k j
 t	 ƒ d k s_t ‚ | j d | d d
 ƒ } | d k j
 t	 ƒ d k s˜t ‚ t j d |  d d ƒ } t j d |  d d ƒ } | j d | d d ƒ } | d k j
 t	 ƒ d k st ‚ t j d |  d d ƒ } t j d |  d d ƒ } t j d |  d d ƒ } | j d | d d d t ƒ } | d k j
 t	 ƒ d k sˆt ‚ | j d | d d d t ƒ } | d k j
 t	 ƒ d k sÇt ‚ | j d | d d d t ƒ } | d k j
 t	 ƒ d k st ‚ | j d | d d d t ƒ } | d k j
 t	 ƒ d k sEt ‚ | j d | d d
 d t ƒ } | d k j
 t	 ƒ d k s„t ‚ t j d |  d d ƒ } t j d |  d d ƒ } | j d | d d d t ƒ } | d k j
 t	 ƒ d k sót ‚ d  S(   Nid   i   i
   i(   i   i<   i   iÿÿÿÿiF   i   iZ   R   R   i   i   i   t   connectivity_object_at_t1t"   elimination_volume_threshold_at_t1i   t   zero_all_interblob_regioni    i#   i   i2   i?   i�  i�  iQ  i^  (   R   R;   R<   R=   R   t   zipR   R   t   noise_elimination_two_cutoffsR   R   R   t   False(   R   R   R   t   co1t   co2t   co3t   res_mask(    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt&   exercise_noise_elimination_two_cutoffsó   s–    1.1		!		!		!		!		!		!			!		!		!		!		!		t   __main__(   t
   __future__R    t   scitbx.array_familyR   t	   iotbx.pdbR$   t   cctbxR   R   R   R7   R:   R@   RB   RC   RD   RH   RL   RM   RX   t   __name__(    (    (    sO   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_connectivity.pyt   <module>   s2   		#	$			'					…