ó
N™xTc           @   s   d  d l  m Z d  d l m Z d  d l Z d  d l m Z m Z d  d l 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 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 „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d e# f d „  ƒ  YZ$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* e+ d k rœe* ƒ  n  d S(    iÿÿÿÿ(   t   division(   t   crystalN(   t   sgtbxt   xray(   t   uctbx(   t   flex(   t   matrix(   t   Exception_expectedt   approx_equalt	   show_diff(   t   hashlib_md5(   t   adopt_init_args(   t   count(   t   StringIOc          C   sq   t  j d d d d ƒ }  |  j d d ƒ } t | d ƒ s@ t ‚ |  j ƒ  } t | ƒ } | j |  ƒ sm t ‚ d  S(   Nt	   unit_cells*   12.548 12.548 20.789 90.000 90.000 120.000t   space_group_symbols   P63/mmct   indents   *$sk   crystal.symmetry(
*$  unit_cell=(12.548, 12.548, 20.789, 90, 90, 120),
*$  space_group_symbol="P 63/m m c")(   R   t   symmetryt
   as_py_codeR	   t   AssertionErrort   evalt   is_similar_symmetry(   t   cst   cspct   cs2(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   exercise_symmetry   s    		i    c         C   s©   d d l  m } |  d k r. d d d g } n d d d g } | j d t j d d d d ƒ d t j g  t | ƒ D]. \ } } | j d d t	 | ƒ d | ƒ ^ qq ƒ ƒ S(    Niÿÿÿÿ(   R   i    gãÇ˜»–�Ï?gÙÎ÷Sãï?g      Ð?g“©‚QI�â?g½R–!Žuå?g"ŽuqÀ?gGrùé·Ï?g        g      ð?g      à?g†ZÓ¼ãÕ?gÖVì/»'í?gï8EGrù×?t   crystal_symmetryR   s*   12.548 12.548 20.789 90.000 90.000 120.000R   s   P63/mmct
   scattererst   labelt   Sit   site(   gãÇ˜»–�Ï?gÙÎ÷Sãï?g      Ð?(   g“©‚QI�â?g½R–!Žuå?g"ŽuqÀ?(   gGrùé·Ï?g        g        (   gãÇ˜»–�Ï?gÙÎ÷Sãï?g      Ð?(   gGrùé·Ï?g      ð?g      à?(   g†ZÓ¼ãÕ?gÖVì/»'í?gï8EGrù×?(
   t   cctbxR   t	   structureR   R   R   t   xray_scatterert	   enumeratet	   scatterert   str(   t   choice_of_coordinatesR   t   sitest   iR   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   trial_structure   s    				c       "   C   sM  d d l  m }  |  j d t j d d d d ƒ d t j g  d	 do f d dp f d dq f d dr f d ds f d dt f d! du f d% dv f d) dw f d- dx f d1 dy f d5 dz f d9 d{ f d= d| f dA d} f dE d~ f dI d f dM d€ f dQ d� f dU d‚ f dY dƒ f d] d„ f da d… f de d† f di d‡ f g D]$ \ } } |  j dm | dn | ƒ ^ qƒ ƒ S(ˆ   Niÿÿÿÿ(   R   R   R   s*   7.9999 9.3718 14.7362 82.625 81.527 81.726R   s   P-1R   t   Cog»DõÖÀV¹?g�f,šÎNÊ?gsôø½MÏ?t   S1gçŒ(í¾È?g”M¹Â»\Þ?gÃžvøk²Ô?t   O1gäf¸ŸÒ?ge¸u7ß?gµàE_AšÍ?t   O2g¦]Pß2·?gÊ¦\á].ã?gë¨j‚¨ûÖ?t   N1g.­†Ä=–®¿gˆ×õv»?gÅæãÚP1Ö?t   N2g	§/ú
º?gq=
×£pÕ?gðÜ{¸ä¸Õ?t   C1gŸ°ÄÊ¦´¿gKº ¾e¶¿guÍä›mnÐ?t   C2g AñcÌ]×?goõœô¾ñÛ?gÍ’ 5µlÙ?t   C3gP6å
ïr¹¿gú³)"ÃÆ?gÝïPèÛ?t   C4gŸ°ÄÊ¦œ¿gtF”ö_Ô?g©ÐDØðÚ?t   C5g®Ø_vOÊ¿gˆc]ÜFÀ?gÂQòêà?t   C6gAJ˜iû¿¿g/n£¼’¿g´qÄZ|
Ö?t   C7g?o*RalÍ¿g-ìi‡¿&³¿g(I×L¾ÙÚ?t   C8g®¶bÙ=Ñ¿g„*5{ h¿góqm¨çß?t   F1gnÀç‡Þ?g¶-Êl�IÔ?gPª}:3Ø?t   F2g;Sè¼Æ.Ó?g-²�ï§Ú?gvi©¼ß?t   F3gB!¡JÝ?g»òYžwá?g-[ë‹„¶Ø?t   H1gªCn†ðÁ¿gçŒ(í¾ ¿g‘z6«>Ë?t   H2g:@0G�ß»¿g W²c#Ç¿g
…8„*Ñ?t   H3gLàÖÝ<Õ¡?g{fI€šZ¶¿gõ�î vÎ?t   H4g¼W­Lø¥¾¿gÁ9#J{ƒÙ?gÉå?¤ß¾Ú?t   H5g(›r…—?g¼t“VÔ?gHmâä~‡Þ?t   H6gtïá’ãNÍ¿g¶-Êl�IÆ?gÍui©á?t   H7g~8gDiÑ¿g"T©Ù­Ä¿gS"‰^F±Ú?t   H8gÝµ„|Ð³Õ¿gýöuàœ¥¿gk+ö—Ý“á?R   R   (   g»DõÖÀV¹?g�f,šÎNÊ?gsôø½MÏ?(   gçŒ(í¾È?g”M¹Â»\Þ?gÃžvøk²Ô?(   gäf¸ŸÒ?ge¸u7ß?gµàE_AšÍ?(   g¦]Pß2·?gÊ¦\á].ã?gë¨j‚¨ûÖ?(   g.­†Ä=–®¿gˆ×õv»?gÅæãÚP1Ö?(   g	§/ú
º?gq=
×£pÕ?gðÜ{¸ä¸Õ?(   gŸ°ÄÊ¦´¿gKº ¾e¶¿guÍä›mnÐ?(   g AñcÌ]×?goõœô¾ñÛ?gÍ’ 5µlÙ?(   gP6å
ïr¹¿gú³)"ÃÆ?gÝïPèÛ?(   gŸ°ÄÊ¦œ¿gtF”ö_Ô?g©ÐDØðÚ?(   g®Ø_vOÊ¿gˆc]ÜFÀ?gÂQòêà?(   gAJ˜iû¿¿g/n£¼’¿g´qÄZ|
Ö?(   g?o*RalÍ¿g-ìi‡¿&³¿g(I×L¾ÙÚ?(   g®¶bÙ=Ñ¿g„*5{ h¿góqm¨çß?(   gnÀç‡Þ?g¶-Êl�IÔ?gPª}:3Ø?(   g;Sè¼Æ.Ó?g-²�ï§Ú?gvi©¼ß?(   gB!¡JÝ?g»òYžwá?g-[ë‹„¶Ø?(   gªCn†ðÁ¿gçŒ(í¾ ¿g‘z6«>Ë?(   g:@0G�ß»¿g W²c#Ç¿g
…8„*Ñ?(   gLàÖÝ<Õ¡?g{fI€šZ¶¿gõ�î vÎ?(   g¼W­Lø¥¾¿gÁ9#J{ƒÙ?gÉå?¤ß¾Ú?(   g(›r…—?g¼t“VÔ?gHmâä~‡Þ?(   gtïá’ãNÍ¿g¶-Êl�IÆ?gÍui©á?(   g~8gDiÑ¿g"T©Ù­Ä¿gS"‰^F±Ú?(   gÝµ„|Ð³Õ¿gýöuàœ¥¿gk+ö—Ý“á?(   R   R   R    R   R   R   R!   R#   (   R   R   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   trial_structure_22   s@    																											c    2      C   st  t  j j d d d d g d d ƒ }  t |  j d d d g ƒ sE t ‚ t |  j d ƒ s] t ‚ t |  j d d d d g ƒ d ƒ s‡ t ‚ t |  j d d d d g ƒ d ƒ s± t ‚ |  j d d	 d d g d
 d ƒ sØ t ‚ |  j d d d g ƒ s÷ t ‚ t |  j	 ƒ  d d d g ƒ st ‚ d d d g |  _ t |  j d d d g ƒ sNt ‚ d |  _ t |  j d ƒ sot ‚ t |  j	 ƒ  d d d g ƒ s“t ‚ t
 j d\ ƒ } |  j d | d d ƒ } t | j |  j ƒ sÕt ‚ t | j d ƒ sít ‚ t  j d | d g  ƒ } | j ƒ  j ƒ  d k s#t ‚ g  } xS t d ƒ D]E } d d d g } d | | <| j t  j j d | d | d ƒ ƒ q6Wt  j j d | d | d d ƒ } | j ƒ  j | ƒ s»t ‚ xu t d ƒ D]g } d d d g } d | | <t | j ƒ  | j | ƒ s	t ‚ t | j ƒ  | j | d ƒ sÈt ‚ qÈWt | j ƒ  d ƒ sNt ‚ | j d	 d d g ƒ slt ‚ d } | j d	 | d | d | g ƒ s�t ‚ | j d ƒ } | j d] d^ d_ g ƒ sÊt ‚ d } | j d` | da | db | g ƒ sût ‚ t | j ƒ  ƒ d k st ‚ x? t t g D]1 }	 t | j d |	 d
 d ƒ d dc ƒ s&t ‚ q&Wt  j j d | d g  dd de g df d g dg dh g di dj g g D]' \ } }
 t  j j d | d |
 ƒ ^ q˜ƒ } t | j ƒ  d d d g ƒ sìt ‚ t | j ƒ  d d  d g ƒ st ‚ t | j d t ƒ d d d g ƒ s:t ‚ t | j d t ƒ d d  d g ƒ sdt ‚ t  j j d! t j d" ƒ j t j  d# ƒ ƒ d$ | d% d& ƒ } | j! d' d( ƒ | j ƒ  j" ƒ  d) k sÎt ‚ t | j# ƒ  j ƒ  ƒ d* k sòt ‚ | j ƒ  j | ƒ st ‚ t | j$ ƒ  d& ƒ s(t ‚ t | j% ƒ  j ƒ  d+ d, d- g ƒ sRt ‚ t | j& ƒ  j' ƒ  d. ƒ sst ‚ d/ d0 d1 g d2 d3 d- g g } | j( ƒ  j ƒ  d k s¯t ‚ | j) d4 | d d5 d6 ƒ | k s×t ‚ | j( ƒ  j ƒ  d k sõt ‚ t j* d | j# ƒ  j ƒ  d! | j ƒ  d4 | d d5 d6 ƒ } | j) d4 | d d7 | ƒ | k sWt ‚ | j( ƒ  j ƒ  d k sut ‚ t+ j, g  t- | j( ƒ  ƒ D]  \ } } | d | j. ƒ  ^ qŽƒ } t/ | j# ƒ  j0 d8 | ƒ ƒ t t g k sçt ‚ t/ | j# ƒ  j1 d9 | j# ƒ  j ƒ  j2 d8 | ƒ ƒ ƒ t t g k s/t ‚ | j3 ƒ  d: k sGt ‚ | j( ƒ  d } t | ƒ d; k sot ‚ | d } | j4 ƒ  d k s‘t ‚ | j5 ƒ  dk k s©t ‚ | j | j. ƒ  ƒ sÄt ‚ t | j6 ƒ  d< d= d- g ƒ sèt ‚ t | j7 ƒ  d> d? d@ g ƒ s	t ‚ t | j8 ƒ  dA d d g ƒ s0	t ‚ t/ | j9 ƒ  j: ƒ  ƒ d d g k sZ	t ‚ x/ | D]' } | j% ƒ  j | j. ƒ  ƒ sa	t ‚ qa	Wt; j< | j ƒ  j= ƒ  ƒ } t; j< | j ƒ  j> ƒ  ƒ } xMt- | j( ƒ  ƒ D]9\ } } x*t t | ƒ ƒ D]} | j? | | ƒ } | j? | j( ƒ  | | ƒ | k s5
t ‚ | | | } | j ƒ  j2 | ƒ } t | | j. ƒ  | ƒ sw
t ‚ t | j@ dB | j ƒ  j2 | | ƒ dC | dD | ƒ | ƒ s·
t ‚ t; j< | jA ƒ  jB ƒ  jC ƒ  ƒ } t | jD dC | dD | ƒ | | | jE ƒ sô	t ‚ qô	WqÕ	Wt  jF | ƒ } | jG ƒ  s4t ‚ t | j( ƒ  d ƒ dE k sVt ‚ g  } xX | D]P } | j | jH | jI | jJ f ƒ | jK d k s�t ‚ | jL | ƒ sct ‚ qcW| jG ƒ  sÉt ‚ | dl dm dn do dp dq dr ds dt du dv dw dx dy dz d{ d| d} d~ g k st ‚ xmt dF g  d f t d& d€ d� d‚ dƒ g d„ f t d d… g d† f t dF d‡ dˆ d‰ g dŠ f g D]\ } } }  }! t  j j d! t j d" ƒ j t j  d# ƒ ƒ d$ | d% | ƒ } | jM dG t+ j, d/ d0 d1 g g ƒ d5 d6 ƒ | k söt ‚ | j( ƒ  j ƒ  d k st ‚ | re| jN dG t+ j, | j ƒ  j2 d2 d3 d- g ƒ g ƒ d5 d6 ƒ | k set ‚ n  t  jF | ƒ } g  } xB | D]: } | j | jH | jI | jJ f ƒ | jK d k s�t ‚ q�W| jG ƒ  sÑt ‚ | |  k sãt ‚ | jO ƒ  t |  ƒ d k r| jG ƒ  s't ‚ n | jG ƒ  s't ‚ | jP ƒ  t | ƒ k sEt ‚ | jO ƒ  | rŽ| jQ dH t+ jR t t g ƒ ƒ jS t ƒ d k sŽt ‚ n  | jO ƒ  g  } xB | D]: } | j | jH | jI | jJ f ƒ | jK d k s¥t ‚ q¥W| jG ƒ  sõt ‚ | |  k st ‚ t  jF dI | dJ dK dL t ƒ }" t |" jT ƒ  d‹ ƒ s@t ‚ t  jU dI | dJ dK dL t dM d d
 d ƒ }# t |# jT ƒ  dŒ ƒ s…t ‚ t |# jV ƒ  d d ƒ s¤t ‚ |# jW ƒ  d� k s¼t ‚ g  } t+ jX ƒ  }$ x© |" D]¡ } | j | jH | jI | jJ f ƒ | jK d k st ‚ t | jY dN | ƒ | jY ƒ s3t ‚ t t; jZ | jY dN | ƒ ƒ j[ ƒ  | jK ƒ sft ‚ |$ j | jK ƒ qÕW|" jG ƒ  sŒt ‚ | |  k sžt ‚ t | ƒ d k rÅ|# jG ƒ  sØt ‚ n |# jG ƒ  sØt ‚ g  } x- |# D]% } | j | jH | jI | jJ f ƒ qåW| |  k s t ‚ |# jG ƒ  s2t ‚ t+ j\ |$ ƒ }% |% j ƒ  d k rit+ j] |% ƒ dO }& n d }& |$ j^ |% |& k ƒ }' xùt  jF t  jU g D]å}( |( t  jF k rÄ|( dI | dJ |& ƒ } n< |& d k rÙd }) n d }) |( dI | dJ |& dL t dM |) ƒ } g  } t+ jX ƒ  }$ xÂ | D]º } | j | jH | jI | jJ f ƒ | jK d k sSt ‚ t | jY dN | ƒ | jY ƒ swt ‚ t t; jZ | jY dN | ƒ ƒ j[ ƒ  | jK ƒ sªt ‚ | jL dN | ƒ sÃt ‚ |$ j | jK ƒ qW| jG ƒ  sét ‚ |( t  jF k rt |$ |' ƒ sst ‚ nc | jW ƒ  |! k s(t ‚ |' j^ t+ j_ dP |' ƒ ƒ }* |$ j^ t+ j_ dP |$ ƒ ƒ }+ t |+ |* ƒ sst ‚ | jP ƒ  d k s‹t ‚ | j` ƒ  d k s£t ‚ | jO ƒ  | jP ƒ  t | ƒ k sËt ‚ | jO ƒ  t | ƒ d k r| j` ƒ  d k st ‚ n t | j` ƒ  d& ƒ st ‚ | jO ƒ  t+ jR | j ƒ  j( ƒ  j ƒ  t ƒ }, t |, d <| jQ dH |, ƒ jS t ƒ d k s—t ‚ q—WqoW| ja dC d dQ d dR d ƒ }- |- jH d k s·t ‚ |- jI d k sÌt ‚ |- jJ d k sát ‚ |- jb ƒ  sôt ‚ | jc dC d dQ d dR d ƒ }- |- jH d k s't ‚ |- jI d k s<t ‚ |- jJ d k sQt ‚ |- jb ƒ  sct ‚ d dS ld me }. tf ƒ  }/ |/ j d% dT ƒ } t/ | j9 ƒ  j: ƒ  ƒ d d d g k s»t ‚ | j3 ƒ  dU k sÓt ‚ | jc dC d dQ d dR d ƒ }- |- jH d k st ‚ |- jI d k st ‚ |- jJ d k s0t ‚ |- jb dL t ƒ sHt ‚ |- jb dL t ƒ sat ‚ x=t- | j( ƒ  ƒ D])\ } } xt t | ƒ ƒ D]} | j? dC | dD | ƒ } | jg dC | dV | ƒ }0 |0 | k sÛt ‚ | jg dC | dV t jh dW ƒ ƒ }0 |0 d k st ‚ | d k r“ti d | d ƒ }1 | ja |1 | | ƒ }- | jj dN |- ƒ | j? |1 d ƒ k slt ‚ | jk dN |- ƒ | j? | | ƒ k s™t ‚ q“q“WqtWtl | jm d ƒ ƒ dX k sÂt ‚ tl | jm d ƒ ƒ dY k sãt ‚ tl | jm d ƒ ƒ dZ k st ‚ |/ d  j d% dT ƒ } | jM dG |/ jn ƒ  jo ƒ  ƒ | k sDt ‚ | j3 ƒ  dU k s\t ‚ |/ d  j d% dT ƒ } | jM dG |/ jn ƒ  jo ƒ  d[ |/ j9 ƒ  ƒ | k s¨t ‚ | j3 ƒ  dU k sÀt ‚ |/ d  j d% dT ƒ } | jN dG |/ jp ƒ  ƒ | k sút ‚ | j3 ƒ  dU k st ‚ |/ d  j d% dT ƒ } | jN dG |/ jp ƒ  d[ |/ j9 ƒ  ƒ | k sXt ‚ | j3 ƒ  dU k spt ‚ d  S(Ž   Nt   niÿÿÿÿi    t   ci   t   pointi   i   g®Gáz®ï?t   epsilong)\�Âõ(ð?iZ   R   t	   thicknessg      à?g      @t   cutst   is_inside_epsilong�íµ ÷Æ°>g\�Âõ(\ß?g{®GázÔ?g{®Gáz”?gš™™™™™É?t	   cartesiang      ð?g       @g      @g      @g      Ð?g      Ð¿g      ô?g      è?t   space_groups   P 2 3s   x+1/4,y-1/4,z+1/2t   asut   buffer_thicknessgš™™™™™¹?t   n_sites_finali
   i   i   gEP�3¨‘�?g~}c¾rsß¿gš™™™™™Ù?g:Æº]ÔÓé?gÍÌÌÌÌÌ@gš™™™™™ÀgÍÌÌÌÌÌô?g333333Àg333333û?t   original_sitet   min_distance_sym_equivg{®Gáz„?t   site_symmetry_opst
   sites_fract
   sites_carti   i   g333333Ã?gš™™™™™Ù¿gÍÌÌÌÌÌð?g333333ã?gÍÌÌÌÌÌä?gÍÌÌÌÌÌì?t   moved_original_sitet   i_seqt   i_symi   g{®Gáz¤?t   original_sitest   primary_selectiont   asu_mappingst   distance_cutoffid   t   minimalt   min_cubicle_edget   pairgñhãˆµøä>t   datat   j_seqt   j_sym(   R   g      @i!   t   rt_mxs   0,0,0s   x,y,1/4s   x,y,zs   x-1/2*y,0,0t   site_symmetry_table(   i   i   i   iZ   iZ   iZ   g
×£p=
ó?g®Gázæ?g¤p=
×£à?g
×£p=
ó?g®Gázæ?g¤p=
×£à?(   g      ð?g       @g      @(   i    i    i   g      à¿(   iÿÿÿÿiÿÿÿÿi    (   i    i   iÿÿÿÿg      è?(   i   i    iÿÿÿÿ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   i    i   (   i   i    i   (   i   i    i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   i    i    i   (   i    i    i   (   i    i    i   (   i    i    i   (   i   i   i   (   i    i   i    (   i   i   i   (   i    i   i    (   i    i   i   (   i   i   i   (   i   i   i   i'  i'  (   i   i   i   (q   R   t   direct_space_asut   float_cut_planeR   RC   R   RD   t   evaluatet	   is_insidet   get_point_in_planeR   R   t
   add_buffert   direct_space_asu_float_asut   shape_verticest   sizet   xranget   appendt	   float_asut   is_similar_toRH   RI   t   _add_buffert   lent   Falset   Truet   box_mint   box_maxRY   R   RK   t   change_basist   change_of_basis_opt   reservet   order_zRL   RM   t
   asu_buffert   buffer_covering_spheret   radiust   mappingst   processt   site_symmetryR   t   vec3_doubleR"   t   mapped_sitet   listt   is_inside_fract   is_inside_cartt   orthogonalizet   n_sites_in_asu_and_buffert   i_sym_opt   unit_shiftst   mapped_sites_mint   mapped_sites_maxt   mapped_sites_spanRb   t   indicesR   t   sqrt   orthogonalization_matrixt   fractionalization_matrixt	   get_rt_mxt   map_moved_site_to_asut   rt   inverset	   as_doublet
   r_inv_cartt   elemst   neighbors_simple_pair_generatort   at_endRU   R_   R`   t   dist_sqt   is_simple_interactiont   process_sites_fract   process_sites_cartt   restartt   count_pairst   neighbors_oft   boolR   t   distance_cutoff_sqt   neighbors_fast_pair_generatorRF   t   n_boxest   doublet   diff_vect   colt   norm_sqt   sqrtt   meant   selectt   sort_permutationt   max_distance_sqt   make_trial_pairt	   is_activet	   make_pairR   R   R(   t
   find_i_symRa   t   maxt   get_rt_mx_it   get_rt_mx_jR$   t
   special_opR   t   extract_sitesRS   (2   t   cpR   t   cpbRL   RH   R'   RC   t   epst   buf_asuRJ   RD   RY   t	   sites_seqR   t   mRR   R}   t   amt   ot   fRU   t   m_i_seqRV   Ra   t	   site_fract	   site_cartR’   t   pair_generatort   index_pairst
   index_pairt   two_flagRM   t   expected_index_pairst   expected_n_boxest   simple_pair_generatort   fast_pair_generatorR™   t	   distancest   cutofft   short_dist_sqt   pair_generator_typeR\   t   short_dist_sq_sortedt   dist_sq_sortedRX   R]   R   R    t   i_sym_foundt
   pair_i_seq(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   exercise_direct_space_asuT   sš   $!**'$!	$		
*	
"*++#			=$$**	$!	
	
		
	9!
$$$*%	!"".			$

	0
				#			



	&	-	&!!!	!			c   	      C   sã   t  ƒ  } xÓ t |  j ƒ  ƒ D]¿ \ } } x° | j ƒ  D]¢ \ } } x“ | D]‹ } x‚ | D]z } d s€ d t j d k s€ | d  k r› t | | | g ƒ d GHn  | d  k	 rU | | | g | | j ƒ  k sÏ t	 ‚ qU qU WqH Wq5 Wq Wd  S(   Ni    s	   --verbosei   t   ,(
   R   R"   t   tablet   itemst   syst   argvt   NoneR$   t   nextR   (	   t	   asu_tablet   expected_asu_pairst   ipRU   t   asu_dictR_   t   j_sym_groupst   j_sym_groupR`   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   check_pair_asu_table¬  s    	%c    4      C   sò  t  j ƒ  }  t |  ƒ d k s$ t ‚ t j d ƒ j ƒ  } xt d d d g ƒ D]\ } } t  j | |  ƒ |  | <t |  ƒ | d k sŽ t ‚ t |  | ƒ | k sª t ‚ g  | |  D] } t	 | ƒ ^ qµ g  |  | D] } t	 | ƒ ^ qÕ k sö t ‚ | |  |  | <g  | |  D] } t	 | ƒ ^ qg  |  | D] } t	 | ƒ ^ q/k sO t ‚ qO Wg  |  D] } | ^ q[d d d g k s‚t ‚ |  d j
 ƒ  d k sžt ‚ |  d j | d ƒ |  d j
 ƒ  d	 k sÏt ‚ |  d d =|  d j
 ƒ  d k söt ‚ |  d j ƒ  |  d j
 ƒ  d k s t ‚ t  j ƒ  } | j |  ƒ | j
 ƒ  d k sQt ‚ t | d d ƒ d k sqt ‚ | j |  ƒ | j
 ƒ  d k s–t ‚ t | d d ƒ d k s¶t ‚ t  j d	 ƒ } x& | D] }  t |  ƒ d k sÌt ‚ qÌW| d  | d d <t | d ƒ d k st ‚ t | d d ƒ d k s<t ‚ | j ƒ  } | j
 ƒ  d	 k s`t ‚ g  | D] }  t |  ƒ ^ qgd d d g k s”t ‚ t	 | d d d ƒ d
 k s¸t ‚ t  j d d	 ƒ } | d j d ƒ | d d j t j d ƒ ƒ | d j d ƒ | d d j t j d ƒ ƒ t  j d d ƒ } | d j d ƒ | d d j t j d ƒ ƒ | d j d ƒ | d d j t j d ƒ ƒ | j d | ƒ t ƒ  }	 | j d |	 ƒ t |	 j ƒ  d ƒ sÝt ‚ t  j d	 ƒ } x& | D] }  t |  ƒ d k sót ‚ qóWt  j ƒ  | d d <| d d j
 ƒ  d k sIt ‚ | d d j t  j ƒ  ƒ | d d j
 ƒ  d k s„t ‚ | d d d j
 ƒ  d k s¨t ‚ | d d d j d	 ƒ | d d d j
 ƒ  d k såt ‚ | d d j t  j ƒ  ƒ | d d d j
 ƒ  d k s$t ‚ | d d d j d d d g ƒ | d d d j
 ƒ  d k sjt ‚ t ƒ  }
 |
 j ƒ  j ƒ  } |
 j d d ƒ } t  j d | ƒ } | j d | ƒ | k sÇt ‚ dŸ } t  | j! ƒ  | ƒ sèt ‚ t  j d | ƒ } | j d | d d ƒ | k st ‚ d  } t  | j! ƒ  | ƒ s?t ‚ t  j d | ƒ } | j d | d t" j# d d g ƒ ƒ | k s„t ‚ d¡ } t  | j! ƒ  | ƒ s¥t ‚ |
 j$ t% j& d d d  d¢ ƒ ƒ |
 j ƒ  j ƒ  } |
 j d d ƒ } t  j d | ƒ } t" j' |
 j ƒ  j
 ƒ  d ƒ } d | d <d | d <| j d | d$ | ƒ | j! ƒ  d d k s^t ‚ | j! ƒ  d d k szt ‚ t% j( d% t  j) d& d' d( d) ƒ d* t" j* t% j& d+ d  d£ ƒt% j& d- d  d¤ ƒt% j& d/ d  d¥ ƒg ƒ ƒ } | j ƒ  j ƒ  } | j d d ƒ } t  j d | ƒ } | j d | ƒ t  | j! ƒ  d¦ ƒ sD	t ‚ t" j' d d d g ƒ } t  j d | ƒ } | j d | d1 | ƒ t  | j! ƒ  d§ ƒ sŸ	t ‚ | j$ t% j& d d2 d  d¨ ƒ ƒ | j d ƒ t" j' d d d d g ƒ } | j ƒ  j ƒ  } | j d d ƒ } t  j d | ƒ } | j d | d1 | d$ | ƒ t  | j! ƒ  d© ƒ sS
t ‚ t% j( d% t  j) d& d' d( d4 ƒ d* t" j* t% j& d+ d  dª ƒt% j& d- d  d« ƒt% j& d/ d  d¬ ƒt% j& d2 d  d­ ƒt% j& d8 d  d® ƒg ƒ ƒ } | j ƒ  j ƒ  } | j d d ƒ } t  j d | ƒ } | j d | d9 i d: d; 6d d ƒ t  | j! ƒ  d¯ ƒ sTt ‚ | j d | d9 i d< d; 6d d ƒ t  | j! ƒ  d° ƒ s’t ‚ t+ ƒ  }
 |
 j d d ƒ } t  j d | ƒ } | j, ƒ  j
 ƒ  d	 k sÝt ‚ | j- d= d d> d d? d ƒ st ‚ | j! ƒ  j. d ƒ st ‚ t/ | j0 ƒ  ƒ d d d g k sDt ‚ t/ | j0 d@ t1 ƒ ƒ d g k skt ‚ t/ | j0 dA d ƒ ƒ d d g k s•t ‚ | j2 dB d ƒ | k s³t ‚ g  | j, ƒ  D] }  |  j
 ƒ  ^ qÀd d	 d g k sít ‚ | j2 d dC dD ƒ| k st ‚ g  | j, ƒ  D] }  |  j
 ƒ  ^ qd d	 d g k sHt ‚ d d d g d d d g d d d g d d dE g d d d g d d d g d d d g d d d g d d d g d d dF g d d d g d d d g g } t3 | | ƒ t  j d | ƒ } x” t1 t4 g D]† } t  j5 | dB d dG | dH d ƒ} x | D] } | j6 dI | ƒ q8W| j! ƒ  j. d ƒ | j0 ƒ  j
 ƒ  d k sƒt ‚ t3 | | ƒ q
Wx_ | D]W } | j- d= | d d> | d d? | d ƒ sÑt ‚ | j7 | Œ  } | | k s›t ‚ q›Wt ƒ  } | j d | ƒ | j ƒ  dJ k s't ‚ t ƒ  } | j d | dK dL g d	 ƒ t | j ƒ  dM ƒ sit ‚ | j- d= d d> d d? d ƒ sŽt ‚ | j7 d= d d> d d? d ƒ } | | k s¾t ‚ | | k sÐt ‚ | | k sãt ‚ t  j d | ƒ } | | k st ‚ | | k st ‚ xA	t4 t1 g D]3	} | j8 dN | ƒ } | j
 ƒ  | j, ƒ  j
 ƒ  k sct ‚ d d dO g d d dP g d d dQ g d d dR g d d dS g d d dT g d d dU g d d dV g d d dW g g	 } t9 ƒ  } x× t | ƒ D]É \ } } xº | j: ƒ  D]¬ \ }  }! x� |! D]• }" x1 | | j; ƒ  }# | oG|# d |# d k  s Pq q d sjdX t< j= d k r‹t	 | |  t	 |" ƒ g ƒ dY GHn  | |  t	 |" ƒ g |# k st ‚ qWqWqëWt  j d | ƒ } | j> dZ | ƒ | k sèt ‚ t3 | | ƒ g  }$ t  j d | ƒ }% x~ | D]v } |% j6 d= | d d> | d d[ t j | d ƒ ƒ |% k sYt ‚ |$ j |% | k ƒ |% | k |% | k k st ‚ qWt3 |% | ƒ |$ d  j9 |$ d ƒ t |$ ƒ d k sÈt ‚ |$ d sØt ‚ t" j? d\ d] d7 g ƒ }& t@ d^ | d_ |
 jA ƒ  jB ƒ  d` |
 jC ƒ  ƒ }' xÎt4 t1 g D]À}( |' da |& db |( dc |( ƒ }) |) jD d± k sat ‚ |) jD de k r‹t  |) jE df ƒ s£t ‚ n t  |) jE dg ƒ s£t ‚ |( s!|) jF j
 ƒ  d k sÄt ‚ |) jG j
 ƒ  |) jD k sât ‚ |) jH j
 ƒ  |) jD k s t ‚ |) jI j
 ƒ  |) jD k sêt ‚ q*|) jD de k rTt  |) jF dh di dj g ƒ sut ‚ n! t  |) jF dk dl dm g ƒ sut ‚ t  |) jF |' jJ da |& ƒ ƒ s™t ‚ |) jG j
 ƒ  d k s´t ‚ |) jH j
 ƒ  d k sÏt ‚ |) jI j
 ƒ  d k s*t ‚ q*WxÀ tK d ƒ D]² }* |& jL t" jM d |& j
 ƒ  ƒ ƒ }& xˆ dn d d do g D]t }+ xk dp dq d dr g D]W }, |' da |& ds |+ dt |, db t1 ƒ }) t  |) jF |' jJ da |& ds |+ dt |, ƒ ƒ sNt ‚ qNWq5WqûWt  jN d^ | d_ |
 jA ƒ  jB ƒ  d` |
 jC ƒ  ƒ }- | st  |- du dv dw dw dx dy dz dz d{ g	 ƒ sZt ‚ q't  |- du dv dw dx dy dz d{ g ƒ sDt ‚ t ƒ  } | j d | ƒ | j ƒ  d| k sut ‚ t ƒ  } | j d | dK dL g d	 ƒ | j ƒ  d} k s³t ‚ t ƒ  } | j d | dK dL g d	 d~ |
 jO ƒ  ƒ t | j ƒ  d ƒ st ‚ t ƒ  } | j d | dK dL g d	 d` |
 jC ƒ  d& |
 jA ƒ  ƒ t | j ƒ  d€ ƒ s[t ‚ t ƒ  } | j d | dK dL g d	 d~ |
 jO ƒ  d` |
 jC ƒ  d& |
 jA ƒ  ƒ t | j ƒ  d� ƒ sÁt ‚ |
 jP ƒ  }. |. j$ t% j& d d‚ d  d² ƒ ƒ | j t  j ƒ  ƒ t ƒ  }	 |. jQ d^ | dN t1 dƒ |	 ƒ }/ t |	 j ƒ  d„ ƒ sBt ‚ t/ |/ ƒ d d	 d d g k sft ‚ | d =t ƒ  }	 | jR d& |
 jA ƒ  d~ |
 jO ƒ  d… |
 jS ƒ  d† t1 dN t1 dƒ |	 ƒ t |	 j ƒ  d‡ ƒ sÒt ‚ t ƒ  }	 |. jQ d^ | dˆ t1 dƒ |	 ƒ t |	 j ƒ  d‰ ƒ st ‚ t ƒ  }	 |. jQ d^ | dN t1 dˆ t1 dƒ |	 ƒ t |	 j ƒ  dŠ ƒ s't ‚ q'Wt" jT d³ d´ dµ g ƒ }0 t  jU jV d… |0 ƒ } t  j d | ƒ }1 |1 j2 dB d	 ƒ t ƒ  } |1 j d | ƒ | j ƒ  d‹ k sÞt ‚ |1 j8 ƒ  } t ƒ  } | j d | ƒ | j ƒ  dŒ k st ‚ t  jN d^ | d… |0 ƒ }- t  |- d d	 g ƒ sNt ‚ t  j d ƒ } | d j d ƒ }  |  j t j d ƒ ƒ |  j t j d� ƒ ƒ | d j d ƒ }  |  j t j d
 ƒ ƒ | d j d ƒ }  |  j t j d
 ƒ ƒ | d j d	 ƒ }  |  j t j d
 ƒ ƒ |  j t j dŽ ƒ ƒ | d j d ƒ }  |  j t j d
 ƒ ƒ | d j d ƒ }  |  j t j d
 ƒ ƒ | d j d	 ƒ }  |  j t j d
 ƒ ƒ |  j t j dŽ ƒ ƒ | d j d ƒ }  |  j t j d
 ƒ ƒ | d	 j d	 ƒ }  |  j t j d� ƒ ƒ | d	 j d ƒ }  |  j t j d
 ƒ ƒ |  j t j d� ƒ ƒ | d j d ƒ }  |  j t j d� ƒ ƒ |  j t j d� ƒ ƒ |  j t j d‘ ƒ ƒ t ƒ  }2 | j d |2 ƒ |2 j ƒ  d’ k sÕt ‚ t ƒ  }2 x9 tK d ƒ D]+ } | jW t" j' | g ƒ ƒ j d |2 ƒ qëW|2 j ƒ  d“ k s2t ‚ t ƒ  }2 | jW t" j' d d d g ƒ ƒ j d |2 ƒ |2 j ƒ  d” k s~t ‚ t ƒ  }2 | jW t" j' d	 d d g ƒ ƒ j d |2 ƒ |2 j ƒ  d• k sÊt ‚ t  j d ƒ } | d j d ƒ | d	 j d	 ƒ g  tK d ƒ D] } | jX d= | ƒ ^ qt1 t4 t1 t1 t4 g k sAt ‚ |
 j d d¶ ƒ } t  j d | ƒ } | j2 dB d ƒ | jY ƒ  }3 |3 jZ ƒ  d d d– d— g g d d d˜ g d	 d— g d d™ g g d d d	 g g g d d dd g d g d g g d d g dš d› g d– g g d dd g d g d g g g d d d d	 g g d d de g d dœ g d	 dd g g d d� d˜ g g g g k stt ‚ t  j d | ƒ } | j2 dB dž ƒ | j, ƒ  d j
 ƒ  d k s¸t ‚ | jY ƒ  }3 |3 jZ ƒ  d g d g d g g k sît ‚ d  S(·   Ni    s   P 41i
   i   i   i   i   iÿÿÿÿi   s   x,y,zRk   s   -x,y,zs   x,-y,-zs   x,-y,zs   x,y,-zt   otherR¾   si   i_seq: 0
  j_seq: 0
    x,-y,z
  j_seq: 1
    -x,y,z
    x,y,-z
i_seq: 1
  j_seq: 0
    x,-y,-z
i_seq: 2
i   i   RM   g      @RY   t   scattering_typest	   tolerancegš™™™™™é?t   exclude_scattering_typest   Ht   DR   t   O1aR   gìQ¸…ëÑ?g¸…ëQ¸Þ?gq=
×£pÍ?t   conformer_indicesR   R   s   10 10 10 90 90 90R   s   P-1R   R/   gš™™™™™©?R0   g333333Ã?R1   g      Ð?t   sym_excl_indicesR2   g{®GázÄ?t   P1g        gš™™™™™¹¿gš™™™™™¹?R3   t   radiig¸…ëQ¸æ?t   Cg)\�Âõ(ð?RU   R_   R`   t   general_positions_onlyt   max_clustersRZ   RF   g�íµ ÷Æ°>i   i   R[   R\   R]   s  i_seq: 0
  j_seq: 0
    j_syms: [2]
    j_syms: [1]
  j_seq: 1
    j_syms: [0, 8]
i_seq: 1
  j_seq: 0
    j_syms: [0]
  j_seq: 1
    j_syms: [4]
    j_syms: [1]
  j_seq: 2
    j_syms: [0]
i_seq: 2
  j_seq: 1
    j_syms: [0, 11]
  j_seq: 2
    j_syms: [1, 2]
t   site_labelsR   sä   Si(0)
  Si(0)
    j_syms: [2]
    j_syms: [1]
  Si(1)
    j_syms: [0, 8]
Si(1)
  Si(0)
    j_syms: [0]
  Si(1)
    j_syms: [4]
    j_syms: [1]
  Si(2)
    j_syms: [0]
Si(2)
  Si(1)
    j_syms: [0, 11]
  Si(2)
    j_syms: [1, 2]
t   skip_j_seq_less_than_i_seqs   -y+1,-x+1,-z+1/2s   x,x-y+2,-z+1/2s   -y+1,x-y+1,-z+1/2s   -x+y,-x+1,-z+1/2s	   x,x-y+1,zs   -y+1,-x+1,zs   -x+1,-x+y+1,-zs   -x+1,-x+y,-zs	   y,-x+y,-zs	   --verboseRÓ   t	   sym_tablet   rt_mx_jig{®Gáz„?g
×£p=
·?t   pair_sym_tableRŽ   RR   t   u_isost   compute_gradientst   collecti   i	   g÷ü…#knš?g÷ü…#knŠ?g3é|Ú€è¿gToñ~3ñÜ?gÚ¼Ï*t­?g3é|Ú€Ø¿gSoñ~3ñÌ?gÛ¼Ï*t�?g333333Ó?g333333û?gš™™™™™Ù?gÍÌÌÌÌÌì?g      ø?t   distance_powert   average_powergÔÈøAg@gÄQu	@gYŸßÿÊ\	@g,…@.q$@g�œž®S	@gÎ¼Â–	@gŸìÒ+
à@sÏ   i_seq: 0
  j_seq: 0
    -y+1,-x+1,-z+1/2
    x,x-y+2,-z+1/2
  j_seq: 1
    -y+1,x-y+1,-z+1/2
i_seq: 1
  j_seq: 1
    x,x-y+1,z
    -y+1,-x+1,z
  j_seq: 2
    -x+1,-x+y+1,-z
i_seq: 2
  j_seq: 2
    y,-x+y,-z
s·   Si(0)
  Si(0)
    -y+1,-x+1,-z+1/2
    x,x-y+2,-z+1/2
  Si(1)
    -y+1,x-y+1,-z+1/2
Si(1)
  Si(1)
    x,x-y+1,z
    -y+1,-x+1,z
  Si(2)
    -x+1,-x+y+1,-z
Si(2)
  Si(2)
    y,-x+y,-z
Rb   sô   Si(0)
  Si(0)
    -y+1,-x+1,-z+1/2
    x,x-y+2,-z+1/2
  Si(1)
    -y+1,x-y+1,-z+1/2
    -y+1,x-y+1,z       sym. equiv.
Si(1)
  Si(1)
    x,x-y+1,z
    -y+1,-x+1,z
  Si(2)
    -x+y+1,-x+1,z
Si(2)
  Si(2)
    y,-x+y,-z
    x-y,x,-z   sym. equiv.
s  Si(0)
  Si(0)
    -y+1,-x+1,-z+1/2    3.0504
    x,x-y+2,-z+1/2      3.1822
  Si(1)
    -y+1,x-y+1,-z+1/2    3.1703
Si(1)
  Si(1)
    x,x-y+1,z      3.0178
    -y+1,-x+1,z    3.1659
  Si(2)
    -x+1,-x+y+1,-z    3.1986
Si(2)
  Si(2)
    y,-x+y,-z    3.1094
sR  Si(0)
  Si(0)
    -y+1,-x+1,-z+1/2    3.0504
    x,x-y+2,-z+1/2      3.1822
  Si(1)
    -y+1,x-y+1,-z+1/2    3.1703
    -y+1,x-y+1,z         3.1703  sym. equiv.
Si(1)
  Si(1)
    x,x-y+1,z      3.0178
    -y+1,-x+1,z    3.1659
  Si(2)
    -x+y+1,-x+1,z    3.1986
Si(2)
  Si(2)
    y,-x+y,-z    3.1094
    x-y,x,-z     3.1094  sym. equiv.
t   Ot   outs’  Si0  pair count:   4       <<  0.2466,  0.9965,  0.2500>>
  Si0:   3.0504             (  0.0035,  0.7534,  0.2500) sym=-y+1,-x+1,-z+1/2
  Si1:   3.1703             (  0.3294,  0.9111,  0.3746) sym=-y+1,x-y+1,-z+1/2
  Si1:   3.1703 sym. equiv. (  0.3294,  0.9111,  0.1254) sym=-y+1,x-y+1,z
  Si0:   3.1822             (  0.2466,  1.2501,  0.2500) sym=x,x-y+2,-z+1/2
Si1  pair count:   3       <<  0.5817,  0.6706,  0.1254>>
  Si1:   3.0178             (  0.5817,  0.9111,  0.1254) sym=x,x-y+1,z
  Si1:   3.1659             (  0.3294,  0.4183,  0.1254) sym=-y+1,-x+1,z
  Si2:   3.1986             (  0.7522,  0.7522,  0.0000) sym=-x+y+1,-x+1,z
Si2  pair count:   2       <<  0.2478,  0.0000,  0.0000>>
  Si2:   3.1094             (  0.0000, -0.2478,  0.0000) sym=y,-x+y,-z
  Si2:   3.1094 sym. equiv. (  0.2478,  0.2478,  0.0000) sym=x-y,x,-z
O    pair count:   0       <<  0.0000,  0.0000,  0.0000>>
  no neighbors
RS   t   show_cartesiansm  site_1 pair count:   4        <<   -3.16,   10.83,    5.20>>
  site_1:   3.0504             (   -4.68,    8.19,    5.20) sym=-y+1,-x+1,-z+1/2
  site_2:   3.1703             (   -1.58,    9.90,    7.79) sym=-y+1,x-y+1,-z+1/2
  site_2:   3.1703 sym. equiv. (   -1.58,    9.90,    2.61) sym=-y+1,x-y+1,z
  site_1:   3.1822             (   -4.75,   13.58,    5.20) sym=x,x-y+2,-z+1/2
site_2 pair count:   3        <<    3.09,    7.29,    2.61>>
  site_2:   3.0178             (    1.58,    9.90,    2.61) sym=x,x-y+1,z
  site_2:   3.1659             (    1.51,    4.55,    2.61) sym=-y+1,-x+1,z
  site_3:   3.1986             (    4.72,    8.17,    0.00) sym=-x+y+1,-x+1,z
site_3 pair count:   2        <<    3.11,    0.00,    0.00>>
  site_3:   3.1094             (    1.55,   -2.69,    0.00) sym=y,-x+y,-z
  site_3:   3.1094 sym. equiv. (    1.55,    2.69,    0.00) sym=x-y,x,-z
t   skip_sym_equivsO  Si0  pair count:   3       <<  0.2466,  0.9965,  0.2500>>
  Si0:   3.0504             (  0.0035,  0.7534,  0.2500) sym=-y+1,-x+1,-z+1/2
  Si1:   3.1703             (  0.3294,  0.9111,  0.3746) sym=-y+1,x-y+1,-z+1/2
  Si0:   3.1822             (  0.2466,  1.2501,  0.2500) sym=x,x-y+2,-z+1/2
Si1  pair count:   4       <<  0.5817,  0.6706,  0.1254>>
  Si1:   3.0178             (  0.5817,  0.9111,  0.1254) sym=x,x-y+1,z
  Si1:   3.1659             (  0.3294,  0.4183,  0.1254) sym=-y+1,-x+1,z
  Si0:   3.1703             (  0.7499,  0.7534,  0.2500) sym=-x+y,-x+1,-z+1/2
  Si2:   3.1986             (  0.7522,  0.7522,  0.0000) sym=-x+y+1,-x+1,z
Si2  pair count:   2       <<  0.2478,  0.0000,  0.0000>>
  Si2:   3.1094             (  0.0000, -0.2478,  0.0000) sym=y,-x+y,-z
  Si1:   3.1986             (  0.3294, -0.0889,  0.1254) sym=-y+1,x-y,z
s¹  Si0  pair count:   3       <<  0.2466,  0.9965,  0.2500>>
  Si0:   3.0504             (  0.0035,  0.7534,  0.2500) sym=-y+1,-x+1,-z+1/2
  Si1:   3.1703             (  0.3294,  0.9111,  0.3746) sym=-y+1,x-y+1,-z+1/2
  Si0:   3.1822             (  0.2466,  1.2501,  0.2500) sym=x,x-y+2,-z+1/2
Si1  pair count:   3       <<  0.5817,  0.6706,  0.1254>>
  Si1:   3.0178             (  0.5817,  0.9111,  0.1254) sym=x,x-y+1,z
  Si1:   3.1659             (  0.3294,  0.4183,  0.1254) sym=-y+1,-x+1,z
  Si2:   3.1986             (  0.7522,  0.7522,  0.0000) sym=-x+y+1,-x+1,z
Si2  pair count:   1       <<  0.2478,  0.0000,  0.0000>>
  Si2:   3.1094             (  0.0000, -0.2478,  0.0000) sym=y,-x+y,-z
s‡   i_seq: 0
  j_seq: 1
    j_syms: [0]
  j_seq: 2
    j_syms: [0]
i_seq: 1
  j_seq: 0
    j_syms: [0]
i_seq: 2
  j_seq: 0
    j_syms: [0]
sE   i_seq: 0
  j_seq: 1
    x,y,z
  j_seq: 2
    x,y,z
i_seq: 1
i_seq: 2
s   -y+1,x,zs   y,-x+1,zs   x,-y+1,-z+1/2s   -x,y,-z+1/2s	   -x,-y+1,zsr  i_seq: 0
  j_seq: 0
    x,y,-z
    -y+1,x,z
  j_seq: 1
    x,y,z
  j_seq: 2
    x,y,z
  j_seq: 3
    x,y,z
    y,-x+1,z
  j_seq: 4
    x,y,z
i_seq: 1
  j_seq: 4
    x,y,z
i_seq: 2
  j_seq: 3
    x,y,z
    y,-x+1,z
  j_seq: 4
    x,y,z
i_seq: 3
  j_seq: 3
    -y+1,x,z
  j_seq: 4
    x,y,z
    -y+1,x,z
i_seq: 4
  j_seq: 4
    x,-y+1,-z+1/2
    -x,y,-z+1/2
    -x,-y+1,z
s£   i_seq: 0
  j_seq: 0
    x,y,-z
    -y+1,x,z
i_seq: 0
i_seq: 0
i_seq: 0
  j_seq: 0
    -y+1,x,z
i_seq: 0
  j_seq: 0
    x,-y+1,-z+1/2
    -x,y,-z+1/2
    -x,-y+1,z
s€   i_seq: 0
  j_seq: 2
    x,y,z
i_seq: 1
  j_seq: 2
    x,y,z
i_seq: 2
  j_seq: 2
    x,-y+1,-z+1/2
    -x,y,-z+1/2
    -x,-y+1,z
s¯   i_seq: 0
  j_seq: 0
    -y+1,x,z
i_seq: 1
  j_seq: 0
    x,y,z
    y,-x+1,z
  j_seq: 1
    x,y,-z
    -y+1,x,z
  j_seq: 2
    x,y,z
i_seq: 2
  j_seq: 0
    x,y,z
    y,-x+1,z
i   i   i   i&   i    i$   i   i   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   i   i   i   i   i   i   i   i   i   i   i   i   i   (   i   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ìQ¸…ëÑ?g¸…ëQ¸Þ?gq=
×£pÍ?(   gš™™™™™©?gš™™™™™©?gš™™™™™©?(   g333333Ã?g333333Ã?g333333Ã?(   g      Ð?g      Ð?g      Ð?(   i   i   i   (   i   i   i   (   g{®GázÄ?g{®GázÄ?g{®GázÄ?(   i   i   i   i   (   g        g        g        (   gš™™™™™¹¿gš™™™™™¹?g        (   gš™™™™™¹?gš™™™™™¹?g        (   gš™™™™™¹?gš™™™™™¹¿g        (   gš™™™™™¹¿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    g      @([   R   t   pair_sym_dictRq   R   R   RK   t   all_opsR"   t   pair_sym_opsR$   Rk   Rm   t   clearRó   t   discard_symmetryt
   setdefaultRa   t   add_pair_sym_table_in_placeR   t   showR	   t   getvaluet   pair_asu_table_tablet   pair_asu_j_sym_groupst   pair_asu_j_sym_groupt   insertRB   R   t   extract_scattering_typesRY   t   pair_asu_tablet   add_covalent_pairsR   t   pair_countsR   t
   std_stringt   add_scattererR   R#   t   size_tR    R   R!   R(   RÔ   t   containst   all_eqR‚   t   cluster_pivot_selectionRs   t   add_all_pairsRà   Rr   R¢   t   add_pairR­   t   extract_pair_sym_tableR   RÕ   RÙ   RÖ   R×   t   add_pair_sym_tableR¤   t0   adp_iso_local_sphere_restraints_energies_functorR   RŽ   RR   t   number_of_restraintst   residual_sumt	   gradientst   u_it   u_jt   r_ijt   finite_difference_gradientsRl   Rª   t   random_permutationt   get_distancesRb   t   deep_copy_scattererst   pair_sym_table_show_distancest   show_distancesRS   R€   Rc   t!   non_crystallographic_asu_mappingst   proxy_selectt	   is_pairedt   angle_pair_asu_tablet   as_nested_lists(4   t   dt   sym_opsR'   R`   t   st   keyt   tt   tdt   ut   sioR    Râ   RY   t   covalent_asu_tablet   expected_pair_countsRè   t   xsRé   RÚ   RÛ   R[   RÂ   R]   t   pR¾   Rá   Rð   Rñ   t   expected_sym_pairsRÜ   RU   t   sym_dictR_   t
   rt_mx_listRa   t   expectedt   eq_flagst   asu_table_2Rô   t   adp_energiesRõ   t   energiest   i_trialR÷   Rø   RÊ   t   structure_plusR  RS   t   bond_asu_tableRú   t   apat(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   exercise_pair_tables·  s|   "LP.   4$	  $$$"$		 	 	$ 

									%'*:!:006	0				%		$	!-	6"-
!		!																		
			$															"	)		+		+	('KK6"c             s�   t  ƒ  j t j d d g ƒ ƒ ‰  xe g  d d g D] }  t j |  ƒ ^ q1 D]; } ‡  f d †  } | d d | ƒ | d d | j ƒ  ƒ qJ Wd  S(   Ni    i   s   -y+1,x-y+1,-z+1/2s   -y+1,x-y+1,zc            s‰   t  j d d ƒ } | |  j | ƒ | |  | j | ƒ | j d ˆ  j ƒ  ƒ } t ƒ  } | j d | ƒ t | j	 ƒ  d ƒ s… t
 ‚ d  S(   NRk   i   Rb   R¾   s3   i_seq: 0
  j_seq: 1
    -y+1,x-y+1,-z+1/2
i_seq: 1
(   R   Ró   R  Rm   t   tidyRb   R   R  R	   R  R   (   R'   t   jR,  t   _Rñ   R1  (   R4  (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   check¡  s    	(   R(   Rª   R   R  R   Ra   R“   (   RE  t   s10RF  (    (   R4  sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   exercise_pair_sym_table_tidyž  s
    !/c          C   sT  d d l  m }  |  j d t j d d  d
 d ƒ d t j |  j d d d d! ƒ |  j d d d d" ƒ f ƒ ƒ } | j d d ƒ } t j	 | ƒ } t j
 | d d d t ƒ} | j ƒ  } | j | ƒ | j ƒ  } g  } xd t | ƒ D]V \ } }	 xG |	 j ƒ  D]9 \ }
 } x* | D]" } | j | |
 t | ƒ f ƒ qWqú Wqá W| d# g k sPt ‚ d S($   s£  
  The cctbx machinery used to return a bond between C1
  and a symmetry equivalent C3' of C3 but it turns out
  that C1 is on a special position and its site is invariant
  under that operator moving C3 to C3' (the operator is -x+1,y,-z+3/2)
  and there is therefore a bond between C1 and C3. That it used not to be
  reported was deemed as a bug which got fixed, this file being the
  regression test for that fix.
  iÿÿÿÿ(   R   R   R   gö—Ý“‡1@gÈ=›Uß @gHPüs$@iZ   gÃõ(\�²Y@R   s   hall: -C 2ycR   R   R/   R   g      à?g¿eN—ÅÄë?g      è?R1   gþ++MJAÛ?g1%’èeï?g£uT5AÔå?RM   i   RZ   g      @R[   i    i   s   x,y,zN(   gö—Ý“‡1@gÈ=›Uß @gHPüs$@iZ   gÃõ(\�²Y@iZ   (   g      à?g¿eN—ÅÄë?g      è?(   gþ++MJAÛ?g1%’èeï?g£uT5AÔå?(   i    i   s   x,y,z(   R   R   R    R   R   R   R!   R#   RY   R  R¢   Rs   RÙ   R  R  R"   RÕ   Rm   R$   R   (   R   R4  RY   R  t   genR]   Ró   t   resultR'   t
   neighboursRD  t   opst   op(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt.   exercise_fix_for_missed_interaction_inside_asu±  s6    
						(c          C   sf  d d l  m }  t ƒ  } | j d d ƒ } t j d | ƒ } t j | d d ƒ} x | D] } | j | ƒ qY W| j d t	 ƒ } d d d	 g d d d
 g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g	 } t
 ƒ  } xy t | ƒ D]k \ }	 }
 x\ |
 j ƒ  D]N \ } } x? | D]7 } | | j ƒ  } |	 | t | ƒ g | k s6t ‚ q6Wq#Wq
W|  j d t j d d, d d ƒ d t j |  j d d d  d- ƒ |  j d d$ d  d. ƒ f ƒ ƒ } | j d d ƒ } t j | ƒ } t j | d d d( t	 ƒ} | j ƒ  } | j | ƒ | j d t	 ƒ } g  } xd t | ƒ D]V \ } } xG | j ƒ  D]9 \ } } x* | D]" } | j | | t | ƒ f ƒ q|WqiWqPW| d/ d0 g k sÂt ‚ | j d+ t d t	 ƒ } g  } xd t | ƒ D]V \ } } xG | j ƒ  D]9 \ } } x* | D]" } | j | | t | ƒ f ƒ qWqWqíW| d1 d2 d3 g k sbt ‚ d  S(4   Niÿÿÿÿ(   R   RM   g      @RY   RZ   t    all_interactions_from_inside_asui    s   -y+1,-x+1,-z+1/2s   x,x-y+2,-z+1/2i   s   -y+1,x-y+1,-z+1/2s   -y+1,x-y+1,zs	   x,x-y+1,zs   -y+1,-x+1,zi   s   -x+1,-x+y+1,-zs	   y,-x+y,-zs   x-y,x,-zR   R   gö—Ý“‡1@gÈ=›Uß @gHPüs$@iZ   gÃõ(\�²Y@R   s   hall: -C 2ycR   R   R/   R   g      à?g¿eN—ÅÄë?g      è?R1   gþ++MJAÛ?g1%’èeï?g£uT5AÔå?R[   s   -x+1,y,-z+3/2s   x,y,zRð   (   gö—Ý“‡1@gÈ=›Uß @gHPüs$@iZ   gÃõ(\�²Y@iZ   (   g      à?g¿eN—ÅÄë?g      è?(   gþ++MJAÛ?g1%’èeï?g£uT5AÔå?(   i    i   s   -x+1,y,-z+3/2(   i    i   s   x,y,z(   i    i   s   -x+1,y,-z+3/2(   i    i   s   x,y,z(   i   i    s   x,y,z(   R   R   R(   RY   R   R  R¢   R  R  Rs   R   R"   RÕ   RÙ   R$   R   R    R   R   R!   R#   Rm   Rr   (   R   R    RY   RÚ   RÂ   R]   Rñ   R6  RÜ   RU   R7  R_   R8  Ra   R9  R4  R  RI  Ró   RJ  R'   RK  RD  RL  RM  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt"   exercise_all_bonds_from_inside_asuÚ  s‚    					-								(		(R  c           B   s;   e  Z d  „  Z d d d e e d „ Z d d d d „ Z RS(   c         C   s   t  |  t ƒ  ƒ d  S(   N(   R   t   locals(   t   selfRó   RŽ   RR   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   __init__)  s    g      @gffffffæ?g      à?c         C   sy   t  j | j ƒ  t ƒ } t j d |  j d |  j d |  j d | d | d | d | d | d	 | d
 | d d d | d | ƒ S(   NRó   RŽ   RR   Rô   t	   selectiont	   use_u_isot
   grad_u_isot   sphere_radiusR÷   Rø   t	   min_u_sumg�íµ ÷Æ°>Rõ   Rö   (	   R   R    Rk   Rs   R   t(   adp_iso_local_sphere_restraints_energiesRó   RŽ   RR   (   RR  Rô   RW  R÷   Rø   Rõ   Rö   t   sel(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   __call__,  s    				g�íµ ÷Æ°>c      	   C   s³   t  j ƒ  } x  t | j ƒ  ƒ D]Œ } g  } x\ | | g D]M } | j ƒ  }	 |	 | c | 7<|  d |	 d | d | ƒ }
 | j |
 j ƒ q9 W| j | d | d d | ƒ q W| S(   NRô   R÷   Rø   i    i   i   (   R   R¤   Rl   Rk   t	   deep_copyRm   R  (   RR  Rô   R÷   Rø   R¸   t   gst   i_ut   rst
   signed_epst
   u_isos_epsR=  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyR  C  s    	%(   t   __name__t
   __module__RS  Rr   R[  R  (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyR  '  s   	c          C   s±  t  ƒ  }  |  j d d ƒ } t j d | ƒ } | j d d ƒ t j j d | d d ƒ } g  | D] } t | ƒ ^ q_ d d	 d
 d d d g d d	 d
 d d d g d d	 d
 d d d g g k sÂ t ‚ |  j d d ƒ } t j d | ƒ } | j	 d d d g ƒ | j	 d d g ƒ | j	 d d g ƒ d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g d d d g g
 } t
 | | ƒ d  S(   NRM   g      @RY   RZ   R  t	   max_shelli   i   i   i
   i   i"   i6   i5   i   t   i_seqsi    i   iN   iy   iH   iC   i   iO   ik   ix   (   R(   RY   R   R  R  t   coordination_sequencest   simpleR‚   R   R  Rà   (   R    RY   RÚ   t
   term_tablet   termsRÛ   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt&   exercise_coordination_sequences_simpleV  s$    		N06c          C   sí  t  ƒ  }  |  j d d ƒ } t j d | ƒ } | j d d ƒ d d d g d d d g d d	 d g d d	 d
 g d	 d d g d	 d	 d g d	 d	 d g d	 d d g d d	 d g d d	 d g d d d g d d d g g } t | | ƒ t j j d | d d ƒ } t | d | ƒ t ƒ  } |  j	 d | d	 d | ƒ | J| d	 j
 d t ƒ } t j d | ƒ } | j d | ƒ |  j	 d | d | ƒ | J| j ƒ  j d d ƒ } t | ƒ j ƒ  d k rét j j | ƒ d Gt | ƒ j ƒ  GHt d ƒ ‚ n  d  S(   NRM   i   RY   RZ   g      @i    i   i   i   i@   i   i   i   iS   R  Rd  Rú   Rð   Rñ   s   -0.0000s    0.0000t    f5c02727352d26dc36762de0834199fds   New hexdigest:s#   Unexpected show_distances() output.(   R(   RY   R   R  R  Rà   Rf  t   shell_asu_tablesR   R$  R  Rr   R  R  t   replaceR
   t	   hexdigestRÖ   t   stderrt   writeR   (   R    RY   RÚ   RÛ   Rl  R,  t   s1_sym_tablet   s1_asu_table(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt0   exercise_coordination_sequences_shell_asu_tablesk  s4    	006			c       	   C   s  t  j j d t j d d d d d d g ƒ d t j d	 ƒ ƒ }  |  j ƒ  j t j d d d d d d g ƒ ƒ su t ‚ |  j ƒ  j	 ƒ  d k s“ t ‚ |  j
 d
 t j d ƒ ƒ } | j ƒ  j t j d d d d d d g ƒ ƒ sä t ‚ t t j d | j ƒ  ƒ ƒ d k st ‚ d  S(   NR   i   i   i   iP   iZ   id   RK   s   P 2Rw   s   z,x,yt   groups   P 2 1 1(   R   t   extR   R   R   R   RK   Ro   R   Ry   Rv   Rw   R$   t   space_group_info(   R   t   symmetry_cb(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   exercise_ext_symmetryˆ  s    !*	*c       	   C   s…	  t  j d d( d d ƒ j ƒ  }  t j d) d* g ƒ } |  j d d ƒ } t | j d ƒ s] t ‚ | j	 sl t ‚ t | j
 ƒ  j ƒ  d ƒ s� t ‚ | j
 ƒ  j ƒ  j ƒ  d k s± t ‚ | j ƒ  j ƒ  j ƒ  d k sÕ t ‚ | j d | d ƒ | j
 ƒ  j ƒ  j ƒ  d k st ‚ t | j
 ƒ  j d d ƒ ƒ d k s7t ‚ | j ƒ  j ƒ  j ƒ  d k s[t ‚ t ƒ  } | j ƒ  j d | ƒ t | j ƒ  d ƒ s–t ‚ | j d | d d |  j d | d ƒ ƒ | j
 ƒ  } | j ƒ  j ƒ  d k sêt ‚ | j ƒ  j ƒ  j ƒ  d k st ‚ t | j
 ƒ  j d d ƒ ƒ d k s8t ‚ | j ƒ  j ƒ  j ƒ  d k s\t ‚ t ƒ  } | j ƒ  j d | ƒ d } t | j ƒ  | ƒ s�t ‚ | j ƒ  j ƒ  d+ d, g k sÁt ‚ | j
 ƒ  j ƒ  } |  j ƒ  j d | ƒ } xé t d ƒ D]Û } |  j d d ƒ }	 | d k r/|	 j d | ƒ ni | d k rT|	 j d | d | ƒ nD | d k rs|	 j  d | ƒ n% | d k r˜|	 j  d | d | ƒ n  t ƒ  } |	 j ƒ  j d | ƒ t | j ƒ  | ƒ søt ‚ qøW|  j! d  d ƒ }
 t |
 j" d ƒ st ‚ t |
 j# d ƒ st ‚ |
 j$ s)t ‚ t |
 j d ƒ sAt ‚ |
 j	 sPt ‚ |
 j% d k set ‚ t |
 j
 ƒ  j ƒ  d ƒ s†t ‚ |
 j
 ƒ  j ƒ  j ƒ  d k sªt ‚ |
 j d | d ƒ sÆt ‚ |
 j
 ƒ  j ƒ  j ƒ  d k sêt ‚ |
 j d | d d |  j d | d ƒ ƒ st ‚ |
 j
 ƒ  } | j ƒ  j ƒ  d k sGt ‚ | j ƒ  j ƒ  j ƒ  d k skt ‚ d- } xº t d ƒ D]¬ } |
 j d | ƒ sœt ‚ | j ƒ  j ƒ  d k sºt ‚ | j ƒ  j ƒ  j ƒ  d k sÞt ‚ |
 j& ƒ  | j ƒ  j ƒ  d k st ‚ | j ƒ  j ƒ  j ƒ  d k s~t ‚ q~Wy |
 j& ƒ  Wn+ t' k
 ri} t | ƒ d# k spt ‚ n Xt( ‚ |
 j) d | ƒ |
 j d | ƒ s™t ‚ d. } |
 j d | ƒ s·t ‚ |
 j& ƒ  |
 j) d | d |  j d | ƒ ƒ |
 j d | ƒ süt ‚ x‚d$ | f d% | f g D]h\ } } xe d d g D]W } |  j! d  d ƒ }
 t* |
 | ƒ d | d | d& | ƒ } t+ | ƒ d g k s.t ‚ q.W|  j! d  d ƒ }
 t* |
 | ƒ d | d | ƒ } t+ | ƒ d d g k s×t ‚ |  j! d  d d' t, ƒ }
 |
 j$ sþt ‚ t* |
 | ƒ d | d | ƒ } t+ | ƒ d g k s7t ‚ |  j! d  d ƒ }
 t* |
 | ƒ d | d | d& d ƒ } t+ | ƒ d g k sˆt ‚ x_ d d g D]Q } |  j! d  d ƒ }
 t* |
 | ƒ d | d& | ƒ } t+ | ƒ d g k s•t ‚ q•W|  j! d  d ƒ }
 t* |
 | ƒ d | ƒ } t+ | ƒ d d g k s2	t ‚ |  j! d  d ƒ }
 t* |
 | ƒ d | d& d ƒ } t+ | ƒ d g k st ‚ qWd  S(/   NR   i
   iZ   R   s   P 1 1 2g{®Gáz„?g\�Âõ(\ß?g        gš™™™™™¹?g333333ã?RZ   i   g      à?i    RO   i   RU   s   0,1/2,zR¾   s	   i_seq: 0
RQ   R   s   x,y,zsK   i_seq: 0
  j_seq: 1
    j_syms: [0, 2]
i_seq: 1
  j_seq: 0
    j_syms: [0]
iï   i   RR   i   RW   Rb   i   t   min_distancegffffffæ?g333333Ó?sÆ   site_cluster_analysis::discard_last() failure. Potential problems are:
  - discard_last() called twice
  - insert_fixed_site_frac() called previously
  - the previous process_*() call returned falseR›   Rœ   Rî   Rí   (   i
   i
   i
   iZ   iZ   iZ   (   g{®Gáz„?g\�Âõ(\ß?g        (   gš™™™™™¹?g333333ã?g        (   i    iï   (   i   i   (   gffffffæ?g333333Ó?gš™™™™™¹?(   g333333Ó?gš™™™™™¹?g333333Ó?(-   R   R   t   special_position_settingsR   R€   t   incremental_pairsR   RP   R   t   assert_min_distance_sym_equivRY   RM   R}   Rk   R  RÔ   t   process_site_fracR$   R´   R   R  R	   R  R   Rb   RŒ   t   cubicle_size_countsRÕ   R   R…   Rl   R›   Rœ   t   site_cluster_analysist   min_cross_distancet   min_self_distanceRí   t   estimated_reduction_factort   discard_lastt   RuntimeErrorR   t   insert_fixed_site_fract   getattrR‚   Rs   (   t   spsRR   R{  Rú   R¼   t   expected_outRb   RS   t   i_passt   ipvR  R   R>  t   et   methodt   sites_arrayRî   RT  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt4   exercise_incremental_pairs_and_site_cluster_analysis–  s   	!$$$*$		
$*$	$	
	
	 $$	
 $$
( 	
										c             s*  t  j d d g ƒ ‰  ‡  f d †  }  |  ƒ  t j ƒ  } d r¥ | d k  r¥ ˆ  j d ƒ y |  ƒ  Wn. t k
 r‘ } t | ƒ j d ƒ s˜ t ‚ n Xt	 ‚ ˆ  j
 ƒ  n  t j d d ƒ ˆ  j d ƒ y |  ƒ  Wn/ t k
 rþ } t t | ƒ d ƒ st ‚ n Xt	 ‚ t j d | ƒ |  ƒ  ˆ  j
 ƒ  d  S(   Ni   i   i   i   c       	      s;   t  j j d ˆ  ƒ }  t  j d |  d d d t d d ƒ d  S(   NRS   RY   RZ   i   R[   R\   i    (   R   Rc   R%  R¢   Rr   (   RY   (   RS   (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   fast_pair_generator_init3  s    		i i*,
 i?B g    €„.Ag    €„>Ag    `ãFAs   Excessive number of cubicles:t   number_of_bytesi   i	   i
   i   i   sÒ   Estimated memory allocation for cubicles exceeds max_number_of_bytes:
  This may be due to unreasonable parameters:
    cubicle_edge=3
    space_span=(9,18,27)
    n_cubicles=(3,6,9)
    max_number_of_bytes=162(   i   i   i   (   i   i   i   l   r;æzÎ l   º Ou«(   g    €„.Ag    €„>Ag    `ãFAi   i¢   (   i
   i   i   (   R   R€   R   t"   cubicles_max_memory_allocation_getRm   R„  R$   t
   startswithR   R   t   pop_backt"   cubicles_max_memory_allocation_setR	   (   R�  t   mmR‹  (    (   RS   sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   exercise_cubicles_max_memory1  s.      c           C   sV   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  t
 ƒ  d GHd  S(   Nt   OK(   R   RÒ   RB  RH  RN  RP  Rj  Rs  Rx  RŽ  R–  (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   runU  s    t   __main__(,   t
   __future__R    R   R   t$   cctbx.crystal.coordination_sequencesR   R   t   cctbx.crystal.direct_space_asuR   t   cctbx.array_familyR   t   scitbxR   t   libtbx.test_utilsR   R   R	   t   libtbx.utilsR
   t   libtbxR   t	   itertoolsR   t	   cStringIOR   RÖ   R   R(   RB   RÒ   Rà   RB  RH  RN  RP  t   objectR  Rj  Rs  Rx  RŽ  R–  R˜  Rb  (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/crystal/tst_ext.pyt   <module>   sD   		"	ÿ Y		ÿ ÿ é		)	M/				›	$	