ó
L™xTc           @   sÛ   d  d l  m Z d  d l m Z d  d l m Z d  d l Z d e f d „  ƒ  YZ d e	 f d „  ƒ  YZ
 d	 e	 f d
 „  ƒ  YZ d „  Z d „  Z d e	 f d „  ƒ  YZ d „  Z d „  Z d „  Z e d k r× e ƒ  n  d S(   iÿÿÿÿ(   t   division(   t   sgtbx(   t   flexNt   partition_tc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyR      s    t   left_decompositionc           B   s5   e  Z d  „  Z d „  Z d „  Z d d d d „ Z RS(   c         C   sÏ  g  t  | j ƒ  ƒ D] } | | d d ƒ j ƒ  ^ q } |  j | | ƒ r¿t t j d | ƒ ƒ |  _ t t j d | ƒ ƒ |  _ g  | D] } | ^ q† } g  | D] } | ^ qŸ } t	 | ƒ t	 | ƒ d k sÓ t
 ‚ | d j ƒ  sé t
 ‚ d g t	 | ƒ |  _ g  |  _ xst | ƒ D]e\ } } |  j | d k r:qn  t	 |  j ƒ |  j | <t | g ƒ } xá | d D]Õ } | j | ƒ }	 x½ t  | d t	 | ƒ ƒ D]– }
 |  j |
 d k r¸q™n  | |
 } | j ƒ  j |	 ƒ j ƒ  } | j ƒ  g  | D] } | j ƒ  ^ qík r™t	 |  j ƒ |  j |
 <| j | ƒ Pq™q™Wt d ƒ ‚ qjWt	 | ƒ t	 | ƒ k rjt d ƒ ‚ n  |  j j | ƒ qWt	 |  j ƒ t	 | ƒ t	 | ƒ k r²t d ƒ ‚ n  |  j ƒ  n t d ƒ ‚ d  S(   Ni    t   groupiÿÿÿÿi   s   h is not a subgroup of g(   t   xranget   n_ltrt	   mod_shortt   is_subgroupt   strR   t   space_group_infot   h_namet   g_namet   lent   AssertionErrort
   is_unit_mxt   partition_indicest
   partitionst	   enumerateR   t   multiplyt   inverset   as_xyzt   appendt   RuntimeErrort   sort_cosets(   t   selft   gt   ht   it   g_lattice_translationst   st   git	   partitiont   hjt   gihjt   kt   gkt   tmp_gt   ltr(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   __init__	   sD    7"	   
+%c         C   s    t  t j d | ƒ ƒ } t j | ƒ j ƒ  } g  | D] } | ^ q4 } x | D] } | j | ƒ qM Wt  t j d | ƒ ƒ t  t j d | ƒ ƒ k r˜ t St Sd  S(   NR   (   R   R   R   R   t
   expand_smxt   Truet   False(   R   R   R   t	   tst_groupR!   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyR   /   s    0c         C   s­   g  } x— |  j  D]Œ } g  } x- | D]% } | j | j ƒ  j ƒ  j ƒ  ƒ q# Wt j t j | ƒ ƒ } t ƒ  } x | D] } | j | | ƒ qt W| j | ƒ q W| |  _  d  S(   N(	   R   R   t   rt   infot   typeR   t   sort_permutationt   intR   (   R   t   new_partitionst   ppt   orderst   opt   tmpt   ii(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyR   :   s    #	t   cosets_formc         C   sÓ  d d l  m } | d  k r( t j } n  d } |  j } |  j } | d  k	 r‘ t t j	 |  j ƒ j
 | ƒ ƒ } t t j	 |  j ƒ j
 | ƒ ƒ } n  | d IJ| d | IJ| d | IJx|  j D]
} d }	 t j	 |  j ƒ j ƒ  }
 |
 j | d ƒ | d  k rt j	 d |
 ƒ }
 n t j	 d |
 ƒ j
 | ƒ }
 | d k rQd	 | |
 f }	 n  | J| d
 | |	 f IJ| J| d 7} xQ | D]I } d  } | d  k rŸ| } n | j | ƒ } | | | ƒ j | ƒ IJq~WqÁ Wd  S(   Niÿÿÿÿ(   t   literal_descriptioni    s   Left cosets of :s     subgroup  H: %ss     and group G: %ss      (all operators from H)R   s      (H+coset[%i] = %s)s     Coset number : %5s%si   (   t   cctbx.sgtbx.literal_descriptionR;   t   Nonet   syst   stdoutR   R   R   R   R   t   change_basisR   R   R+   t   applyt   select(   R   t   outt   cb_opt   formatR;   t   countt   group_gt   group_ht   partt	   extra_txtt	   tmp_groupt   itemt   tmp_item(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   showG   s>    		!$

	N(   R   R   R*   R   R   R=   RN   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyR      s   	&		t$   left_decomposition_point_groups_onlyc           B   s#   e  Z d  „  Z d e e d „ Z RS(   c         C   s  d „  } | d | ƒ } | d | ƒ } t  | ƒ t  | ƒ d k sI t ‚ | d j ƒ  s_ t ‚ d g t  | ƒ |  _ g  |  _ xKt | ƒ D]=\ } } |  j | d k r° q‹ n  t  |  j ƒ |  j | <| g } x¿ | d D]³ } | j | ƒ } x› t | d t  | ƒ ƒ D]t }	 |  j |	 d k r(q	n  | |	 }
 |
 j ƒ  j	 ƒ  | j ƒ  j	 ƒ  k r	t  |  j ƒ |  j |	 <| j
 |
 ƒ Pq	q	Wt d ƒ ‚ qÚ Wt  | ƒ t  | ƒ k r¸t d ƒ ‚ n  |  j j
 | ƒ q‹ Wt  |  j ƒ t  | ƒ t  | ƒ k r t d ƒ ‚ n  d  S(   Nc         S   sX   |  j  ƒ  d k s t ‚ g  } x3 |  D]+ } | j ƒ  j ƒ  sC t ‚ | j | ƒ q% W| S(   Ni   (   R	   R   t   tt   is_zeroR   (   R   t   resultR!   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   convert_to_plain_listr   s    R   i    iÿÿÿÿi   s   h is not a subgroup of g(   R   R   R   R   R   R   R   R   R/   t   numR   R   (   R   R   R   RS   R   R"   R#   R$   R%   R&   R'   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyR*   q   s8    	"	 	  
$%c   
      C   s  g  } xú |  j  D]ï } d \ } } x¾ | D]¶ } | rW | j ƒ  rW | d  k sS t ‚ Pn  | r{ | j ƒ  j ƒ  d k  r{ q) n  | d  k	 r™ | j | ƒ } n  | j ƒ  j ƒ  }	 | d  k sÏ t j	 | |	 ƒ d k r) | |	 } } q) q) W| d  k	 r | j
 | ƒ q q W| S(   Ni    (   NN(   R   R=   R   R   R/   t   determinantRA   t   as_hklR   t   compare_cb_op_as_hklR   (
   R   RD   t   omit_first_partitiont   omit_negative_determinantsRR   R#   t   best_choicet   best_choice_as_hklt   choicet   choice_as_hkl(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   best_partition_representatives”   s&    N(   R   R   R*   R=   R-   R^   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyRO   o   s   	$c   
      C   sá   g  |  D] } | ^ q }  g  | D] } | ^ q  } g  | D] } | ^ q9 } g  } t  ƒ  } x€ |  D]x } t | ƒ | k r qa n  | j | ƒ xJ | D]B } x9 | D]1 } | j | ƒ j | ƒ }	 | j t |	 ƒ ƒ q  Wq“ Wqa W| S(   s3   g is the supergroup
     h1 and h2 are subgroups
  (   t   setR   R   R   t   add(
   R   t   h1t   h2R!   RR   t   donet   at   hiR$   t   b(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   double_unique¬   s    	 c   
      C   sÙ   d  } d  } | j | ƒ } | j | ƒ } xƒ |  D]{ } t j | ƒ } | j | ƒ } | j ƒ  | | | } | d  k s— t j | | j ƒ  ƒ d k r1 | } | j ƒ  } q1 q1 W| d  k	 sÂ t ‚ t j |  d ƒ }	 | S(   Ni    (   R=   t   new_denominatorsR   t   change_of_basis_opR   RW   RV   R   (
   t   cosett   sym_transform_1_to_2t   to_niggli_1t   to_niggli_2RZ   R[   t   coset_elementt   tmp_coset_elementt   tmp_opt   tmptmp(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   construct_nice_cb_opÂ   s     t   double_cosetsc           B   sD   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 RS(   c         C   s  g  | D] } | ^ q } g  | D] } | ^ q  } g  | D] } | ^ q9 } g  |  _  xŸ | D]— } |  j | ƒ s[ g  } | j | ƒ xY | D]Q } xH | D]@ }	 | j | ƒ j |	 ƒ }
 |  j |
 | ƒ s— | j |
 ƒ q— q— WqŠ W|  j  j | ƒ q[ q[ W| r	|  j ƒ  n  d S(   s7   g is the supergroup
       h1 and h2 are subgroups
    N(   Rs   t   is_in_list_of_cosetsR   R   t   is_in_cosett   clear_up_cosets(   R   R   Ra   Rb   t   enforce_det_ge_1R!   Rd   t   tmp_double_cosetRe   R$   Rf   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyR*   Ý   s     	c         C   sS   g  } x= |  j  D]2 } | d j ƒ  j ƒ  d k r | j | ƒ q q W| |  _  d  S(   Ni    (   Rs   R/   RU   R   (   R   t   temp_cosetst   cs(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyRv   ý   s
    c         C   sI   t  } x< | D]4 } t | j ƒ  ƒ t | j ƒ  ƒ k r t } Pq q W| S(   N(   R-   R   t   mod_positiveR,   (   R   Rd   t
   coset_listt   found_itRe   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyRu     s    $c         C   s9   t  } x, |  j D]! } |  j | | ƒ r t } q q W| S(   N(   R-   Rs   Ru   R,   (   R   Rd   R}   Rz   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyRt     s
    c         C   s‘   t  |  j ƒ } x{ t | ƒ D]m } |  j | } xW t | ƒ D]I } | | k r< |  j | } x' | D] } |  j | | ƒ rb t Sqb Wq< q< Wq Wt S(   N(   R   Rs   R   Ru   R,   R-   (   R   t   n_cosetst   icst   tmp_cst   jcst   tmp_cs_2Re   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   have_duplicates  s     c         C   sg   | d  k r t j } n  | d IJx> |  j D]3 } x& | D] } | d t | ƒ d Iq9 W| Jq, Wd  S(   Ns"   The double cosets are listed belowt   (s   )    (   R=   R>   R?   Rs   R   (   R   RC   Rz   Rd   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyRN     s    
N(
   R   R   R,   R*   Rv   Ru   Rt   Rƒ   R=   RN   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyRs   Ü   s    				c          C   s¥   d d l  m }  xŽ t d d ƒ D]} } t j | ƒ } |  j | ƒ j ƒ  } | j ƒ  } xD | D]< } x3 | D]+ } t | | | ƒ } | j ƒ  sj t	 ‚ qj Wq] Wq  Wd  S(   Niÿÿÿÿ(   t	   subgroupsi   i,   (
   t   cctbx.sgtbxR…   R   R   R   t   groups_parent_settingR   Rs   Rƒ   R   (   R…   t   space_group_numbert   parent_group_infot   subgrsR   Ra   Rb   t   tmp_new(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   test_double_coset_decomposition(  s    c             s/  d d l  m ‰  ‡  f d †  }  x	|  ƒ  D]þ } t d | d j ƒ  d | d j ƒ  ƒ } x1 | d j ƒ  D] } | | j d k si t ‚ qi Wx˜ t d	 t | j ƒ ƒ D]~ } | j | } | d } x^ | d j ƒ  D]L } | j | ƒ j	 ƒ  j
 ƒ  g  | D] } | j	 ƒ  j
 ƒ  ^ qø k sÓ t ‚ qÓ Wq¥ Wq) Wd  S(
   Niÿÿÿÿ(   t   crystalc           3   s’  i ˆ  j  d t j d ƒ d d§ ƒ d 6ˆ  j  d t j d	 ƒ d d¨ ƒ d 6Vi ˆ  j  d t j d ƒ d d© ƒ d 6ˆ  j  d t j d ƒ d dª ƒ d 6Vi ˆ  j  d t j d ƒ d d« ƒ d 6ˆ  j  d t j d ƒ d d¬ ƒ d 6Vi ˆ  j  d t j d ƒ d d­ ƒ d 6ˆ  j  d t j d ƒ d d® ƒ d 6Vi ˆ  j  d t j d ƒ d d¯ ƒ d 6ˆ  j  d t j d ƒ d d° ƒ d 6Vi ˆ  j  d t j d ƒ d d± ƒ d 6ˆ  j  d t j d  ƒ d d² ƒ d 6Vi ˆ  j  d t j d! ƒ d d³ ƒ d 6ˆ  j  d t j d$ ƒ d d´ ƒ d 6Vi ˆ  j  d t j d( ƒ d dµ ƒ d 6ˆ  j  d t j d+ ƒ d d¶ ƒ d 6Vi ˆ  j  d t j d- ƒ d d· ƒ d 6ˆ  j  d t j d/ ƒ d d¸ ƒ d 6Vi ˆ  j  d t j d0 ƒ d d¹ ƒ d 6ˆ  j  d t j d3 ƒ d dº ƒ d 6Vi ˆ  j  d t j d8 ƒ d d» ƒ d 6ˆ  j  d t j d; ƒ d d¼ ƒ d 6Vi ˆ  j  d t j d< ƒ d d½ ƒ d 6ˆ  j  d t j d> ƒ d d¾ ƒ d 6Vi ˆ  j  d t j d ƒ d d¿ ƒ d 6ˆ  j  d t j dA ƒ d dÀ ƒ d 6Vi ˆ  j  d t j dD ƒ d dÁ ƒ d 6ˆ  j  d t j dG ƒ d dÂ ƒ d 6Vi ˆ  j  d t j dL ƒ d dÃ ƒ d 6ˆ  j  d t j d ƒ d dÄ ƒ d 6Vi ˆ  j  d t j dN ƒ d dÅ ƒ d 6ˆ  j  d t j dQ ƒ d dÆ ƒ d 6Vi ˆ  j  d t j d ƒ d dÇ ƒ d 6ˆ  j  d t j dW ƒ d dÈ ƒ d 6Vi ˆ  j  d t j d[ ƒ d dÉ ƒ d 6ˆ  j  d t j d_ ƒ d dÊ ƒ d 6Vi ˆ  j  d t j d ƒ d dË ƒ d 6ˆ  j  d t j de ƒ d dÌ ƒ d 6Vi ˆ  j  d t j dg ƒ d dÍ ƒ d 6ˆ  j  d t j dj ƒ d dÎ ƒ d 6Vi ˆ  j  d t j dk ƒ d dÏ ƒ d 6ˆ  j  d t j dG ƒ d dÐ ƒ d 6Vi ˆ  j  d t j dr ƒ d dÑ ƒ d 6ˆ  j  d t j dv ƒ d dÒ ƒ d 6Vi ˆ  j  d t j dx ƒ d dÓ ƒ d 6ˆ  j  d t j d_ ƒ d dÔ ƒ d 6Vi ˆ  j  d t j d€ ƒ d dÕ ƒ d 6ˆ  j  d t j dƒ ƒ d dÖ ƒ d 6Vi ˆ  j  d t j d„ ƒ d d× ƒ d 6ˆ  j  d t j d‡ ƒ d dØ ƒ d 6Vi ˆ  j  d t j d‹ ƒ d dÙ ƒ d 6ˆ  j  d t j d� ƒ d dÚ ƒ d 6Vi ˆ  j  d t j dŽ ƒ d dÛ ƒ d 6ˆ  j  d t j d‘ ƒ d dÜ ƒ d 6Vi ˆ  j  d t j d” ƒ d dÝ ƒ d 6ˆ  j  d t j d‡ ƒ d dÞ ƒ d 6Vi ˆ  j  d t j dš ƒ d dß ƒ d 6ˆ  j  d t j d� ƒ d dà ƒ d 6Vi ˆ  j  d t j d¢ ƒ d dá ƒ d 6ˆ  j  d t j d¤ ƒ d dâ ƒ d 6Vd  S(ã   NR   s   C 2 2 21t	   unit_cellg'1¬‚R@g+‡ÙÎ/X@g=
×£pE[@iZ   R   s   C 2 1 1g…ëQ¸~V@t   subgroups   F 2 3g²�ï§Æ_@s'   R 3 :H (-1/2*x+z,1/2*x-1/2*y+z,1/2*y+z)gŒJê€V@s   P 6 2 2g…ëQ¸­W@gTã¥›Ä°L@ix   s   P 6s   I 2 3gL7‰A`9T@s#   R 3 :H (y+1/2*z,-x+1/2*z,x-y+1/2*z)gd;ßO�V@s   P 61 2 2gÍÌÌÌÌì\@gfffffæn@s   P 31 2 1 (a,b,c-1/6)s	   P 41 21 2g/Ý$1P@g#Ûù~jêp@s   P 41 (a,b+1/2,c)s   I 4 2 2g5^ºI_@g×£p=
_]@s   I 2 1 1g)\�Âõ_@gB`åÐ"_@gÁ9#J{V@s	   P 43 21 2g;ßO�—Y@gÝ$�•ar@s   C 2 2 21 (x-y,x+y,z)g ‘~û:€V@s   P 43 3 2gÍÌÌÌÌLe@s   P 21 3s   R 3 2 :Hg‘í|?5ºk@g°rh‘íÌK@s   C 1 2 1 (3/2*a-1/2*b+c,b,c)g…ëQ¸ºk@gw¾Ÿ/¹k@g¬ZdV@gd;ßO�ÿ]@s   P 64 2 2g\�Âõ(Ôa@gfffff[@s   P 31s   I 41 3 2g9´Èv¾Ç`@s   I 21 3gd;ßO�³U@gyé&1ìR@s   P 21 21 21 (a+1/4,b,c-3/8)g5^ºI²U@g“VµU@s   P 31 2 1gd;ßO�wX@gÑ"Ûù~j@s   C 1 2 1 (x+y,-x+y,z)g´Èv¾ŸvX@g–!ŽuqV@gjÞqŠŽ€V@g /Ý$þ]@s   I 4 3 2gìQ¸…s^@s   P 43 2 2g‘í|?5ÞP@g…ëQ¸Íe@s   P 2 2 21 (a,b,c-1/4)g-²�ï§ÞP@gö(\�ÂÝP@g9´Èv¾ÏG@g´Èv¾Ÿ
^@gmçû©ñÒL@s   P 1 (a+b,a-b,-c)gž^)Ë€V@g×£p=
wV@g¶„|Ð³}V@s   I 2 2 2gœÄ °rèL@gu“VæR@gî|?5^~c@s   P 1 (b+c,a+c,a+b)gÉå?¤ß~V@gç§èH‚V@gáz®G�V@g®¶bÙiX@g%�•Cëj@s   C 1 2 1 (x-y,x+y,z-1/4)gÅ °rh�V@s   P 62 2 2gºI+'M@gNbX9<a@s   P 32 1 2 (a,b,c-1/6)s   P 3 2 1gœ3¢´L@g;ßO�—Öc@gøSã¥›L@g½ãÉ}V@gCëâ6‚V@gÃõ(\�ú]@s   F 2 2 2gsh‘í|V@gV-’V@g2w-!¬V@s   C 1 2 1 (a,b,a+2*c)g¼V@s   I 41gQÚ|ašM@g=
×£p½M@gœ¢#¹ü—M@g¢´7øÂœM@gL¦
F%�V@gw¾Ÿ/}V@g÷uàœ}V@s   P 3 1 2g33333sL@gÃõ(\�bO@s   P 3s   P 43g‘í|?5K@gTã¥›ÄèQ@s   P 1 1 21gìQ¸…K@g7‰A`åK@gÃõ(\�‚V@s   P 4 3 2gF¶óýÔ¨^@s   P 2 3s   P 62g9´Èv¾Ï\@g     ØP@s   P 1 1 2gsh‘í|Ï\@g+‡ÙÎÿ]@s   P 63g9´Èv¾×Y@g¸…ëQØV@gfffffÖY@g×£p=
×Y@g®Gázþ]@s   P 65 2 2g¬Zd;çf@g9´Èv¾£a@s   C 1 2 1 (x-y,2*x,z)gú~j¼tãf@g…ëQ¸éf@g­ú\mÅ‚V@gË¡E¶óý]@s   F 41 3 2g#Ûù~j˜l@s   I 41 (c,a+b,-a+b)gî|?5^’l@gú~j¼t›l@(   g'1¬‚R@g+‡ÙÎ/X@g=
×£pE[@iZ   iZ   iZ   (   g'1¬‚R@g+‡ÙÎ/X@g=
×£pE[@g…ëQ¸~V@iZ   iZ   (   g²�ï§Æ_@g²�ï§Æ_@g²�ï§Æ_@iZ   iZ   iZ   (   g²�ï§Æ_@g²�ï§Æ_@g²�ï§Æ_@gŒJê€V@gŒJê€V@gŒJê€V@(   g…ëQ¸­W@g…ëQ¸­W@gTã¥›Ä°L@iZ   iZ   ix   (   g…ëQ¸­W@g…ëQ¸­W@gTã¥›Ä°L@iZ   iZ   ix   (   gL7‰A`9T@gL7‰A`9T@gL7‰A`9T@iZ   iZ   iZ   (   gL7‰A`9T@gL7‰A`9T@gL7‰A`9T@gd;ßO�V@gd;ßO�V@gd;ßO�V@(   gÍÌÌÌÌì\@gÍÌÌÌÌì\@gfffffæn@iZ   iZ   ix   (   gÍÌÌÌÌì\@gÍÌÌÌÌì\@gfffffæn@iZ   iZ   ix   (   g/Ý$1P@g/Ý$1P@g#Ûù~jêp@iZ   iZ   iZ   (   g/Ý$1P@g/Ý$1P@g#Ûù~jêp@iZ   iZ   iZ   (   g5^ºI_@g5^ºI_@g×£p=
_]@iZ   iZ   iZ   (   g)\�Âõ_@gB`åÐ"_@g×£p=
_]@gÁ9#J{V@iZ   iZ   (   g;ßO�—Y@g;ßO�—Y@gÝ$�•ar@iZ   iZ   iZ   (   g;ßO�—Y@g;ßO�—Y@gÝ$�•ar@iZ   iZ   g ‘~û:€V@(   gÍÌÌÌÌLe@gÍÌÌÌÌLe@gÍÌÌÌÌLe@iZ   iZ   iZ   (   gÍÌÌÌÌLe@gÍÌÌÌÌLe@gÍÌÌÌÌLe@iZ   iZ   iZ   (   g‘í|?5ºk@g‘í|?5ºk@g°rh‘íÌK@iZ   iZ   ix   (   g…ëQ¸ºk@gw¾Ÿ/¹k@g°rh‘íÌK@iZ   g¬ZdV@gd;ßO�ÿ]@(   g\�Âõ(Ôa@g\�Âõ(Ôa@gfffff[@iZ   iZ   ix   (   g\�Âõ(Ôa@g\�Âõ(Ôa@gfffff[@iZ   iZ   ix   (   g9´Èv¾Ç`@g9´Èv¾Ç`@g9´Èv¾Ç`@iZ   iZ   iZ   (   g9´Èv¾Ç`@g9´Èv¾Ç`@g9´Èv¾Ç`@iZ   iZ   iZ   (   gd;ßO�³U@gd;ßO�³U@gyé&1ìR@iZ   iZ   iZ   (   g5^ºI²U@g“VµU@gyé&1ìR@iZ   iZ   iZ   (   gd;ßO�wX@gd;ßO�wX@gÑ"Ûù~j@iZ   iZ   ix   (   g´Èv¾ŸvX@g´Èv¾ŸvX@gÑ"Ûù~j@g–!ŽuqV@gjÞqŠŽ€V@g /Ý$þ]@(   gìQ¸…s^@gìQ¸…s^@gìQ¸…s^@iZ   iZ   iZ   (   gìQ¸…s^@gìQ¸…s^@gìQ¸…s^@iZ   iZ   iZ   (   g‘í|?5ÞP@g‘í|?5ÞP@g…ëQ¸Íe@iZ   iZ   iZ   (   g-²�ï§ÞP@gö(\�ÂÝP@g…ëQ¸Íe@iZ   iZ   iZ   (   g9´Èv¾ÏG@g´Èv¾Ÿ
^@gmçû©ñÒL@iZ   iZ   iZ   (   g9´Èv¾ÏG@g´Èv¾Ÿ
^@gmçû©ñÒL@gž^)Ë€V@g×£p=
wV@g¶„|Ð³}V@(   gœÄ °rèL@gu“VæR@gî|?5^~c@iZ   iZ   iZ   (   gœÄ °rèL@gu“VæR@gî|?5^~c@gÉå?¤ß~V@gç§èH‚V@gáz®G�V@(   g®¶bÙiX@g®¶bÙiX@g%�•Cëj@iZ   iZ   iZ   (   g®¶bÙiX@g®¶bÙiX@g%�•Cëj@iZ   iZ   gÅ °rh�V@(   gºI+'M@gºI+'M@gNbX9<a@iZ   iZ   ix   (   gºI+'M@gºI+'M@gNbX9<a@iZ   iZ   ix   (   gœ3¢´L@gœ3¢´L@g;ßO�—Öc@iZ   iZ   ix   (   gøSã¥›L@gøSã¥›L@g;ßO�—Öc@g½ãÉ}V@gCëâ6‚V@gÃõ(\�ú]@(   gsh‘í|V@gV-’V@g2w-!¬V@iZ   iZ   iZ   (   gsh‘í|V@gV-’V@g2w-!¬V@iZ   g¼V@iZ   (   gQÚ|ašM@gQÚ|ašM@g=
×£p½M@iZ   iZ   iZ   (   gœ¢#¹ü—M@g¢´7øÂœM@g=
×£p½M@gL¦
F%�V@gw¾Ÿ/}V@g÷uàœ}V@(   g33333sL@g33333sL@gÃõ(\�bO@iZ   iZ   ix   (   g33333sL@g33333sL@gÃõ(\�bO@iZ   iZ   ix   (   g‘í|?5K@g‘í|?5K@gTã¥›ÄèQ@iZ   iZ   iZ   (   gìQ¸…K@g7‰A`åK@gTã¥›ÄèQ@iZ   iZ   gÃõ(\�‚V@(   gF¶óýÔ¨^@gF¶óýÔ¨^@gF¶óýÔ¨^@iZ   iZ   iZ   (   gF¶óýÔ¨^@gF¶óýÔ¨^@gF¶óýÔ¨^@iZ   iZ   iZ   (   g9´Èv¾Ï\@g9´Èv¾Ï\@g     ØP@iZ   iZ   ix   (   g9´Èv¾Ï\@gsh‘í|Ï\@g     ØP@iZ   iZ   g+‡ÙÎÿ]@(   g9´Èv¾×Y@g9´Èv¾×Y@g¸…ëQØV@iZ   iZ   ix   (   gfffffÖY@g×£p=
×Y@g¸…ëQØV@iZ   iZ   g®Gázþ]@(   g¬Zd;çf@g¬Zd;çf@g9´Èv¾£a@iZ   iZ   ix   (   gú~j¼tãf@g…ëQ¸éf@g9´Èv¾£a@g­ú\mÅ‚V@iZ   gË¡E¶óý]@(   g#Ûù~j˜l@g#Ûù~j˜l@g#Ûù~j˜l@iZ   iZ   iZ   (   gî|?5^’l@gú~j¼t›l@gú~j¼t›l@iZ   iZ   iZ   (   t   symmetryR   R   (    (   R�   (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   generate_cases5  sð    





























R   R   R   R�   i    i   (   t   cctbxR�   R   t   space_groupR   R   R   R   R   R
   R   (   R‘   t   caset   Ct   elementt   xRI   t   coset_representativeR   (    (   R�   s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt1   test_lattice_translation_aware_left_decomposition3  s    z)
c           C   s   t  ƒ  t ƒ  d GHd  S(   Nt   OK(   RŒ   R™   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   run¾  s    t   __main__(   t
   __future__R    R’   R   t   scitbx.array_familyR   R>   t   listR   t   objectR   RO   Rg   Rr   Rs   RŒ   R™   R›   R   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/cosets.pyt   <module>   s   g=		L		‹	