ó
ä™xTc           @   s~   d  d l  m Z d  d l m Z d  d l Z d  d l Z d e f d „  ƒ  YZ d „  Z e	 d k rz e d e j
 d	 ƒ n  d S(
   iÿÿÿÿ(   t   division(   t   binary_searchNt   random_callbackc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sL  | |  _  | |  _ t | t d t | | d | j ƒ  ƒ ƒ | ƒ |  _ t | | d d d ƒ } t ƒ  |  _ xÔ t	 |  j ƒ | k rGt | j
 d d ƒ | t	 |  j ƒ ƒ } | d | j
 | | d ƒ } | | k  sâ t ‚ x_ t | t | | | ƒ ƒ D]A } | |  j k rÿ |  j j | ƒ t	 |  j ƒ | k r@Pq@qÿ qÿ Wqt Wd  S(   Ni   gš™™™™™É?g      à?i   (   t   lowt   hight   mint   maxt   intt   randomt   critical_pointt   sett
   bad_pointst   lent	   randranget   AssertionErrort   xranget   add(   t   Ot   rngR   R   t   n_badt   n_blockt   begint   i(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/tst_binary_search.pyt   __init__   s     		((#c         C   sJ   | |  j  k s t ‚ | |  j k  s* t ‚ | |  j k r= d  S| |  j k  S(   N(   R   R   R   R   t   NoneR	   (   R   t   point(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/tst_binary_search.pyt   __call__   s
    (   t   __name__t
   __module__R   R   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/tst_binary_search.pyR      s   	c      	      s1  t  |  ƒ d k s t ‚ t j d d d d d d  ƒ } | j d k sK t ‚ g  ‰  ‡  f d †  } t j d d d d d | ƒ } ˆ  d	 d
 d d d d d d g k s¨ t ‚ ˆ  2t j d d d d d | ƒ } ˆ  d d d d d d d d g k sô t ‚ x1t d ƒ D]#} t d t j	 | ƒ d | d d | d d ƒ } t j d | j
 d | j d | ƒ } | j | j k sst ‚ | j | j k  s‹t ‚ | j | j k s£t ‚ x6 t | j d | j ƒ D] } | | j k s½t ‚ q½W| j j | j ƒ s÷t ‚ | j | j k st ‚ | j d k st ‚ qWd GHd  S(    Ni    R   i   R   i   t   callbackc            s   ˆ  j  |  ƒ d  S(   N(   t   appendR   (   R   (   t   points_tested(    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/tst_binary_search.pyR   )   s    i	   i   i   i   i   i   i   i   i   i   i'   i"   i$   i%   i&   i#   i    i!   i   R   i   i   i7  t   OK(   R   R   R   t   true_false_bad_biased_upR   t   number_of_iterationsR   R   R   t   RandomR   R   t   low_point_falseR	   t   high_point_trueR   t   issubsett   number_of_callbackst   bad_gap_width(   t   argst   infoR   t   i_trialR   (    (   R   sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/tst_binary_search.pyt   run!   s>    		*	*
				 t   __main__R)   i   (   t
   __future__R    t   libtbxR   R   t   syst   objectR   R,   R   t   argv(    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/tst_binary_search.pyt   <module>   s   	'