ó
E™xTc           @   s]  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 d  d l m Z d  d l m	 Z	 d  d l
 Z d  d	 l m Z d  d
 l m Z d  d l m Z m Z m Z m Z d  d l m Z d  d l 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 m Z e j d ƒ e j d ƒ d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d d d d d d d d „ Z$ d d d „ Z% d 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) d* d+ d, „ Z4 d- „  Z5 e6 d. k rYe5 ƒ  n  d S(/   iÿÿÿÿ(   t   division(   t   random_structure(   t   debug_utils(   t   xray(   t   crystal(   t   sgtbx(   t   adptbxN(   t   eltbx(   t   flex(   t   Exception_expectedt   approx_equalt   is_above_limitt	   show_diff(   t   not_approx_equal(   t   StringIO(   t   counti    c           C   sÜ   t  j d d ƒ j ƒ  d
 k s$ t ‚ t  j d d ƒ j ƒ  d k sH t ‚ t  j d d ƒ j ƒ  d k sl t ‚ t  j d d ƒ j ƒ  d	 k s� t ‚ t  j d d ƒ j ƒ  d k s´ t ‚ t  j d d ƒ j ƒ  d  k sØ t ‚ d  S(   Nt   scattering_types   si4+t   Sis   4+s   si+4t    t   xt   Cvalt   C(   R   s   4+(   R   R   (   R   R   (   R   t	   scatterert   element_and_charge_symbolst   AssertionErrort   element_symbolt   None(    (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_scatterer   s    $$c          C   s<  t  j g  d d d d g D] }  t j d |  ƒ ^ q ƒ } t j d t  j d g ƒ d d d	 d
 d d	 d g ƒ t j d t  j d d g ƒ d d d	 d d g  d d ƒ g } | d j ƒ  d d	 g k sË t ‚ | d j ƒ  g  k sç t ‚ x‘ d d g D]ƒ } t ƒ  } x$ | D] } | j	 d | d d ƒ q
Wt
 | j ƒ  d ƒ sFt ‚ x. | D]& } | j d | ƒ | j d | ƒ qMWqô Wd | d _ d | d _ | d } | j d | ƒ t | j d ƒ sÇt ‚ t | j d ƒ sßt ‚ d | d _ y | d j d | ƒ Wn+ t k
 r1} t | ƒ d k s8t ‚ n Xt ‚ d  S(   Nt   St   AUR   R   t
   iselectioni   t   f_primeiýÿÿÿt   f_double_primei   t   refinei    i   iÿÿÿÿi   t   selection_strings   name St   outt   prefixs   {.s*  {.Anomalous scatterer group:
{.  Number of selected scatterers: 1
{.  f_prime:        -3
{.  f_double_prime: 4
{.  refine: f_prime f_double_prime
{.Anomalous scatterer group:
{.  Selection: "name S"
{.  Number of selected scatterers: 2
{.  f_prime:        -1
{.  f_double_prime: 2
{.  refine: None
t
   scatterersiüÿÿÿi   sà   Anomalous scatterer group with significantly different f_double_prime:
  Selection: "name S"
  Number of selected scatterers: 2
  f_double_prime min:  2
  f_double_prime max:  3
  f_double_prime mean: 2.5
  tolerance: 0.0001(   R   t   xray_scattererR   R   t   anomalous_scatterer_groupt   size_tt   labels_refineR   R   t   show_summaryR   t   getvaluet   copy_to_scatterers_in_placet    extract_from_scatterers_in_placet   fpt   fdpR
   R   R    t   RuntimeErrort   strR	   (   R   R%   t   groupst   i_passt   st   groupt   e(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt"   exercise_anomalous_scatterer_group#   sL    1		"	
 	c    Y      C   sÞ3  t  j d× d ƒ }  t  j |  ƒ } t j t j d dØ ƒ t j d	 dÙ ƒ f ƒ } t j | | ƒ } t  j dÚ d ƒ } t  j | ƒ } t j t j d dÛ ƒ t j d	 dÜ ƒ f ƒ } t j | | ƒ } t t	 | j
 d
 | ƒ ƒ d d g ƒ sí t ‚ t  j dÝ d ƒ } t  j | ƒ } t j t j d dÞ dß d f ƒ t j d dà ƒ f ƒ }	 t j | |	 ƒ }
 |
 j ƒ  j ƒ  d k stt ‚ t	 |
 j d g ƒ ƒ t t g k sžt ‚ t	 |
 j d g ƒ ƒ t t g k sÈt ‚ t	 |
 j d d g ƒ ƒ t t g k sõt ‚ y |
 j d g ƒ } Wn+ t k
 r8} t | ƒ d k s?t ‚ n Xt ‚ |
 j ƒ  sRt ‚ |
 j ƒ  d k sjt ‚ t |
 j ƒ  ƒ dá k sˆt ‚ t ƒ  } |
 j d | j ƒ  j d |	 j ƒ  ƒ d | d d ƒ | j ƒ  d  k sÝt ‚ |
 j ƒ  } | j | j ƒ  ƒ | j ƒ  j ƒ  d! k st ‚ |
 j ƒ  j ƒ  d k s8t ‚ t | j ƒ  ƒ dâ k sVt ‚ | j  | j ƒ  d ƒ | j ƒ  j ƒ  d k s‹t ‚ t | j ƒ  ƒ dã k s©t ‚ |
 j! ƒ  } | j ƒ  j" |
 j ƒ  ƒ sÖt ‚ t | j# ƒ  ƒ d k sôt ‚ |
 j$ ƒ  } | j ƒ  j" |
 j ƒ  ƒ s!t ‚ t | j# ƒ  ƒ d# k s?t ‚ t | j ƒ  d j% dä då dæ f ƒ sjt ‚ t | j ƒ  d j% dç ƒ sŒt ‚ |
 j& ƒ  } | j ƒ  j ƒ  d k s¶t ‚ xF t' d ƒ D]8 } | j ƒ  | j( ƒ  |
 j ƒ  | j( ƒ  k sÃt ‚ qÃWt | j# ƒ  ƒ d k st ‚ |
 j) ƒ  } | j ƒ  j ƒ  d( k sGt ‚ xF t' d ƒ D]8 } | j ƒ  | j( ƒ  |
 j ƒ  | j( ƒ  k sTt ‚ qTW|
 j) d) t ƒ } d* „  } | | ƒ d k sÃt ‚ | | ƒ d k sÛt ‚ | j* d+ d dè f ƒ } t | j ƒ  d j% d. d/ dé f ƒ st ‚ t | j ƒ  d" j% d0 d1 dê f ƒ sIt ‚ | d  } | j ƒ  j ƒ  d k sqt ‚ | j ƒ  d j+ | j ƒ  d j+ k s�t ‚ | d d! !} | j ƒ  j ƒ  d" k sÈt ‚ xD t' d" ƒ D]6 } | j ƒ  | j+ | j ƒ  | d j+ k sÕt ‚ qÕW|
 j ƒ  j, t j- dë ƒ ƒ |
 j. d3 d4 ƒ } t | j ƒ  j/ ƒ  dì ƒ s^t ‚ | j ƒ  d j+ d k s}t ‚ | j ƒ  d j+ d k sœt ‚ |
 j0 ƒ  } t | dí ƒ s½t ‚ |
 j1 d7 | ƒ } t | dî ƒ sät ‚ |
 j1 ƒ  } t | dï ƒ st ‚ |
 j* d; |
 j ƒ  j2 g  | D] } | ^ q!ƒ d< t ƒ } t | j1 ƒ  dð ƒ s[t ‚ t j |
 ƒ } | j0 ƒ  j ƒ  d k sˆt ‚ |
 j3 ƒ  } |
 j3 d7 | ƒ } t | j1 ƒ  | j1 ƒ  ƒ sÇt ‚ t | j4 ƒ  | j4 ƒ  ƒ sèt ‚ t | j1 ƒ  dñ ƒ s	t ‚ t | j4 ƒ  dò ƒ s	t ‚ t j | |	 ƒ } d | j ƒ  d _5 t | j ƒ  d j( ƒ  dC ƒ sh	t ‚ | j ƒ  d j5 dD 8_5 t | j ƒ  d j( ƒ  d+ ƒ s¦	t ‚ t j6 j7 dE t ƒ } t j8 dF |
 j ƒ  dG | j% dH | j9 dI | j: d4 | j5 dJ | j; dK | j< ƒ |
 j= ƒ  dL k s
t ‚ |
 j= dM t ƒ d( k s=
t ‚ t j> dó dô f ƒ } |
 j? | ƒ t | d dõ ƒ sx
t ‚ t | d dö ƒ s‘
t ‚ |
 j@ |
 j ƒ  d  d  ƒ |
 j ƒ  j ƒ  d k sÉ
t ‚ t |
 j ƒ  ƒ d÷ k sç
t ‚ | jB dQ dR ƒ } | jC dS ƒ jD ƒ  d k st ‚ t ƒ  } | jE d | ƒ tF | j ƒ  dT ƒ sOt ‚ | jB dQ dU ƒ } | jC dS ƒ jD ƒ  d k s‚t ‚ | jB dQ dV ƒ } | jC dS ƒ jD ƒ  d! k sµt ‚ | jB dW t dX i tG jH jC d ƒ dS 6ƒ } | jC dS ƒ jD ƒ  d k st ‚ t ƒ  } | jI d | ƒ | j ƒ  jJ ƒ  dY k s8t ‚ t ƒ  } | jE d | ƒ tF | j ƒ  dZ ƒ smt ‚ t ƒ  } | jE d | d[ t ƒ | j ƒ  d\ k s¤t ‚ t ƒ  } | jE d | d] t ƒ | j ƒ  d^ k sÛt ‚ t ƒ  } | jE d | d[ t d] t ƒ | j ƒ  d_ k st ‚ | jK ƒ  } tL | ƒ d k s<t ‚ | d` d k sRt ‚ | dS d k sht ‚ | jM ƒ  } tL | ƒ d k sŒt ‚ | d` jD ƒ  d! k s¨t ‚ | dS jD ƒ  d k sÄt ‚ | jB dW t ƒ } | jN ƒ  i d dS 6d d` 6k süt ‚ t	 | jO dF | j ƒ  ƒ ƒ d d g k s,t ‚ | jP ƒ  i d dS 6d d` 6k sRt ‚ |
 jQ da d ƒ } | jR ƒ  j ƒ  |
 j ƒ  j ƒ  k sŽt ‚ | jS db d+ ƒ }  t jT t jU | jV |  ƒ jW ƒ  ƒ ƒ d+ k sÓt ‚ t | jX | ƒ d ƒ sñt ‚ t |  jX |  ƒ d ƒ st ‚ | jX |  ƒ d k s*t ‚ xƒ |
 | | |  g D]o } tY jZ | ƒ }! tY j[ |! ƒ }" |" j ƒ  j ƒ  | j ƒ  j ƒ  k s‹t ‚ |" j ƒ  j\ | j ƒ  ƒ s=t ‚ q=Wt j dc t  j dd dø de df ƒ ƒ }# |# j  t j dg dh dG dù ƒ ƒ |# j] ƒ  j^ d ƒ j_ ƒ  st ‚ |# j* d; dú d< t ƒ } | j] ƒ  j^ d ƒ j_ ƒ  sMt ‚ |# j* d; dû d< t ƒ } t | j] ƒ  j^ d ƒ j` ƒ  ƒ dk k s’t ‚ t | j ƒ  d j% dü ƒ s´t ‚ t | j ƒ  d j% dý ƒ sÖt ‚ t	 | j ƒ  j ƒ  ƒ g  k sút ‚ t	 | j ƒ  j ƒ  ƒ d g k s!t ‚ t	 | j ƒ  ƒ g  k s@t ‚ t	 | j ƒ  ƒ d g k sbt ‚ | j  | j ƒ  d ƒ t	 | j ƒ  ƒ d g k s›t ‚ | j  | j ƒ  d | j] ƒ  j^ d ƒ ƒ t	 | j ƒ  ƒ d g k sæt ‚ | j | j ƒ  ƒ t	 | j ƒ  ƒ d d" d! d g k s$t ‚ | j | j ƒ  | j] ƒ  ƒ t	 | j ƒ  ƒ d d" d! d dm d( d dn g k swt ‚ xò t ja d d! do g ƒ t jb t t t t t t t t t t t t g ƒ g D]¥ }$ | jc dp |$ ƒ } | j ƒ  j ƒ  d" k sùt ‚ t	 | j ƒ  ƒ d d g k st ‚ td |$ t jb ƒ rÃ| jc dp |$ dq t ƒ } | j ƒ  j ƒ  d( k sht ‚ qÃqÃW| d d  d … } | j ƒ  j ƒ  d k s�t ‚ t	 | j ƒ  ƒ d d! g k sÂt ‚ | j@ | j ƒ  d  ƒ t	 | j ƒ  ƒ d d d d" d! g k st ‚ | j@ | j ƒ  | j] ƒ  ƒ t	 | j ƒ  ƒ d d! g k sGt ‚ | j& ƒ  } | j ƒ  j" | j ƒ  ƒ stt ‚ | je ƒ  jf ƒ  d k s’t ‚ t	 | j ƒ  ƒ d d! g k s·t ‚ xŒ t t g D]~ }% | j) dr |% ƒ } | j ƒ  j ƒ  ds k sút ‚ t j | | j ƒ  ƒ } | j) dr |% ƒ } | j ƒ  j ƒ  d k sÄt ‚ qÄW| jg dt ƒ } x™ th | j ƒ  ƒ D]… \ } }& |& ji ƒ  d k sŒt ‚ | j] ƒ  j^ | ƒ }' |' ji ƒ  |& ji ƒ  k s¿t ‚ |' ji ƒ  |' jj ƒ  | je ƒ  jf ƒ  k sht ‚ qhW| j) ƒ  } x, | j ƒ  D] }& |& ji ƒ  d k s
t ‚ q
W| j ƒ  j ƒ  ds k sJt ‚ t | j ƒ  d j% dþ ƒ slt ‚ t | j ƒ  d! j% dÿ ƒ sŽt ‚ | jk ƒ  } t | j ƒ  d j% d ƒ s¼t ‚ | jl ƒ  } t | j ƒ  d j% dƒ sêt ‚ | j ƒ  j, t jm dx d ƒ ƒ | j. d3 d4 ƒ } | j ƒ  j ƒ  d k s9t ‚ | jn | jo ƒ  dƒ | jp | jq ƒ  dƒ t | jr ƒ  d d d d d g ƒ s‘t ‚ | j ƒ  d } t | j ƒ  | j% dƒ sÃt ‚ t	 | js ƒ  ƒ t g d k sèt ‚ t	 | js dy d ƒ ƒ t g d k st ‚ | jt dz d d{ d| ƒ t | j ƒ  ju ƒ  d g d ƒ sQt ‚ | jv d} d ƒ t | j ƒ  ju ƒ  d" g d ƒ s‰t ‚ | jv d~ tw jx d ƒ ƒ t | j ƒ  ju ƒ  d g d ƒ sËt ‚ | j ƒ  j, t j- | j ƒ  j ƒ  d ƒ ƒ | jy d d ƒ t | j ƒ  j/ ƒ  d€ d€ d€ d€ d€ g ƒ s6t ‚ | jy d d$ dp t ja d d" g ƒ ƒ t | j ƒ  j/ ƒ  d d€ d€ d d€ g ƒ s‹t ‚ | jz ƒ  t | j ƒ  | j% dƒ s·t ‚ | j{ ƒ  t ƒ  } | j| d� dD d | ƒ | j ƒ  d‚ k søt ‚ t j dc t  j ddƒ ƒ dF t j t j dS ddd	f ƒ t j d` d
ƒ g ƒ ƒ }( t |( j} ƒ  d„ ƒ sgt ‚ t ƒ  } |( j~ d� d d | ƒ tF | j ƒ  d… ƒ s¢t ‚ t  j dd‰ ƒ } t  j | ƒ } t j t j d ƒ g dŠ ƒ }	 t jb ƒ  }$ t j d‹ d ƒ jm }) x¶ th |	 ƒ D]¨ \ }* }& |	 j ƒ  d |* }+ d |+ |& _9 d |+ d€ |+ d2 |+ dŒ |+ d� |+ d- |+ f |& _€ |& j� j‚ |) ƒ  d k ƒ |& j� jƒ |) ƒ  d k ƒ |$ j„ |) ƒ  d k ƒ qWt j | |	 ƒ }
 xsd  |$ g D]e} x\t… d  dŽ g d  d� g dŽ d� g ƒ D]6\ }, }- }. x$t t g D]}/ |
 j ƒ  }0 |0 j† d‘ |/ d’ |- d“ |, dp | d” |. ƒ | d  k r‰t jb |
 j ƒ  j ƒ  t ƒ } n  x¬t… |
 j ƒ  |0 j ƒ  | ƒ D]Œ\ }& }1 } |& j� j‡ ƒ  |1 j� j‡ ƒ  k sÛt ‚ |& j� jˆ ƒ  |1 j� jˆ ƒ  k sÿt ‚ |& j� j‡ ƒ  r<| r<t‰ tU |& j9 |1 j9 ƒ d ƒ sWt ‚ n t |& j9 |1 j9 ƒ sWt ‚ |/ r{t |& j€ |1 j€ ƒ s4t ‚ q¨|& j� jˆ ƒ  r| rt j- |& j€ ƒ }2 t j- |1 j€ ƒ }3 tŠ d• t jT t jU |2 |3 ƒ ƒ d– dD ƒ såt ‚ tŠ d• t j‹ t jU |2 |3 ƒ ƒ d– d— ƒ s4t ‚ q¨t |& j€ |1 j€ ƒ s¨t ‚ q¨Wq"WqWqÛWt  j dd‰ ƒ } t  j | ƒ } t j t j d ƒ g dŠ ƒ }	 t jb ƒ  }$ x9 |	 D]1 }& tŒ jŒ ƒ  |& _5 |$ j„ tŒ j� t t f ƒ ƒ q—Wt j | |	 ƒ }
 xÕ d  |$ g D]Ç } |
 j ƒ  }0 |0 jŽ dp | ƒ | d  k r:t jb |
 j ƒ  j ƒ  t ƒ } n  xu t… |
 j ƒ  |0 j ƒ  | ƒ D]U \ }& }1 } | r“tU |& j5 |1 j5 ƒ d˜ k s®t ‚ qYt |& j5 |1 j5 ƒ sYt ‚ qYWqëWt  j dd‰ ƒ } t  j | ƒ } t j t j d d™ d ƒg dŠ ƒ }	 t j | |	 ƒ }
 |
 j ƒ  }0 |0 j� ƒ  s, t ‚ |
 j ƒ  ju ƒ  j\ |0 j ƒ  ju ƒ  ƒ sZ t ‚ dD |
 j ƒ  d" _9 |
 j ƒ  }0 |0 j� ƒ  sŒ t ‚ |
 j ƒ  ju ƒ  j\ |0 j ƒ  ju ƒ  ƒ s¹ t ‚ t  j dd‰ ƒ } t  j | ƒ } t j t j dh ddd f ƒ t j dh dƒ f ƒ }	 t j | |	 ƒ }
 |
 j ƒ  }4 dš }5 |
 j� d• |5 ƒ t j- d› d› g ƒ }6 t |
 j ƒ  ju ƒ  tw j‘ d ƒ |6 ƒ s‡!t ‚ t j- dm d( g ƒ }7 |
 j� dœ |7 ƒ t |
 j ƒ  ju ƒ  tw j‘ d ƒ |7 ƒ sÚ!t ‚ |
 j ƒ  j’ t j- dD d+ g ƒ t jb |
 j ƒ  j ƒ  t ƒ |4 ƒ |
 j ƒ  j“ ƒ  d k s8"t ‚ |
 j” ƒ  |
 j ƒ  j“ ƒ  d k s`"t ‚ t |
 j ƒ  j• dd |
 j ƒ  ƒ dD g d" d g d" d+ g d" d g d" g ƒ s·"t ‚ |
 j– ƒ  |
 j ƒ  j“ ƒ  d k sß"t ‚ t |
 j ƒ  ju ƒ  dD d+ g ƒ s#t ‚ t  j dd ƒ } t  j | ƒ } | j ƒ  }4 t j t j d dG dd™ d ƒt j d dG dd™ dD ƒt j d dG dd™ d. ƒt j d� dG dd™ tw j— |4 dƒ ƒt j d	 dG dd™ tw j— |4 dƒ ƒf ƒ }	 t j | |	 ƒ }
 g  |
 jr ƒ  D] } tw jx | ƒ ^ qñ#}8 t‰ |8 d� d� d� d� d� g ƒ s0$t ‚ |
 j� d• d ƒ g  |
 jr ƒ  D] } tw jx | ƒ ^ qM$}8 t |8 d� d� d� d� d� g ƒ sŒ$t ‚ t  j dd‰ ƒ } t  j | ƒ } t j t j d ƒ g dŠ ƒ }	 t jb ƒ  }$ t j d‹ d ƒ jm }) x« |	 D]£ }& d |) ƒ  |& _9 d |) ƒ  d€ |) ƒ  d2 |) ƒ  dŒ |) ƒ  d� |) ƒ  d- |) ƒ  f |& _€ |& j� j‚ |) ƒ  d k ƒ |& j� jƒ |) ƒ  d k ƒ |$ j„ |) ƒ  d k ƒ qô$Wt j | |	 ƒ }
 |
 j ƒ  }9 |9 j˜ d¡ d dp |$ ƒ xù t… t™ ƒ  |
 j ƒ  |9 j ƒ  |$ ƒ D]Ó \ }: }& }; } | rô%|& j� jš ƒ  rô%|& j� j‡ ƒ  r^&|& j9 d� k r^&t |; j9 |& j9 d€ ƒ s[&t ‚ q^&n  |& j� jˆ ƒ  rÇ&xT t' do ƒ D]C } |& j€ | d� k rz&t |; j€ | |& j€ | d€ ƒ s½&t ‚ qz&qz&WqÇ&qô%qô%Wt jb g  t' d¢ ƒ D] } tŒ j� t t f ƒ ^ qÞ&ƒ }< t› jœ d£ t� j# d‰ ƒ d¤ d¥ g d¢ dd dƒ }
 t j d‹ d ƒ }= d� d§ dD d d¨ d2 dŽ g }> xad  |< g D]S}$ xJ|> D]B}? |
 j ƒ  }@ |@ jž d© |? dp |$ dª d  |= jm g tŸ |? d+ k  ƒ ƒ |
 jq ƒ  }A |@ jq ƒ  }B |$ d  k r(t jb |
 j ƒ  j ƒ  t ƒ }$ n  t j  t j¡ |A jc |$ ƒ |B jc |$ ƒ j¢ ƒ  ƒ ƒ }C t |? |C d— ƒ sO(t ‚ |$ }D |D j™ t ƒ d k rw't j  t j¡ |A jc |$ ƒ |B jc |$ ƒ j¢ ƒ  ƒ ƒ }E t |E d� ƒ s¹(t ‚ qw'qw'Wqj'Wx¢ t' d dd ƒ D]Ž }F |F d¬ }F |
 j£ d­ |F ƒ }$ |$ j™ t ƒ t¤ |$ j ƒ  ƒ }G |$ j™ t ƒ t¤ |$ j ƒ  ƒ }H t |F |G ƒ sI)t ‚ t d |G |H ƒ sÔ(t ‚ qÔ(W|
 j ƒ  d j¥ ƒ  |
 j ƒ  d <t |
 j ƒ  d j( ƒ  d ƒ s«)t ‚ |
 j¦ d® d ƒ t |
 j ƒ  d j( ƒ  d ƒ sà)t ‚ t jb g  t' dŠ ƒ D] } tŒ j� t t f ƒ ^ qó)ƒ j§ ƒ  }< t› jœ d£ t� j# d‰ ƒ d¤ d¥ g dŠ dd dƒ }
 xÐ d  |< g D]Â }$ x¹ d d€ d2 g d� d� d� g g D]™ }I |
 j ƒ  }0 |0 j¨ d¯ dd° |I d |I d |I d g dp |$ ƒ t© j¡ |I d d |I d d |I d d ƒ }J t |J |
 jª d
 |0 dp |$ ƒ ƒ s}*t ‚ q}*WqX*Wt jb g  t' dŠ ƒ D] } tŒ j� t t f ƒ ^ q1+ƒ }< |
 j ƒ  }0 |0 j¨ d¯ dd° d d€ d2 g dp |< j§ ƒ  ƒ |
 jª d
 |0 dp |< ƒ d k s°+t ‚ t |
 jª d
 |0 dp |< ƒ d� ƒ sØ+t ‚ |
 j ƒ  j ƒ  |
 j« ƒ  j ƒ  k o,|
 j« ƒ  j™ t ƒ k n s!,t ‚ t j dc t  j dd d de dº ƒ ƒ }
 |
 j¬ d» d¼ ƒ }K t |K j ƒ  ƒ d½ k su,t ‚ |
 j­ d» d¼ ƒ }K t |K j ƒ  ƒ d½ k s¥,t ‚ |
 j  t j dg d¾ dG dD d+ dž g ƒ ƒ |
 j¬ d» d¼ ƒ }K t |K j ƒ  ƒ d½ k sý,t ‚ |
 j­ d» d¼ ƒ }K t |K j ƒ  ƒ d½ k s--t ‚ |
 j  t j dg d¾ dG dj d¿ d g ƒ ƒ |
 j¬ d» d¼ ƒ }K t |K j ƒ  ƒ dÀ k s…-t ‚ |
 j­ d» d¼ ƒ }K t |K j ƒ  ƒ dÁ k sµ-t ‚ t j dc t  j dd d!de dÂ ƒ ƒ }
 |
 j  t j dÃ dG d"ƒƒ |
 j  t j dÄ dG d#ƒƒ |
 j  t j dÅ dG d$ƒƒ |
 j ƒ  \ }L }M }N |L j� j® t ƒ |M j� j‚ t ƒ |N j� j¯ t ƒ |
 j° ƒ  }O g  |O D] }P |P j± ^ q….g  |
 j ƒ  D] }& |& j� j± ^ q¤.k sÅ.t ‚ d, dÆ l² m³ }Q m´ }R mµ }S t j dc t  j dd d%de dÂ ƒ ƒ }
 |
 j  t j dÃ dG d&ƒƒ |
 j  t j dÄ dG d'ƒƒ |
 j  t j dÇ dG d(ƒƒ |
 j ƒ  } | j¶ |S j· dÈ ƒ dÉ ƒ | j¸ dÉ k s“/t ‚ xÈ | j ƒ  D]º }& |& j� j¹ ƒ  t k sÁ/t ‚ |& j; d k sÖ/t ‚ |& j< d k së/t ‚ |R jº |& j» ƒ  ƒ }T |T j¼ |S j· dÈ ƒ j½ ƒ  ƒ }U t |& j; |U j; ƒ  ƒ s<0t ‚ t |& j< |U j< ƒ  ƒ s /t ‚ q /W|
 j ƒ  } | j¶ dÊ dË ƒ | j¸ dË k s�0t ‚ x¹ | j ƒ  D]« }& |& j� j¹ ƒ  t k s½0t ‚ |& j; d k sÒ0t ‚ |& j< d k sç0t ‚ |Q jº |& j» ƒ  ƒ }V |V j¼ dÊ ƒ }W t |& j; |W j; ƒ  ƒ s)1t ‚ t |& j< |W j< ƒ  ƒ sœ0t ‚ qœ0Wt j dc t  j d)dƒ ƒ dF t j t j dS d*d+d,f ƒ t j dh d-ƒ t j d` d.ƒ g ƒ ƒ }
 t ƒ  } |
 j¾ dÏ | ƒ tF | j ƒ  dÐ ƒ sã1t ‚ t ƒ  } |
 j¾ dÏ | dÑ t ƒ tF | j ƒ  dÒ ƒ s2t ‚ |
 j¿ i d/dS 6d0dh 6dÓ dÔ ƒ|
 j¥ d£ t� j# dÕ d‰ ƒ dÖ t ƒ }X |X j# ƒ  jÀ ƒ  jÁ ƒ  d k s‡2t ‚ |X j ƒ  s™2t ‚ |
 j ƒ  d j; d, k sÑ2|
 j ƒ  d j< d k sÑ2t ‚ |
 j ƒ  d j; dŸ k s	3|
 j ƒ  d j< d k s	3t ‚ |
 j ƒ  d j; d k sA3|
 j ƒ  d j< d k sA3t ‚ |
 j ƒ  d j� j¹ ƒ  r�3|
 j ƒ  d j� j¹ ƒ  r�3|
 j ƒ  d j� j¹ ƒ  s“3t ‚ |X j¸ |
 j¸ k s«3t ‚ |X j¸ dÔ k sÀ3t ‚ |X jÂ ƒ  |X j¸ sÚ3t ‚ d  S(1  Ni
   i   i   iZ   s   P 1t   og      à?i    t   ct   otheri   i   g
×£p=
@gáz®Gá@ix   s   P 62 2 2t   Si1g      ð?i   g333333Ó?t   O1gV-²�ïÇ?gåÐ"Ûù~Ê¿g_Ò­£ªê?i   sV   Tried to select a scatterer by index with index => of scatterers for this structuture.t   sites_cart_originalt
   sites_fracR#   R$   s   %^sø  %^Number of sites at special positions: 2
%^  Minimum distance between symmetrically equivalent sites: 0.5
%^  Label   Mult   Shift    Fractional coordinates
%^  Si1       3    0.182 (  0.5000   0.5000   0.3000) original
%^        site sym 222   (  0.5000   0.5000   0.3333) exact
%^                               1/2,1/2,1/3
%^  O1        6    0.050 (  0.1870  -0.2070   0.8333) original
%^        site sym 2     (  0.1970  -0.1970   0.8333) exact
%^                        1/2*x-1/2*y,-1/2*x+1/2*y,5/6
i   i   s   P 64 2 2g      ð¿gžï§ÆK7É¿gžï§ÆK7É?g£®µ÷©ªê¿i	   t   sites_mod_positivec         S   sZ   d } xM |  j  ƒ  D]? } x6 | j D]+ } | d k  sA | d k r# | d 7} q# q# Wq W| S(   Ni    i   (   R%   t   site(   t   xst   resultt   sct   v(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   count_outside_unit_cellª   s     gš™™™™™É?iÿÿÿÿg      @gffffffæ?gš™™™™™é?gœÄ °rhÙ?g‘í|?5^º?g      @t   by_valuet	   occupancyg¼t“<@gsh‘í|ÿ/@t   atomic_weightsg}A	]õ?gaãúw}&ñ?g|¶ö†@t   shiftt   recompute_site_symmetriesgš�5À.e@g
 †1S@g¼e¹ÅoW@gÆ!˜é/@g~[¢CkÀg)çpŸ{U@g      Ð?gš™™™™™¹?t   defaultR%   R@   t   u_isot   u_anisoR.   R/   i   t%   considering_site_symmetry_constraintsgš™™™™™Ù?gš™™™™™©¿gš™™™™™©?t   tablet   electronR   s³   Number of scattering types: 2
  Type Number    sf(0)   Gaussians
   Si      1      5.83       5
   O       1      1.98       5
  sf(0) = scattering factor at diffraction angle 0.
t   wk1995t   it1992t   explicitly_allow_mixingt   custom_dicts   O:4+c*1 Si:0+c*1s·   Number of scattering types: 2
  Type Number    sf(0)   Gaussians
   O       1      8.00       4+c
   Si      1      1.00       0+c
  sf(0) = scattering factor at diffraction angle 0.
t   show_sf0sh   Number of scattering types: 2
  Type Number   Gaussians
   O       1        4+c
   Si      1        0+c
t   show_gaussianss—   Number of scattering types: 2
  Type Number    sf(0)
   O       1      8.00
   Si      1      1.00
  sf(0) = scattering factor at diffraction angle 0.
sF   Number of scattering types: 2
  Type Number
   O       1
   Si      1
t   Ot   buffer_thicknesst   max_shift_cartt   crystal_symmetryt	   unit_cellt   space_group_symbols   P 2 2 2t   labelR   g{®Gáz´¿gš™™™™™¹¿s   0,0,zg{®Gáz”?i   i   i   t	   selectiont   negatet   append_number_to_labelsi   s   z,x,ygV-²é?gD^Å˜ªªê?gò†êœUUÅ¿t   sizet   u_cart_tolerancet   u_mint   u_maxix  t   u_shiftt   b_shiftt   q_shiftg       @t   distance_cutoffsÐ  C  pair count:   2       <<  0.0200,  0.0000,  0.1000>>
  C:   0.0000             (  0.0200,  0.0000,  0.1000)
  C:   0.0000             (  0.0200,  0.0000,  0.1000)
C  pair count:   1       <<  0.0000,  0.0000,  0.1000>>
  C:   0.0000             (  0.0000,  0.0000,  0.1000)
C  pair count:   2       <<  0.0200,  0.0000,  0.1000>>
  C:   0.0000             (  0.0200,  0.0000,  0.1000)
  C:   0.0000             (  0.0200,  0.0000,  0.1000)
C  pair count:   2       <<  0.0200,  0.0000,  0.1000>>
  C:   0.0000             (  0.0200,  0.0000,  0.1000)
  C:   0.0000             (  0.0200,  0.0000,  0.1000)
C  pair count:   1       <<  0.0000,  0.0000,  0.1000>>
  C:   0.0000             (  0.0000,  0.0000,  0.1000)
t   P6222g¼„á÷ò«Ç?s  O*1   Si    O*2    101.31
O*3   Si    O*2    111.31
O*3   Si    O*1    116.13
O*4   Si    O*2    116.13
O*4   Si    O*1    111.31
O*4   Si    O*3    101.31
Si*5  O     Si*6   146.93
*1 x-y,x,z-2/3
*2 -y,x-y,z-1/3
*3 y+1,-x+y+1,z-1/3
*4 -x+y+1,-x+1,z-2/3
*5 y,-x+y,z+2/3
*6 -x+y,-x,z+1/3
g
×£p=
@i<   iP   t   P1id   t   seedg      @g      @g      $@g      4@g        t   keep_anisotropict   b_maxt   b_mint   spreadt   valuet   limitgü©ñÒMbP?g-Cëâ6?t   ug      9@i   t   valuest   ng333333Ó¿iþÿÿÿgffffffæ¿t   factoriô  t   space_group_infot   elementst   NiF   g{®Gáz„?g      ø?t   mean_distancet   random_doubleic   g      Y@t   fractiont   i_scatterert   rott   transg+‡ÙÎ÷ï?gœÄ °rh‘¿gìQ¸…ë¡?gÛù~j¼t“?gV-²�ïï?g9´Èv¾Ÿª¿gL7‰A`å ¿g9´Èv¾Ÿª?i(   t   P222t   buffer_sizeg      @s   (7, 7, 7, 90, 90, 90)t   S1gš™™™™™É¿s   (11, 19, 31, 90, 90, 90)s   (31, 31, 31, 90, 90, 90)t   Pmmmt   C1t   C2t   C3(   t   henket   sasakit   wavelengthst   S3t   MoR‡   g‘'I×L¾æ?R†   góŽSt$—¿?g‹ýe÷äaá?g�€&Â†§Û?t   fsû   Label, Scattering, Multiplicity, Coordinates, Occupancy, Uiso, Ustar as Uiso
Si   Si     3 ( 0.5000  0.5000  0.3333) 1.00 0.0000 [ - ]
C    C     12 ( 0.1234  0.5432  0.4321) 1.00 0.0000 [ - ]
O    O      6 ( 0.1970 -0.1970  0.8333) 1.00 0.0000 [ - ]
t   special_positions_onlysÁ   Label, Scattering, Multiplicity, Coordinates, Occupancy, Uiso, Ustar as Uiso
Si   Si     3 ( 0.5000  0.5000  0.3333) 1.00 0.0000 [ - ]
O    O      6 ( 0.1970 -0.1970  0.8333) 1.00 0.0000 [ - ]
t   sources	   my sourcet   symbolt6   non_unit_occupancy_implies_min_distance_sym_equiv_zero(   i
   i   i   iZ   iZ   iZ   (   g      à?i    i    (   i    i    i    (   i
   i   i   iZ   iZ   iZ   (   i    i    i    (   i    i    g      à?(   g
×£p=
@g
×£p=
@gáz®Gá@iZ   iZ   ix   g      à?g      à?(   gV-²�ïÇ?gåÐ"Ûù~Ê¿g_Ò­£ªê?(   i    i   (   i    i   i   i   (   i    i   i   i   i   g      à¿g      à¿gUUUUUUÕ¿(   gžï§ÆK7É¿gžï§ÆK7É?g£®µ÷©ªê¿gUUUUUUÅ¿gUUUUUUÅ?gUUUUUUå?(   g      à?gš™™™™™É?(   gš™™™™™É?g      à?(   g¼t“<@gsh‘í|ÿ/@(   g}A	]õ?gaãúw}&ñ?g|¶ö†@(   g}A	]õ?gaãúw}&ñ?g|¶ö†@(   i    i    i    (   g}A	]õ?gaãúw}&ñ?g|¶ö†@(   gš�5À.e@g
 †1S@g¼e¹ÅoW@gÆ!˜é/@g~[¢CkÀg)çpŸ{U@(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   gš™™™™™É?g333333Ó?gš™™™™™Ù?(   i    i    i    (   gš™™™™™©¿gš™™™™™©?i    (   i    (   i
   i
   i
   iZ   iZ   iZ   (   gš™™™™™¹?gš™™™™™¹?gš™™™™™¹?(   g{®Gáz´¿gš™™™™™¹¿i    (   g{®Gáz´¿gš™™™™™¹¿i    (   g{®Gáz”?i    gš™™™™™¹?(   i    i    gš™™™™™¹?(   gš™™™™™¹?g{®Gáz”?i    (   gš™™™™™¹?i    i    (   gžï§ÆK7É?gV-²é?gD^Å˜ªªê?(   gžï§ÆK7É?gžï§ÆK7É¿gò†êœUUÅ¿(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   i   i   i   (   gš™™™™™É?gš™™™™™Ù?gffffffæ?(   i    i    gffffffæ?(   g
×£p=
@g
×£p=
@gáz®Gá@iZ   iZ   ix   g      à?g      à?gUUUUUUÕ?(   gžï§ÆK7É?gžï§ÆK7É¿g_Ò­£ªê?(   g
×£p=
@g
×£p=
@gáz®Gá@i<   iP   ix   (   g
×£p=
@g
×£p=
@gáz®Gá@i<   iP   ix   (   g
×£p=
@g
×£p=
@gáz®Gá@i<   iP   ix   (   g
×£p=
@g
×£p=
@gáz®Gá@i<   iP   ix   g      à?g      à?(   gV-²�ïÇ?gåÐ"Ûù~Ê¿g_Ò­£ªê?(   i
   i   i   iZ   iZ   iZ   (   g      à?i    i    (   g      à?g      ð?i    (   g      à?g      ð?i
   (   g      à?g      ð¿i    (   i   i   i   g333333Ó¿iþÿÿÿi   (   i    i    i    (   i   i   i	   i   i   gffffffæ¿(   g
×£p=
@g
×£p=
@gáz®Gá@i<   iP   ix   (   i
   i   i   iF   iP   ix   id   (   i
   i   i   iF   iP   ix   (	   i   i    i    i    i   i    i    i    i   (	   g+‡ÙÎ÷ï?gœÄ °rh‘¿gìQ¸…ë¡?gÛù~j¼t“?gV-²�ïï?g9´Èv¾Ÿª¿gL7‰A`å ¿g9´Èv¾Ÿª?gV-²�ïï?(   i   i   i(   iZ   iZ   iZ   (   i   i   i   iZ   iZ   iZ   (   g      à?g      à?g      à?(   gffffffæ?gffffffæ?gffffffæ?(   g333333Ó?g333333Ó?g333333Ó?(   i   i   i   iZ   iZ   iZ   (   g      à?g      à?g      à?(   gffffffæ?gffffffæ?gffffffæ?(   g333333Ó?g333333Ó?g333333Ó?(   g
×£p=
@g
×£p=
@gáz®Gá@iZ   iZ   ix   g      à?g      à?gUUUUUUÕ?(   góŽSt$—¿?g‹ýe÷äaá?g�€&Â†§Û?(   gžï§ÆK7É?gžï§ÆK7É¿g_Ò­£ªê?(   iÿÿÿÿi   (   iþÿÿÿi   (Ã   R   t   symmetryt   special_position_settingsR   R&   R   R   t	   structureR
   t   listt	   distancesR   R%   Ra   t   by_index_selectiont   Truet   Falset
   IndexErrorR1   R	   R�   t   n_undefined_multiplicitiest   tuplet   special_position_indicesR   t   show_special_position_shiftsR[   t   orthogonalizet   extract_sitesR+   t   deep_copy_scattererst   add_scattererst   add_scatterert   primitive_settingt   is_similar_toRv   t   change_handR@   t   asymmetric_unit_in_p1t   xranget   weightt   expand_to_p1t   apply_shiftR]   t   set_occupanciest   doublet   sortt   extract_occupanciesRH   t   center_of_masst   fractionalizet   principal_axes_of_inertiat   inertia_tensorRG   t   structure_factorst   gradient_flagst   set_scatterer_grad_flagsRL   RM   R.   R/   t   n_parameterst   vec3_doublet*   apply_special_position_ops_d_target_d_sitet   replace_scatterersR   t   scattering_type_registryt   gaussiant   n_termst   showR   R   t   xray_scatteringR*   t   stript   wilson_dictt   lent   as_type_gaussian_dictt   type_index_pairs_as_dictt   unique_indicest   type_count_dictt   asu_mappingst   mappingst   random_shift_sitest   maxt   abst   difference_vectors_cartt	   as_doublet   rms_differencet   picklet   dumpst   loadst   all_eqt   site_symmetry_tablet   gett   is_point_group_1t
   special_opR(   t   boolt   selectt
   isinstancet   space_groupt   order_zt   change_basist	   enumeratet   multiplicityt
   n_matricesR?   t   sites_mod_shortRz   t   set_sites_fracR>   t   set_sites_cartt
   sites_cartt   extract_u_iso_or_u_equivt   is_positive_definite_ut   tidy_ust   extract_u_isot   shift_usR   t   u_as_bt   shift_occupanciest   apply_symmetry_sitest   apply_symmetry_u_starst   show_distancest   mean_scattering_densityt   show_anglest   mersenne_twistert   u_start   flagst   set_use_u_isot   set_use_u_anisot   appendt   zipt	   shake_adpt	   use_u_isot   use_u_anisoR   R   t   mint   randomt   choicet   shake_occupanciest   shake_adp_if_all_equalt	   set_b_isot   b_as_ut	   set_u_isot   count_anisotropict   convert_to_anisotropict   extract_u_cartt   convert_to_isotropict   u_cart_as_u_start	   scale_adpR   t   useR   t   xray_structureR   t   shake_sites_in_placet   intt   meant   sqrtt   dott   random_remove_sites_selectiont   floatt   customized_copyt   re_apply_symmetryR   t   apply_rigid_body_shiftt   mathRy   t   all_selectiont1   orthorhombic_unit_cell_around_centered_scattererst*   cubic_unit_cell_around_centered_scattererst   set_grad_sitet   set_grad_u_anisot   scatterer_flagst   bitst   cctbx.eltbxR†   R‡   Rˆ   t   set_inelastic_form_factorst   characteristict   inelastic_form_factors_sourcet
   use_fp_fdpRO   R   t   at_angstromt   as_angstromt   show_scattererst!   set_custom_inelastic_form_factorst   typet   numbert   erase_scatterers(Y   t   cs1t   sp1t   scatterers1t   xs1t   cs2t   sp2t   xs2t   cst   spR%   RA   t   selR6   R4   t   yst   sxt   p1t   it   p1mpRE   t   sht   slt   awR®   t   pa1t   pa2R³   t   gt   regt   wdt   tgdt   amt   rst   pt   lt   xs0R^   R`   RC   t   sst   quartzt   rdt   i_sct   scaleRn   Rm   Ro   Rl   t   xs_modt   sc_modt   at   bt   uct   b_iso_valueRB   t   b_iso_valuest   b_isost   xs_dct   i_seqt   sc_dct
   selection_t   mtt   errorst   errort	   xs_shakedt   sites_cart_xst   sites_cart_xs_shakedt   mean_errt   dummyt   mean_err_fixedR{   t   deletedt   retainedt   rt   dt   bst   c1t   c2t   c3t
   grad_flagsR‹   R†   R‡   Rˆ   t	   sc_sasakit   sc_fp_fdp_sasakit   sc_henket   sc_fp_fdp_henket   xs_p1(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_structure]   sŒ   -**- 				
!!+"66	++
,4!	)	!! %%					
!	!!!								&0&*3*%		!!-""$'"")"+7"$%%.%!%"2""""*"%+(((+%
"
				4 !.$$(+.+  !.%#%.."
9
'$-($($'%87			  ! 
 %%	4		%	/,7	$%&#		((		.		""					$888 
c          C   sÚ   t  j d t j d ƒ d d g d d d ƒ }  |  j ƒ  } |  j d | j ƒ  d d ƒ } t | j d d d g ƒ sy t	 ‚ | j
 d d d d d d ƒ } |  j d | j ƒ  d d ƒ } t | j d d d g ƒ sÖ t	 ‚ d  S(   NRv   Rj   Rw   Rx   i   R[   i
   i   i   iF   iP   ix   R>   Rh   i   g        R   i   t   yi   t   z(   i
   i   i   iF   iP   ix   (   R   R  R   Rv   RŸ   t   closest_distancesR>   R
   t   smallest_distancesR   t	   translateR   (   RA   t   xs_otherRB   (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_closest_distances  s    			!	c          C   sô   t  j d t j d ƒ d d g d d d ƒ }  |  j ƒ  j ƒ  } | j d ƒ sU t ‚ |  j d d ƒ |  j ƒ  j ƒ  } | j d ƒ sŒ t ‚ |  j d d d t	 j
 t t t t t g ƒ ƒ |  j ƒ  j ƒ  } t | d d d d d g ƒ sð t ‚ d  S(   NRv   Rj   Rw   Rx   i   R[   i
   i   i   iF   iP   ix   g      ð?Rp   i   g       @iÿÿÿÿR^   g      ð¿(   i
   i   i   iF   iP   ix   (   R   R  R   Rv   R%   R­   RÐ   R   Rª   R   RÕ   R–   R—   R
   (   RA   t   occ(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_set_occupancies  s    			%c    
      C   sÝ  d }  d) } x° d* D]¨ } t  j |  | | ƒ } t | t  j j d |  d | d | ƒ ƒ s^ t ‚ t | t  j j d |  d | d t j | ƒ ƒ ƒ s— t ‚ t | t  j j d | ƒ ƒ s t ‚ q Wt j	 d+ d ƒ } t j
 | ƒ } | j ƒ  } t j t  j d d d, d d ƒt  j d d d- d d ƒt  j d d d. d d ƒt  j d d d/ d t j | d0 ƒ ƒt  j d d d1 d t j | d2 ƒ ƒf ƒ } t  j | | ƒ } | j ƒ  d k sµt ‚ | j ƒ  d k sÍt ‚ t  j d" | j ƒ  d# t d$ t ƒ | j ƒ  d k st ‚ | j ƒ  d k st ‚ | j ƒ  j t ƒ d k s@t ‚ | j ƒ  j t ƒ d k sat ‚ d3 d4 d5 d6 d7 g }	 t |	 t | j ƒ  j | ƒ ƒ ƒ s t ‚ t t | j ƒ  j | ƒ ƒ d d d d8 d9 g ƒ sÙt ‚ d  S(:   Ni	   i   g      @i   i   i   i
   id   iÈ   iè  t   d_mint   grid_resolution_factort   u_baset   b_baset   quality_factori   i   iZ   s   P 1R8   R@   g      à?i    Rr   g      ð?gš™™™™™¹?gffffffæ?Rt   g      ð¿i   R9   i   i   R%   RL   RM   g       @g      "@g      @g      @gUUUUUUÕ?(   i   i   i   i   i
   id   iÈ   iè  (   i
   i   i   iZ   iZ   iZ   (   g      à?i    i    (   g      à?g      ð?i    (   g      à?g      ð?i
   (   g      à?g      ð¿i    (   i   i   i   i    i    i    (   i    i    i    (   i   i   i	   i    i    i    (   g      ð?g      ð?g      ð?(   gš™™™™™¹?gš™™™™™¹?gš™™™™™¹?(   gffffffæ?gffffffæ?gffffffæ?(   g      @g       @g      ð?(   g      "@g      @g      @gUUUUUUÕ?gUUUUUUå?(   R   t   calc_u_baseR
   R²   t   quality_factor_from_anyR   R   Rç   R   R�   R‘   R[   R   R&   R   R  R’   t   n_grad_u_isot   n_grad_u_anisoR´   R%   R–   Rö   R   R÷   R“   t   u_cart_eigenvaluest
   anisotropy(
   Ru  Rv  Ry  Rw  R-  R.  RL  R%   RA   t   answer(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_u_base"  sX    $-!!	*i   iè  i   c
         C   sq  t  j |  d | g | d | d d d t d | d d d	 d
 | d t d t d t d d d d d d d t ƒ}
 t  j d |
 j ƒ  d | d | d | ƒ d s¢ |	 rµ |
 j ƒ  j ƒ  n  |
 j d | d d d t ƒ j	 ƒ  } | j
 ƒ  | k sñ t ‚ t j j | j ƒ  | j ƒ  | j ƒ  |
 j ƒ  |
 j ƒ  ƒ j	 ƒ  } d s?|	 r¯xm t | j ƒ  ƒ D]V \ } } | GH| | GH| j ƒ  | GHt | | | j ƒ  | ƒ d k r§d GHn  HqRWn  t j t j | j ƒ  | ƒ ƒ } | d k  sét | ƒ ‚ | j d |
 d d d t ƒ j	 ƒ  } t j t | ƒ j ƒ  | j ƒ  t d ƒ } d sC|	 rUd G| j ƒ  GHn  | j ƒ  d k  smt ‚ d  S(    NRw   t   volume_per_atomt   min_distancei   t   general_positions_onlyt   random_f_prime_d_mini   t   random_f_prime_scaleg333333ã?t   random_f_double_primeRö   R÷   t   random_u_isot   random_u_iso_scaleg333333Ó?t   random_u_cart_scalet   random_u_iso_ming        t   random_occupancyR%   t	   allow_mixi    Ru  t	   algorithmt   directt   cos_sin_tableg»½×Ùß|Û=t   MISMATCHR  s	   r-factor:g-Cëâ6?(   R   R  R–   t!   random_modify_adp_and_adp_flags_2R%   R*   R!  R²   R—   t   f_calct   anomalous_flagR   R   t   extt   structure_factors_simpleR[   RØ   t   indicesR¹   RÛ   t   dataRÉ   R   RÈ   t!   structure_factors_from_scattererst   targets_least_squares_residualt   target(   Rv   t   element_typeR�  t
   n_elementsR‚  Ru  R”  Rö   R÷   t   verboseR’   t   f_obs_exactt   f_obs_simpleR3  t   ht   mismatcht   f_obs_tablet   ls(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_from_scatterers_directQ  sh    

									$"	$c         C   sN  t  j |  d d g d d d d d d t d	 t ƒ} d
 s@ | rS | j ƒ  j ƒ  n  | j d | d d d t ƒ j ƒ  } t | ƒ j	 d d d | d d d t ƒ } | j
 d | ƒ } d
 s¿ | rË d | GHn  t | d
 ƒ sà t ‚ t | ƒ j	 d d d | d  d d d t ƒ } | j ƒ  } | j ƒ  | j ƒ  } g  | j ƒ  D] }	 | j |	 j ƒ ^ q=}
 y6 t |
 d  ƒ d k szt ‚ |
 d d k s�t ‚ Wn t k
 r°d G|
 GH‚  n X| j ƒ  } | j ƒ  } g  | j ƒ  D] }	 | j |	 j ƒ ^ qÖ} y6 t | d  ƒ d k st ‚ | d d k s)t ‚ Wn t k
 rId G| GH‚  n Xd  S(   NRw   R   i   R‚  iè  Rƒ  i   R„  Rˆ  i    Ru  RŽ  R�  R�  t   f_obs_factori   R  t   structure_factor_algorithmt   phase_sources   %.2fiÿÿÿÿgš™™™™™@g      @s   density_at_sites:s   density_at_sites_tricubic:(   R   R  R–   R—   R*   R!  R²   R“  RÉ   t!   f_obs_minus_xray_structure_f_calct   mean_weighted_phase_errorR
   R   t   fft_mapt   apply_sigma_scalingt   real_map_unpaddedR%   t   eight_point_interpolationR@   Rø   Rá   R>   t   tricubic_interpolation(   Rv   Ru  Rž  R’   RŸ  t   two_f_obs_minus_f_calct   phase_errorR«  t   real_mapR   t   density_at_sitesRá   R>   t   density_at_sites_tricubic(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt*   exercise_f_obs_minus_xray_structure_f_calc�  s`    					
	
(	(	c         C   s.  t  j |  d d d d d d g d ƒ} d s4 | rG | j ƒ  j ƒ  n  | j ƒ  } | j ƒ  } | j d	 d
 ƒ | j d	 d ƒ | j d t j j j	 ƒ x2 | j ƒ  j
 ƒ  D] } | j ƒ  d k s« t ‚ q« Wx2 | j ƒ  j
 ƒ  D] } | j ƒ  d k sà t ‚ qà Wx2 | j ƒ  j
 ƒ  D] } | j ƒ  d k st ‚ qWd } | j d | d d d t ƒ j ƒ  } | j d | d d d t ƒ j ƒ  } | j d | d d d t ƒ j ƒ  }	 x± d | f d |	 f f D]— \ }
 } t j t | ƒ j ƒ  | j ƒ  t d ƒ } d s| rd |
 G| j ƒ  GHn  |
 d k rA| j ƒ  d k  sYt ‚ qÂ| j ƒ  d k  sÂt ‚ qÂWxÊd d d g D]¹} t  j |  d | g ƒ} | j d	 d ƒ j
 ƒ  } t | ƒ d k s»t ‚ | d j ƒ  d k s×t ‚ t ƒ  } | d j d | ƒ t | j ƒ  d ƒ st ‚ | j d	 d ƒ j
 ƒ  } t | ƒ d k s@t ‚ | d j ƒ  d k s\t ‚ t ƒ  } | d j d | ƒ t | j ƒ  d ƒ s•t ‚ | j d	 d
 ƒ j
 ƒ  } t | ƒ d k sÅt ‚ | d j ƒ  d k sát ‚ t ƒ  } | d j d | ƒ t | j ƒ  j d  d! ƒ d" ƒ smt ‚ qmWd  S(#   NRw   t   HR   Rx   RW   R   i   i    RO   RQ   RR   RT   i   i   i   i   Ru  RŽ  R�  R�  R  s   %d-gaussian r-factor:gü©ñÒMb`?g-Cëâ6*?t   Dt   Tt
   n_gaussiani   R‹   s‰   a: -1.0938988 0.76752101 0.44291771 0.42681501 0.35006501 0.10647464
b: 1.7298482 2.0196679 1.4769121 9.3088777 20.966682 44.631255
c: 0
s]   a: 0.493002 0.32291201 0.140191 0.04081
b: 10.5109 26.1257 3.14236 57.799702
c: 0.0030380001
s   e-005s   e-05sw   a: -0.11710366 0.0093485946 0.27006859 0.28434139 0.5528717
b: 3.0598466 0.74655777 3.2917862 32.645653 11.546356
c: 0
(   R   R  R*   R!  RŸ   R¹   R   R½   t   two_gaussian_agarwal_isaacsRO   t   unique_gaussians_as_listR»   R   R²   R—   R“  R™  R   Rš  RÉ   R˜  R›  RÀ   R   R¼   R   R+   t   replace(   Rv   Rž  t   structure_5gt   structure_4gt   structure_2gRº   Ru  t	   f_calc_5gt	   f_calc_4gt	   f_calc_2gRt   t	   f_calc_ngR¤  t   elementR’   t   ugsR4   (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_n_gaussianÅ  s‚    				%$			c   	      C   s  xà d D]Ø } xÏ d d g D]Á } x¸ t  t  f t t  f t  t f t t f g D]Œ \ } } x} d d g D]o } | r‚ t j | ƒ } n | } xH t t  g D]: } t d | d | d | d | d	 | d
 |  j d | ƒ q• Wqd WqK Wq Wq Wt d | ƒ t d | ƒ d  S(   Nt   Set   consti    i   Rv   Rœ  R”  Rö   R÷   Rž  R�  (   RÇ  RÈ  (   R–   R—   R   t   random_origin_shiftR¥  t   VerboseRÆ  Rµ  (	   Rð   Rv   Rœ  R”  Rö   R÷   t
   with_shiftt   sgiR�  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   run_call_back  s*    "	c          C   sÀ  t  j d) d ƒ }  t  j |  ƒ } t j t j d d* ƒ t j d	 d+ ƒ f ƒ } t j | | ƒ } i t j	 j
 d
 g d g d ƒ d 6t j	 j
 d, d- d ƒ d 6} t j ƒ  } | j t j d d d d d d. d d d d ƒ ƒ | j t j d d d d d d/ d d d d ƒ ƒ t j | | ƒ } | j d | ƒ t ƒ  } | j d | ƒ | j ƒ  j d | ƒ d } | j ƒ  | k s{t ‚ t j } t ƒ  t _ y¨ i t j	 j
 d
 g d g d ƒ d 6} t j ƒ  } | j t j d d d d d d0 d d" d d ƒ ƒ t j | | ƒ } | j d | ƒ | j d | ƒ | j ƒ  j ƒ  Wn t k
 rM}	 n Xt |	 ƒ d# k sft ‚ | t _ g  | j ƒ  D]" }
 |
 j |
 j d$ |
 j f ^ q|d1 d2 d3 d4 g k s¼t ‚ d  S(5   Ni
   i   i   iZ   s   P 1R8   g      à?i    R9   i   i   t   X1i   i   t   Z1R]   R   R@   Rr   gš™™™™™ñ?RG   i   i   g333333"@g      ø?RT   R:   R#   sñ   Number of scattering types: 4
  Type Number    sf(0)   Gaussians
   O       1      8.00       6
   C       1      6.00       6
   Z1      1      3.00       2
   X1      1      1.00       1
  sf(0) = scattering factor at diffraction angle 0.
R   i   i   i	   gš™™™™™¹?s*   Cannot concatenate: conflicting scattererss   %.1fs   1.0s   0.5s   1.5RW   (   i
   i   i   iZ   iZ   iZ   (   g      à?i    i    (   i    i    i    (   i   i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i	   (   R   i   s   1.0(   RÎ  i   s   0.5(   RÏ  i   s   1.5(   RW   i   s   1.0(   R   R�   R‘   R   R&   R   R   R’   R   R½   Rº   Ró   R¹   R   t   concatenate_inplaceR¼   R+   R   t   syst   stdoutt	   ExceptionR1   t*   scattering_types_counts_and_occupancy_sumsR   R   t   occupancy_sum(   R-  R.  R%   RA   t   custom_gaussianst   new_scatterersR)  R#   t   expected_resultR6   R_  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_concatenate_inplace1  sR    		""			%" 	/c          C   sû  t  j d d ƒ }  t  j |  ƒ } t j ƒ  } | j ƒ  d k sE t ‚ t j d d d d ƒ } t j d d d d	 ƒ } | j	 j
 t ƒ t j d d d d ƒ } t j d d d d ƒ } | j	 j t ƒ t j d d d d ƒ } d | _ | j	 j t ƒ t j d d d d ƒ } d | _ t j d d d d ƒ }	 d |	 _ t j d d d d ƒ }
 d |
 _ |
 j	 j
 t ƒ t j d d ƒ } t j d d ƒ } | j	 j
 t ƒ t j | | | | | | |	 |
 | | f
 ƒ } t j | | ƒ } t | j ƒ  d ƒ s÷t ‚ d  S(   Ni   iZ   s   P 1i    R]   R   Rr   gò°Pkšwœ¿g      $Ài¥ÿÿÿgš™™™™™¹?(   i   i   i   iZ   iZ   iZ   (   i   i   i   i   i   i   (   i¥ÿÿÿi   i   i   i   i   (   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&   Ra   R   R   R   Rð   Rñ   R—   Rò   Rï   R–   RL   R’   R
   t   min_u_cart_eigenvalue(   R-  R.  RJ  t   s1t   s2t   s3t   s4t   s5t   s6t   s7t   s8t   s9t   s10R%   RA   (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_min_u_cart_eigenvalueh  s4    				-c          C   s  t  j d d ƒ }  t  j |  ƒ } t j t j d d ƒ g ƒ } t j | | ƒ } t j d g ƒ } | j	 | ƒ } t
 t j | j ƒ  j ƒ  | j ƒ  ƒ d	 ƒ s¦ t ‚ t
 t j | j ƒ  j ƒ  t j d
 d d g ƒ ƒ d	 ƒ sæ t ‚ t j d g ƒ } | j | ƒ } t
 t j | j ƒ  j ƒ  | j ƒ  ƒ d	 ƒ s;t ‚ t
 t j | j ƒ  j ƒ  t j d d d g ƒ ƒ d	 ƒ s{t ‚ d  S(   Ni
   iZ   s   P 1R9   iÿÿÿÿi   i   i   i    gš™™™™™¹?gš™™™™™É?g333333Ó?(   i
   i
   i
   iZ   iZ   iZ   (   iÿÿÿÿiÿÿÿÿiÿÿÿÿ(   i   i   i   (   gš™™™™™¹?gš™™™™™É?g333333Ó?(   R   R�   R‘   R   R&   R   R   R’   R¶   t   replace_sites_cartR
   R
  Rá   RË   R   R>   R«   t   replace_sites_frac(   R-  R.  R%   t   xrsRá   t   xrs_R>   (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_replace_sites„  s"    	+	7	+	c          C   s  t  j d d ƒ }  t  j |  ƒ } t j | d t j t j d d d ƒt j d d d ƒt j d d d ƒt j d d d ƒt j d d d ƒf ƒ ƒ} | j ƒ  j	 ƒ  } t j d d d  ƒ} g  | j ƒ  D] } | j
 ^ qÍ } g  t | ƒ D]' } t | j ƒ  j | ƒ j ƒ  ƒ ^ qï } xê t | d ƒ D]Ø } | j ƒ  }	 |	 j d | d | ƒ t | ƒ }
 |
 j | d ƒ |
 g  |	 j ƒ  D] } | j
 ^ q�k sŸt ‚ t | ƒ } | j | d ƒ | g  t | d ƒ D]' } t |	 j ƒ  j | ƒ j ƒ  ƒ ^ qÏk s-t ‚ q-Wd  S(!   Ni
   i   i   iZ   s   P 2R%   R9   R@   g      à?i    gš™™™™™¹?R8   gš™™™™™É?Rt   g        i   g      ð?R@  g333333Ó?R4   t   zni   R   t   insert_at_indexs   0,y,0(   i
   i   i   iZ   iZ   iZ   (   g      à?i    gš™™™™™¹?(   g      à?i    gš™™™™™É?(   g        i   g      ð?(   g      à?i    g333333Ó?(   g      à?i    g      à?(   i    i    i    (   R   R�   R‘   R   R’   R   R&   R   R%   Ra   R]   R¦   R1   RÑ   RÒ   RÔ   RŸ   R¡   R“   t   insertR   (   R-  R.  RA   t   n_sitesR   RC   R¤  RQ  RC  t   xswt   lswt   ssw(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_add_scatterer_insert™  s.    "7.c          C   s!  t  j d d ƒ }  t j t  j |  ƒ d t j t j d d	 d ƒt j d d	 d ƒt j d d	 d ƒt j d d	 d ƒt j d d	 d ƒt j d d	 d ƒf ƒ ƒ} | j d d ƒ } t	 | ƒ d k sÏ t
 ‚ | j d ƒ } t	 | ƒ d k sö t
 ‚ | j d ƒ } t	 | ƒ d k st
 ‚ d  S(    Ni   i   i	   iZ   ix   t   P2R%   Rƒ   R@   i    R„   g      à?R…   R<   t   C4gš™™™™™É?t   N1RW   Rx   i   s   ^(O|C)(1|2)$(   i   i   i	   iZ   ix   iZ   (   i    i    i    (   g      à?i    i    (   i    g      à?i    (   i    i    g      à?(   gš™™™™™É?i    i    (   i    gš™™™™™É?i    (   i    i    i    i   i    i   (   i    i    i    i    i   i    (   i   i   i    i   i    i    (   R   R�   R   R’   R‘   R   R&   R   t   element_selectionRš   R   t   label_selectiont   label_regex_selection(   R-  RA   R/  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt+   exercise_select_on_name_or_chemical_element²  s    c          C   s³  t  j d! d ƒ }  t j t  j |  ƒ d t j t j d d d" ƒt j d d d# d
 d ƒt j d d d$ d
 d ƒt j d d d% ƒt j d d d& ƒt j d d d' ƒt j d d d( ƒf ƒ ƒ} i d d 6d d 6d d 6} | j ƒ  | k sö t	 ‚ t
 | j ƒ  d d d ƒst	 ‚ | j d d ƒ t
 | j ƒ  d d d ƒsHt	 ‚ t
 | j d t ƒ d ƒ sit	 ‚ | d =| j d t d ƒ ƒ | k s”t	 ‚ t
 | j ƒ  d  ƒ s¯t	 ‚ d  S()   Ni
   iZ   s   hall: P 2 2 3R%   Rƒ   R@   i    R„   g      à?RG   gš™™™™™É?s   C2'gš™™™™™é?R…   R<   Rô  Rõ  i   R   i   RW   i   Rx   i�   t   epsg{®Gáz„?g‘'I×L¾æ?R†   t   include_inelastic_partg$ÙŸ›¸b@t   omitgÁÕªËŸÞ?(   i
   i
   i
   iZ   iZ   iZ   (   i    i    i    (   g      à?i    i    (   g      à?i    i    (   i    g      à?i    (   i    i    g      à?(   gš™™™™™É?i    i    (   i    gš™™™™™É?i    (   R   R�   R   R’   R‘   R   R&   R   t   unit_cell_contentR   R
   t   f_000R  R–   t   sett   crystal_density(   R-  RA   Rý  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_chemical_formulaÄ  s&    !!!$c          C   sW  t  j d d ƒ }  t j |  j ƒ  ƒ } x. t d ƒ D]  } | j t j d	 | ƒ ƒ q4 Wt t	 t	 t t	 f } t	 t t t	 t f } t t	 t	 t t f } t	 t t t	 t	 f } t t t	 t	 t	 f } t t	 t t	 t	 f } x² t
 | j ƒ  | | | | | | ƒ D]Œ \ }	 }
 } } } } } |	 j } | j |
 ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ | j | ƒ qû W| j ƒ  } t j t j d ƒ d t ƒ t j t j d ƒ d t	 ƒ f } t j | j ƒ  ƒ } x$ | D] } | j rï| j ƒ  qïqïW| j | j ƒ  k s*t ‚ | j | j ƒ  d
 k sIt ‚ x| | f D]ù} | d } | j d k s{t ‚ | j t j j  k s–t ‚ | j! d k s«t ‚ | j" t j j  k sÆt ‚ | j# d k sÛt ‚ | j$ d k sðt ‚ | d
 } | j t j j  k st ‚ | j d k s*t ‚ | j! t j j  k sEt ‚ | j" d k sZt ‚ | j# d k sot ‚ | j$ t j j  k sŠt ‚ xÂ t% | ƒ D]´ \ } } | j | | j k s¿t ‚ | j | | j k sÛt ‚ | j! | | j! k s÷t ‚ | j" | | j" k st ‚ | j# | | j# k s/t ‚ | j$ | | j$ k s—t ‚ q—WqVWd  S(   Ni   i	   i
   iU   i_   ii   Rj   i   s   C%ii   i    iÿÿÿÿg      à?gš™™™™™É?i   i   i   i   (   i   i	   i
   iU   i_   ii   (	   i   i    i    i    i   i    i    i    iÿÿÿÿ(	   iÿÿÿÿi    i    i    iÿÿÿÿi    i    i    iÿÿÿÿ(&   R   R�   R   R’   R‘   R¦   R¡   R   R–   R—   Rô   R%   Rð   R  Rñ   t   set_grad_u_isoRò   R  t   set_grad_occupancyt   set_grad_fpt   set_grad_fdpt   parameter_mapt   twin_componentR   t   rot_mxt   gradt   add_independent_scalarRµ   R   R@   RL   t   parameter_indicest
   invariableRM   RG   R.   R/   RÛ   (   R-  RA   R3  t	   grad_sitet
   grad_u_isot   grad_u_anisot   grad_occupancyt   grad_fpt   grad_fdpRC   R@   RL   RM   Rs  R.   R/   R‹   t   m1t   twinst   m2t   tt   mR—  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_parameter_mapÚ  sh     1	!	

c          C   sù  d d  l  }  t j d t j d d ƒ d t j t j d	 d
 d d d ƒt j d d
 d d d  ƒt j d d
 d! d d d d ƒf ƒ ƒ } | j d d ƒ } t	 | d ƒ s¯ t
 ‚ | j ƒ  } t | ƒ } | j ƒ  j | j ƒ  d d d d ƒsô t
 ‚ xþ |  j | j ƒ  | j ƒ  ƒ D]Þ \ } } | j j | j j k s=t
 ‚ | j | j k sUt
 ‚ | j j ƒ  r| j | j k st
 ‚ n  | j j ƒ  r©| j | j k s©t
 ‚ n  | j | j k sÁt
 ‚ | j | j k sÙt
 ‚ | j | j k st
 ‚ qWd  S("   NiÿÿÿÿRZ   i   i   iZ   iP   s
   hall: P 2zR%   Rƒ   R@   g      à?Rr   gš™™™™™¹?R<   gš™™™™™É?g333333Ó?gš™™™™™Ù?g333333ã?t   Fegš™™™™™é¿i    R   s   Fe3+t   indentt   VsE  Vxray.structure(
V  crystal_symmetry=crystal.symmetry(
V    unit_cell=(2, 2, 3, 90, 90, 80),
V    space_group_symbol="P 1 1 2"),
V  scatterers=flex.xray_scatterer([
V    xray.scatterer( #0
V      label="C1",
V      site=(0.500000, 0.500000, 0.500000),
V      u=0.100000),
V    xray.scatterer( #1
V      label="O1",
V      site=(0.100000, 0.200000, 0.300000),
V      u=(0.100000, 0.200000, 0.300000,
V         0.400000, 0.500000, 0.600000)),
V    xray.scatterer( #2
V      label="Fe",
V      scattering_type="Fe3+",
V      site=(-0.800000, 0.200000, 0.000000),
V      u=0.200000)]))t   relative_length_tolerancet   absolute_angle_tolerance(   i   i   i   iZ   iZ   iP   (   g      à?g      à?g      à?(   gš™™™™™¹?gš™™™™™É?g333333Ó?(   gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?g      à?g333333ã?(   gš™™™™™é¿gš™™™™™É?i    (   t	   itertoolsR   R’   R   R�   R   R&   R   t
   as_py_codeR   R   t   evalRZ   t   is_similar_symmetryt   izipR%   Rð   R  R@   Rö   RL   R÷   Rï   RG   R.   R/   (   R  RA   t   pcR)  RC   t   sc1(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt"   exercise_xray_structure_as_py_code  s8    	+c          C   s¨  d }  x›d d „  f d d „  f d d „  f g D]o\ } } t  j t j d | ƒ d	 t d
 t d d d d ƒ} | j ƒ  } t j ƒ  } x• | j	 ƒ  D]‡ } | | j
 Œ  \ } } }	 g  t d ƒ D] }
 t j |  |  ƒ ^ qÁ \ } } } | j | | | f ƒ | | | | |	 | f | _
 q– Wt j g  | D] } | j ƒ  j | ƒ ^ q.ƒ } t j | j ƒ  ƒ } t j d | d | ƒ } t | j ƒ  | d |  ƒs1 t ‚ q1 Wd  S(   Ngü©ñÒMbP?s   P 2ybc         S   s   |  | d | f S(   Ngffffffæ?(    (   R   Rl  Rm  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   <lambda>G  s    s   P -2xc         S   s   |  | d | d f S(   NgÍÌÌÌÌÌì?gffffffæ?(    (   R   Rl  Rm  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyR&  H  s    s   P 1c         S   s   |  d | d | d f S(   Ngš™™™™™¹?gš™™™™™É?gÍÌÌÌÌÌì?(    (   R   Rl  Rm  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyR&  I  s    s   hall: %sRö   R÷   t   n_scatterersi   Rw   Rù   i   R)  R,  Rú  (   R   R  R   Rv   R—   R–   RŸ   R   R¶   R%   R@   R¦   Rù   t   uniformRó   R[   R�   t   max_absoluteRË   R   t    meaningful_site_cart_differencesR
   R   (   t	   rnd_deltat   hall_symbolt   continuously_shiftRB  R)  t   deltaRC   R   Rl  Rm  R3  t   dxt   dyt   dzR`  t   diff_reft   mscd(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt!   exercise_delta_sites_cart_measureD  s0    	2"	(c          C   sŽ  t  j d d ƒ }  t j t  j |  ƒ d t j t j d d	 d
 d ƒ f ƒ ƒ} | j d d d d ƒ j	 ƒ  } t j t  j |  ƒ d t j t j d d d
 d ƒ f ƒ ƒ} | j d d d d ƒ j	 ƒ  } d | j
 ƒ  d _ t } y" | j d d d d ƒ j	 ƒ  } Wn1 t k
 r4} t | ƒ d k s+t ‚ t } n X| sAt ‚ | j ƒ  | j d d d d ƒ j	 ƒ  } | j ƒ  j | j ƒ  ƒ sŠt ‚ d  S(   Ni   i   i	   iZ   ix   Ró  R%   R   RW   R@   g        Ru  i   RŽ  R�  R   i    s4   scattering_type "S" not in scattering_type_registry.(   i   i   i	   iZ   ix   iZ   (   g        g        g        (   g        g        g        (   R   R�   R   R’   R‘   R   R&   R   R²   R“  R%   R   R—   R0   R1   R   R–   t    discard_scattering_type_registryR˜  RÐ   (   R-  t   xs_ost   fc_ost   xs_sst   fc_sst   failedt   fc_ossR6   (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt)   exercise_discard_scattering_type_registry_  s(    !!"

c          C   s˜   t  j d t j d ƒ d d g d d d ƒ }  |  j d d d t j |  j ƒ  j ƒ  d ƒ ƒ } | j	 t
 ƒ d k sy t ‚ | j	 t
 ƒ d k  s” t ‚ d  S(   NRv   Rj   Rw   Rx   id   R[   i
   i   i   iF   iP   ix   t   radiusi   R^   g333333Ó?i    (   i
   i   i   iF   iP   ix   (   R   R  R   Rv   t   selection_withinR   t   random_boolR%   Ra   R   R–   R   (   RA   t   sw(    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   exercise_select_withinu  s    		!c          C   ss   t  j d t j d ƒ d d d d d d d	 d
 g d d d ƒ }  |  j ƒ  sS t ‚ |  j ƒ  |  j ƒ  so t ‚ d  S(   NRv   Rj   Rw   Rx   R¶  t   MnR·  t   Mgt   Aut   Ki   R[   i
   i   i   iF   iP   ix   (   i
   i   i   iF   iP   ix   (   R   R  R   Rv   t   guess_scattering_type_neutronR   t'   switch_to_neutron_scattering_dictionary(   RA   (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt&   exercise_guess_scattering_type_neutron  s    		
i   i   R�  c         C   s9  x2t  | ƒ D]$} t j d t j d ƒ d d d d d d d	 d
 g d d d d d d t d t d t d t d t ƒ 	} | j d |  d | ƒ j ƒ  } | j ƒ  | j	 d | d | ƒ j ƒ  } t
 | ƒ j ƒ  } t
 | ƒ j ƒ  } t j t j
 | | ƒ ƒ t j t j
 | | ƒ ƒ d d } | d k s t ‚ q Wd  S(   NRv   Rj   Rw   R¶  R   RW   t   Ut   CaRx   RC  i2   R‚  Rƒ  g      ø?R„  Rö   R÷   Rˆ  RŒ  Ru  RŽ  R  i   id   gš™™™™™¹?(   R¦   R   R  R   Rv   R–   R²   R“  t    truncate_at_pdb_format_precisionR™  RÉ   R˜  R   t   sumR   (   Ru  t	   n_repeatsRŽ  R3  Rè  t   fc1t   fc2R_  (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt)   exercise_truncate_at_pdb_format_precisionˆ  s&    		
>c           C   s    t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  t
 ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t j t j d t ƒ d  S(   Ni   (   RP  R<  R4  R%  R  R  Rù  Rò  Rê  Rå  Rt  Rr  RÙ  R   R7   Rk  R�  RA  RH  R   t   parse_options_loop_space_groupsRÑ  t   argvRÍ  (    (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   runž  s(    t   __main__(7   t
   __future__R    t   cctbx.developmentR   R   t   cctbxR   R   R   R   t   cctbx.eltbx.xray_scatteringR   t   cctbx.array_familyR   t   libtbx.test_utilsR	   R
   R   R   R   Rù   RÍ   t	   cStringIOR   RÑ  R  R  R   Rk   t   set_random_seedR   R7   Rk  Rr  Rt  R�  R¥  Rµ  RÆ  RÍ  RÙ  Rå  Rê  Rò  Rù  R  R  R%  R4  R<  RA  RH  RP  RS  t   __name__(    (    (    sG   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/regression/tst_xray.pyt   <module>   sl   "$		:	ÿ ÿ ª			282Q		7						9	1			
			