ó
1xTc           @   s<   d  d l  m Z d   Z d   Z d e f d     YZ d S(   i˙˙˙˙(   t   divisionc   	      C   sť   d d l  m } | j |  |  } | j | |  } | d k sH t  | d d k s^ t  | | } |  | | d | } | | d } d | | d | | | d } | | | f S(   sF   scale factor for (fo-k*fc)**2, only similar to factor for abs(fo-k*fc)i˙˙˙˙(   t   flexi    i   iţ˙˙˙i   (   t   scitbx.array_familyR   t   sumt   AssertionError(	   t   fot   fcR   t   k_numt   k_dent   kt   k_d_numt   k_dt   k_d2(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/targets/r1.pyt   calc_k   s    
"c         C   s  d d l  m } |  | | } | j |  j   d  } | j | d k  d  | | 9} | j |  } | j |   }	 |	 d k s t  | |	 }
 | d  k r  |
 S| | j | |  | | |	 } | d  k rÚ |
 | f S| | j | |  d | | |	 } |
 | | f S(   Ni˙˙˙˙(   R   i   i    i   (   R   R   t   doublet   sizet   set_selectedR   R   t   None(   R   R   R	   R   R   R   t   deltast   signst   t_numt   t_dent   tt   t_dt   t_d2(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/targets/r1.pyt   calc_t   s     

$
(t   targetc           B   s5   e  Z d d d  d  Z d   Z d   Z d   Z RS(   g0ä.˙++c         C   sě  | | g j  d   d k s! t  | d  k	 rO d d l m } | j |  } n  t | |  \ |  _ |  _ |  _	 t
 | | |  j |  j |  j	  \ |  _ |  _ |  _ d  |  _ d  |  _ | d  k	 rč| d } | | k j   } | j | d  | j | d  |  j | | |  _ |  j j | d  | j |  } | j |  }	 | | |	 |	 | |	 }
 } } |  j |
 |  j | | } |  j | |  j |
 | } |  j |  j | | |	 } | j | | |  | |  _ |  j j | d  n  d  S(   Ni   i˙˙˙˙(   R   i   y                i    (   i    i    i    (   t   countR   R   R   R   t   absR   R	   R   R   R   R   t   gt   ct   f_calc_gradientst   f_calc_hessianst
   iselectionR   t   realt   imagt   vec3_double(   t   Ot   f_obst   f_calct
   f_calc_abst
   fca_sq_epsR   t   fca_sqt	   isel_zerot   at   bt   aat   bbt   abt   haat   hbbt   hab(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/targets/r1.pyt   __init__#   s.    !!3		
 c         C   s   |  j  S(   N(   R   (   R%   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/targets/r1.pyt   target_work<   s    c         C   s   |  j  S(   N(   R   (   R%   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/targets/r1.pyt   gradients_work?   s    c         C   s   |  j  S(   N(   R    (   R%   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/targets/r1.pyt   hessians_workB   s    N(   t   __name__t
   __module__R   R4   R5   R6   R7   (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/targets/r1.pyR   !   s   		N(   t
   __future__R    R   R   t   objectR   (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/xray/targets/r1.pyt   <module>   s   		