ó
oxTc           @   sw  d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 m
 Z
 m Z m Z d  d l Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- d   Z. d    Z/ d!   Z0 d"   Z1 d#   Z2 d$   Z3 d%   Z4 d&   Z5 d'   Z6 d(   Z7 d)   Z8 d*   Z9 d+   Z: d,   Z; d-   Z< d.   Z= d/   Z> d0   Z? d1   Z@ d2   ZA d3   ZB d4   ZC d5   ZD d6   ZE d7   ZF d8   ZG d9   ZH d:   ZI d;   ZJ d<   ZK d=   ZL d>   ZM d?   ZN d@   ZO dA   ZP dB   ZQ dC   ZR eS dD k rse jT e jU dE dF f  ZV dE ZW eX e jU  dE eV jW k rBeY eV jZ dG  ZW n  eV j[ raeH dH eW dI dE  n
 eR eW  dJ GHn  d S(K   i˙˙˙˙(   t   division(   t   flex(   t   command_line(   t   matrix(   t   Exception_expectedt   approx_equalt   not_approx_equalt	   show_diffN(   t   StringIOc          C   s  t  j   }  |  j   d k s$ t  |  j   d k s< t  |  j   sN t  |  j   d k sf t  |  j   d k s~ t  |  j   d k s t  |  j t	  d k są t  |  j t
  d k sĚ t  |  j   sß t  |  j   sň t  t  j d  }  |  j   d k st  |  j   d k s1t  |  j   d k sIt  |  j   d k sat  |  j   d k syt  |  j t	  d k st  |  j t
  d k sŻt  |  d  d k sÇt  |  d   d k sßt  |  j   sńt  |  j   st  |  j   st  t  j d  j   d! k s8t  t  j d d  j   d" k s\t  t  j d d d  j   d# k st  t  j d d d d  j   d$ k s­t  t  j d d d d d  j   d% k sÚt  t  j d d d d d d	  j   d& k s
t  t  j d  j d  j   d' k s4t  t  j d d  j d d  j   d( k sdt  t  j d d d  j d d d  j   d) k st  t  j d d d d  j d d d d  j   d* k sÖt  t  j d d d d d  j d d d d d  j   d+ k st  t  j d d d d d d	  j d d d d d d	  j   d, k s`t  t  j d- d.  }  |  j   d k st  |  j   d k s˘t  |  j   sľt  |  j   d/ k sÍt  |  j   d0 k sĺt  |  j   d1 k sýt  |  j t	  d2 k st  |  j t
  d3 k s3t  |  d4  d k sKt  |  d5  d k sct  |  j d6  syt  |  j   st  |  j   st  t  j d7 d8 t
  }  |  j   d k sĚt  |  j   d k sät  |  j   d9 k süt  |  j   d: k st  |  j   d; k s,t  |  j t	  d< k sGt  |  j t
  d= k sbt  |  d>  d k szt  |  d?  d k st  |  j d@  s¨t  |  j dA  sžt  |  j   sŃt  |  j   sät  |  j   s÷t  |  j dB  |  j   st  |  j   dC k s.t  |  j t
  dD k sIt  |  j dE t
  |  j   dF k sqt  |  j   st  |  j   st  |  j   sŠt  t j |   } t j |  } |  j   | j   k sĺt  |  j   | j   k st  |  j   | j   k s!t  |  | k s3t  |  | k sFt  t  j dG dH t
  j dI  } |  | k swt  |  | k st  t  j dJ dK t
  j dL  } |  | k sşt  |  | k sĚt  t  j dM dN t
  j dO  } |  | k sýt  |  | k s	t  t  j d d  }  t  j dP dQ  } |  |  k sE	t  | | k sW	t  |  | k si	t  | |  k s{	t  | j dR  | j   s	t  |  |  k s­	t  | | k sż	t  |  | k sŃ	t  | |  k să	t  | j dS  | j   s
t  | | k s
t  |  | k s&
t  | |  k s8
t  t  j d  j d  j   s\
t  t  j d  j d  j   s
t  t  j d  t  j d  j d  k sŽ
t  t  j d d  j d d  j   sŘ
t  t  j d d  j d d  j   st  t  j d d  t  j d d  j d d  k s9t  t  j d d d  j d d d  j   sit  t  j d d d  j d d d  j   st  t  j d d d  t  j d d d  j d d d  k sŮt  t  j d d d d  j d d d d  j   st  t  j d d d d  j d d d d  j   sFt  t  j d d d d  t  j d d d d  j d d d d  k st  t  j d d d d d  j d d d d d  j   sĘt  t  j d d d d d  j d d d d d  j   st  t  j d d d d d  t  j d d d d d  j d d d d d  k sXt  t  j dT  }  |  j   |  k st  t  j dU dV  }  |  j   } | j   dW k sľt  | j   |  j   k sÓt  | j   dX k sët  | j   |  j   k s	t  t  j dY dZ  j d[  }  |  j   d] k s<t  |  j   } | j   d^ k s`t  | j   |  j   k s~t  | j   d_ k st  d  S(`   Ni    i   i   i   i   i   i   i   i   i   i<   i   i;   ix   i	   iw   i÷˙˙˙iö˙˙˙iř˙˙˙(    (    (    (    (    (   i   i   i   (   i    i    i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i    i    i    (   i   i   i   (   i   (   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   i   (   i   (   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i    i    i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i	   (   i   i   i	   (   i   i   i   (   i   i   i   (   i   i   i   (   i    i    i    (   i   i    i    (   i   i÷˙˙˙i   (   i   i÷˙˙˙i   (   i   iö˙˙˙i   (   i   i÷˙˙˙i   (   i   iř˙˙˙i   (   i   i   i   (   i   i   i   (   i   i÷˙˙˙i   (   i   i   i   (   i   i   i   (   i   i÷˙˙˙i   (   i   i   i   (   i   i   i   (   i   i÷˙˙˙i   (   i    i    (   i   i   (   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i    i    i    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i   (   i    i    i    (   i   i   i   (   R   t   gridt   ndt   AssertionErrort   size_1dt
   is_0_basedt   origint   allt   lastt   Truet   Falset	   is_paddedt   is_trivial_1dt	   set_focust   focust   is_valid_indext   picklet   dumpst   loadst   shift_origint   focus_size_1d(   t   gt   st   lt   h(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_grid   s   !$'*-0*06<BH$%-*+601?67H<=Qc       	   C   sŰ
  t  j   }  |  j   d k s$ t  |  j   d k s< t  |  j   j   d k sZ t  t |  j   j    d k s~ t  t |  j   j	    d k s˘ t  t |  j   j
    d k sĆ t  t |  j   j
 t   d  k sí t  t |  j   j
 t   d! k st  t |  j   j    d" k s8t  t |  j   j t   d# k s_t  t |  j   j t   d$ k st  |  j   j   st  |  j   j   sˇt  |  j   j   sĎt  |  j   d k sçt  |  j   sůt  t |  j    d% k st  t |  j	    d& k s5t  t |  j
    d' k sSt  t |  j
 t   d( k stt  t |  j
 t   d) k st  |  j   s¨t  t |  j    d* k sĆt  t |  j t   d+ k sçt  t |  j t   d, k st  |  j   d k s t  |  j   s2t  t |   d- k sJt  t  j t  j d.   }  |  j   sut  t  j t  j d/   }  |  j   st  t  j t  j d0   }  |  j   d k sĎt  |  j   d k sçt  t |   d g d k st  t  j t  j d1  d	  }  |  j   d k s9t  t |   d	 g d k sXt  t  j d  }  |  j   d k st  t |   d2 k st  t  j d d	  }  |  j   d k sÁt  t |   d3 k sŮt  t  j d4  }  |  j   d k s t  t |   d5 k st  t  j d d d d g  }  |  j   d k sKt  t |   d6 k sct  t  j t d
 d   }  |  j   d k st  t |   d7 k sŤt  t  j |   d
 d d g k sĎt  x˛t t g D]¤} xt t g D]} xt d  D]v} xmt d  D]_} t   } x0 t |  D]" } | j | t  j |    q1Wt  j | |   } | d k r| j   d8 k sąt  n | j   | | f k sąt  y, t  j | | g   | d g  g   Wn+ t k
 r
} t |  d k st  n Xt  y/ t  j | | d g  | d g  g   Wn+ t k
 rm} t |  d9 k stt  qXt  qWqWqďWqÜWxk d g d g d g d f g D]K }	 y t  j |	  Wn+ t k
 rç} t |  d k sît  qŁXt  qŁWt t  j d d   t d  k st  t t  j d d d d   t d d  k sOt  t t  j d d d d d d   t d d d  k st  xt d d  D]ń }
 xč t d d  D]× } xÎ t d d  D]˝ } | d k rßqÇn  |
 | | f } t t  j |    t |   k s	t  t t  j |    t |   k s<	t  t  t  j! |   t |    s`	t  t  t  j" |   t |    sÇt  qÇWqąWqWt t  j# d d   t d  k sş	t  t t  j# d d d d d d   t d d d  k sö	t  y t  j d d d  Wn+ t k
 r:
} t |  d k sA
t  n Xt  y t  j# d d d  Wn+ t k
 r
} t |  d k s
t  n Xt  y t  j# d d d  Wn+ t k
 rĐ
} t |  d k s×
t  n Xt  d  S(:   Ni    i   i˙˙˙˙i   i   i   i   i   i*   i
   i   i   i   s)   matrix columns must have identical sizes.t   xs(   bad argument type for built-in operations   a float is requiredt    s;   argument must be a Python list or tuple of lists or tuples.t   stopt   startt   stepiű˙˙˙i   i   s%   range step argument must not be zero.s*   range start argument must not be negative.s)   range stop argument must not be negative.(   i    (   i    (   i    (   i    (   i˙˙˙˙(   i    (   i    (   i˙˙˙˙(   i    (   i    (   i    (   i    (   i˙˙˙˙(   i    (   i    (   i˙˙˙˙(    (   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i    i    (   i*   (   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   (   i
   i   i   (   i    (   s(   bad argument type for built-in operations   a float is required($   R   t   doublet   sizeR   t   capacityt   accessorR
   t   tupleR   R   R   R   R   R   R   R   R   R   R	   t   is_square_matrixt   listt   xranget   to_listt   ranget   appendt   random_doublet   RuntimeErrort   strR   t	   TypeErrort	   int_ranget
   long_rangeR   t   double_ranget   float_ranget   size_t_range(   t   ft   row_typet   column_typet   n_rowst	   n_columnsR   t   i_rowt   mt   et   argR%   R$   R&   t   args(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_constructors   sč    $$$''$''!!!!$	  , /	 % 	
*3< ''$0*<   c          C   sz  t  j t  j d;   }  t |  j    d< k s6 t  t |  j d   d= k sW t  t |   d> k so t  y t  j t  j d g   Wn/ t k
 r˝ } t t |  d  sÄ t  n Xt	  y t  j t  j d g   Wn/ t k
 r} t t |  d  st  n Xt	  t d?  j
 d d  } y t  j t  j | g   Wn3 t k
 r} t t |  d |  st  n Xt	  t  j t  j d d d g   } t | d@  sŔt  t  j t  j d d d g   } t | dA  söt  t | j    dB k st  dC } t  j t  j |   } t | j    | k sPt  t  j d d  g  } t | j d!   dD dE g k st  t  j t  j d& d' d( g   } t | d) d* d+ g  sËt  y t  j t  j d g   Wn/ t k
 r} t t |  d,  s t  n Xt	  y t  j t  j d- g   Wn/ t k
 rn} t t |  d.  sut  n Xt	  y t  j t  j d/ g   Wn/ t k
 rĂ} t t |  d0  sĘt  n Xt	  y t  j t  j d1 g   Wn/ t k
 r} t t |  d2  st  n Xt	  y t  j t  j d3 g   Wn/ t k
 rm} t t |  d4  stt  n Xt	  y t  j t  j d5 g   Wn/ t k
 rÂ} t t |  d6  sÉt  n Xt	  y t  j t  j d7 g   Wn/ t k
 r} t t |  d8  st  n Xt	  y  t  j t  j d d9 g   Wn/ t k
 ro} t t |  d:  svt  n Xt	  d  S(F   Nt   1s   +2s   -3t   2s   %+3ds    +1s    +2s    -3i   i   iý˙˙˙R#   s&   Empty string (integer value expected).s   +-0s   Invalid integer value: "+-0"ič  t   Ls   Invalid integer value: "%s"s   1.2s   +2e-3t   3g333333ó?güŠńŇMb`?g      @s   1.2(3)s   +2e-3(1)s   3(16)s   0.002s   0.7s   0.1gš?g8xpÁcřžs   %+.3es   +1.000e-001s   -2.340e-005s
   +1.000e-01s
   -2.340e-05s   .34+05s   +6-2s   -7+4(1)g     ŕ@g¸ëQ¸Ž?g     ńŔs-   Empty string (floating-point value expected).s   1.2(s#   Missing closing parenthesis: "1.2("s   1.2(3)4s3   Unexpected trailing characters after ")": "1.2(3)4"s   (3)s   Empty value part: "(3)"s   5()s   Empty esd part: "5()"t   6xs"   Invalid floating-point value: "6x"s   7x(8)s   Invalid value part: "7x(8)"s   +2e-3(x)s   Invalid esd part: "+2e-3(x)"(   RF   s   +2s   -3(   RF   RG   s   -3(   s    +1s    +2s    -3(   i   i   iý˙˙˙lC                                                                                                                                        (   g333333ó?güŠńŇMb`?g      @(   g333333ó?güŠńŇMb`?g      @(   s   1.2s   0.002RI   (   s   0.7s   0.1(   s   +1.000e-001s   -2.340e-005(   s
   +1.000e-01s
   -2.340e-05(   R   t   intt
   std_stringR+   t	   as_stringR   t
   ValueErrorR   R4   R   t   replaceR'   R   (   t   iRB   R   R;   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_numbers_from_string  s¨    !!!!  c       	   C   s  t  j }  |  d d d d d g  } | j   d k s< t  | j   j   d k sZ t  t | j    d d d	 d
 d g k s t  t | j   j    d d d d
 d g k sş t  t | j   j    d d d	 d d g k sí t  |    } | j   j	   g  k st  |  d g  j   } | j	   d g k sDt  t | d  d g k sct  |  d d g  j   } | j	   d g k st  t | d  d d g k s¸t  |  d d g  j   } t
 | j	    d d g k sôt  t | d  d g k st  t | d  d g k s2t  |  d d d g  j   } t
 | j	    d d g k sqt  t | d  d d g k st  t | d  d g k s˛t  |  t d   j   } t
 | j	    d d d d d d d d g k s t  t | d  d  g k st  t | d  d! g k s>t  t | d  d g k s]t  t | d  d g k s|t  t | d  d d" d# g k sĄt  t | d  d d g k sĂt  t | d  d$ g k sât  t | d  d% g k st  d  S(&   Ns    Abct   dEFs   ghi s      JKL s   1 23 i   i   t   Abct   ghit   JKLs   1 23t   ABCt   DEFt   GHIt   abct   deft   jklR#   i    i   t   ai   s   hello worldt    t   dRB   R    R   t   ot   rt   wi   i
   i   i	   i   i   (   R   RL   t   max_element_lengthR   t   stripR-   t   uppert   lowert   i_seqs_by_valuet   keyst   sorted(   t   fssR\   t   ibv(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_std_stringo  sB    	-33	"$$"6%"c          C   sJ  t  j j   d k s t  t  j d*  }  |  j   t  j j   k sK t  |  d d k sa t  |  d d k sw t  |  d d k s t  |  d d k sŁ t  |  j   d k sť t  |  j   d k sÓ t  |  j d  t |   d+ k sř t  |  j   d k st  |  j	 d  |  j   d k s5t  |  j
   d k sMt  |  j	 d	  |  j   d k srt  |  j
   d k st  t  j d,  }  |  j   } | j   |  j   k sĂt  t |  d- k sŰt  |  j   } | j   |  j   k st  t |  d. k st  | j t  j d/   |  j   d k sKt  | j   d k sct  t  j d0  }  t  j |   } | j   |  j   k st  |  j   } | j   |  j   k sÉt  t |  d1 k sát  t  j t  j d2   }  |  j   d k st  |  j   } | j   |  j   k s;t  | j   d k sSt  | j
   d k skt  t  j d3 d4  j d5  } t  j |  }  |  j   d7 k s­t  |  j   j   | j   k sŃt  t  j d d d d d d d d d d d d d d g  j   } | j   j   d k s.t  t  j d d d d d d d d d d d d d d g  j   } | j   j   d k st  yG t  j d d d d d d d d d d d d d d g  j d t  Wn+ t k
 r˙} t |  d k st  n Xt  t  j d d d d d d d d d d d d d d g  j d t  j t  d	 k s`t  t  j d d d d d d8 d: d< d> d g
  j    } | j! t  j d d	   t  j" d d d d d d? dA dC dE d g
  } | j# |  sît  d dF d     Y} d t$ f d     Y} t  j | d d d
 g   j# t  j d d d
 g   sVt  t  j | d d
 d	 g   j# t  j d d
 d	 g   st  x\ d d g D]N }	 y t  j |	  Wn. t% k
 ré} t |  j& d  sđt  q˘Xt  q˘Wt  j d  } | j'   dG k st  | j! t  j d d
   | j'   dH k sLt  | j! t  j d d d   | j'   dI k st  y | j! t  j d	 d   Wn4 t( k
 rÓ} t |  j) d  d k sÚt  n Xt  x¨g  d g d d g d
 d d g t* d d  g D]v}
 xmt  j t  j+ f t  j, t  j- f t  j t  j. f g D]8\ } } | t  j, k rt/ |
  d k r|
 d d k  rt* d d  }
 n  | |
  } | j0   } t/ |
  d k rŮt/ |  d k s	t  n: t/ |  d k sńt  t/ |  t/ |
  d k s	t  | d  |  }  |  j
   t/ |
  k s@	t  t1 |   |
 k sX	t  t2 | d!  sm	qEn  t d" | j
    } t3 | j
   t d# | j
    d  } | | | !} | j4 | |  } t/ |
  d k rř	t/ |  d k s2
t  n: t/ |  d k s
t  t/ |  | j
   d k s2
t  | d  |  }  |  j
   | j
   k s_
t  t1 |   t1 |  k sEt  qEWqWx t5 d  D] } t  j, t* |   j6   } t1 |  t* |  k sŃ
t  | j7 d$ dJ d% dK d& t8 d |   }	 t/ |	  d | k s
t  q
Wt  j d d d d d g  } | j7 d$ dL d% dM d& d  }	 g  |	 D] } t9 |  ^ q[d' d' d' d d d d( d( d( d d d d( d( d( g k sŹt  | j7 d$ dN d% dO d& d  }	 g  |	 D] } t9 |  ^ qŃd( d' d' d( d d d( d( d( d( d d d( d( d( g k s"t  t  j d d d d) d	 d g  } | j! t  j d d   | j:   }	 |	 j; dP k s}t  |	 j< dQ k st  t  j d d	 d d d g  } t  j= |  } t> | d d	 d d d g  săt  t> | d	  sřt  t  j= j? |  } t> | d d	 d d d g  s.t  t> | j= d	  sFt  d  S(R   Ni    i   i   i   i˙˙˙˙iý˙˙˙i*   i
   i   i   i   i   i   t    a3a1ff7423c672e6252003c23ad5420ft    bc115dabbd6dc87323302b082152be14t   strictss   scitbx.array_family.flex.int.as_bool(strict=True): all array elements must be 0 or 1, but value=2 at array index=4.iţ˙˙˙i   i   t	   old_stylec           B   s#   e  Z d    Z d   Z d   Z RS(   c         S   s   t  |  |  _ d  S(   N(   R+   t   elems(   t   selfRp   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   __init__Ó  s    c         S   s   t  |  j  S(   N(   t   lenRp   (   Rq   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   __len__Ő  s    c         S   s   |  j  | S(   N(   Rp   (   Rq   RP   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   __getitem__×  s    (   t   __name__t
   __module__Rr   Rt   Ru   (    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyRo   Ň  s   		t	   new_stylec           B   s#   e  Z d    Z d   Z d   Z RS(   c         S   s   t  |  |  _ d  S(   N(   R+   Rp   (   Rq   Rp   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyRr   Ú  s    c         S   s   t  |  j  S(   N(   Rs   Rp   (   Rq   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyRt   Ü  s    c         S   s   |  j  | S(   N(   Rp   (   Rq   RP   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyRu   Ţ  s    (   Rv   Rw   Rr   Rt   Ru   (    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyRx   Ů  s   		R#   u    s   Python argument types ini   s)   SCITBX_ASSERT(grid.size_1d() == a.size())i˙˙˙i)	  t   byte_strt   slice_to_byte_strg      Đ?g      ŕ?t   rgb_scales_lowt   rgb_scales_hight
   saturationi   i˙   iü˙˙˙(   i   i   i   (   i*   i*   i*   (   i   i   i   i   i   i   (   i   i   i   i   i   i   (   i   i   i   i   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i   i   @l        l   ˙˙ i   @i   Ŕl        lý˙˙˙     i   @l        l   ˙˙ i   @i   Ŕl        lý˙˙˙     (    (   i   (   i   i   (   i   i   i   (   i   i   i   (   i    i    i    (   i   i   i   (   i    i    i    (   i   i   i   (   i   i    i    (   i   i   i   iü˙˙˙i   i   (   i   i   (@   R   R'   t   element_sizeR   t   frontt   backt   fillR+   R)   t   reserveR(   t	   deep_copyt   idt   shallow_copyt   resizeR	   R
   t   as_1dR   R   R   R*   RK   t   as_boolt   md5t	   hexdigestR   RN   R4   R   R   t   countt   as_longt   reshapet   longt   all_eqt   objectt	   Exceptiont
   startswithR   R3   t   findR0   t   int_from_byte_strt   size_tt   size_t_from_byte_strt   double_from_byte_strRs   t   copy_to_byte_strR-   t   hasattrt   minRz   R.   t   as_intt   as_rgb_scale_stringt   maxt   ordt   as_scitbx_matrixRp   t   nt   medianR   t
   dispersion(   R;   t   fcR   t   f1t   bRB   R\   Ro   Rx   R   R   t	   flex_typet   flex_from_byte_strt   start_indext
   stop_indext   a_sliceR    t   cRA   R^   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_misc  s   !$?? G<3-?? 
 %71")"&	 		<		<!$$c         C   sÓ  t  |   d k r t  |   d k s, t  t  |  d  d k sH t  t  |  d  d k sd t  t  |  d  d k s t  t  |  d  d k s$t  n t |  d	  s´ t  t  |  d  d k sĐ t  t  |  d  d k sě t  t  |  d  d k st  t  |  d  d k s$t  t  |  d  d  d    d k sIt  t  |  d d  d    d k snt  t  |  d d  d    d k st  t  |  d d  d    d k s¸t  t  |  d d  d    d k sÝt  t  |  d
 d  d    d k st  t  |  d d  d    d  k s't  t  |  d   d! k sCt  t  |  d   d" k s_t  t  |  d   d# k s{t  t  |  d   d$ k st  t  |  d  d
 d    d% k sźt  t  |  d  d d    d& k sát  t  |  d   d' k sýt  t  |  d   d( k st  t  |  d   d) k s5t  t  |  d   d* k sQt  t  |  d   d+ k smt  t  |  d   d, k st  t  |  d   d- k sĽt  t  |  d  d  d   d. k sĘt  t  |  d  d  d   d/ k sďt  t  |  d d  d   d0 k st  t  |  d d d   d1 k s9t  t  |  d d d   d2 k s^t  t  |  d d ! d3 k s}t  t  |  d d d   d4 k s˘t  t  |  d d d   d5 k sÇt  t  |  d  d  d   d6 k sět  t  |  d  d  d   d7 k st  t  |  d d  d   d8 k s6t  t  |  d d d   d9 k s[t  t  |  d d d   d: k st  y! t  |  d d d   d; k Wn+ t k
 rÎ} t |  d k sĎt  n Xd  S(<   Ni   i   i   i   i   i    iţ˙˙˙i˙˙˙˙t   typecodeiú˙˙˙iů˙˙˙iü˙˙˙iű˙˙˙i   s   slice step cannot be zero(    (   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   (   i   i   (   i   (    (    (    (    (   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   (   i   i   (   i   (   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   (   i   i   i   (   i   (    (    (    (    (   i   (   i   i   (   i   i   i   (   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   (   i   i   (   i   i   (   i   (    (   i   i   (    (   i   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   (   i   (    (   R+   R   R   t   NoneRN   R4   (   R\   RB   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_1d_slicing_core8  s`    %%%%%%%%%%%%%%%%%%%%% ! c       	   C   są  d d  l  }  y d d  l } Wn t k
 r/ nXxd D]} g  t |  D] } |  j d d  ^ qJ } t j t j |   } t j | d d d	 d } t j	 |  } x | | f D] } | j
 t j |   xn t |  D]` }	 xW |	 |	 f D]H }	 t j | d
 |	 }
 t |
 | j   j d
 |	  j    sô t  qô Wqŕ Wqˇ Wq7 Wt j d g d d g d d g d  } | j
 t j d d   t t j | d
 d d  sľt  t t j | d
 d d  sŮt  t j d g d d g d  } | j
 t j d d d   t t j | d
 d d g d  sAt  t t j | d
 d d g d d g d  swt  t t j | d
 d d g d d g d  s­t  d  S(   Ni˙˙˙˙i   i   i   i   i   t   mui    t   sigmat   axisi   i   i   (   i   i   i   i   i   (   i   i   i   i   (   i   i   i   (   t   randomt   numpyt   ImportErrorR0   t   randintR   t   productRK   t    random_int_gaussian_distributionR2   R   R	   t   sumR   t   as_numpy_arrayt   flattenR   R'   (   Rł   R´   R
   RP   t
   dimensionst   fa_sizet   fa_intt	   fa_doublet   faR˛   t   fa_sum(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_sum_axisj  s2    +=,$$!+6c          C   s  t  t j d   y d d  l }  Wn t k
 r6 n Xd Gt  |  j d   d GHt t j d t d	    d
 d d d d g k s t	  t t j d t d
    g  k sś t	  t t j d t d
 d	 d    d
 d d g k sď t	  t t j d t d d	 d    d d g k s%t	  t t j d t d d d    d g k sXt	  t t j d t d d
 d    d d g k st	  d  S(   Ni   i   i   i   i   i˙˙˙˙s+   Testing compatibility with numpy slicing...t   OKi
   i    iţ˙˙˙(   i   i   i   i   i   (   i   i   i   i   i   (
   RŻ   R   RK   R´   Rľ   t   arrayR-   t   slice_indicest   sliceR   (   R´   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_1d_slicing  s    9*963c          C   sU  xNt  j t  j f D]:}  xŔ t d d  D]Ż } xŚ t d d  D] } |  t | |   } | j t  j t | g |    g  t |  D] } t d   ^ q } | | } t	 | |  sÂ t
  | | k	 s? t
  q? Wq) W|  t d   } | j t  j d d d   t d d  t d d  t d d  g } t	 | | d	 d
 d d d d d d g  set
  t d d  t d d  t d d  g } t	 st
  |  t d4   } | j t  j d d d   t	 | | d  d   d  d   d  d   f  sýt
  | | d  d   d  d   d  d   f k	 s.t
  | d  d  d  d  d  d  f j   d k set
  | d  d d  d  d d  d  d d  f j   d k sĽt
  t	 | d  d  d  d  d  d  f d5  sŮt
  t	 | d d  d d  d d  f d6  st
  y0 | d  d  d  d  d  d  d  d  d  f Wn t k
 rPn Xt  t d d  t d d& d  t d d&  g } t	 | | d d' d d( d d) d d* g  sľt
  t d d  t d d  t d d  g } t	 | | d	 d
 d d d+ d, d d d- d. d/ d0 g  st
  |  t d7   } | j t  j d d   t	 | | d  d   d  d   f  srt
  | d  d  d  d  f } | j   d8 k sŚt
  t	 | d9  sťt
  | d d  d d&  f } | j   d: k sďt
  t	 | d;  st
  | d d  d d  f } | j   d< k s8t
  t	 | d=  s t
  q Wd  S(>   Ni    i   i   i   i<   i   i   i   i!   i"   i&   i'   i5   i6   i:   i;   i˙˙˙˙iű˙˙˙iü˙˙˙i   i   i   i   i   i#   i$   i2   i3   i7   i8   i=   iK   iL   iP   iQ   iU   iV   iţ˙˙˙i    i%   i9   i>   i+   i,   i?   i@   iD   iE   i   i
   i   i}   (   i    i   i   i   i   i   i   i   (   i   i   i   i   i#   i$   i2   i3   i7   i8   i<   i=   iK   iL   iP   iQ   iU   iV   i   (   i   i   (   i    i   i   i   (   i   i   (   i   i   i   i
   i   i   (   i   i   (   i   i   (   R   RK   R'   R0   R   R	   R+   RĆ   RŽ   R   R   R(   R3   R   R   (   t   flex_tR    R
   R\   RP   t   slicesRĽ   RŤ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_nd_slicing  sZ    #%
*1*417@41 0 -1*=+c          C   sÝ  xÖt  j t  j f D]Â}  xü t d d  D]ë } xâ t d d  D]Ń } |  | | d  } | j t  j t | g |    |  t | |   } | j t  j t | g |    t g  t |  D] } t d   ^ qÄ  } | | | <t	 | |  sţ t
  | | k	 s? t
  q? Wq) W|  t  j d d d  d  } |  t d
   } | j t  j d d d   | | d	 d  d d  d d  f <| d	 d  d d  d d  f } t	 | |  sĂt
  | | k	 s t
  q Wd  S(   Ni    i   i   i   i   i   i   i   i   i   (   R   RK   R'   R0   R   R	   R+   RĆ   RŽ   R   R   (   RČ   R    R
   R\   RĽ   RP   RÉ   RŤ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_set_nd_slicingÉ  s$    ##+
%%c          C   sů  y d d  l  }  Wn t k
 r) d GHd  SXxČt d  D]ş} xąd D]Š} d d l m } g  t |  D] } | j d d	  ^ qg } t j t j |   } t j	 |  } | j
 t j |   | j   } g  }	 x^ t |  D]P } | j d
 | | d  }
 | j |
 d | |  } |	 j t |
 |   qá Wt t j | |	 j    | |	  sat  g  }	 xW t |  D]I } | j | | d  }
 | j |
 d d  } |	 j t |
 |   qtWt t j | |	 j    | |	  sD t  qD Wq7 Wd  S(   Ni˙˙˙˙s0   Skipping exercise_numpy_slicing_compatibility...i2   i   i   i   i   (   Rł   i   i    i   iţ˙˙˙(   i   i   i   i   (   R´   Rľ   R0   t   stdlibRł   Rś   R   Rˇ   RK   R2   R   R	   Rş   R1   RĆ   R   R'   Rť   R   (   R´   t   jt   n_dimRł   RP   t   dimR(   R\   t   a_numpyRÉ   R%   R$   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt$   exercise_numpy_slicing_compatibilityŢ  s2    +,c          C   s  t  j d  }  |  j   d k s' t  t |   d k s? t  t  j   }  |  j   d k sc t  |  j d d  t |   d k s t  |  j d  t |   d k s° t  |  j d d  t |   d k sŘ t  |  j d d d  t |   d k st  |  j   t |   d k s%t  |  d =t |   d k sDt  |  j d d  t |   d k slt  |  d =t |   d k st  |  d d	 5t |   d  k s­t  |  j	 d
  t |   d! k sŇt  |  j	 d d  t |   d" k sút  |  j
   |  j   d k st  t  j d#  }  t  j d$  } |  j |  t |   d% k s_t  t  j d&  } t  j | d  } t  j d'  } | j	 |  t |  d g d d g d k sĆt  t  j d(  } | j	 | d  t |  d g d d g d d g d k st  t  j d)  } | j	 |  t |  d g d
 k sUt  t  j d d d g  } t |  j    d
 d	 d d d d d g k s t  t |  j   j    t d  k sĘt  t |  j |   d d d d d d	 d
 d d d g
 k s	t  t | j |    d d d d d d d d d	 d
 g
 k sHt  t  j   }  |  j d d  t |   d g k st  |  j d d  t |   d d g k s­t  |  j d d  t |   d d d g k sŢt  t j } | d d k o| d d k  stxj t d d  D]V } |  j   } t |   } | j | d	  | j | d	  t |  | k st  qWn  xH d d d d	 g D]4 } y |  j | d	  Wn t k
 r´qXt  qW|  j d d d	  t |   d d	 d	 d	 d d g k süt  |  j d d d
  t |   d d	 d	 d	 d d
 d
 d g k s?t  |  j d d d  t |   d d	 d	 d d	 d d
 d
 d g	 k st  d  S(*   Ni   i    i   i   i   iţ˙˙˙i   iý˙˙˙i   i   i˙˙˙˙i   i   i   i   i	   i   i
   i   i   iű˙˙˙iü˙˙˙(   i    i    i    (   i   i   i   (   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   i   i   i   (   i   i   i   i   i   i   i   (   i   i   i   i   i   i   (   i   i   i   i   i   i   i   (   i   i   i   i   i   i   (   i   i   i   i   (   i   i   i   i   i    i    (   i   i   i   i   i    i    i˙˙˙˙i˙˙˙˙(   i    i   i   i   (   i   i   i   (   i    i   i   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i	   (   i   i   i   (   R   R'   R(   R   R+   t   assignR1   t   insertt   pop_backR   t   cleart   extendR	   R-   t   reversedR0   t   concatenateR   t   syst   version_infoR.   R   t
   IndexErrorR   (   R\   RĽ   R   R;   t   viRP   RŤ   R   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_push_back_etců  s    


*53*??!	   
*0c          C   sÁ   t  j d  }  d |  d <d |  d <t |   d k s; t  t  j d	  } t  j |  }  xC t d  D]5 } x, t d  D] } | d | |  | | f <qy Wqf Wt |   t d  k s˝ t  d  S(
   Ni   i   i    i   i   i   i   (   i   i   (   i   i   (   R   R'   R+   R   R	   R.   R-   R0   (   R\   R   RP   RÍ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_setitemF  s    

 c          C   s  d d l  m }  d d  l } t j d5  } t j g  d d d d d g D] } t |  ^ qG  } t j d6  } |  j j d7  } t	 | j
 |   d8 k s¤ t  t	 | j
 d	 |   d9 k sČ t  t	 | j
 d	 | d
 t   d: k sň t  t j d d d d d g  } t | j
 |   d d d d d g k s@t  t | j
 |  j
 | d
 t  t |  k svt  xb t d  D]T } t j d | j    } t | j
 |  j
 | d
 t  t |  k st  qWt	 | j | t j d;    d< k st  t	 | j | t j d=    d> k s5t  t	 | j | t j d?    d@ k sbt  t	 | j t j d t  t j     dA k st  t	 | j t j   t j     dB k sČt  t	 | j |  j j   t j     dC k sűt  t	 | j | d   dD k st  t	 | j | d   dE k sCt  t	 | j | d   dF k sgt  t	 | j t j d t  d   dG k st  t	 | j t j   d   dH k sÁt  t	 | j |  j j   d   dI k sît  xŞ t d d d d g  D] \ }	 }
 t j d d d d g  } | j t j d d   | j   } | |	 c d 9<t | j | |
 k |
 d   t |  k st  qWt j d d d g  } t j d d d g  } t | j t j t t t g  |   d d d g k s
t  t j d d d g  } t | j t j t t t g  |   d d d g k sat  t | j t j t t t g  |   d d d g k s t  t j d d d g  } t j d d d g  } t j d d g  } t | j | |   d d d g k st  t j d d d g  } |  j j d d g  } t | j | |   d d d g k sot  t j d d d g  } t j d d g  }	 t j t t t g  } t j d d g  }
 | j d	 |	 d |
  | k sít  t | d d d g  st  | j d	 |	 d d  | k s/t  t | d d d g  sMt  | j d | d |
  | k sqt  t | d d d g  st  |
 j d  | j d | d |
  | k sŔt  t | d d d g  sŢt  | j d | d d  | k st  t | d d d g  s t  t j dJ  } t j dK  } t	 | j
 |   dL k s_t  t j dM  } t	 | j
 |   dN k st  t j dO  } t	 | j
 |   dP k sżt  t j dQ  } xŹ t d  D] }	 x d d d g d d d g d d d g d d d g d d d g d d d g f D]E } t |  | k sN	t  | j   | d d d g k k s0	t  q0	WqŰWd d d g } t j |  } xz t d  D]l }	 xc t r
t |  | k sĎ	t  | j   sř	t j j |  sô	t  Pn  t j j |  są	t  qą	Wq¨	Wg  t j d d  D] } t |  ^ q+
g  g k sR
t  g  t j d d  D] } t |  ^ qe
d g g k s
t  g  t j d d  D] } t |  ^ q˘
d d g d d g g k sŘ
t  t j g  d d d d d g D] } t |  ^ qô
 } t	 | j    dR k s-t  t	 | j     dS k sKt  t	 | j!    dT k sit  t	 | j! d t   dU k st  t	 | j! d t   dV k sąt  t j t g d  } t	 | j! t   dW k sčt  t	 | j! t   dX k s	t  |  j j d d g  } t j d d d |  } t	 |  t t t t t f k s`t  |  j j d d g  } t	 t j" d d d  | | g   t t t t t f k sˇt  t	 t j# d d d  | | g   t t t t t f k söt  t t j# d d d  | | g  j!    d g k s/t  t j d d g  } t j d d d |  } t	 |  t t t t t f k st  t j d d g  } t	 t j" d d d  | | g   t t t t t f k s×t  t	 t j# d d d  | | g   t t t t t f k st  t t j# d d d  | | g  j!    d g k sOt  d!   } | g  g  g   | d d d d g d d d d g d d d d g  | g  d d d d g g   | d d d d g g  g   | d g d d d d g d g  | d d d d g d g d g  | d g d d d d g d g  | d d d d g d g d g  | d d g d d d d g d d g  | d d d d g d d g d d g  | d d d g d d d d g d d g  | d d d d g d d d g d d g  | d d d d g d g d g  | d g d d d d g d g  | d d d d g d d g d d g  | d d g d d d d g d d g  | d d d d g d d g d d g  | d d g d d d d g d d g  t j } y) | d d g  j# | d d g   WnU t$ k
 ro} t% |  j& d"  d k sKt  t% |  j& d#  d k svt  n Xt'  y) | d d g  j# | d d g   WnU t$ k
 rö} t% |  j& d"  d k sŇt  t% |  j& d$  d k sýt  n Xt'  y) | d d g  j# | d d g   WnU t$ k
 r}} t% |  j& d%  d k sYt  t% |  j& d#  d k st  n Xt'  y) | d d g  j# | d d g   WnU t$ k
 r} t% |  j& d%  d k sŕt  t% |  j& d$  d k st  n Xt'  t j t( d d   } x |  j j |  j) j g D]f } | j
 d& |    j   d k sit  t | j
 d& | d d d g   d d d g  s<t  q<Wt j* t( d d   } | j+ t j dY  j, dZ   | j-   d[ k sőt  | j.   d\ k st  | j/   d] k s%t  t j0 d' d(  j1 d d) d* d+  } t | j
 |   d d d d, d- d. d g k st  | j!   }	 t | j
 |	   d d d d, d- d. d g k sÁt  t j0 d' d(  j d d)  } t | j
 | d
 t  d/ d, d0 d d. d d d d d d d d) d- d1 g k s3t  t j0 d' d2  } t j2 d2  xŠ | j3 t j3 f D] } | d3 d) d4 d  } t |  d d d d d d d d d d, g
 k sśt  xA t d  D]3 } | d3 | d4 d  } | j   d k sĂt  qĂWqeWd  S(^   Ni˙˙˙˙(   t   stli   i   i   i   i   i    t   indicest   reversei
   R(   i   i   i	   iţ˙˙˙iü˙˙˙iý˙˙˙i÷˙˙˙i   i   i   i   i   i   i   t   valuest   valuet   flagst
   test_valuet
   iselectiont   iselectionsc         S   sŚ   t  j |   }  t  j |  } |  j d |  } t |  | k sH t  |  j d |  \ } } t |  j |   | k s t  t | j |   | k s˘ t  d  S(   Nt   other(   R   R   t   intersectionR-   R   t   intersection_i_seqst   select(   R\   RĽ   t   expectedt   resultt   a_i_seqst   b_i_seqs(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   checkŃ  s    !t   firstt	   duplicateRh   t   secondt	   selectiont   seediT   i   t	   thresholdg      ŕ?i   i   i   i   i   i   i\   t   population_sizet   sample_size(   i   i   i   i   i   (   i    i   (   i   i   (   i   i   i   (   i   i   (   i   i   (   i   i   i	   (   i   i   i   i   i	   (   i˙˙˙˙iţ˙˙˙(   i˙˙˙˙i   iţ˙˙˙i   i	   (   i˙˙˙˙iţ˙˙˙(   i˙˙˙˙i˙˙˙˙iţ˙˙˙iţ˙˙˙i	   (   i˙˙˙˙i˙˙˙˙iţ˙˙˙iţ˙˙˙i	   (   i˙˙˙˙i˙˙˙˙iţ˙˙˙iţ˙˙˙i	   (   i˙˙˙˙i˙˙˙˙iţ˙˙˙iţ˙˙˙i	   (   i˙˙˙˙iü˙˙˙iţ˙˙˙iü˙˙˙iü˙˙˙(   iý˙˙˙iü˙˙˙iý˙˙˙iü˙˙˙iü˙˙˙(   iý˙˙˙iţ˙˙˙iý˙˙˙iţ˙˙˙iü˙˙˙(   iý˙˙˙iţ˙˙˙iý˙˙˙iţ˙˙˙iü˙˙˙(   iý˙˙˙iţ˙˙˙iý˙˙˙iţ˙˙˙iü˙˙˙(   iý˙˙˙iţ˙˙˙iý˙˙˙iţ˙˙˙iü˙˙˙(   i   i   i   i   i   (   i   i   i    i   i   (   i   i   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   (   i    i   i    i   i   (   i    i   i    i   i   (   i   i   i   (   i   i   i   (   i    i   (   i    i   i   i   i   (    (   i   i   (   i   i   (   i    i    (   i   i   (   i   i   (4   t   scitbxRß   t   scitbx.stl.vectorR   R'   t   boolR   t   vectort   unsignedR+   Rë   R   R   R-   R   R.   t   random_permutationR(   t   set_selectedt	   enumerateR   R	   R   t   copy_selectedt   add_selectedR   R1   t   next_permutationt   libtbxt
   math_utilst   permutation_generatorR   t	   as_doubleRć   t   unionRé   R3   R4   R   R   R0   t   setRK   R   R   R   R   R   t   mersenne_twistert   random_boolt   set_random_seedt   random_selection(   Rß   Rů   R\   R;   RĽ   RŤ   R^   t   pt   i_trialRP   t   vR   Rě   t   iselt   isel2Rđ   t   fsRB   t   stl_iterablet   mtR    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_selectR  sz   7!$*06:---	-0$$$$0*-%8???--$$$$$!!!/	 :=I7$$!!'!!''!!'	4""""((++""((((	 )!% )!% )!% )!%'=$66<6c          C   s   d d l  m }  d d  l } t t j |  j j d d d g    d d d g k s[ t  t t j	 |  j j	 d d d g    d d d g k s t  d  S(	   Ni˙˙˙˙(   Rß   i   i   i	   i   iú˙˙˙i
   (
   Rů   Rß   Rú   R-   R   R   Rü   Rý   R   R'   (   Rß   Rů   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_from_stl_vector  s    ?c          C   s  t  j d  }  t  j d  } t |   d k s7 t  t |  |  d k sS t  t |  |  d k so t  t |  |  d k s t  t |  |  d k s§ t  t |  |  d  k sĂ t  t |  d  d! k sß t  t d |   d" k sű t  t |  d  d# k st  t d |   d$ k s3t  t |  d  d% k sOt  t d |   d& k skt  t |  d  d' k st  t d |   d( k sŁt  t |  d  d) k sżt  t d |   d* k sŰt  t  j |   d k söt  t  j d+  }  t  j d,  } t |  | k  d- k s2t  t |  | k  d. k sPt  t |  | k   d/ k snt  t |  | k  d0 k st  t |  | k  d1 k sŞt  t |  | k  d2 k sČt  t |  d k  d3 k sćt  t |  j    d4 k st  |  j |   st  |  j |  s/t  |  j d  sEt  |  j |  sZt  |  j |   spt  |  j d  st  |  j d  st  |  j |  sąt  |  j d  sĆt  |  j	 |  sÜt  |  j	 d  sńt  |  j
 |  st  |  j
 d  st  |  j |  s2t  |  j d  sGt  t  j |  |  t t |   t |   k szt  t  j | |   t t |  t |    k s­t  t  j |  |   d k sËt  |  j   } t  j |  |  d k sőt  t  j d d d g  }  t |  d5 d6 d7 d8 g  s/t  t d9 |  d: d; d< g  sQt  t |  d d d d g  sst  t d |  d d	 d g  st  d  S(=   Ni   i	   i   i   iü˙˙˙i÷˙˙˙i   i   i   i   i    i   i   iű˙˙˙i   i-   i   i   i
   y              @y              @y              "@y               @y              @(   i   i	   (   i   i   (   iü˙˙˙i÷˙˙˙(   i   i   (   i   i   (   i   i   (   i   i   (   i    i    (   i   i   (   i   i   (   i    i   (   i    iű˙˙˙(   i   i-   (   i   i-   (   i   i   (   i   i   (   i    i   (   i   i   (   i   i	   (   i   i   (   i    i    (   i   i   (   i    i   (   i   i    (   i    i   (   i   i    (   i    i   (   i   i	   y       @      @y       @      @y      @      @y      @      "@y      @       @y      @       @y      @      @y      "@      @(   R   RK   R+   R   Rš   R  R   t   all_net   all_ltt   all_gtt   all_let   all_get   ordert   cmpR   R'   R   (   R\   RĽ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_operators#  sl    33"""c          C   sM  t  j d d d d f  }  |  } t |  d d d d g k sF t  |  d B} t |  d d d	 d
 g k st t  |  d B} t |  d d d d g k s˘ t  |  d B} t |  d	 d d d g k sĐ t  |  d B} t |  d
 d d d g k sţ t  t  j d d d d f  } |  | B} t |  d
 d d d
 g k sGt  |  d @} t |  d d d d g k sut  |  d @} t |  d d d d g k sŁt  |  d @} t |  d d d d g k sŃt  |  d @} t |  d d d d g k s˙t  t  j d  d! d" d# f  } |  | @} t |  d d d d g k sHt  |  d$ A} t |  d d d	 d
 g k svt  |  d% A} t |  d d d d g k s¤t  |  d& A} t |  d	 d d d g k sŇt  |  d' A} t |  d
 d d d g k s t  t  j d( d) d* d+ f  } |  | A} t |  d
 d d d
 g k sIt  d  S(,   Ni   i    i   i   iţ˙˙˙iý˙˙˙iű˙˙˙i÷˙˙˙i   i	   i   i
   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   i   (   R   RK   R-   R   (   R\   RĽ   RŤ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_bitwise_operators\  sh    $
$
$
$
$
$
$
$
$
$
$
$
$
$
$
c          C   sŮ  t  j t t t t f  }  t  j t t t t f  } t  j t t f  } t  j t t f  } t |  | k  t t t t f k s t  t |  | k  t t t t f k s´ t  t |  t k  t t t t f k sŢ t  t |  t k  t t t t f k st  |  d  k st  t |  d  k  t t  k s?t  y |  t  j   k Wn+ t	 k
 r} t
 |  d k st  n Xt  t |  t k  t t t t f k sąt  t |  t k  t t t t f k sŰt  |  d  k sít  t |  d  k  t t  k st  y |  t  j   k Wn+ t	 k
 rR} t
 |  d k sYt  n Xt  |  |  g j d   d k szt  |  d  g j d   d k st  |  j |   s°t  t |  j |    t t  k s×t  |  j |  j    sňt  |  j |   st  |  j |   st  |  j |  s4t  | j t  sIt  | j t  s^t  | j t  sst  | j t  st  t | j |   t t  k sŻt  t | j |   t t  k sÖt  t | j t   t t  k sýt  t | j t   t t  k s$t  x\ | j | j g D]H } y | d   Wn+ t	 k
 rx} t
 |  d k st  q7Xt  q7Wt |   t t t t f k s¨t  t |  | @ t t t t f k sĐt  t |  | B t t t t f k sřt  |  | M}  t |   t t t t f k s&t  |  t  j t t t t f  O}  t |   t t t t f k sit  |  j t  d k st  |  j t  d k st  |  t M}  t |   t t t t f k sÍt  |  t M}  t |   t t t t f k sűt  |  t O}  t |   t t t t f k s)t  |  t O}  t |   t t t t f k sWt  t  j |  |   t k sut  t  j |  |  d k st  t  j | |   d k sąt  t  j t t t t g  }  t  j t t t t g  } t |  j |   t t t t g k st  t  j t t t t t g  }  t  j d d d d g  } t |  j |   d d g k stt  t  j t t t t t g  }  t  j t t t t t g  } |  j |  rĎ| j |   sŐt  d  S(   Ns;   Type of argument must be a Python bool, flex.bool, or None.i    i   s4   Type of argument must be a Python bool or flex.bool.i   i˙˙˙˙i   (   R   Rű   R   R   R+   R   RŽ   t   typeRK   R5   R4   R   R   R   R   R  R  R-   t   exclusive_orR   t   filter_indicest   is_super_set(   R\   RĽ   R;   t   tRB   t   mf(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_bool  s    ****$ 	**$ 	!!''''' 
%((
$$
$
$
$
$-'c          C   sÓ  t  j d  }  |  d 7}  t |   d k s1 t  |  d 8}  t |   d k sS t  |  d 9}  t |   d k su t  |  d }  t |   d k s t  |  d ;}  t |   d k sš t  |  d	 7}  |  |  7}  t |   d k sĺ t  |  t  j d  8}  t |   d k st  d j g  t j d  D] } t |  ^ q$ d k rR|  |  9}  n t  j d  }  t |   d k syt  |  t  j d  }  t |   d  k s¤t  |  t  j d!  ;}  t |   d" k sĎt  d  S(#   Ni   i	   i   i   i   i   i   i    i   i
   i   R#   t   221i@   i1   i   i    i   i   (   i   i	   (   i   i   (   i   i	   (   i   i   (   i   i	   (   i   i    (   i   i
   (   i   i   (   i   i   (   i@   i1   (   i@   i1   (   i   i   (   i    i1   (   i   i   (   i   i   (   R   RK   R+   R   t   joinRŮ   RÚ   R4   (   R\   R    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt    exercise_arith_inplace_operatorsă  s0    






5c          C   sř  t  j dS  }  t t  j |    dT k s0 t  t t  j |    dU k sQ t  |  j d  d k sl t  |  j d  d k s t  t  j dV  }  |  j d  d k są t  |  j d  d k sĚ t  t  j dW  }  t  j dX  } |  j d  d k st  | j d  d k s t  t  j |   d k s;t  t  j |  d k sVt  t  j	 |   d k sqt  t  j	 |  d k st  t  j
 |   d k s§t  t  j
 |  d k sÂt  t  j |   d k sÝt  t  j |  d k sřt  t  j |   d k st  t  j |  d	 k s.t  t |  j   d
  sIt  t | j   d  sdt  t  j |   d k st  t  j |  d k st  t  j |   dY k sľt  t  j |  dZ k sĐt  t  j |   d d[ d\ d k s÷t  t t  j |  d] d^ d_ d  s!t  t  j d`  }  t t  j |  d   da k sTt  t  j db  }  t t  j |    g  |  D] } t j |  ^ q|k s t  t  j dc  } t  j |   t  j |  |  d k  sÚt  t  j |   t  j |  |  d k  st  |  j |   st  |  j d |  d d  s8t  |  j d |  sQt  |  j | d d slt  |  j d  st  | j d d  st  |  j d d d d  s¸t  t  j d d d d d d g  }  |  j   } t | |   sút  |  j   } t | d d d d d d g  s-t  xm d d d d d g D]V } |  j d  |  } x; t |  |  D]* \ } } t t | |  |  skt  qkWqCWt | j    d d d d d d g k sÍt  t  j   j   j   d k sńt  t  j d! g d d" g d  }  |  j d!  d k s-t  |  j d"  d k sHt  |  j d#  d k sct  t t  j d$ d%   g  k x d% d& d' d( d) d* d+ d+ d, d- d. d/ g D]j } xa t  t! g D]S } xJ t! t  g D]< } t t  j | d0 | d1 |  | j" |  k sĐt  qĐWq˝WqŞWt  j t# d d  t# d d  t# d d   }  |  j$   j%   dd de df dg dh di g k szt  |  j$ d2 d  j%   |  j$   j%   k sŞt  t  j& t# d d  t# d d  t# d d   }  |  j$   j%   dj dk dl dm dn g k s	t  |  j$ d2 d  j%   |  j$   j%   k s9t  t  j' t# d d  t# d d  t# d d   }  |  j$   j%   do dp dq g k st  |  j$ d2 d  j%   |  j$   j%   k sÂt  y |  j$ d2 d  Wn+ t( k
 r	} t) |  d3 k s
	t  n Xt*  t  j d4 d5 g  } t t  j+ | d  d6 d7 g  sF	t  t t  j, | d  d8 d7 g  sm	t  t  j   }	 |	 j-   }
 |
 j
 d  k s	t  |
 j d  k sŻ	t  |
 j d  k sÄ	t  xŻ d9 d  g D]Ą } |	 j/ d: |  d; k ső	t  |	 j0 d: |  d; k s
t  |	 j1 d: |  d; k s1
t  t2   } |
 j3 d< | d= d> d: |  t4 | j5   d?  sŃ	t  qŃ	Wt2   } |
 j3 d< | d: d@  t4 | j5   dA  są
t  t  j d d dB dC dD d g  }	 |	 j-   }
 |
 j6 d k só
t  t |
 j
 dD  st  t |
 j dC  s#t  t |
 j dE  s;t  t |
 j d  sSt  xČ dr ds g D]ş \ } } |	 j/ d: |  dG | k st  |	 j0 d: |  dH | k s°t  |	 j1 d: |  dI | k sŇt  t2   } |
 j3 d< | d: |  t4 | j5   dJ | | | f  s`t  q`Wt2   } |
 j3 d< | d: d@  t4 | j5   dK  sYt  t  j7 dt du dv dw g  }  |  j8   dx k st  t |  j9   dy dz g  s­t  t |  j9   t  j: |   t  j; |   g  sŕt  t  j |   d{ k sűt  t t  j< |   dP  st  t t  j |   d  s7t  t  j   j=   d  k sUt  t t  j d g  j=   d  s|t  t t  j d d g  j=   dQ  sŚt  t  j d g  j>   d  k sĘt  t t  j d dR g  j>   d|  sôt  d  S(}   Ni˙˙˙˙i    i   i   i   i   i   i   i   ghęî@g8ĎÖ!Č!@ix   g      @g      .@g      @g       @g      @g      @iţ˙˙˙i	   gíľ ÷Ć°>Rč   t	   toleranceg\Âő(\Ŕg°rhí|żżgV-˛ĺżg%CÔ?g{ŽGázč?gëQ¸ @iü˙˙˙i   t   n_digitsR\   RĽ   RŤ   t   multi_line_stringR#   s   
s   s   
s   
s   a
b
s   a
bs   a
b
s   a

b
s   a

b
s   a

b
t	   keep_endst   count_lines_firstt   max_keyss/   scitbx::af::counts::limited: max_keys exceeded.g333333ŔgÍĚĚĚĚĚ@gÍĚĚĚĚĚôżg@g@s   %.6gt   formatRŽ   t   outt   prefixs   values sB   values n: 0
values min:  None
values max:  None
values mean: None
s   %6.2fs,   n: 0
min:    None
max:    None
mean:   None
iú˙˙˙i   iů˙˙˙i   s   .0s   -7t   14RG   s%   n: 6
min:  -7%s
max:  14%s
mean: 2%s
s,   n: 6
min:   -7.00
max:   14.00
mean:   2.00
y              đ?y               @t   realt   imagi    g      ŕ?i   (   i˙˙˙˙i    i   (   i   i    i   (   i   i    i   (   i   i   i   i   i   i   i   (   i   i    i   i   (   i   i   i   g      ř?g      @g      "@g      @g      0@g      9@g      B@(   iţ˙˙˙i    i   (   i   i    i	   (   i   i    i   (   i   i   i   (   iţ˙˙˙i   (   i˙˙˙˙i   (   i    i   (   i   i   (   i   i   (   i   i   (   iţ˙˙˙i   (   i˙˙˙˙i   (   i    i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   s   %.6gR#   (   Ns   .0y      đ?      đ?y      đ?      đży       @       @y      @       @(   s   reals   imag(   i   i   i   i   (   i   i˙˙˙˙i   i   y       @      đ?gÍ;f @(?   R   RK   R+   t   absR   t   pow2R   R'   t	   min_indext	   max_indexR   R   Rš   R   t   normRˇ   t   meant   mean_sqt   powR-   t   sqrtt   matht   mean_weightedt   mean_sq_weightedt   all_approx_equalt   as_floatt   roundt   zipt   iroundR(   RL   t   split_linesR   R   t
   splitlinesR0   t   countst   itemsR   R   R3   R4   R   t   fmodt   fmod_positivet   min_max_meanRŽ   t
   format_mint
   format_maxt   format_meanR   t   showR   t   getvalueR    t   complex_doublet
   part_namest   partsR5  R6  t   sum_sqt    standard_deviation_of_the_samplet   sample_standard_deviation(   R\   RĽ   R"   R,  t   yR-  R.  R/  RB   Râ   t   statsR1  R   t   p0(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_functionsţ  s&   !!'*$=++!'&0$!		$2002-02'0 ''		!"""	!	!3$'$c          C   s  d }  t  j |  f  } t  j |  } t | d d  s@ t  t  j |  } t | d d  sh t  t  j |  } | d } t | j |  j  s t  t | j |  j  s¸ t  t  j |  } t | d t |    sć t  t  j |  } t  j	 | |  } | d } t | j |  j  s,t  t | j |  j  sGt  t  j | t
  } t  j	 | | t
  } | d } t | j |  j  st  t | j |  j  sŽt  t  j | t  } t  j	 | | t  } | d } t | j |  j  sút  t | j |  j  st  t  j	 | | t
  } | d } t | j |  j  sOt  t | j |  j  sjt  t  j | t
  } t  j	 | |  } | d } t | j |  j  słt  t | j |  j  sÎt  t  j	 | | t
  } | d } t | j |  j  st  t | j |  j  s#t  t  j	 | | t  } | d } t | j |  j  s]t  t | j |  j  sxt  t  j	 | |  } | d } t | j |  j  sŻt  t | j |  j  sĘt  t  j	 | |  } | d } t | j |  j  st  t | j |  j  st  t  j	 d |  } | d } t t |  d  sSt  t t  j |  d | d  syt  t  j	 | t j d  } | d } t | j d  s´t  t | j | d  sĐt  t  j d g  } t | | d g  sţt  t | | d g  st  d  S(	   Ni   y               @i    i   y              @y      đ?       @y       @      @y       @      @(   R   RT  R5  R   R   R6  t   conjR7  RC   t   polarR   R   R   R@  t   piR'   (   RŤ   R"   RZ  R^   R\   R  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_complex_functionsŠ  s~    










&
c          C   sW  x
t  j t  j t  j f D]đ }  |  d  } t  j d |  } t |  d k sU t  t | j |  d  ss t  t  j d | d t	  } t |  d k sŁ t  t | j |  d  sÁ t  t  j | t
  } t |  d k së t  t | j |  d  s t  q Wxt d  D]} t  j d d d d d d d d d d d g  } | r| j t  j t  j d	 | j      } n  t  j d	 d
  } t  j d |  } | j   } | j   j |  sÎt  | j |  } | j |  } x7 t | |  D]& \ } }	 | | | |	 k süt  qüWqWt  j   } t  j   }
 | j d |
  d k s`t  t  j d  } t  j d g  }
 | j d |
  d k st  t |  d d d g k sŔt  | j d |
  d k sŢt  t |  d d d g k s˙t  t  j d d g  }
 | j d |
  d k s2t  t |  d d d g k sSt  d  S(   Ni   i   i   t   datai    Rá   i
   i   R(   i   Rć   (   i   i   i   (   i   i   i    (   i   i   i   (   i   i   i    (   i   i   i   (   i    i   i   (   i   i   i   (   R   RK   R   R'   t   sort_permutationR+   R   R   Rë   R   R   R.   R2   R(   t   inverse_permutationR   RF  t    increment_and_track_up_from_zeroR-   (   RŚ   R"   R  R  R\   t   ppt   apt   xpRP   RÍ   R   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_sortę  sF    "0-"!!c    
      C   sć  t  j   }  |  j   d k s$ t  |  j   d k s< t  |  j   d k sT t  t |  j   d  so t  xt d  D]÷ } xî t d  D]ŕ } | d k r° t  j   }  n
 |  j	   t
 |  j d   dS k sŰ t  t |  j d  dT  sů t  | d k rt  j d d  }  n |  j	 d d  t
 |  j d d   dU k sNt  t |  j d d  dV  s t  q Wq| W|  j d d  j   d k st  |  j d d  j   d k sżt  xě t d  D]Ţ } |  j d d d d  } | j   d k st  t  j |  d k st  t  j |  d k s8t  | j   } t t  j |  d d d sht  t t  j | |  t  j |  t  j |  d d d sĚt  qĚWxŕ t d  D]Ň } |  j d d d d  } | j   d k sńt  t  j |  d k st  t  j |  d k  s't  t t  j |  d d d sKt  t t  j | |  t  j |  t  j |  d d d  sťt  qťWt  j d d  t
 t  j d   dW k sÂt  t t  j d  dX  sŕt  t t  j d d   d d! d" d d g k st  t t  j d d   d! d d" d d g k sFt  t t  j d d   d d d d! d" g k syt  t t  j d d   d d! d d" d g k sŹt  t  j j   } t  j d#  } xK t d  D]= } t  j j d$ |  t  j d#  } | j |  s×t  q×Wt  j d d  t t  j   d% d& d' g  sLt  t t  j   d( d) d* g  spt  t t  j   d+ d, d- g  st  t j d d d g  } xN t d.  D]@ } t j t  j    } t | j   d/  sďt  | | 7} qšW| d. } t | d0 d1 d2 g  s%t  t t  j d d d3 d4   t t t g k sXt  t t  j d d d3 d   t t t g k st  t t  j d d d3 d!   t t t g k sžt  t t  j   d5 d6 d7 d8 d9 d: d; d< d= g	  sôt  d>   }	 |	 t  j  t t  j   dY  s%t  x> t d  D]0 } t t  t j t  j     d!  s2t  q2Wt t  j! d d dC dD dE dF   dG dH dI g k st  t t  j"   dJ dK dL dM dN dO dP dQ dR g	  sŐt  |	 t  j"  d  S(Z   Ni    l   ˙˙ i%ôÁjgËÜđčď?i   i   l   ë ~ l   /Îp gű ×í?gŹZÖÄafŔ?g-GĐ#řď?Rő   i  Ră   R(   l   Ŕ6ľc iď:\iď$Öigđ:XxÄš?g×vřě?gP!]Ű Ę?i
   i  t   modulusi	   g      @t   epsgš?g      @t   factori   gÉ?i   i   i   t   stateg KŹ=fÇżgz´ĹaďżgčŔ>Ĺżgžo4ř'J|żg¨)5Q\ş?gäůF ţďżgŮ
9třđâ?gIÔŘ?gb}.ćżič  g      đ?gĆ!YŔ?g¤ŻÖ?>ŁżgGŔ9tO?Rö   g      ŕ?g)1Řtć?g?î ůšÔżgćB@>˝ä?ghQCŔĆŔ?gŇ˘^ężg×yŁáżgĆ1=BÍć?gŁľýäżÝ?gÍŠ	G5Ńŕżc         S   sZ   xS t  d  D]E } t j |     } t | j   d  s@ t  | j   s t  q Wd  S(   Nid   i   (   R.   R   t   sqrR   t   determinantR   t   is_r3_rotation_matrix(   t   methodR  R`   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt	   check_r3r_  s    gęé#đŕ?gPo Í?gfŠP8oäżglËFçźŕ?R°   g=
×Łp=ŔRą   gëQ¸@iř˙˙˙iű˙˙˙iý˙˙˙g őSó,żg$G:#ďëżg§ť˘2ßżgQ9Üýŕ˛ëżg,âĐ?gZívŰżgBŇŤ\ŕ?gĺłáU{}Ú?gh?RDUčż(   i%ôÁjl   ë ~ l   /Îp (   gű ×í?gŹZÖÄafŔ?g-GĐ#řď?(   l   Ŕ6ľc iď:\iď$Öi(   gđ:XxÄš?g×vřě?gP!]Ű Ę?(   i%ôÁjl   ë ~ l   /Îp (   gű ×í?gŹZÖÄafŔ?g-GĐ#řď?(   gęé#đŕ?gPo Í?gfŠP8oäżglËFçźŕ?(#   R   R
  t   random_size_t_minR   t   random_size_t_maxt   random_size_tR   R2   R.   Rő   R+   R(   R   R   R  R<  R  R-   Rţ   t   random_generatort   getstatet   setstateR   t   random_double_point_on_sphereR   t   colt   norm_sqR  R   R   t    random_double_r3_rotation_matrixt   random_double_unit_quaternionR7  R¸   t*   random_double_r3_rotation_matrix_arvo_1992(
   R  RP   RÍ   R  R\   Rm  t   r1t   r2R  Rr  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_random  s¸     
 $$$C$C3333
333			+!		c    "      C   s  t  j t  j d t t  j dq dr ds f  }  |  j   dt k sF t  t |  j   du dv dw g  sj t  t |  j   dx  s t  t |  j	   dy  s  t  t |  j
   dz  sť t  t |  j   d{ d| d} f  sß t  t  j d d d g  } t |  j d |  d~ d d f  s!t  t  j d d d g  } t |  j d |  d  sZt  |  d 7}  t t |   d d d f  st  t t |  d  d d d f  s°t  t t |  |   d d d f d d d f d d d f f  sót  |  d 8}  t t |   d d d f  s!t  |  j   } | d 9} t t |  d d d f  s[t  | |  7} t t |  d d d f  st  t t |  d  d d d  f  sąt  t |  |   dĄ d˘ dŁ f k sÖt  |  d¤ 7}  t t |  d  dĽ dŚ d§ f  st  t t d@ |   d¨ dŠ dŞ f  s0t  t  j d dJ d3 g  } t |  | dŤ dŹ d­ g  sjt  t | |  dŽ dŻ d° g  st  t |  t  j d d d g  dą d˛ d dł d d f g  sÍt  t t |  d´  dľ dś dˇ f  sőt  t t d¸ |   dš dş dť f  st  t  j d d d g  } t  j d d d* g  } t  j dJ d d- g  } t  j | | |  }  t |  dź d˝ dž f  st  t |  j |   dż  sśt  t |  j dŔ  dÁ  sÔt  t |  j   dÂ  sďt  t |  j |   dĂ g d  st  t  j | | |  } t |  j |  dÄ dĹ dĆ g  sPt  t |  j   t  j |  j     szt  t |  j   j   d g d  s˘t  t  j dÇ dČ dÉ g  } y | j   Wn+ t k
 rő} t |  d^ k süt  n Xt  t | j d_ t  j   d9 d d9 g  s,t  t |  j |  d t	 t  j |  j   | j    j     sst  t |  j   d`  st  t |  j   t  j |  j     s¸t  t |  j   t j d`   sÜt  t |  j |  t j t  j |  | j      st  t |  j |  | j |    s=t  t |  j |   d9  s[t  t | j |  d9  syt  t |  j   t j t  j |  j      sŹt  t |  |  j   d9  sËt  xŢ t  d  D]Đ }	 xÇ dJ d d g D]ś }
 t  j t  j! |
 d  d  } t  j t  j! |
 d  dJ  } t" j# | j   | j$   d f  } t" j# | j   | j$   d f  } t | j% |  | j&   |  sît  qîWqŘWt  j dĘ dË dĚ g  }  t  j' d9 d g  } t  j dÍ dÎ g  } |  j( da | db |  |  k s	t  t |  dĎ dĐ dŃ g  s0	t  t  j dŇ dÓ g  }  t |  j) d9  |   sc	t  t |  j) d  |   s	t  t |  j*   |   s	t  t+ |  j*   t  j,  sş	t  t  j dÔ dŐ dÖ g  } t | j*   d× dŘ dŮ g  sö	t  t | j) d9  | j*    s
t  t | j) d  dÚ dŰ dÜ g dm dn sG
t  t | j) d  dÝ dŢ dß g dm dn st
t  t | j) d  dŕ dá dâ g dm dn sĄ
t  t | j) d  | dm dn sĹ
t  t  j dă dä dĺ g  }  t |  |  j- dć d t j.   st  t |  |  j- dç t  j d d t j.    s9t  t  j dč dé dę g  } t |  |  j- | t  j d d t j.    st  dT d  l/ } xft0 do  D]X} t" j1 g  t0 d  D] } | j2 d3 d  ^ qˇ } | j3   d9 k rđqn  | j4 d9 d t j.  } g  |  D]! } t" j1 |  j- | |  ^ q} t |  j- | |  |  sXt  t  j g  t0 do  D] } | j4 d9 d t j.  ^ qk } g  t0 t5 |    D]) } t" j1 |  |  j- | | |  ^ qŚ} t |  j- | |  |  st  qWt" j1 d9 d9 d9 g  } y |  j- | |  Wn t k
 r9n Xt  y |  j- | |  Wn t k
 rgn Xt  t  j dë dě dí g  }  |  j6 |   } dp } x* | D]" } t7 | d9  | k  s˘t  q˘Wt" j1 dî  } t  j | g d  } |  j6 |  } |  j6 |  } x9 t8 | |  D]( \ } }  t7 | |   | k  st  qWxQ t8 |  |  D]@ \ }! } t" j1 |!  j6 |  }  t7 | |   | k  sWt  qWWd  S(ď   NR  i   i   i   iţ˙˙˙i   i   R"   RZ  t   zg       Ŕg       @g      @g      @g      @g      "@g      (@t   weightsgń?gffffff
@g@i
   i   i   i   i   i#   i   i   i"   i   i   i!   i   i4   i-   i   i5   i,   i6   i+   i   i   iú˙˙˙i	   i   iř˙˙˙i   ií˙˙˙iä˙˙˙iű˙˙˙ię˙˙˙iĺ˙˙˙iď˙˙˙ić˙˙˙iů˙˙˙i    iF   i.   iD   i   i0   iB   iý˙˙˙iß˙˙˙iž˙˙˙i˙˙˙ič˙˙˙iť˙˙˙i˙˙˙iŮ˙˙˙i¸˙˙˙i˙˙˙i   ii   i8   iĄ   iî   iż˙˙˙i˙˙˙i[˙˙˙iü˙˙˙g      'Ŕi˙˙˙˙i1   iě˙˙˙i   i]   i~   i   iÜ˙˙˙i?   iÓ˙˙˙sM   flex.vec3_double.each_normalize(): number of vectors with length zero: 2 of 3t   raise_if_length_zeroi  Rŕ   Râ   g@gÍĚĚĚĚĚ#ŔgÍĚĚĚĚĚ#@g      %@g{ŽGáz?g9îÖ˙ß?gŐxé&1ŕ?iö˙˙˙g        g      ŕ?Rk  gVçŻŇ<id   gHŻźň×z>(   i   i   i   (   iţ˙˙˙i   i   (   i   i   i   (   R"   RZ  R  (   i   iţ˙˙˙i   (   i   i   i   (   i   i   i   (   g       Ŕg       @g      @(   g      @g      @g      @(   g       @g      "@g      (@gUUUUUUĺ?g      @g      @gUUUUUUĺ?g      @g      @(   gń?gffffff
@g@(   i
   i   i   (   i   i   i#   (   i   i   i"   (   i   i   i!   (   i   i   i
   (   i   i4   i-   (   i   i5   i,   (   i!   i6   i+   i   i,   iF   i   i.   iD   i   i0   iB   (   i
   i   i   (   i   i   i   (   iţ˙˙˙i   i   (   i   i   i   (   i   i   i   (   iú˙˙˙i	   i   (   i	   i   i	   (   i   i   i   (   iř˙˙˙i   i   (   i   i   i   (   i   i   i
   (   ií˙˙˙iä˙˙˙iű˙˙˙(   ię˙˙˙iĺ˙˙˙iú˙˙˙(   iď˙˙˙ić˙˙˙iů˙˙˙(   i    i    i    (   i    i    i    (   i    i    i    (   i
   i   i   (   i   i,   iF   (   i   i.   iD   (   i   i0   iB   (   iß˙˙˙iž˙˙˙i˙˙˙(   ič˙˙˙iť˙˙˙i˙˙˙(   iŮ˙˙˙i¸˙˙˙i˙˙˙(   i!   iB   ii   (   i8   iĄ   iî   (   iż˙˙˙i˙˙˙i[˙˙˙(   i!   iB   ii   (   i8   iĄ   iî   (   iż˙˙˙i˙˙˙i[˙˙˙(   i   i   i#   (   iü˙˙˙g      'Ŕiď˙˙˙gUUUUUUŐ?(	   i˙˙˙˙i   i    i   i    i˙˙˙˙i   i˙˙˙˙i   (   i.   ič˙˙˙i   (   i1   ić˙˙˙i   (   i,   iě˙˙˙i	   (	   i˙˙˙˙i   i    i   i    i˙˙˙˙i   i˙˙˙˙i   (   i   ič˙˙˙i   (   i   ić˙˙˙i   (   i   iě˙˙˙i   (   i   i   i   (   i   i   i   (   i   i   i	   (   iB   i]   i~   (   i   i   i   (   i   i   i   (   iB   i]   i~   (   i    i    i    (   i	   i-   iĺ˙˙˙(   i	   i6   iÜ˙˙˙(   i	   i?   iÓ˙˙˙(   i    i    i    (   i    i   i    (   i    i    i    (   i   i   i   (   iţ˙˙˙i   i   (   i   i   i   (   i   i   iř˙˙˙(   iü˙˙˙i	   i   (   i   i   iý˙˙˙(   iţ˙˙˙i   i   (   i˙˙˙˙i   i   (   i   i   i   (   iü˙˙˙iű˙˙˙i   (   gń?g@gffffff
@(   gÍĚĚĚĚĚ#ŔgÍĚĚĚĚĚ#@g      %@(   g{ŽGáz?g9îÖ˙ß?gŐxé&1ŕ?(   i   i   i   (   iö˙˙˙i
   i   (   i    i    i   (   gń?g@gffffff
@(   gÍĚĚĚĚĚ#ŔgÍĚĚĚĚĚ#@g      %@(   g        g      ŕ?g      ŕ?(   gń?g@gffffff
@(   gÍĚĚĚĚĚ#ŔgÍĚĚĚĚĚ#@g      %@(   g{ŽGáz?g      ŕ?g      ŕ?(   gń?g@gffffff
@(   gÍĚĚĚĚĚ#ŔgÍĚĚĚĚĚ#@g      %@(   g{ŽGáz?g      ŕ?gŐxé&1ŕ?(   i   i   i   (   iţ˙˙˙i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i    i    (   i    i   i    (   i    i    i   (   i   i   i   (   iţ˙˙˙i   i   (   i   i   i   (   i   i   i   (9   R   t   exercise_triplet   vec3_doubleR   RU  R   R   RV  R   R   Rš   R<  R'   RA  R+   R   t   dott   crosst   normsR?  t   each_normalizeR3   R4   R   R   t   max_distanceR  RW  R;  R@  t   rms_differencet
   rms_lengthR.   R2   R   t   recR(   t   transpose_multiplyt	   transposeR   R  RE  RG  t
   isinstancet   vec3_intt   rotate_around_originR`  Rł   R0   Rz  Rś   t   lengtht   uniformRs   t   angleR7  RF  ("   R\   R  RĽ   R^   R"   RZ  R  t   zozRB   R  R    t   sites_1t   sites_2t   m1t   m2RP   R  t   axesRł   RÍ   R˛   R  t   pointRě   t   anglesR%  Rk  t   ttRŤ   t   t1t   t2t   tt1t   tt2t   aa(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_vec3_doublew  s.   $$*!
$(3
$
$
$%
(""%%'*(-4*$:'3  $$!$$$$(114 +!	2?%      c          C   sC  t  j dD dE dF f  }  t |  j   dG dH g  s9 t  t |  j   dI  sT t  t |  j   dJ  so t  t |  j   dK  s t  t |  j   dL dM f  sŤ t  t  j	 d d d g  } t |  j
 d |  dN dO f  sę t  t  j	 d d d g  } t |  j
 d |  dP  s#t  |  dQ 7}  t t |   dR dS dT f  sQt  t t |  dU  dV dW dX f  syt  t t |  |   dY dZ f d[ d\ f d] d^ f f  słt  |  d_ 8}  t t |   d` da db f  sát  |  j   } | d 9} t t |  dc dd de f  st  | |  7} t t |  df dg dh f  sIt  t t |  di  dj dk dl f  sqt  t |  |   dm dn do f k st  |  dp 7}  t t |  d  dq dr ds f  sČt  t t d/ |   dt du dv f  sđt  t |  t  j	 d d d g  dw dx d dy d f g  s.t  t t |  dz  d{ d| d} f  sVt  t t d~ |   d d d f  s~t  t  j	 d d d g  } t  j	 d d d g  } t  j | |  }  t t |   d d d f  sät  t t |  j |    d  st  t t |  j    d  s)t  t  j | |  } t |  j |  d t t  j |  j   | j    j     st  t |  j   d?  st  t |  j   t  j |  j     sÇt  t |  j   t j d@   sët  t |  j |  t j t  j |  | j      s%t  t |  j |  | j |    sLt  t |  j |   d*  sjt  t | j |  d*  st  t |  j   t j t  j |  j      sťt  t |  |  j   d*  sÚt  xŢ t d  D]Đ } xÇ dA d d g D]ś } t  j t  j | d  d  } t  j t  j | d  dA  } t j | j   | j   d f  }	 t j | j   | j   d f  }
 t | j |  |	 j   |
  sýt  qýWqçWt  j d d d g  }  t  j d* d g  } t  j d d g  } |  j dB | dC |  |  k s!t  t |  d d d g  s?t  d  S(   Ni   i   iţ˙˙˙i   i   g       Ŕg       @g      @g      @g      "@R  i   gń?gffffff
@i
   i   i   i   i   i   i   i   i   i   i4   i   i5   i!   i6   i   iú˙˙˙i	   i   iř˙˙˙i   ií˙˙˙iä˙˙˙ię˙˙˙iĺ˙˙˙iď˙˙˙ić˙˙˙i    i,   i.   i   i0   iý˙˙˙iß˙˙˙iž˙˙˙ič˙˙˙iť˙˙˙iŮ˙˙˙i¸˙˙˙iü˙˙˙g      'Ŕi˙˙˙˙iő˙˙˙iń˙˙˙ió˙˙˙i   i   i-   i[   g     ŔV@i   Rŕ   Râ   (   i   i   (   iţ˙˙˙i   (   i   i   (   i   iţ˙˙˙i   (   i   i   i   (   g       Ŕg       @(   g      @g      @(   g       @g      "@gUUUUUUĺ?g      @gUUUUUUĺ?g      @(   gń?gffffff
@(   i
   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i4   (   i   i5   (   i!   i6   i   i,   i   i.   i   i0   (   i
   i   (   i   i   (   iţ˙˙˙i   (   i   i   (   i   i   (   iú˙˙˙i	   (   i	   i   (   i   i   (   iř˙˙˙i   (   i   i   (   i   i   (   ií˙˙˙iä˙˙˙(   ię˙˙˙iĺ˙˙˙(   iď˙˙˙ić˙˙˙(   i    i    (   i    i    (   i    i    (   i
   i   (   i   i,   (   i   i.   (   i   i0   (   iß˙˙˙iž˙˙˙(   ič˙˙˙iť˙˙˙(   iŮ˙˙˙i¸˙˙˙(   i   i   (   iü˙˙˙g      'ŔgUUUUUUŐ?(   i˙˙˙˙i   i    i˙˙˙˙(   iő˙˙˙iő˙˙˙(   iř˙˙˙iń˙˙˙(   ió˙˙˙iő˙˙˙(   i˙˙˙˙i    i   i˙˙˙˙(   iő˙˙˙iő˙˙˙(   iř˙˙˙iń˙˙˙(   ió˙˙˙iő˙˙˙(   i   i   (   i   i   (   i   i   (   i   i   i-   (   i   i   i-   (   i   i   i   (   iţ˙˙˙i   i   (   i   i   i   (   i   i   iř˙˙˙(   iü˙˙˙i	   i   (   i   i   iý˙˙˙(   iţ˙˙˙i   i   (   i˙˙˙˙i   i   (    R   t   vec2_doubleR   RV  R   R   R   Rš   R<  R'   RA  R+   R   R  R  R  RW  R;  R@  R?  R  R  R.   R2   R   R  R(   R  R  R  R   R  (   R\   R  RĽ   R"   RZ  R  R    R  R  R  R  RP   R  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_vec2_double  s    !!'!
$(*
$
$
$%
("$$!4*$:'3  $$!$c          C   sP   t  j t  j  t  j d d d	 f  }  t |  j   d
 d d g  sL t  d  S(   Ni   i   i   iţ˙˙˙i   i   (   i   i   i   (   iţ˙˙˙i   i   (   i   i   i   (   i   i   i   (   iţ˙˙˙i   i   (   i   i   i   (   R   R  R  R   t   as_vec3_doubleR   (   R\   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_vec3_intZ  s    c          C   s  t  j   }  |  j   d k s$ t  t  j d  }  x  |  D] } | d k s: t  q: Wt  j d d f  }  |  j   d k s t  t |   d d f k sĄ t  t |  j   d  sź t  t j |   } t j	 |  } t |   t |  k sř t  t t |  j
    d  st  t  j |  j
    } t |   t |  k sLt  t  j d  d! g  } t |  | d" d# g  st  t |  | d$ d% g  st  | d 9} t | d& d' g  sÄt  t  j d(  t  j d)  t  j d*  t  j d+  t  j d,  t  j d-  g \ } } } } } }	 t  j | | | | | |	  }
 |
 j   | j   k s`t  t |
 d. d/ d0 f  s~t  d  S(1   Ni    i   i   i   i   i   i   i   i   gd&JGě)@g¨F9/@iř˙˙˙i   iű˙˙˙i	   i   iú˙˙˙iţ˙˙˙iü˙˙˙i   i   ič˙˙˙i   i   (   i    i    i    i    i    i    (   i   i   i   i   i   i   (   i   i   i   i   i   i   (   i   i   i   i   i   i   (   i   i   i   i   i   i   (   gd&JGě)@g¨F9/@(   i   i   i   i   i   i   i   i   i   i   i   i   (   i   i   iř˙˙˙i   i   i   (   i   i   i    i   i   i   (   i   i   iű˙˙˙i   i	   i	   (   i   i   i   i   i   i   (   iú˙˙˙iţ˙˙˙i   i   i   i   (   iü˙˙˙i   i   i   i   i   (   i   i   ič˙˙˙i   i   i	   (   i   i   i    i	   i   i   (   i    i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i    i   i   i   i   i   (   i   i   i   i   i   i   (   i   i   i   i   i   i   (   R   t   sym_mat3_doubleR(   R   R+   R   R  R   R   R   R  R'   (   R\   R"   R  RĽ   t   a00t   a11t   a22t   a12t   a13t   a23RŤ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_sym_mat3_double_  s:    !
$c          C   sŃ  t  j   }  |  j   d k s$ t  t  j d  }  |  j   d k sK t  x  |  D] } | d k sR t  qR Wt  j d  g  }  |  j   d k s t  t |   d" k s° t  t j |   } t j |  } t |   t |  k sě t  t t |  d  d$  st  t t |  t  j	 d%   d'  s3t  t |  d( d*  sLt  t  j d+ g  } t |  | d-  swt  d. } t t |  |  d0  st  t  j
 d1 g  } t t |  |  d3  sÍt  d  S(4   Ni    i   i   i   i   i   i   i   i   i   i	   g       @g      @g      @g       @g      $@g      (@g      ,@g      0@g      2@g      >@g      8@g      U@g     @Q@g      K@g     @a@g     \@g     V@g      @@g      I@(	   i    i    i    i    i    i    i    i    i    (	   i   i   i   i   i   i   i   i   i	   (	   i   i   i   i   i   i   i   i   i	   (   (	   i   i   i   i   i   i   i   i   i	   (	   g       @g      @g      @g       @g      $@g      (@g      ,@g      0@g      2@(   (	   g       @g      @g      @g       @g      $@g      (@g      ,@g      0@g      2@(   i   (	   g       @g      @g      @g       @g      $@g      (@g      ,@g      0@g      2@(   (	   g       @g      @g      @g       @g      $@g      (@g      ,@g      0@g      2@(	   i	   i   i   i   i   i   i   i   i   (	   g      >@g      8@g      2@g      U@g     @Q@g      K@g     @a@g     \@g     V@(   (	   g      >@g      8@g      2@g      U@g     @Q@g      K@g     @a@g     \@g     V@(	   i	   i   i   i   i   i   i   i   i   (	   g      >@g      8@g      2@g      U@g     @Q@g      K@g     @a@g     \@g     V@(   (	   g      >@g      8@g      2@g      U@g     @Q@g      K@g     @a@g     \@g     V@(   i   i   i   (   g      ,@g      @@g      I@(   (   g      ,@g      @@g      I@(   i   i   i   (   g      ,@g      @@g      I@(   (   g      ,@g      @@g      I@(   R   t   mat3_doubleR(   R   R+   R   R   R   R   R'   R  (   R\   R"   R  RĽ   R  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_mat3_double~  s0    

c          C   sí   t  j   }  |  j   d k s$ t  t  j d  }  x  |  D] } | d k s: t  q: Wt  j d d	 d
 f  }  |  j   d k s t  t |   d d d f k s§ t  t |  j d   d k sČ t  t |  j d   d k sé t  d  S(   Ni    i   i   i   i   i   (   i    i    (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   i   (   i   i   i   (   R   t   tiny_size_t_2R(   R   R+   t   column(   R\   R"   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_flex_tiny_size_t_2  s    !!c          C   sĄ  t  j t d   }  t  j d |   } | j   j   d k sE t  t  j |  d d } t | j   d  su t  t | j	   d  s t  t | j
   d0  sŤ t  t | j    d1 k sÉ t  t | j   d2  sä t  | j d  d k s˙ t  | j d  d	 k st  | j   d k s2t  t | j d d  d  sSt  t | j d d d d  swt  | j d  t | j    d3 k s˘t  | j d  | j d  t | j    d4 k sÚt  t  j t  j   d d	 d	  } | j d  | j d  | j d  t | j    d5 k s=t  | j d d d t | j    d6 k snt  t  j t  j d7  d d	 d	  } | j |  t | j    d8 k sşt  t  j t d d    } t  j d! | d |  } t | j   d  st  t | j	   d  s t  t | j
   d9  s;t  t | j    d: k sYt  | j   d" k sqt  t  j d! | d | d d#  } t | j    d; k s­t  | j   d	 k sĹt  t  j d! | d | d d  } t | j    d< k st  | j   d k st  t   } | j d% | d& d'  | j   d( k sPt  t  j d | d) d d* d d d	 d d+  } t   } | j d% | d& d,  | j   d- k sąt  | j   d. k sÉt  g  | j   D] } | j   ^ qÖ} t | d d d$ d/ g  st  x t t g D]} }	 |	 j |  }
 |	 j |
  } t   } | j d% | d& d,  t | j   | j    st  | j   d. k st  qWd  S(=   Ni   Rb  ič  t   n_slotsi   i    i   g      @i   gffffffţ?gÍĚĚĚĚĚ@g      #@g*@g1@i
   i   g3333330@t
   max_pointsi   g°ÄĘf@t   relative_tolerancegš?gěQ¸ë@iô˙˙˙i   iţ˙˙˙i   g§üľ  @g
×Łp=
@i   iý˙˙˙i   Rč   i   g      ŕ?i   R;   R3  t   *sG   *0 - 3.8: 7
*3.8 - 7.6: 4
*7.6 - 11.4: 4
*11.4 - 15.2: 4
*15.2 - 19: 7
t   data_mint   data_maxg-Cëâ6?t   &s)   &2 - 4: 2
&4 - 6: 2
&6 - 8: 2
&8 - 10: 3
i   i	   gffffff@(   i   i   i   i   i   (   gffffffţ?gÍĚĚĚĚĚ@g      #@g*@g1@(   i   i   i   i   i   (   i   i   i   i   i   (   i    i    i    i   (   i    i    i    i   (   i   i   i   i   i   (   i    i    i   i   gffffff@(   i   i   i   i   i   (   i   i   i   i   i   (   i   i   i   i   i   (   R   R'   R.   t	   histogramt   slotsR(   R   R   Rť  Rź  t
   slot_widthR+   t   slot_centerst
   get_i_slott   n_out_of_slot_ranget
   get_cutofft   updateR   RR  RS  t
   slot_infost   centerR   t   cPickleR   R   R   (   R"   R    t   h2t   h3RZ  t   hyR   t   infot   centerst   picklerR  R   R%  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_histogram¤  s|    !$!			!		%!	"c          C   sP  d d d  d  }  |  d g d d |  d d g d d |  d g d d	 |  d d g d d
 |  d d g d d |  d d d d g d d |  d d d d d g d d |  d d g d d |  d d d g d d |  t d  d d d d |  t d d  d d d d |  d g d t d d d  d d d d d  S(    NR#   i
   c      	   S   sT   t    } t j d t j |   d | d | d |  t | j   |  sP t  d  S(   NRJ  t
   group_sizeR2  R3  (   R   R   t   show_count_statsR   R   RS  R   (   RJ  R3  RĐ  Rě   t   sio(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyRđ   ď  s    		i    Rě   s      None:  1  1.00000
s      None:  2  1.00000
i   s   >=    1:  1  1.00000
s   >=    1:  2  1.00000
s*   >=    1:  1  0.50000
   None:  1  0.50000
i   s*   >=   10:  2  0.50000
>=    1:  4  1.00000
s?   >=   10:  2  0.40000
>=    1:  4  0.80000
   None:  1  0.20000
i   s*   >=   20:  1  0.50000
>=   10:  2  1.00000
s?   >=   20:  1  0.33333
>=   10:  2  0.66667
   None:  1  0.33333
i"   R3  s   :|sx   :|>=   30:   4  0.11765
:|>=   20:  14  0.41176
:|>=   10:  24  0.70588
:|>=    1:  33  0.97059
:|   None:   1  0.02941
i   iJ   RĐ  i   s   >=   72:   2  0.03922
>=   60:  14  0.27451
>=   48:  26  0.50980
>=   36:  38  0.74510
>=   24:  50  0.98039
>=   12:  51  1.00000
i]   i'  id   i  s`   >= 10000:    1  0.00515
>=  5000:   51  0.26289
>=     1:  100  0.51546
    None:   94  0.48454
(   RŽ   R0   (   Rđ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_show_count_statsî  s2    &c         C   s]  t  |   t  |  k s t  t  |   t  |  k s< t  d } d } d } d } d } d } xŚ t t  |    D] }	 | | |	 7} | |  |	 | |	 7} | | |	 | |	 7} | |  |	 d | |	 7} | | |	 d | |	 7} | |  |	 | |	 | |	 7} qs W| | | d }
 | | | | } | |
 } | | | | } | |
 } | | f S(   Ni    i   (   Rs   R   R.   (   t   x_obst   y_obst   w_obsRa   R"   RZ  t   x2t   y2t   xyRP   Ro  R\   RĽ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   simple_linear_regression/  s*    "

c    
   
   C   sÉ  t  j d  }  t  j d |  d |  d d  } | j   s? t  t | j   d  sZ t  t | j   d  su t  t  j d d d f  } t  j |  |  } | j   są t  t | j   d  sĚ t  t | j   d  sç t  t  j d  } t  j |  |  } | j   st  t | j   d  s5t  t | j   d  sPt  t  j | |  } | j   sut  t   } | j	 d | d d  | j
   d t t  k sśt  t  j d  d" d$ f  } xd t j g D]ü } t  j d |  } t  j d |  d | d d  } t  j d |  d | d | d d  } | j   sJt  t | j   | j    skt  t | j   | j    st  t |  | |  \ } } t | | j    sżt  t | | j    sŢt  qŢWxä t d  D]Ö }	 t  j d d  }  |  t  j d d  d d d } t  j d d  } t  j d |  d | d |  } t |  | |  \ } } t | | j    st  t | | j    sŁt  t | j   d d  sët  qëWd  S(%   Ni   i   i   R"   RZ  t   epsilongíľ ÷Ć°>i    g      đżg       Ŕg      ŔR;   R3  s   /:s6   /:is_well_defined: %s
/:y_intercept: 0.0
/:slope: 0.0
R  id   R(   i
   gÉ?gš?(   i   i   i   g      ŕżg      ŕ?g      đżg        g      řżg      ŕżg      ŕż(   i    i    i    g      ŕżg      ŕ?g      đżg        g      řżg      ŕż(   R   R'   t   linear_regressiont   is_well_definedR   R   t   y_interceptt   slopeR   t   show_summaryRS  R4   R   R@  R`  RÚ  R.   R2   (
   R"   R`   RZ  R   t   weightR  t   rwR\   RĽ   R  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_linear_regressionF  sR    		$!!"c          C   sM  t  j d  }  t  j d |  d |  d d  } | j   s? t  | j   d k sW t  t | j   d  sr t  t | j   d  s t  t | j	   d  s¨ t  t | j
   d  sĂ t  t | j   d  sŢ t  t | j   d  sů t  t | j   d  st  t  j d d d f  } t  j |  |  } | j   sPt  t | j   d  skt  t  j d  } t  j |  |  } | j   st  t | j   d  sšt  t  j | |  } | j   sÝt  t  j t  j   t  j    } | j   st  t   } | j d |  | j   d t t  k sIt  d  S(   Ni   i   i   R"   RZ  RŰ  gíľ ÷Ć°>g      đżg       Ŕg      Ŕi˙˙˙˙i    R;   s=   is_well_defined: %s
mean_x: 0.0
mean_y: 0.0
coefficient: 0.0
(   i   i   i   g      ŕżg      ŕ?g      đżg        g      řżg      ŕż(   i    i    i    (   R   R'   t   linear_correlationRÝ  R   R    R   t   mean_xt   mean_yt	   numeratort   sum_denominator_xt   sum_denominator_yt   denominatort   coefficientR   Rŕ  RS  R4   R   (   R"   RŤ   RZ  R   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_linear_correlationt  s6    		c          C   sĆ  t  j d  }  x˛d  t  j d  f D]} | d  k r\ t  j |   } | j   s t  n$ t  j |  |  } | j   s t  t | j   d  s t  t | j   d  sś t  t | j	   d  sŃ t  t | j
   d  sě t  t | j   d  st  t | j   d  s"t  t | j   d  s=t  t | j   d d  s\t  | j   s% t | j   d  st  t | j   d  st  t | j   d d  sŔt  q% q% Wt  j d  } t  j |  |  } t | j   d  s t  t | j   d  st  t | j	   d  s6t  t | j
   d  sQt  t | j   d  slt  t | j   d d d d d d d d d d d d d d  sťt  t | j   t j d   sßt  t | j   d d  sţt  t  j d  }  t  j |   } t | j   d  s7t  t | j   d  sRt  t | j   d d  sqt  t | j   d  st  t | j   d  s§t  t | j   d  sÂt  d  S(   Ni   i   i   i   g      ŕ?i   g      @i   i   i$   g      6@i    (   i   i   i   (   i   i   i   gŞLXčzśű?gŞLXčzśű?(   i   i   i   gUUUUUU@gŤŞŞŞŞŞ@i   gUUUUUU@gUUUUUU@gUUUUUU@gşč˘.şč?g.!	@(   i   i   i   gŞLXčzśű?(   R   R'   RŽ   t   mean_and_variancet   have_weightsR   R   R<  t   sum_weightst   sum_weights_sqt   sum_weights_valuest   sum_weights_delta_sqt   gsl_stats_wvariancet   gsl_stats_wsdt5   standard_error_of_mean_calculated_from_sample_weightst   unweighted_sample_variancet$   unweighted_sample_standard_deviationt!   unweighted_standard_error_of_meanR@  R?  (   R"   Ra   t   mv(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_mean_and_variance  sX    	&C$		c          C   sű  xôt  j t  j f D]ŕ}  |  d d d d g  } |  d d d d g  } t t  j | | d	 d
  d  sp t  t t  j | | d  d  s t  t t  j | | d  d  s¸ t  t t  j | | d*  d d d sâ t  t t  j | | d+  d d d st  t t  j | | d  d  s0t  t t  j | | d,  d d d sZt  t t  j | | d-  d d d st  xN t d  D]@ } d d | d } t t  j | | |  d |  st  qWxX d d g D]J } y t  j | | d  Wn$ t k
 r  qât k
 r%qâXt	  qâW|  d d d g  } t t  j | | | d
  d d d g  sut  t t  j | | |  d d d g  s˘t  |  d d d d g  } |  d d d d g  } |  d d d d d d d d g  } t t  j | | |  d d d d d d  d! d g  s2t  |  d d d d g  } |  d d" d d# g  } x d
 d$ g D] } |  d d d d d d d d g  | } t t  j | | |  d d% d" d/ d" d1 d d d3 d d5 d# g d d sot  qoWq Wd  S(6   Ni   i   i   i   i
   i   i   i(   g      @gíľ ÷Ć°>i#   gÍĚĚĚĚĚ @i   Rk  g-Cëâ6?i   g      $@i    i   gÍĚĚĚĚĚô?g333333@gÍĚĚĚĚĚ@i   i   i$   i   i   i   i   g      @i   g     !@i	   iú˙˙˙iö˙˙˙gíľ ÷Ć°ži˙˙˙˙g      @i   i   g      @gé!çý˙ď?gzo đ?gŢC  @gúBČy˙˙@g      Đ?g      @g      ŕ?g      @g      K@g      @g      R@g      "@(
   R   t   floatR'   R   t   linear_interpolationR   R.   t   KeyboardInterruptR   R   (   RŚ   t   tab_xt   tab_yRP   R"   Rk  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_linear_interpolationÄ  sV    '$$$,   
$'(.c    
      C   s   g  }  t  j d d  } x* | j   sD |  j |    | j   q W|  d d d d d d g k si t  g  }  x$ t  j d  D] } |  j |  q W|  d d d d d d  g k sş t  g  }  x- t  j d d! d t  D] } |  j |  qŮ W|  d" d# d$ d% d& d' g k st  g  }  x' t  j d( t  D] } |  j |  q-W|  d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 g k szt  g  }  x- t  j d d5 d d6  D] } |  j |  qW|  d7 d8 d9 d: g k sÎt  g  }  x3 t  j d d; d d< d t  D] } |  j |  qóW|  d= d> d? d@ g k s(t  g  }  x* t  j dA dB t  D] } |  j |  qDW|  dC dD dE dF dG dH dI dJ dK g	 k st  g  }  x* t  j dL dM t  D] } |  j |  q¤W|  dN g k sĐt  g  }  x' t  j dO dP  D] } |  j |  qéW|  g  k st  g  }  x' t  j g  g   D] } |  j |  q+W|  g  k sTt  d } t  j } t j   } xS t	 |  D]E } t
 | d d d	 d
 d d g d d d d d d g d t   } q|W| d k rçd t j   | GHn  t j j } t j   } xf t	 |  D]X } g  | d d d	 d
 d d g d d d d d d g d t  D] } t |  ^ qL}	 qW| d k rd t j   | GHn  |	 | k st  d  S(Q   Nt   endi   i   i    i   t
   open_ranget   begini   iű˙˙˙i   i
   iů˙˙˙i   i   i   iý˙˙˙s   C++ nested_loop: %.2f ss   Python nested_loop: %.2f s(   i   i   (   i    i    (   i    i   (   i    i   (   i   i    (   i   i   (   i   i   (   i   i   (   i    i    (   i    i   (   i    i   (   i   i    (   i   i   (   i   i   (   i   i   (   i    i    (   i    i   (   i    i   (   i   i    (   i   i   (   i   i   (   i   i   (   i    i    (   i    i   (   i    i   (   i    i   (   i   i    (   i   i   (   i   i   (   i   i   (   i   i    (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   t   nested_loopt   overR1   t   incrR   R   R   t   timeR.   R-   R  R  R+   (
   t   pointst   loopt   indext   n_trialst   nlt   t0R  RŤ   RP   R  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_loopsî  sv    $$$%-	CSc          C   s  d t  f d     Y}  g  } x. t d  D]  } | j |  | | d   q) Wx | t |  g D]~ } t j d | d d d d   } t | d	 d d
 g  s˘ t  t j d | d d d d   } t | d d
 d g  s` t  q` Wd  | d _	 d  | d
 _
 x | t |  g D]~ } t j d | d d d d  } t | d	 d d
 g  sQt  t j d | d d d d  } t | d d
 d g  st  qWd  S(   Nt   groupc           B   s   e  Z d    Z RS(   c         S   s   | |  _  | |  _ d  S(   N(   R\   RĽ   (   Rq   R\   RĽ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyRr   .	  s    	(   Rv   Rw   Rr   (    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyR  -	  s   i   i   RÄ   t   attribute_nameR\   t   none_substitutei    i   RĽ   iü˙˙˙(   R   R.   R1   R+   R   t   extract_double_attributesRŽ   R   R   R\   RĽ   (   R  t   groupsRP   RÄ   t   east   ebs(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_extract_attributes,	  s(    		"		c          C   sň   t  j t  j d   }  y |  j d d  Wn+ t k
 rY } t |  d k sc t  n
 Xt d  y |  j d  Wn+ t k
 rĄ } t |  d k sŤ t  n
 Xt d  y |  d	 Wn+ t k
 rä } t |  d k sî t  n
 Xt d  d  S(
   Ni   i   i   i    s$   Array must be 0-based 1-dimensional.s    No exception or wrong exception.s   Index out of range.(   i   i   (   i   i    (	   R   R'   R	   RŇ   R3   R4   R   R1   RŰ   (   R;   RB   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_exceptionsE	  s      	 	 c    '      C   sŻ  xľdP dQ g dR dS g dT dU g g D]\ }  } t  j t  j |    } t  j t  j |   } | j |  } | j   |  d | d f k s t  | j d  s¨ t  | j   j |  } | j   |  d | d f k să t  | j d  sř t  | j	 | j    } | j   |  d | d f k s3t  | j d  sHt  xi | | g D][ } | j
   } | j   d } | j   | | d d k st  | j d  sUt  qUWq" Wt  j t d d   } | j t  j d d   t  j t d d   } | j t  j d d   x | j |  | j   j |  | j	 | j    g D]Q } | j   dV k sot  t |  d d d d	 d
 d d d d g	 k sQt  qQWxt d d  D]} xt d d  D]t}	 t  j d | |	  } t  j d | |	  } | j |  } t j |  t j |  }
 |
 j dW k s>t  t | |
 d  sWt  t | j |  t j |  j t j |    st  | j t  j | |	   xt d d  D]} t  j d |	 |  } | j t  j |	 |   t j | | j    t j | | j    }
 xź | j |  | j   j |  | j	 | j    | j   j | j    j   | j | j    j   | j   j	 |  j   g D]6 } | j   |
 j k sÂt  t | |
  sĄt  qĄW| j
   j   } t | | j   j |   st  | j   j   |
 j d |
 j d f k sCt  t | j   |
 j    sdt  t | j   j   |
  st  | j   | j   |
 j d |
 j d f k sťt  t | |
 j    sÖt  | j   | j   |
 j k sűt  t | |
  st  t  j d |	  } | j |  } t j | | j    t j |  }
 |
 j d d k sot  | j   |
 j d f k st  t | |
  sŚt  t  j d |  } | j |  } t j |  t j | | j    }
 |
 j d d k st  | j   |
 j d f k s't  t | |
  sšt  qšWqĚWqśWxt d  D]÷} xît d  D]ŕ} t  j d | |  d d } | j t  j | |   t  j d | | d d  } | j | j    } | j   | | f k söt  | j |  } t | |  st  | j | j    j   } | j   | | d d k sYt  | j d |  } t | |  st  t | j   j   | j     s§t  t  j! d t  j d | | d d  d t  j d | | d d   } | j   } | j |  } | j   | | f k s(	t  | j |  } t | |  sL	t  | j | j    } t  j! d t  j" |  j   d t  j# |  j    } | j   | | d d k sť	t  | j d |  } t | |  sâ	t  | j    } t t  j" |  j   t  j" |   s
t  t t  j# |  j   t  j# |   sht  qhWqUWt  j$ t  j t d dX   t  j t d dY    } | j t  j d d   | j%   } | j t  j d d   | j |  } t | t j | | j    t j | | j     st  t  j" |  } | j |  } t | t j | | j    t j | | j     skt  | j |  } t | t j | | j    t j | | j     sˇt  t  j   j& d t  j    j   d k sçt  t  j   j& d d d d  j   d k st  t  j d g  j& d t  j    j   d k sMt  t  j d g  j& d d d d  j   d k st  t  j   j& d t  j d g   j   d k sšt  t  j   j& d d d d  j   d k sét  t  j d d d g  j& d t  j d d g   } | j   dZ k s4t  t | d d d d d d g  s[t  t  j d d d g  j& d d  } | j   d[ k st  t | d d d d d d d d d g	  sÇt  t  j d d d g  j& d d d d  } | j   d\ k s	t  t | d d d d d d g  s0t  t  j d d d d d d d d d g	  } | j t  j d d   | j'   } t | d d d d d d d d d g	  sŻt  t |  d d d d g k sÓt  xJt d d  d g D]2} x)t d  D]} t  j d | |  d d } | j t  j | |   t | j   g  t |  D] } | | | | ^ qS szt  | j%   } | j( d d  t | j   d g |  s¸t  | j( d  t  j t d d |    t | j   t d d |   st  | j) d d!  t | j   t d] d^ |   s>t  t | j*   t  j+ | j     sht  | j,   | j*   k st  t | j-   t  j. | j     s°t  t  j d |  d d" } | j%   } | j'   } | j/ d# | d$ |  } t | j |  |  sýt  qýWqęWt  j d d d d d d d d d g	  } | j t  j d d   y | j'   Wn+ t0 k
 r} t1 |  d% k sĽt  n Xt2  t  j d d d d d d d d d g	  } | j t  j d d   t  j d d d g  } t  j3 d d d d g  } y | j/ | |  Wn+ t0 k
 r\} t1 |  d& k sct  n Xt2  t  j d d d d' d d d d( d) d d d d d d* d g  } | j t  j d d   | j'   } t | j4 d# |  d+  sčt  d d d d' d d d d( d) d d d d d d* d g } t t j5 |  j6   d+  sBt  d d d d' d d d d, d) d d d d d d* d g } t t j5 |  j6   d-  st  d d d d d d d d( d) d d d d d d* d g } t j5 |  j6   d k sót  x t d  D] } t  j |  } t  j |  } | j7 d$ | d. d/  d/ k sHt  | j7 d$ |  d  k sft  | j9 d$ |  d  k s t  q Wxź t d d  D]Ť } t  j t d   } t  j t d   } t | j7 d$ | d. d/  d d0 d1 sőt  t | j7 d$ |  d d0 d1 st  t | j9 d$ |  d d0 d1 st  qWt  j d d g  } t  j d d g  } t | j9 | d2 t: d3  st  t  j d d g  } t | j9 | d2 t: d4  sÎt  t  j; d  } xâ t d d5  D]Ń } | j d |  } | j d |  } t | j7 d$ |  t j |  j7 t j |    sSt  t | j9 d$ | d2 t<  | j9 |   st  t | j9 d$ | d2 t:  | j9 |  d6 t= j>  sít  qíWd7 d8 d9 g } d: d; d< g } t? t  j |  j9 t  j |  d2 t:  d1 k  st  t t  j d d d g d d d g d d d g g  j@   d d d d d d g  sst  t t  j d d d d d d g  jA   d d d d d d d d d g	  sÄt  t t  j d d d g d d d g d d d g g  jB   d d d d d d g  st  t t  j d d d d d d g  jC   d d d d d d d d d g	  sot  t  j t d d=   } | j t  j d d   t | j@   d d d d d d d d> d d? g
  sŮt  t t  j d d d d d d d d> d d? g
  jA   d d d d d d d d d d d> d d d d d? g  sKt  t | jB   d d d d d d> d@ dA d d? g
  st  t t  j d d d d d d> d@ dA d d? g
  jC   d d d d d d d d d d d> d d@ dA d d? g  söt  dB   }  |  dC d dD t  j t  j d d   dE t  j   dF t  j    |  dC d dD t  j d g g  dE t  j d g  dF t  j d g   |  dC d dD t  j d d g d d g g  dE t  j d d d g  dF t  j d d d g   |  dC d dD t  j d d d g d d d g d d d g g  dE t  j d d d d d d g  dF t  j d d d d d d g   |  dC d dD t  j d d d d g d d! d dG g d d d d g d dG d d/ g g  dE t  j d d d d d! d dG d d d/ g
  dF t  j d d d! d d d d dG d d/ g
   x| t dH  D]n } t  j d | | d d  } |  dC | dD | j   dE | dF d   |  dC | dD | jD   dE d  dF |  q$Wt  j d d d g d d d g d d d g g  } y | j   Wn+ t0 k
 r}! t1 |!  dI k st  n Xt2  | j dJ d  } t | d d d d d d g  sDt  y | jE   Wn+ t0 k
 r}! t1 |!  dK k st  n Xt2  | jE dJ d  } t | d d d d d d g  sżt  | jF dJ dL  sŘt  | jF dJ d  sđt  t  j d  } x\ | j | jD g D]H }" y |"   Wn. t0 k
 rS} t1 |  jG dM  sZt  qXt2  qWd }# x2t d  D]$} | j d | |  d d } | j t  j | |   | j d |  d d }
 | jH dN |
  }$ t  j t  j | |  d  }% x* t |  D] } |
 | |% | | d <qW| j   j |%  j |  }& t |$ j   |&  s^t  |& jF dJ dL  svt  |& jF dJ dO  sq|# d 7}# qqqqW|# d k sŤt  d  S(_   Ni    i   i   i   i   i	   i   i   i   i   i!   i   i(   i3   i   R(   i
   t   packed_ut   realst   imagsi   t   rhst   rhs_sizei   i   i˙˙˙˙iţ˙˙˙iý˙˙˙i   g      ř?Ră   t   diagonaliű˙˙˙g      @t   pivot_indicesRĽ   s*   lu_decomposition_in_place: singular matrixs3   lu_back_substitution: pivot_indices[i] out of rangei    i?   iü˙˙˙ió˙˙˙ivż˙˙iÁ˙˙˙iU  t   value_if_undefinediö˙˙˙Rk  gť˝×Ůß|Ű=t   degi-   gĺ,gŹˇO@id   i´   g{pŹ"3żgčsśÁN.5?g1@;JË9żg}gŰť7×7żgýVţuć9?g-ô}p?żi   i   i   i   i   c         S   s  | j    |  |  f k s t  | d  k	 rŐ | j   } t | |  sK t  | j   } t | j   |  sr t  | j   } t | |  s t  | j   } | j    |  |  f k s˝ t  t | |  sŐ t  n  | d  k	 r| j   } t | |  st  | j	   } t | j   |  s)t  | j
   } t | |  sJt  | j   } | j    |  |  f k stt  t | |  st  n  d  S(   N(   R   R   RŽ   t!   matrix_upper_triangle_as_packed_uR   t!   matrix_packed_u_as_upper_trianglet   matrix_symmetric_as_packed_ut   matrix_packed_u_as_symmetrict!   matrix_lower_triangle_as_packed_lt!   matrix_packed_l_as_lower_trianglet   matrix_symmetric_as_packed_lt   matrix_packed_l_as_symmetric(   R    R   t   uR   R  R%  t   ust   ls(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_packedV
  s*    R    R   R)  R   iů˙˙˙i   s1   symmetric_as_packed_u(): matrix is not symmetric.t   relative_epsilons1   symmetric_as_packed_l(): matrix is not symmetric.gę-q=s0   SCITBX_ASSERT(n*(n+1)/2 == packed_size) failure.t   diagonal_elementsg ÂëţKH´9(   i    i    (   i    i    (   i    i   (   i   i    (   i   i    (   i    i   (   i   i   (   i   i   i   i   (   i   i   (   i   i   (   i   i   iü˙˙˙iü˙˙˙(I   R   R'   R	   t   matrix_multiplyR   R   R   t   matrix_transposet   matrix_transpose_multiplyt   matrix_multiply_transposet%   matrix_transpose_multiply_as_packed_uR(   R0   R   R-   R.   R2   R   t   rowRz  R    R   R  R   R  R$  R  t   matrix_transpose_in_placet   matrix_multiply_packed_uR#  t/   matrix_multiply_packed_u_multiply_lhs_transposet   matrix_diagonalt   matrix_packed_u_diagonalRT  R5  R6  R_  R   t   matrix_outer_productt    matrix_lu_decomposition_in_placet   matrix_diagonal_set_in_placet   matrix_diagonal_add_in_placet   matrix_diagonal_sumRš   t   matrix_tracet   matrix_diagonal_productRˇ   t   matrix_lu_back_substitutionR3   R4   R   R   t   matrix_determinant_via_luRn  Ro  t	   cos_angleRŽ   R  R   R
  R   R@  R`  R7  R!  R"  R%  R&  R(  R'  t   matrix_is_symmetrict   endswitht7   matrix_transpose_multiply_diagonal_multiply_as_packed_u('   t   agt   bgR\   RĽ   RŤ   RA   t   mtmR    t   a_n_rowst   a_n_columnsR^   t   b_n_columnst   ataR>   R?   R  t   noptt   optt   pst   noptst   pdt   opt   luR  t   rankRP   RÍ   t   mcR"   RB   R(   R
  R,  t   errRq  t   n_not_symmetrict   atda_ut   dsqt   atda_sym(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_matrixW	  s   .&&&$79.$2!!
,
%"%"!$	!	$-56===0066603'$0*'*0$="&((''&* * ?6$6$6!$"-'+$$90?96!$*6!$*	-0?	-0?	!3!"K-.3 ' '	 
		c          C   s  t  j t d d   }  |  j t  j d d   t |   d d d d d d g k s[ t  |  j   d k ss t  |  j   |  j   d k s t  t |   d d d d d d g k sż t  |  j	 d d  t |   d d d d d d g k sů t  |  j	 d d  |  j
 d d  t |   d d d d d d g k sCt  |  j
 d d  t |   d d d d d d g k s}t  |  j d  } |  j d	  } | j   d k r×| j   d k r×t |  t |  k sÝt  | j d  } | j d
  } | j   d k r7| j   d k r7t |  t |  k s=t  | j d  } | j d  } | j   d k r| j   d k rt |  t |  k st  | j d  } | j d  } | j   d k r÷| j   d k r÷t |  t |  k sýt  d  S(   Ni   i   i   i   i   i   i   i    iř˙˙˙iů˙˙˙iú˙˙˙iű˙˙˙(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   RK   R0   R   R	   R-   R   R   R5  t   matrix_swap_rows_in_placet   matrix_swap_columns_in_placet   matrix_rot90(   R\   RĽ   RŤ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_matrix_intş
  s4    *
****BBBc          C   s   t  j d  }  |  j t  j d d   |  j   d k s@ t  |  j   d k sX t  t |  j   t	 j
 d   s| t  d  S(   Ni   i   iý˙˙˙i   iű˙˙˙i   i   i   i	   i˙˙˙˙iţ˙˙˙i   i   i   g     °r@(   i   i   iý˙˙˙i   iű˙˙˙i   i   i   i	   i˙˙˙˙iţ˙˙˙iý˙˙˙(   R   R'   R   R	   t   matrix_norm_1R   t   matrix_norm_infR   t   matrix_norm_frobeniusR@  R?  (   R\   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_matrix_norms×
  s      	c          C   sl  t  j t  j d d   }  |  j d d d d d d d d  } | j   d1 k sW t  |  j d | d d d d  xŮt  j d g g  t  j d d g d	 d
 g g  g D]Ą}  |  j d d d d d d d d  } | j   d2 k sě t  |  j d | d d d d  |  j d d d d d d d d  } | j   d3 k sDt  |  j d | d d d d  |  j d d d d d d d d  } | j   d4 k st  |  j d | d d d d  |  j d d d d d d d d  } | j   d5 k sôt  t |  d g k st  d | d <|  j d | d d d d  |  d d k sŞ t  qŞ W|  j d d d d  } | j   d6 k st  | j |   st  t  j t	 d d7   }  |  j
 t  j d
 d   |  j d d d
 d  } | j   d8 k sőt  | j |   s
t  xĹ t	 d
  D]ˇ } xŽ t	 d  D]  } |  j | | d d  } | j   d9 k s`t  | d |  | | f k st  |  j   } | j t  j d g g  | |  | | | f d k s*t  q*WqWxt	 d	  D]} xř t	 d  D]ę } |  j | | d d  } | j   d: k s(t  | d |  | | f k sHt  | d |  | d | f k slt  |  j   } | j t  j d g d g g  | |  | | | f d k sźt  | | d | f d k sňt  qňWqßWxĽt	 d	  D]} xt	 d
  D]} |  j | | d d  } | j   d; k s:t  | d |  | | f k sZt  | d |  | | d f k s~t  | d |  | d | f k s˘t  | d	 |  | d | d f k sĘt  |  j   } | j t  j d d g d d g g  | |  | | | f d k s t  | | | d f d k s@t  | | d | f d k s`t  | | d | d f d k st  qWqńWx;t	 d	  D]-} x$t	 d	  D]} |  j | | d d	  } | j   d< k sât  | d |  | | f k st  | d |  | | d f k s&t  | d |  | | d f k sJt  | d	 |  | d | f k snt  | d
 |  | d | d f k st  | d |  | d | d f k sžt  |  j   } | j t  j d d d g d d d g g  | |  | | | f d k st  | | | d f d k s:t  | | | d f d k sZt  | | d | f d k szt  | | d | d f d k st  | | d | d f d k sŹt  qŹWqWt  j d d d d
 g  }  |  j
 t  j d d   |  j d d d d d d d d  } t | d d= g  s=	t  t  j d d g  } | j
 t  j d d   | j   j   d> k s	t  |  j d | d d d d  t |  d? d@ d d g  sĆ	t  t  j t  j d d   }  |  j   |  j   t  j d g g  }  |  j d d d  d  |  j d d d  d  |  j d d d  d  t |   d g k sg
t  t  j d g  } | j d d d  d  t |  d g k sŞ
t  t  j d d g d	 d
 g g  }  |  j d d d  d  t |   d d d	 d
 g k st  |  j d d d  d  t |   d	 d
 d d g k s?t  |  j d d d  d  t |   d d d	 d
 g k syt  |  j d d d  d  t |   d d d	 d
 g k słt  |  j d d d  d  t |   d d d
 d	 g k sít  |  j d d d  d  t |   d d d	 d
 g k s't  |  j d d d  d  |  j d d d  d  t |   d
 d	 d d g k swt  |  j d d d  d  t |   d d	 d d
 g k sąt  |  j   } | j d d d  d  t |  d
 d	 d g k sôt  |  j   t |   d d	 d	 d
 g k s"t  t  j d d g d	 d
 g g  }  |  j   t |   d d	 d	 d
 g k sqt  t  j d d d	 g d
 d d! g g  }  |  j d d d  d  t |   d
 d d! d d d	 g k sŘt  |  j d d d  d  t |   d
 d! d d d	 d g k st  |  j d d d  d  t |   d d! d
 d d	 d g k sXt  |  j
 t  j d	 d   |  j d d d  d  t |   d d! d	 d d
 d g k sąt  |  j d d d  d  t |   d
 d d	 d d d! g k sńt  x|t	 d d"  D]k} t  j t	 d | d   } | j
 t  j | |   x-t	 |  D]} xt	 |  D]} x˙d# d$ g D]ń} | j   }  | d# k r|  j   n
 |  j   |  j d | d  |  |  j d | d  |  | j   } | d$ k rő| j   n  | j   }	 | j d | d  |  xT t	 d |  D]C }
 x: t	 |  D], } | |
 | f |	 |
 | f k s:t  q:Wq'W| j d | d  |  t |  t |	  k s˘t  | j d | d  |  | j   t |  t |   k sŕt  |	 j   } | j d | d  |  t |  t | j    k s&t  | j d | d  |  t |  t |	 j    k sot  qoWq\WqIWqWx\ t	 d d
  D]K } t  j t  j d |   }  |  j d d  } | j   d k st  qWt  j d g g  }  |  j d d  } t |  d g k st  t  j d d g g  }  |  j d d  } t |  d g k sVt  |  j d d  } t |  d g k st  t  j d g d g g  }  |  j d d  } t |  d d g k sÎt  t  j d d g d	 d
 g g  }  |  j d d  } t |  d d	 g k st  |  j d d  } t |  d d
 g k sOt  t  j g  t	 d dA  D] } | d d k ^ qe }  |  j
 t  j d
 d   |  j d d d d d d d d	  } | j   dB k sŮt  t |  t t t t t t g k st  |  j d | d d d d  t |   t t t t t t t t t t t t t t t t t t t t g k sst  |  j d | d d d d  t |   t t t t t t t t t t t t t t t t t t t t g k săt  t  j t	 d dC   }  |  j
 t  j d
 d   |  j d d d d d d d d	  } | j   dD k sPt  t |  d% d& d d' d( d) g k szt  |  j d | d d d d  t |   d d% d& d d d! d' d( d) d d" d* d' d( d) d+ d, d- d. d g k sęt  |  j d | d d d d  t |   d d% d& d d d! d' d( d) d d" d* d% d& d d+ d, d' d( d) g k sZt  t  j t	 d dE   }  |  j
 t  j d
 d   |  j d d d d d d d d	  } | j   dF k sÇt  t |  d% d& d d' d( d) g k sńt  |  j d | d d d d  t |   d d% d& d d d! d' d( d) d d" d* d' d( d) d+ d, d- d. d g k sat  |  j d | d d d d  t |   d d% d& d d d! d' d( d) d d" d* d% d& d d+ d, d' d( d) g k sŃt  t  j d d d	 d
 g  }  |  j t  j d d   |  j   st  d |  d <|  j   s4t  dG \ } } t  j  | |  }  |  j t  j | |   t  j dH  } y |  j! | |  t"  Wn t# k
 r¨n Xy) t  j dI  } |  j! | d  t"  Wn t# k
 rĺn Xy) t  j dJ  } |  j! | d  t"  Wn t# k
 r"n XxB t	 |  D]4 } |  j! | |  |  j |  j |  s0t  q0Wd  S(K   Ni    R@   t   i_columnR>   R?   t   blocki   i   i   i   i   i   i]   i[   iö˙˙˙ia   iü˙˙˙ió˙˙˙iT   iO   iý˙˙˙iK   iá˙˙˙i0   iů˙˙˙y               @y              @y                i
   y              4@RP   RÍ   i   i   R)  R   i   i	   i   i   i   i   i   i   i   i   i˙˙˙˙iţ˙˙˙(   i    i    (   i    i    (   i   i    (   i    i   (   i   i   (   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   y      @        (   i   i   y      đ?        y      $@        i   (   i   i   i   (   i   i   i   (   i   i   (   i   i   (   i˙˙˙˙iţ˙˙˙iý˙˙˙(   i˙˙˙˙iţ˙˙˙(   i˙˙˙˙iţ˙˙˙iý˙˙˙iü˙˙˙($   R   R'   R	   t   matrix_copy_blockR   R   t   matrix_paste_block_in_placeR-   R   R.   R   R   RT  R   R0  t,   matrix_copy_upper_to_lower_triangle_in_placet,   matrix_copy_lower_to_upper_triangle_in_placeR]  R^  t>   matrix_symmetric_upper_triangle_swap_rows_and_columns_in_placet.   matrix_packed_u_swap_rows_and_columns_in_placeR!  R5  t   matrix_copy_columnR(   Rű   R   R   RK   R   R   RD  R8   t   matrix_paste_column_in_placeR   R3   (   R\   RĽ   RP   RÍ   RŤ   R)  R    t   a0t   triangle_flagt   b0t   iit   jjR?   RA   R  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_matrix_moveá
  s   $=$$$$
 "$ $(( $$(.  , $$$((4   $,$!

!$$$$$$$$!
$!
$'*****
	.		
$4!5$*		$*		$*		



c          C   sT  xMd	 d
 d d d d d d d d d d d g D]\ }  } t  j t |  |   } | j t  j |  |   y­ | j   } | j   | | f k s t  x| t |  D]n } xe t |  D]W } | | k rę | | | f d k st  qš | | | f | | | f k sš t  qš WqŚ WWn@ t k
 r[} |  | k  rRt	 |  j
 d  d k s\t  n Xy­ | j   } | j   |  |  f k st  x| t |   D]n } xe t |   D]W } | | k  rÚ| | | f d k s t  qŠ| | | f | | | f k sŠt  qŠWqWWq. t k
 rK} |  | k rBt	 |  j
 d  d k sLt  q. Xq. Wd  S(   Ni   i   i   i   i   i    s   SCITBX_ASSERT(m >= n)s   SCITBX_ASSERT(m <= n)(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R'   R.   R   R	   t   matrix_copy_upper_triangleR   R   R3   R4   R   t   matrix_copy_lower_triangle(   RA   R    R\   R)  RP   RÍ   RB   R   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt%   exercise_copy_upper_or_lower_triangleű  s6    	 21 2c          C   s*  x#d d d d	 d
 d d d d d d d d g D]ô\ }  } t  j t |  |   } | j t  j |  |   | j   \ } } t |  t |  |  k s t  t |  t |  d k sÁ t  t	 |  g  t t |   D] } | | | f ^ qÝ k st  t	 |  g  t t |   D] } | | | d f ^ qk sGt  | j
   \ } } t |  t |  |  k szt  t |  t |  d k st  t	 |  g  t t |   D] } | | | f ^ q¸k sÝt  t	 |  g  t t |   D] } | | d | f ^ qůk s. t  q. Wd  S(   Ni   i   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R'   R.   R   R	   t   matrix_upper_bidiagonalRs   R   R   R-   t   matrix_lower_bidiagonal(   RA   R    R\   R^   R;   RP   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_matrix_bidiagonal  s"    	!"AE!"Ac          C   s    x t  d d  D] }  t j |  |  d d  } t j |   } | j |  } t j |  j t j | j	    t j |   } t
 | |  s t  q Wd  S(   Ni   i
   i   (   R.   R   R2   R'   t.   matrix_symmetric_upper_triangle_quadratic_formR   Rz  R  Rn  R$  R   R   (   R    R\   R"   R   t   s1(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_quadratic_form)  s    %c          C   só  t  j   }  |  j t  j d d   |  j |   t  j   } | j t  j d d   |  j d |  t  j d g  }  |  j t  j d d   |  j   t |  d g  s´ t  t  j d d d d g  }  |  j t  j d d   |  j   t |  d d d d g  st  t  j d d d d	 g  }  |  j t  j d d   |  j   t |  d d d d g  srt  t  j d d d d d d d d d	 g	  }  |  j t  j d d   |  j   t |  d d d d d  d d d d! g	  sďt  t  j d d d d d	 d d d d	 g	  }  |  j t  j d d   |  j   t |  d" d# d$ d d% d& d' d( d) g	  slt  d d l m } xšt	 d d  D]¨} t  j | | d  } x, t	 d | | | d  D] } d | | <qĂWxZd d g D]L} t  j | | d  }  x, t	 d | | | d  D] } | |  | <qW|  j t  j | |   | j
 |  | | f  } |  j   | j
 |  | | f  } t | | |  st  t | | |  s´t  xyt	 d d	  D]h}	 t  j |  }  |  j t  j | |   t  j t	 d | |	 d   } | j t  j |	 |   | j
 | | |	 f  }
 |  j |  | j
 |  | | f  } | j
 | |	 | f  } t | | |  st  t | | |  s˛t  xw t	 |	  D]i } | j |
 j | | | d | ! } | j | j | | | d | ! } t | | |  sżt  qżWqÄWqäWqWx´t	 d d  D]Ł} t  j | | d  } x, t	 d | | | d  D] } d | | <qWxUt	 d  D]G} d t  j | |  d }  |  j t  j | |   | j
 |  | | f  } y |  j   Wn+ t k
 r-} t |  d k sçt  q X| j
 |  | | f  } t | | |  s_t  t | | |  sxt  xlt	 d d	  D][}	 t  j |  }  |  j t  j | |   t  j | |	  } | j t  j |	 |   | j
 | | |	 f  }
 |  j |  | j
 |  | | f  } | j
 | |	 | f  } t | | |  sPt  t | | |  sit  xw t	 |	  D]i } | j |
 j | | | d | ! } | j | j | | | d | ! } t | | |  svt  qvWqWq WqHWd  S(*   Ni    RĽ   i   i   g       @iý˙˙˙i˙˙˙˙g      @i   g      @i   g      $@g      @iţ˙˙˙i   g      @g      ,@i   g      L@g      0@(   R   i   s#   inversion_in_place: singular matrixg      ŕ?g      ŕ?gUUUUUUŐżgŮ?gÉżg333333Ó?gš?g      ŕ?gUUUUUUŐżg      Đ?g$I$IÂ?g$I$I˛żgˇmŰśmŰś?g      Đ?g      °?g$I$IŇżg$I$IÂ?g$I$I˛?(   R   R'   R   R	   t   matrix_inversion_in_placeR   R   Rů   R   R.   R  Rz  Rp   R2   R3   R4   (   RA   RĽ   R   R    R)  RP   t   diagt   m_origt   m_invt   n_bt   b_origR"   t   i_bt   b_it   x_iR  RB   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt"   exercise_matrix_inversion_in_place2  sŹ    

!
!*
0*
0! ! 
 %%)! %%c          C   s;  t  j t t t f  }  t j |   } t j |  } | j   d k sN t  t	 |  t t t f k so t  t  j
 d  }  t j |   } t j |  } | j   d k s´ t  t  j
 d  }  t j |   } t j |  } | j   d k sů t  t	 |  d k st  t  j d  }  t j |   } t j |  } | j   d k sVt  t	 |  d k snt  t  j d  }  t j |   } t j |  } | j   d k słt  t	 |  d k sËt  t  j d d d f  }  t j |   } t j |  } | j   d k st  t	 |  d d d f k s:t  t  j
 t  j d d  j d   d  }  d |  d! <t j |   } t j |  } | j   d# k sĄt  t	 |   t	 |  k sżt  |  j   | j   k sÝt  |  j   | j   k sűt  |  j   | j   k st  |  j   | j   k s7t  d  S($   Ni   i    i   i   y               @y              @i   y              @i˙˙˙˙iý˙˙˙i   i   i   iř˙˙˙i   i   (    (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   y      đ?       @y       @      @y      @      @y      đ?       @y       @      @y      @      @(   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'   RK   Rű  RT  R	   R   R   R   R   R*   (   R\   R  RĽ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_pickle_single_buffered  sN    !!'
c          C   sť   t  j   }  t j |   } t j |  } | j   d k sB t  t |  d k sZ t  t  j d  }  t j |   } t j |  } | j   d k s t  t |  d k sˇ t  d  S(	   Ni    RY   t   bcdt   cdei   (    (   s   abcR  R  (   s   abcR  R  (   R   RL   R   R   R   R(   R   R+   (   R\   R  RĽ   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_pickle_double_bufferedą  s    c         C   sÜ  zŻx¨t  j t  j t  j t  j t  j t  j t  j t  j f D]p} xgt	 |  d  D]U} d | } | t  j k ry t
 } nĚ | t  j k r d } n´ | t  j k rŠ d } n | t  j k râ d } t |  t d  k rEd } qEnc | t  j k rt d d  } nB | t  j t  j f k r$d } n! | t  j k r<d } n	 t d
  | | |  } xOd t t f D]>} | d k rŮd } t j   }	 | j   }
 t j   |	 } t j   }	 |   } | j |
  t j   |	 } n | j } t d d  } t j   }	 | j | | d  t j   |	 } | j   t d d  } t j   }	 t j |  } t j   |	 } | j   | r| j G| G| Gd | | f GHn  t j j   qdWqQ Wq: WWd  y t j d  Wn t k
 rÖn XXd  S(   Ni   i   i˙˙˙i  lű˙˙˙˙˙˙˙ l    gW`:ĹÄR"   i
   s   Unexpected array type.i    s
   g/setstates
   pickle.tmpt   wbt   rbs	   %.2f %.2ft
   xxxxxxxxxx(   R   Rű   R   RK   R   Rű  R'   RT  RL   R.   R   R!  t   complexR   R   RČ  R  t   __getstate__t   __setstate__Rv   t   opent   dumpt   closet   loadRŮ   t   stdoutt   flusht   ost   unlinkt   OSError(   t   max_expt   verboset
   array_typeRB   R    t   valR\   RÎ  t   pickler_nameR  R   t   tdRĽ   t   tlR;   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   pickle_large_arrays˝  st    
								

!  c          C   s  t  j t  j d d  d d }  |  j   j   d k s? t  |  j   d d d d d d g k si t  t  j t  j d d  d t }  |  j   g  g  g  g  g  g  g k s´ t  t  j t  j d d  d t d  }  |  j   t d  k sů t  |  d d k st  d	 |  d <|  d d	 k s/t  d
 |  d <d |  d <d |  d <d |  d <d |  d <|  j   d
 d d d d d	 g k st  d  S(   Ni   i   Ră   t   value_factoryRâ   i   i   i   iű˙˙˙iö˙˙˙i    i˙˙˙˙iţ˙˙˙iý˙˙˙iü˙˙˙(   i   i   (   i   i   (   i   i   (   i   i   (   i    i    (   i    i   (   i    i   (   i   i    (   i   i   (	   R   t	   py_objectR	   R*   R   R   Rb  R-   R0   (   R\   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_py_objectú  s     !*!*'





c       	   C   sä  t  j g   }  t  j d |   g  k s- t  t  j d g  }  t  j d |   d g k s` t  t  j d d g  }  t  j d |   d g k s t  t  j d d d g  }  t  j d |   d g k sĎ t  t  j d d d d g  }  t  j d |   d d g k st  t  j d d d d d	 d d d g  }  t  j d |   d d g k sYt  t  j d d d d
 g  }  t  j d |   d d g k st  t  j d d d d
 d d d g  }  t  j d |   d d g k sŕt  d  S(   Nt   integer_arrayi   i   i   i˙˙˙˙iý˙˙˙iţ˙˙˙i    i   i   i   i	   i
   (   i   (   i   i   (   i   i   (   i˙˙˙˙(   i   i   (   iý˙˙˙i   (   i   i   (   i   i   (   i   (   i   i   (   i   i
   (   R   RK   t   condense_as_rangesR   (   R\   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_condense_as_ranges  s     !!!$'$$$c          C   sý  t  j d d d d d d d d d d d	 d g  }  t  j |  d  d k sQ t  t  j |  d  d
 k so t  t  j |  d  d	 k s t  t  j |  d  d k sŤ t  t  j |  d  d k sÉ t  t  j |  d  d k sç t  t  j t t t t t t t t f  }  t  j |  t  d k s,t  t  j |  t  d k sJt  t  j |  t  d k sht  t  j |  t  t	 |   d
 k st  t  j
 d  }  t  j |  d  d
 k s˝t  t  j |  d  d k sŰt  t  j |  d  d k sůt  d S(   s'    first_index, last_index, method index i   i˙˙˙˙i   i   i    iý˙˙˙i   i   i   i   i
   iB   R\   RĽ   RŤ   R^   RB   R;   R  N(   R\   RĽ   RŤ   RĽ   R^   RB   R;   (   R   RK   t   first_indexR   t
   last_indexRŽ   Rű   R   R   Rs   RL   (   R\   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_first_index_etc  s     3'(c          C   sW   t  j t d   }  |  j t  j d   t  j |  d d d  |  d	 k sS t  d  S(
   Ni   i   i   i   i˙˙˙˙iţ˙˙˙i   (   i   i   i   (   i   i   i   (   R   RK   R.   R   R	   t   tst_c_grid_flex_conversionR   (   R\   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_c_grid_flex_conversion3  s    c           C   s%   t  j   t  j d  k s! t  d  S(   Ni   i   i   i   i   i!   (   i   i   i   i   i   i!   (   R   t   exercise_versa_packed_u_to_flexR'   R   (    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyRŽ  8  s      c          C   sT  xMt  d d  D]<}  t j |  |  d d  } t | t j  t j |   } | j |  } | j   j |  } t | |  s t	  | j
 |  } | j   j |  } t | |  sÂ t	  | j |  } | j   j   } | j |  } t | |  st	  | j |  } | j   j   } | j |  } t | |  s t	  q Wd  S(   Ni   i   i   (   R.   R   R2   R  R'   t   matrix_forward_substitutionR&  R/  R   R   t   matrix_back_substitutionR"  t+   matrix_forward_substitution_given_transposeR0  t(   matrix_back_substitution_given_transpose(   R    R\   RĽ   R"   RZ  t   ltt   ut(    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_triangular_systems?  s$    c          C   sâ   t  j d  }  t  j d  } |  j d d d s9 t  |  j | d d	 sT t  t  j d d d f  } d } | t  j | f d  } | j d d d s§ t  | j | d d sÂ t  | j | d d sŢ t  d  S(   NgÍĚĚĚĚĚ @gÍĚĚĚĚĚ@gffffff@i   i   i   t   relative_errorg      ŕ?gŠ?y               @y              @y              @gš?y        š?gěQ¸ëą?R+  (   gÍĚĚĚĚĚ @gÍĚĚĚĚĚ@gffffff@(   i   i   i   y       @       @y      @      @y      @      @yš?š?y      @      @(   R   R'   t   all_approx_equal_relativelyR   RT  RC  (   R\   RĽ   RŤ   R)  R^   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_approx_equalW  s    c          C   s\   t  j d  }  t |  j    d k s- t  |  j d  t |  j    d k sX t  d  S(   Ni   i   i   i   i   i   i   i   i	   i
   i   (
   i   i   i   i   i   i   i   i   i	   i
   (   i   i   i   i
   (   i   i   i	   i   (   R   R'   R+   R9  R   t%   matrix_packed_u_diagonal_add_in_place(   R\   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt!   exercise_matrix_packed_u_diagonalc  s      	c          C   sa  t  j d d d d d d g  }  |  j t  j d d   t t  j |    } t |  d k sg t  t | d  d d d g k s t  t | d  d d d g k są t  |  j t  j d d   t t  j |    } t |  d k s÷ t  t | d  d d g k st  t | d  d d g k s;t  t | d  d d g k s]t  d  S(   Ni   i   i   i   i   i   i    (   R   RK   R   R	   R-   t   rowsRs   R   (   R\   Rť  (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   exercise_python_functionsl  s    !%%""c         C   sÎ  d } xÁ|  d k s! | |  k  rÉt    t   t   t   t   t   t   t   t   t	   t
   t   t   t   t   t   t   t   t   t   t   t   t   t   t   t   t   t   t   t   t   t   t    t!   t"   t#   t$   t%   t&   t'   t(   t)   t*   t+   t,   t-   t.   t/   t0   t1   t2   t3   t4   t5 d d d d  t6   t7   t8   | d 7} q	 Wd  S(   Ni    R  i   R  i   (9   RÂ   RĘ   RË   RŃ   Rş  RŽ  R}  R¸  Rľ  Rw  Rz  R­  RŤ  R!   RE   RQ   Rk   RŹ   RÇ   RÝ   RŢ   R  R  R  R   R'  R*  R]  Ra  R  Ri  RĽ  R§  RŠ  Rą  Rł  Rś  RĎ  RÓ  Ră  Rě  Rú  R   R  R  R  R\  R`  Rd  Rt  R  R  R  R˘  RĽ  R¨  Rź  (   t
   iterationsRP   (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   runz  sx    t   __main__i   t   largei    R  R  RĂ   (\   t
   __future__R    t   scitbx.array_familyR   t   scitbx.python_utilsR   Rů   R   t   libtbx.test_utilsR   R   R   R   t   libtbx.math_utilsR  t	   cStringIOR   R   RČ  R@  R  RŮ   R  R!   RE   RQ   Rk   RŹ   RŻ   RÂ   RÇ   RĘ   RË   RŃ   RÝ   RŢ   R  R  R  R   R'  R*  R]  Ra  Ri  R  RĽ  R§  RŠ  Rą  Rł  Rś  RĎ  RÓ  RÚ  Ră  Rě  Rú  R   R  R  R  R\  R`  Rd  Rt  Rw  Rz  R}  R  R  R  R˘  RĽ  R¨  RŤ  R­  RŽ  Rľ  R¸  Rş  Rź  Rž  Rv   t   parse_optionst   argvt   FlagsR    Rs   RK   t   regular_argsRŔ  (    (    (    sW   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/array_family/boost_python/tst_flex.pyt   <module>   sŚ   "		r	d	$	Ľ	2			1			M		Ë		9	7	P		Ť	A	&	g		H					J	A		.	!	/	*	>			˙ d		
	˙ 					V	)		=											>	
