ó
K™xTc           @   sÿ  d  d l  m Z d  d l m Z d  d l Z e j j d ƒ Z d  d l	 Td  d l
 Z
 d d d d	 d
 d d g Z d f  d „  ƒ  YZ d  d l m Z d  d l m Z d  d l m Z d  d l Z d  d l Z d „  Z d e j j e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d e j j e f d „  ƒ  YZ d f  d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e f d „  ƒ  YZ d e j j e  f d „  ƒ  YZ d e j j e j! f d  „  ƒ  YZ d e j j e j" f d! „  ƒ  YZ d" e
 j# f d# „  ƒ  YZ$ d$ e
 j# f d% „  ƒ  YZ% d& „  Z& d e j j e j' f d' „  ƒ  YZ d e j j e j( f d( „  ƒ  YZ d e j j e) f d) „  ƒ  YZ d e j j e* f d* „  ƒ  YZ d e j j e+ f d+ „  ƒ  YZ d, e
 j# f d- „  ƒ  YZ, d. „  Z- d S(/   iÿÿÿÿ(   t   division(   t   uctbxNt   cctbx_sgtbx_ext(   t   *s   R 3s   R -3s   R 3 2s   R 3 ms   R 3 cs   R -3 ms   R -3 ct   emptyc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR      s    (   t   flex(   t   matrix(   t   rationalc         C   sÌ   |  j  d ƒ } t | ƒ d k s' t ‚ g  } x˜ | D]� } | j d ƒ } | d k  s[ t ‚ | d k r} t | ƒ d } } n. g  | j  d ƒ D] } t | ƒ ^ q� \ } } | j t j | | ƒ ƒ q4 W| S(   Nt   ,i   t   /i   i    i   (   t   splitt   lent   AssertionErrort   countt   intt   appendR	   (   t   st   fldst   resultt   fldt   slash_countt   nt   dt   t(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   vec3_rat_from_str   s    .t   _c           B   s8   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z RS(   c         c   sK   | r d |  j  ƒ  } n |  j  ƒ  } x t | ƒ D] } |  | ƒ Vq2 Wd  S(   Ni   (   t   n_smxt   xrange(   t   selft   with_inversionR   t   i_smx(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   smx+   s
     c         c   s8   x1 t  |  j ƒ  ƒ D] } |  | d d ƒ j ƒ  Vq Wd  S(   Ni    (   R   t   n_ltrR   (   R   t   i(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   ltr1   s    c         C   s   t  d |  ƒ S(   Nt   group(   t   space_group_info(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   info5   s    c         C   s   t  d |  d t ƒ S(   Nt   space_groupt   reciprocal_space(   t   tensor_rank_2_constraintst   True(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   adp_constraints8   s    c         C   s   t  | |  ƒ S(   N(   t#   tensor_rank_2_cartesian_constraints(   R   t	   unit_cell(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   cartesian_adp_constraints;   s    (   R   R   t   FalseR!   R$   R'   R,   R/   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   )   s
   			t   any_generator_setc           B   s   e  Z e e d  „ Z RS(   c         C   sS   | |  _  t j d | d t d t ƒ } | j ƒ  | j ƒ  |  _ | j ƒ  |  _	 d  S(   NR(   t	   z2p_r_dent	   z2p_t_den(
   R(   t   extR1   t   cb_r_dent   cb_t_dent   set_primitivet   z_gent   non_primitive_generatorst   p_gent   primitive_generators(   R   R(   t	   z2c_r_dent	   z2c_t_dent   gen_set(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   __init__A   s    		
(   R   R   R5   R6   R?   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR1   ?   s   R&   c           B   sa  e  Z e Z d" d" d" d" d" d  „ Z d „  Z d „  Z d „  Z d „  Z	 e d" d" d „ Z
 d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „ Z d „  Z d „  Z d" d d „ Z d „  Z d „  Z  d „  Z! d" d" d „ Z" d" d" d „ Z# e$ d  d! „ Z% RS(#   c         C   sR  | | | g j  d  ƒ d k s$ t ‚ | d  k	 r? t | ƒ } n  | d  k r� | d  k s] t ‚ | d  k	 r„ | | j ƒ  k s„ t ‚ n  | |  _ n“ | d  k s¢ t ‚ | d  k r½ t | ƒ } n- t | t ƒ rÛ t | ƒ } n  t | | ƒ } | d  k rt	 d | ƒ |  _ n t	 d | d | ƒ |  _ |  j d  k	 rB|  j j
 ƒ  n  t ƒ  |  _ d  S(   Ni   t   space_group_symbolst   t_den(   R   t   NoneR   t   strRA   t   _groupR@   t
   isinstanceR   R(   t	   make_tidyR   t   _space_group_info_cache(   R   t   symbolt   table_idR%   t   numbert   space_group_t_dent   symbols(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR?   P   s,    $ c         C   s   | j  |  _  | j |  _ d  S(   N(   RD   RG   (   R   t   other(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   _copy_constructoro   s    c         C   s
   |  j  f S(   N(   RD   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   __getstate__s   s    c         C   s   | d |  _  t ƒ  |  _ d  S(   Ni    (   RD   R   RG   (   R   t   state(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   __setstate__v   s    c         C   s   |  j  S(   N(   RD   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR%   z   s    c   	      C   sþ   |  j  } t | d d  ƒ } | d  k ro |  j j ƒ  t } | d  k rS | t } n  | d  k rª | t } qª n; | j } | d  k r‘ | d } n  | d  k rª | d } n  | | | f } | d  k sÑ | | k rú | | _ t	 |  j f | Œ  | _
 } n  | S(   Nt   _typei   i   (   RG   t   getattrRB   RD   RA   t   sg_t_denR5   R6   t   _type_paramst   space_group_typeRR   (	   R   t
   tidy_cb_opt   r_denRA   t   cachet
   cache_typet   ft   cache_type_paramst   type_params(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   type}   s$    	  	  	 c         C   sE   |  j  } y | j SWn* t k
 r@ t |  j ƒ  ƒ | _ | j SXd  S(   N(   RG   t   _generatorst   AttributeErrorR1   R%   (   R   RY   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR1   Ž   s    	c         C   s7   |  j  } t | d ƒ s0 t |  j ƒ  ƒ | _ n  | j S(   Nt   _reciprocal_space_asu(   RG   t   hasattrt   reciprocal_space_asuR^   Ra   (   R   RY   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRc   –   s    	c         C   sk   d d l  m } |  j } t | d ƒ sd | j |  j ƒ  j ƒ  ƒ } | j |  j ƒ  j	 ƒ  ƒ | _
 n  | j
 S(   Niÿÿÿÿ(   t   reference_tablet   _direct_space_asu(   t   cctbx.sgtbx.direct_space_asuRd   RG   Rb   t   get_asuR^   RJ   t   change_basist'   change_of_basis_op_to_reference_settingt   inverseRe   (   R   Rd   RY   t   reference_asu(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   direct_space_asuœ   s    	c         C   s7   |  j  } t | d ƒ s0 t |  j ƒ  ƒ | _ n  | j S(   Nt   _brick(   RG   Rb   t   brickR^   Rm   (   R   RY   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRn   ¥   s    	c         C   s7   |  j  } t | d ƒ s0 t |  j ƒ  ƒ | _ n  | j S(   Nt   _wyckoff_table(   RG   Rb   t   wyckoff_tableR^   Ro   (   R   RY   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRp   «   s    	c         C   s4   |  j  } t | d ƒ s- t |  j ƒ | _ n  | j S(   Nt   _structure_seminvariants(   RG   Rb   t   structure_seminvariantsRD   Rq   (   R   RY   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRr   ±   s    	c         C   s@   |  j  } t | d ƒ s9 t d |  j ƒ  j ƒ  ƒ | _ n  | j S(   Nt   _reference_settingRH   (   RG   Rb   R&   R^   RJ   Rs   (   R   RY   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   reference_setting·   s    	!c         C   s   |  j  ƒ  j ƒ  S(   N(   R^   t   cb_op(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRi   ½   s    c         C   s   |  j  ƒ  j ƒ  S(   N(   Ri   t   is_identity_op(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   is_reference_settingÀ   s    c         C   s   |  j  |  j ƒ  ƒ S(   N(   Rh   Ri   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   as_reference_settingÃ   s    c         C   s:   t  | t ƒ r t | ƒ } n  t d |  j ƒ  j | ƒ ƒ S(   NR%   (   RE   RC   t   change_of_basis_opR&   R%   Rh   (   R   Ru   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRh   Æ   s    c         C   s   |  j  ƒ  j ƒ  S(   N(   R^   t   change_of_hand_op(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt    change_of_basis_op_to_other_handË   s    c         C   s   |  j  |  j ƒ  ƒ S(   N(   Rh   R{   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   change_handÎ   s    c         C   s   |  j  ƒ  j ƒ  S(   N(   R%   t   z2p_op(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt'   change_of_basis_op_to_primitive_settingÑ   s    c         C   s   |  j  |  j ƒ  ƒ S(   N(   Rh   R~   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   primitive_settingÔ   s    c         C   sÒ  |  j  ƒ  } | j  ƒ  } |  j | ƒ } | j | ƒ } | j ƒ  | j ƒ  k rR d S| j ƒ  | } | j ƒ  j ƒ  j ƒ  r~ | S|  j ƒ  } | j ƒ  } |  j | ƒ }	 | j | ƒ }
 t	 g  |	 j ƒ  D] } | j ƒ  ^ qÄ ƒ t	 g  |
 j ƒ  D] } | j ƒ  ^ qì ƒ k rÎt
 g  |	 j ƒ  D] } | j ƒ  t | ƒ f ^ qƒ } t j d ƒ } xá |
 j ƒ  D]Ó } | | j ƒ  } t | ƒ } | j ƒ  | j ƒ  k r¡d } Pn  | j ƒ  j | j ƒ  ƒ j ƒ  } | j ƒ  } xC t d ƒ D]5 } | | d k rÛd | j ƒ  | | | | <qÛqÛW| j j d ƒ d k r]Pq]q]W| d k	 rÎt | d d ƒ} | j ƒ  sËt t | ƒ ƒ j d d ƒ } | j ƒ  | | } | j ƒ  |  j | ƒ } | j ƒ  | j ƒ  k rÈ| SqËqÎn  | S(   sd    The change of basis from self to other.
    This method strives to return a mere origin shift.
    i   i    i   t   tr_deni�   N(   Ri   Rh   R%   RB   Rj   t   ct   rt
   is_unit_mxR~   t   sett   dictt   translation_part_infoR   t   mutable_zerost   intrinsic_partt   origin_shiftt   minust   mod_positivet   numR   t   dent   elemsR   t   tr_vect   is_zeroRy   t   rt_mxt   new_denominatorst   mod_positive_in_place(   R   RM   t   self_to_ref_opt   other_to_ref_opt   self_as_referencet   other_as_referencet   obvious_resultt   self_z2p_opt   other_z2p_opt   primitive_selft   primitive_othert   opt   self_tr_info_for_rR‰   t   self_tit   other_tit   deltat	   delta_numR#   Ru   t   tentative_other(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   change_of_basis_op_to×   sV      (.1# 
c         C   s¹   g  } |  j  ƒ  j ƒ  } | j ƒ  } | j d | ƒ } | j ƒ  xr t ƒ  D]g } | j ƒ  | k rh qJ n  t | ƒ } | j d | ƒ | k rJ | j | j |  j	 ƒ  j
 ƒ  ƒ ƒ qJ qJ W| S(   Nt   anomalous_flag(   Rt   R%   t   crystal_systemt(   build_derived_reflection_intensity_groupRF   t   space_group_symbol_iteratorR(   R   Rh   Ri   Rj   (   R   R¥   R   t   reference_groupt   reference_crystal_systemt$   reference_reflection_intensity_groupR@   t   other_sg(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt&   reflection_intensity_equivalent_groups  s     		
		c         C   s7   |  j  } t | d ƒ s0 |  j ƒ  j ƒ  | _ n  | j S(   Nt   _lookup_symbol(   RG   Rb   R^   t   lookup_symbolR®   (   R   RY   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   __str__   s    	c         C   s    d t  |  ƒ |  j ƒ  j ƒ  f S(   Ns   %s (No. %d)(   RC   R^   RJ   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   symbol_and_number&  s    s   Space group: c         C   s6   | d  k r t j } n  | d | |  j ƒ  f IJd  S(   Ns   %s%s(   RB   t   syst   stdoutR±   (   R   R[   t   prefix(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   show_summary)  s     c         C   s   |  j  ƒ  j ƒ  S(   N(   Rr   t*   number_of_continuous_allowed_origin_shifts(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR¶   -  s    c         C   s<   |  j  ƒ  } | j ƒ  |  j ƒ  j ƒ  j d | j ƒ  | ƒ S(   Nt   translation(   Ri   t   c_invRt   Rr   t$   subtract_principal_continuous_shiftsR�   (   R   t   translation_fracRu   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt)   subtract_continuous_allowed_origin_shifts1  s    c   
         s±   d d l  m ‰  ‡  ‡ f d †  } |  j ƒ  j ƒ  } |  j | ƒ } | j ƒ  | } | | ƒ rc t SxG | j ƒ  j D]2 } | j	 ƒ  j
 ƒ  } | | }	 | |	 ƒ ss t Sqs Wt Sd S(   s4  
    Determine whether the specified fractional coordinate shift is allowed
    under the space group rules.

    :param shift: tuple specifying fractional coordinate shift
    :param tolerance: tolerance for coordinate shifts outside the allowed
                      range
    :returns: Python boolean
    iÿÿÿÿ(   t   iroundc            s3   t  g  |  D] } t | ˆ  | ƒ ƒ ^ q
 ƒ ˆ k  S(   N(   t   maxt   abs(   t   vt   x(   R¼   t	   tolerance(    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   <lambda>B  s    N(   t   libtbx.math_utilsR¼   R%   R}   Rh   R�   R+   R1   R;   R‚   t   minus_unit_mxR0   (
   R   t   shiftRÁ   t   is_ltrR}   R›   t   primitive_shiftR   t   w_m_iR   (    (   R¼   RÁ   sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   is_allowed_origin_shift7  s    

c         C   sH  | | g j  d ƒ d k s! t ‚ | d k rF | |  j ƒ  j ƒ  } n  |  j ƒ  j ƒ  } | d k  rm d } nZ | d	 k  r‚ d } nE | d k  r— d } n0 | d k  r¬ d } n | d k  rÁ d } n d } t j | ƒ j	 d |  j
 ƒ  j ƒ  ƒ } | | j ƒ  d } t | j ƒ  ƒ } x$ t d ƒ D] } | | c | 9<q!Wt j | ƒ S(   s0  
    Generate a unit cell of arbitrary dimensions (optionally filling the
    desired volume) with parameters compatible with the specified space
    group.

    :param volume: desired unit cell volume
    :param asu_volume: desired volume of the asymmetric unit
    :returns: uctbx.unit_cell object
    i   i   g      ð?gÍÌÌÌÌÌô?g333333û?iS   im   i�   i   iZ   iK   i�   iÃ   ix   Ru   g      @N(   g      ð?gÍÌÌÌÌÌô?g333333û?iS   im   i�   (   g      ð?gÍÌÌÌÌÌô?g333333û?iZ   im   iZ   (   g      ð?gÍÌÌÌÌÌô?g333333û?iZ   iZ   iZ   (   g      ð?g      ð?g333333û?iZ   iZ   iZ   (   g      ð?g      ð?g333333û?iZ   iZ   ix   (   g      ð?g      ð?g      ð?iZ   iZ   iZ   gUUUUUUÕ?(   R   RB   R   R%   t   order_zR^   RJ   R   R.   Rh   Ri   Rj   t   volumet   listt
   parametersR   (   R   RË   t
   asu_volumet	   sg_numbert   paramsR.   R[   R#   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   any_compatible_unit_cellP  s,    
!					 c         C   s8   d d l  m } | j d |  j d | d | ƒ d |  ƒ S(   Niÿÿÿÿ(   t   crystalR.   RË   RÎ   R&   (   t   cctbxRÒ   t   symmetryRÑ   (   R   RË   RÎ   RÒ   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   any_compatible_crystal_symmetryq  s
    		R   c         C   sZ  |  j  } |  j } t | d ƒ s† i  } xP t | ƒ D]B \ } } | j | j ƒ  i  ƒ | | | j ƒ  | j ƒ  j ƒ  <q4 W| | _ n  | j	 | j
 ƒ  | j ƒ  ƒ } | j | j ƒ  }	 | j ƒ  j ƒ  }
 |	 |
 } | j ƒ  j | | j ƒ  ƒ } | r| j ƒ  rd | d St g  | j ƒ  D] } t | ƒ d ^ q!ƒ } d | d | f d | S(   sR   The symmetry code for the given rt_mx in the given space group as
        required by the CIF:

        http://www.iucr.org/__data/iucr/cifdic_html/1/cif_core.dic/Igeom_angle_site_symmetry_.html

        With the default full_code=False, if the translation term is zero,
        just the index of the symmetry operation is returned.
    t   _index_lookup_tables   %ii   i   s   %i%ss   %i%i%i(   RD   RG   Rb   t	   enumeratet
   setdefaultR‚   R   R‹   RÖ   R’   RX   RA   RŠ   R�   t   tuplet	   as_doubleR   (   R   R‘   t	   full_codet   sepR%   RY   t   lookupR#   R�   t   tr_vecst   t_mod_positivet   idxt   t_difft   klm(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   cif_symmetry_codex  s"    			$
/N(&   R   R   R+   t   __safe_for_unpickling__RB   R?   RN   RO   RQ   R%   R^   R1   Rc   Rl   Rn   Rp   Rr   Rt   Ri   Rw   Rx   Rh   R{   R|   R~   R   R¤   R­   R°   R±   Rµ   R¶   R»   RÉ   RÑ   RÕ   R0   Rã   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR&   L   sJ   																					7					!c          c   s,   x% t  d d ƒ D] }  t d |  ƒ Vq Wd  S(   Ni   iæ   RJ   iç   (   R   R&   (   RJ   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   reference_space_group_infos“  s    c           B   s   e  Z d  „  Z RS(   c         C   s%   t  j t j |  j ƒ  |  j ƒ  ƒ ƒ S(   N(   R   t   colR	   t   vectorRŒ   R�   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   as_rational™  s    (   R   R   Rè   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   —  s   t   le_page_1982_delta_detailsc           B   s   e  Z e d  „ Z RS(   c         C   sê   t  j | j ƒ  ƒ } t  j | j ƒ  ƒ } | j ƒ  } | j ƒ  |  _ | j ƒ  j ƒ  |  _ | j ƒ  j ƒ  j ƒ  |  _	 | t  j
 |  j ƒ |  _ t  j |  j	 ƒ | |  _ t |  j ƒ d k rÈ d |  _ n |  j j |  j d | ƒ|  _ d  S(   Ni   g        t   deg(   R   t   sqrt   orthogonalization_matrixt   fractionalization_matrixR'   R^   t   evt   ut	   transposet   hRæ   R   t   rowt   tauR¾   R¡   t   accute_angle(   R   t   reduced_cellt   rot_mxRê   t   ortht   fract   r_info(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR?   ž  s    (   R   R   R0   R?   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRé   œ  s   c           B   s2   e  Z d  „  Z e d „ Z e d „ Z d „  Z RS(   c         C   s%   t  j t j |  j ƒ  |  j ƒ  ƒ ƒ S(   N(   R   Rë   R	   Rç   RŒ   R�   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRè   ®  s    c         C   s   t  d | d |  d | ƒ S(   NRõ   Rö   Rê   (   Ré   (   R   Rõ   Rê   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRé   ±  s    c         C   s   |  j  d | d | ƒ j S(   NRõ   Rê   (   Ré   R¡   (   R   Rõ   Rê   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   le_page_1982_deltaµ  s    	c         C   sh   t  j d | j ƒ  ƒ } |  j ƒ  j ƒ  } | j ƒ  | | } | j ƒ  | | } | | j ƒ  d d S(   Nt   sym_mat3i   g      à?(   R   t   symt   metrical_matrixRè   t   as_floatRð   Rj   t   trace(   R   Rõ   R   t   mR‚   t   sirms(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   lebedev_2005_perturbation¹  s
    (   R   R   Rè   R0   Ré   Rú   R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   ¬  s   	c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s§   d d l  m } t |  d ƒ s  |  j ƒ  d k rC d d d	 f } nQ |  j ƒ  d k rj | |  j ƒ  ƒ } n* |  j ƒ  d k  r… d
 } n |  j ƒ  f } | |  _ n  |  j S(   Niÿÿÿÿ(   t!   basis_of_mirror_plane_with_normalt   _basis_of_invarianti   i    iþÿÿÿ(   i   i    i    (   i    i   i    (   i    i    i   (    (   t   cctbx.math_moduleR  Rb   R^   Rî   R  (   R   R  t   basis(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   basis_of_invariantÃ  s    	c         C   sQ   d |  j  ƒ  } |  j ƒ  d k r9 | d |  j ƒ  7} n  | d |  j ƒ  7} | S(   Ns   % iiÿÿÿÿs   ^%is    |(%i, %i, %i)(   R^   t   senseRî   (   R   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR°   Ñ  s
     (   R   R   R  R°   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   Á  s   	c           B   s   e  Z d  „  Z RS(   c         C   s;   d |  j  ƒ  j ƒ  |  j ƒ  j ƒ  |  j ƒ  j ƒ  f } | S(   Ns   +(%s) @(%s) t_l=(%s)(   Rˆ   R‹   R‰   t   location_part(   R   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR°   Ù  s    (   R   R   R°   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   ×  s   c           B   s/   e  Z d  „  Z d „  Z d „  Z d d „ Z RS(   c         C   s8   t  j |  j ƒ  |  j ƒ  j ƒ  |  j ƒ  j ƒ  f ƒ f S(   N(   R   R   t   as_int_arrayR‚   R�   R   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   __getinitargs__â  s    c         C   s+   t  j |  j ƒ  j ƒ  |  j ƒ  j ƒ  f ƒ S(   N(   R   t   rtR‚   Rè   R   (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRè   å  s    c         C   s¸   |  j  ƒ  j ƒ  j } |  j ƒ  j ƒ  j } t j d ƒ } t j d ƒ } t j | d | d | d | d | d | d | d | d | d | d | d	 | d | | | | f d
 ƒ S(   Ni    i   i   i   i   i   i   i   i   (   i   i   (   R‚   Rè   RŽ   R   R	   R   R   t   rec(   R   R‚   R   t   zerot   one(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   as_4x4_rationalè  s    c         C   sN   | d  k r t j } n  |  j ƒ  j ƒ  } t |  ƒ } | d | | f IJd  S(   Ns   %s %s(   RB   R²   R³   R‚   R'   R†   (   R   t   outRù   t   t_info(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   show_geometrical_elementsó  s
     N(   R   R   R  Rè   R  RB   R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   à  s   			c           B   s   e  Z d d  „ Z RS(   c         C   sŠ   | d  k r t j } n  | d I|  j ƒ  IJ| d I|  j ƒ  IJ| d I|  j ƒ  IJ| d I|  j ƒ  IJ| d I|  j ƒ  IJd  S(   Ns   use_space_group_symmetry:s   use_space_group_ltr:s   use_normalizer_k2l:s   use_normalizer_l2n:s   use_seminvariants:(   RB   R²   R³   t   use_space_group_symmetryt   use_space_group_ltrt   use_normalizer_k2lt   use_normalizer_l2nt   use_seminvariants(   R   R[   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRµ   û  s     N(   R   R   RB   Rµ   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   ù  s   t   special_op_simplified_termc           B   s2   e  Z d  d d g Z d „  Z d „  Z d „  Z RS(   t   i_varst   multiplierst   constantc         C   sX   t  | ƒ t  | ƒ k s t ‚ | j d ƒ d k s9 t ‚ | |  _ | |  _ | |  _ d  S(   Ni    (   R   R   R   R  R  R  (   t   OR  R  R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR?     s
    		c         C   sG   t  |  j ƒ d k r t S|  j d d k r0 t S|  j d k rC t St S(   Ni   i    (   R   R  R0   R  R+   (   R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   is_identity  s       c         C   s  d } x“ t  |  j |  j ƒ D]| \ } } | d k  rH | d 7} | } n t | ƒ d k rg | d 7} n  | d k rŠ | t | ƒ d 7} n  | d | 7} q W|  j } | d k sÃ t | ƒ d k r| d k  rã | d 7} | } n t | ƒ d k r| d 7} n  | t | ƒ 7} n  | S(   Nt    i    t   -t   +i   R   t   xyz(   t   zipR  R  R   RC   R  (   R  R   R#   R   R�   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR°     s&    "

	

(   R   R   t	   __slots__R?   R  R°   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR    s   		t   special_op_simplifiedc           B   s/   e  Z d  g Z d „  Z d „  Z d d „ Z RS(   t   termsc         C   s   | |  _  d  S(   N(   R&  (   R  R&  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR?   -  s    c         C   s)   d j  g  |  j D] } t | ƒ ^ q ƒ S(   NR
   (   t   joinR&  RC   (   R  t   term(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR°   0  s    gñhãˆµøä>c      	   C   s2   d d l  m } | j d |  d | d | d | ƒ S(   Niÿÿÿÿ(   t   fvar_encodingR  t   fvarst   sitet   p_tolerance(   t   iotbx.shelxR)  t&   site_constraints_special_op_simplified(   R   R*  R+  R,  R)  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   shelx_fvar_encoding3  s    	(   R   R   R$  R?   R°   R/  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR%  )  s   			c      	   C   s4  |  j  ƒ  } | j } | j } | d  | d d !| d g } d  d  d  g } t j d ƒ } t j d ƒ } d } xM t | ƒ D]? \ }	 }
 |
 d k r| t g  g  | |	 ƒ | |	 <| d 7} q| q| W| d k rØ t d | ƒ S| d k r:g  g  } } xL t	 d ƒ D]> } | j
 | | d | | d g ƒ | j
 | | d ƒ qþ Wd d l m } | j | | ƒ } t | ƒ d k r:| j | | | d  g d ƒ } | d  k	 r7| j d ƒ d k r7x0 d d g D]" }	 t |	 g | g | ƒ | |	 <qÁWt d d g | | d | d | d | d | d ƒ | d <t d | ƒ Sq:n  xê t	 d ƒ D]Ü }	 | |	 d  k	 rcqGn  t |	 g | g | ƒ | |	 <x¡ t	 |	 d d ƒ D]Œ } | | d  k	 r¯q“n  t j d	 | |	 d
 | | ƒ } | d  k ráq“n  | d k sót ‚ t |	 g | g | | | | |	 ƒ | | <q“WqGWt d | ƒ S(   Ni   i   i    i   R&  iÿÿÿÿ(   t   row_echeloni   t   vector_1t   vector_2(   i    i    i    (   Rè   R‚   R   RB   R	   R   R×   R  R%  R   R   t   scitbx.matrixR0  t   form_rationalR   t   back_substitution_rationalR   R   t&   linearly_dependent_pair_scaling_factorR   (   t
   special_opR  R‚   R   t   rowsR&  t   r0t   r1t   n_donet   i_rowRò   R   R¿   R#   R0  t	   free_varst   solt   j_row(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   special_op_simplifier8  sX    		#! =  	 1c           B   s&   e  Z d  „  Z d „  Z d d „ Z RS(   c         C   s   |  j  ƒ  |  j ƒ  |  j ƒ  f S(   N(   t   multiplicityR7  t   matrices(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR  e  s    c         C   s   t  d |  j ƒ  ƒ S(   NR7  (   R@  R7  (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR%  h  s    gñhãˆµøä>c      	   C   s2   d d l  m } | j d |  d | d | d | ƒ S(   Niÿÿÿÿ(   R)  R  R*  R+  R,  (   R-  R)  t"   site_constraints_site_symmetry_ops(   R   R*  R+  R,  R)  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR/  k  s    	(   R   R   R  R%  R/  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   c  s   		c           B   sb   e  Z d  „  Z d „  Z d	 d	 d	 d	 d	 d d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(
   c         C   s   |  j  ƒ  |  j ƒ  |  j ƒ  f S(   N(   t   indicest   tablet   special_position_indices(   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR  r  s    c         C   s]   | j  d | ƒ } x8 |  j ƒ  D]* } |  j d | ƒ j ƒ  | | | | <q W| j d | ƒ S(   Nt
   sites_cartt   i_seqt
   sites_frac(   t   fractionalizeRF  t   getR7  t   orthogonalize(   R   R.   RG  RI  RH  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   apply_symmetry_sitesu  s
    R  c	         C   sR  | | g j  d  ƒ d k s! t ‚ | | g j  d  ƒ d k sB t ‚ | d  k rZ t j } n  | | d I|  j ƒ  j ƒ  IJ|  j ƒ  j ƒ  d k rNd }	 x- |  j ƒ  D] }
 t |	 t | |
 ƒ ƒ }	 q¥ Wd |	 } | | d | j	 ƒ  IJ| | d | d d	 IJ| j
 ƒ  } | d  k r1| j d
 | ƒ } n  | d  k rR| j d
 | ƒ } n  xù |  j ƒ  D]è }
 | |
 } | |
 } |  j d |
 ƒ } | | d | | |
 d | j ƒ  | j | | ƒ f | IJ| | | d d | j | ƒ j ƒ  d | IJt | j ƒ  ƒ } | | | d d d t d d t | ƒ d ƒ I| IJq_Wn  d  S(   Ni   s%   Number of sites at special positions:i    i   s   %%-%dss?     Minimum distance between symmetrically equivalent sites: %.4gs     t   Labels)      Mult   Shift    Fractional coordinatesRG  RH  s)     %4d  %7.3f (%8.4f %8.4f %8.4f) originalR  s      site sym %-6ss   (%8.4f %8.4f %8.4f) exactt    i   i   i   (   R   RB   R   R²   R³   RF  t   sizeR½   R   t   min_distance_sym_equivR.   RJ  RK  RA  t   distancet   site_symmetryt   point_group_typeRC   R7  (   R   t   special_position_settingst   site_labelst   sites_frac_originalt   sites_cart_originalt   sites_frac_exactt   sites_cart_exactR  R´   t	   label_lenRH  t	   label_fmtt   uct   sot   set   special_opsR   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   show_special_position_shifts|  s@    	!! 


$-c         C   s’   t  |  j ƒ  ƒ d k s t ‚ |  j ƒ  d } | j ƒ  s@ t ‚ t d t j |  j ƒ  j ƒ  d ƒ d t	 d | j
 ƒ  | j ƒ  ƒ g d t j ƒ  ƒ S(   Ni    RD  RE  i   RF  (   R   RE  R   t   is_point_group_1t   site_symmetry_tableR   t   size_tRD  RP  t   site_symmetry_opsR7  RB  (   R   t   site_sym(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   discard_symmetry§  s    !c      	   C   s7   t  d |  j | ƒ d |  j | ƒ d | | k d | ƒ S(   Nt   site_symmetry_ops_it   site_symmetry_ops_jt   i_seq_eq_j_seqt   rt_mx_ji(   t%   symmetry_equivalent_pair_interactionsRK  (   R   RH  t   j_seqRk  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRl  °  s
    c         C   sŸ   | j  ƒ  |  j ƒ  j  ƒ  k s$ t ‚ t j ƒ  } xh t | ƒ D]Z \ } } |  j | ƒ ry |  j | ƒ j ƒ  j	 | ƒ } n  x | D] } | j
 | ƒ q€ Wq= W| S(   N(   RP  RD  R   R   t   doubleR×   t   is_special_positionRK  t   site_constraintst   independent_paramsR   (   R   RI  R   RH  RÀ   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   pack_coordinates·  s    $! c         C   sÌ   t  j ƒ  } d } d } x• |  j ƒ  D]‡ } | d k rW | d } t | | | !ƒ } nB |  j ƒ  | j ƒ  } | | j ƒ  } | j t | | | !ƒ ƒ } | } | j | ƒ q% W| | j	 ƒ  k sÈ t
 ‚ | S(   Ni    i   (   R   t   vec3_doubleRD  RÌ   RE  Rp  t   n_independent_paramst
   all_paramsR   RP  R   (   R   t   packed_coordinatesR   t   ixt   jxt   i_tabRÀ   t   sc(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   unpack_coordinatesÀ  s    
c         C   sŸ   | j  ƒ  |  j ƒ  j  ƒ  k s$ t ‚ t j ƒ  } xh t | ƒ D]Z \ } } |  j | ƒ ry |  j | ƒ j ƒ  j	 | ƒ } n  x | D] } | j
 | ƒ q€ Wq= W| S(   N(   RP  RD  R   R   Rn  R×   Ro  RK  Rp  t   independent_gradientsR   (   R   t   g_fracR   RH  t   gR   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   pack_gradientsÑ  s    $! N(   R   R   R  RM  RB   Ra  Rg  Rl  Rr  R{  R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   p  s   		
#						c           B   s   e  Z d  „  Z RS(   c         C   s   t  d |  j ƒ  ƒ S(   NR7  (   R@  R7  (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR%  Ü  s    (   R   R   R%  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   Ú  s   c           B   s   e  Z d d d „ Z RS(   iûÿÿÿi   g:Œ0âŽyE>c         C   sâ   |  j  | ƒ } d } xÆ | d 7} | d k  s4 t ‚ | j ƒ  g  t d ƒ D] } t j ƒ  ^ qJ } | d  k	 r˜ g  | D] }	 |	 t j | Œ  ^ qv } n  | j | ƒ }
 |
 j ƒ  | k  r |
 j	 ƒ  | j	 ƒ  k s× t ‚ |
 Sq d  S(   Ni    i   iè  i   (
   t   positionR   R7  R   t   randomRB   t	   randrangeRS  t   distance_movedRA  (   R   RU  t
   i_positiont   unit_shift_rangeRÁ   R€  t   run_away_counterR#   R+  RÀ   RS  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   random_site_symmetryá  s    
/)(   iûÿÿÿi   (   R   R   R‡  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   ß  s   c           B   s   e  Z d  „  Z d „  Z RS(   c         C   s[   g  } x. |  j  ƒ  D]  } | j | j f | j ƒ q Wd j g  | D] } d | ^ qD ƒ S(   Ns   
s   %i: (%i, %i, %i)(   t   vectors_and_moduliR   R   R¿   R'  (   R   R   t   vmt   item(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR°   õ  s    c         C   s   |  j  t ƒ j ƒ  S(   N(   t   selectR0   RP  (   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR¶   û  s    (   R   R   R°   R¶   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR   ó  s   	Rl  c           B   s/   e  Z d  d g Z d „  Z d „  Z d „  Z RS(   Ri  t   registryc   	         sî   | ˆ  _  i  ˆ  _ | j ƒ  } ˆ  j  j ƒ  ‰ | ru t | ƒ d k ru t ˆ ƒ d k ru | j ƒ  } | ˆ  j | <d  Sˆ  j  j ƒ  ‰ ‡  ‡ ‡ f d †  } x | D] } | | | ƒ q  W| rê | j ƒ  } x | D] } | | | ƒ qÐ Wn  d  S(   Ni   c            sp   |  j  | ƒ } | j  ˆ ƒ } | ˆ  j k rl | } x& ˆ D] } t | | j  | ƒ ƒ } q: W| ˆ  j | <n  d  S(   N(   t   multiplyRŒ  t   min(   t   miRk  t   rt_mx_ji_eqt   rst   bestt   mj(   R  t   ssm_jt   sso_j(    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   add  s    (   Ri  RŒ  RB  R   t   cancelR7  Rj   (	   R  Rh  Ri  Rj  Rk  t   ssm_iR–  R�  t   rt_mx_ji_inv(    (   R  R”  R•  sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyR?     s     		+c         C   s   |  j  j ƒ  } | j ƒ  | S(   N(   RŒ  t   valuest   sort(   R  R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRK     s    
c         C   s+   |  j  j ƒ  } | j | ƒ } | |  j k S(   N(   Ri  R7  R�  RŒ  (   R  Rk  R•  R‘  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   is_equivalent%  s    (   R   R   R$  R?   RK  Rœ  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyRl  þ  s   		c         C   sE   t  |  ƒ t  | ƒ k  r d St  |  ƒ t  | ƒ k r8 d St |  | ƒ S(   Niÿÿÿÿi   (   R   t   cmp(   t   at   b(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   compare_cb_op_as_hkl*  s
      (.   t
   __future__R    RÓ   R   t   boost.pythont   boostt   pythont
   import_extR4   R   t   libtbxt$   rhombohedral_hermann_mauguin_symbolsR   t   cctbx.array_familyR   t   scitbxR   R	   R�  R²   R   t   injectorR(   R   t   objectR1   R&   Rå   R�   Ré   Rö   t   rot_mx_infoR†   R‘   t   search_symmetry_flagst   slots_getstate_setstateR  R%  R@  Re  Rc  t   wyckoff_positionRp   Rr   Rl  R   (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/cctbx/sgtbx/__init__.pyt   <module>   sR   
		"ÿ H		""
&	+""j,