ó
^xTc           @   s   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d   Z d   Z	 d   Z
 d   Z e d	 k r e   e	   e
   e   d
 GHn  d S(   iÿÿÿÿ(   t   division(   t   flex(   t   fit_peak(   t   approx_equalc          C   s  d }  t  j |  |  |   } t  j |  } d } x_ t |   D]Q } xH t |   D]: } x1 t |   D]# } | | | | | f <| d } qc WqP Wq= Wt j d d" d |  } | j   \ } }	 d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d g }
 d# d$ d% f d& d' d( f d  d) d* f d+ d, d- f d. d  d/ f d0 d1 d2 f d3 d4 d  f d5 d6 d7 f d  d8 d  f d9 d  d: f d; d  d< f d= d> d  f d  d  d? f d@ dA d  f d  dB dC f dD dE dF f dH dI dJ dK f d  dL dM f dN dO dP f d  dQ dR f dS d  dT f dU dV d  f d  d  dW f d  dX d  f dZ d[ g } xH t d!  D]: } | | |
 | k sot  |	 | | | k sOt  qOWd  S(\   Ni   i   t   sitet   map_ing      ,@g      7@g      @g      1@g      &@g      .@g      *@g      2@g      @g      4@g      (@g      6@g       @g      0@g      @g      :@g      $@g      8@g       @g      ;@g      "@g      5@g      9@g      @g      @g      3@g      đ?g        i   (   i   i   i   gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUć?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUć?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUć?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUć?gUUUUUUć?gUUUUUUŐ?gUUUUUUć?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUć?gUUUUUUć?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUŐ?gUUUUUUć?gUUUUUUŐ?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUŐ?gUUUUUUŐ?(   gUUUUUUŐ?g        g        gUUUUUUć?gUUUUUUŐ?gUUUUUUć?gUUUUUUć?gUUUUUUŐ?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?gUUUUUUć?(   gUUUUUUć?g        g        (   g        g        g        (   R   t   gridt   doublet   xrangeR   t   pick_map_neighborst   get_26_nearest_neighborst   AssertionError(   t   dt   griddingt   test_mapt   countt   it   jt   kt   fittedt   height_listt   xyz_listt   height_list_correctt   xyz_list_correct(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_fit_peak.pyt   test_pick_map_neighbors   s<    !!c       	   C   sL  d }  t  j |  |  |   } t  j |  } d } t j d |  } x t |   D]z } xq t |   D]c } xZ t |   D]L } | j d t |  |  t |  |  t |  |  f  | | | | f <qu Wqb WqO Wt j d d d	 |  } | j	   \ }	 }
 t j d
 |	 d |
 d d  } t
 | j |  s-t  t
 | j | j  sHt  d  S(   Ni
   g      ű?g       Àg      8@t
   parameterst   rR   i   R   R   R   t   shapet   parabola(   g      ű?g      ű?g      ű?g       Àg       Àg       Àg      8@(   i   i   i   (   R   R   R   R   R   R   t
   get_heightt   floatR	   R
   R   t   xR   t   vertex(   R   R   R   R   t   pR   R   R   t	   neighborsR   R   t   fp(    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_fit_peak.pyt   test_fit_3d_parabola.   s    R	c       
   C   sL  d }  t  j |  |  |   } t  j |  } d } t j d |  } x t |   D]z } xq t |   D]c } xZ t |   D]L } | j d t |  |  t |  |  t |  |  f  | | | | f <qu Wqb WqO Wt j d d d
 |  } | j	   \ }	 }
 t j d |	 d |
 d d  } t
 | j |  s-t  t
 | j | j  sHt  d  S(   Ni
   g      ű?g       Àg      ô?g      8@R   R   R   i   R   R   R   R   t	   quadratic(
   g      ű?g      ű?g      ű?g       Àg       Àg       Àg      ô?g      ô?g      ô?g      8@(   i   i   i   (   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#   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_fit_peak.pyt   test_fit_3d_quadraticD   s    R	c       
   C   sL  d }  t  j |  |  |   } t  j |  } d } t j d |  } x t |   D]z } xq t |   D]c } xZ t |   D]L } | j d t |  |  t |  |  t |  |  f  | | | | f <qu Wqb WqO Wt j d d d
 |  } | j	   \ }	 }
 t j d |	 d |
 d d  } t
 | j |  s-t  t
 | j | j  sHt  d  S(   Ni
   g      ű?g       Àg      ô?g      8@R   R   R   i   R   R   R   R   t   gaussian(
   g      ű?g      ű?g      ű?g       Àg       Àg       Àg      ô?g      ô?g      ô?g      8@(   i   i   i   (   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#   (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_fit_peak.pyt   test_fit_3d_gaussianZ   s    R	t   __main__t   OKN(   t
   __future__R    t   scitbx.array_familyR   t   scitbx.mathR   t   libtbx.test_utilsR   R   R$   R&   R(   t   __name__(    (    (    sL   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/math/tests/tst_fit_peak.pyt   <module>   s   	'			