ó
–™xTc           @   s<   d  Z  d d l m Z d d l m Z d d d d „ Z d S(   s2  Extracts crystal symmetry from CNS input file.

For example, the input

{===>} sg="P3(2)21";
{===>} a=76.4;
{===>} b=76.4;
{===>} c=180.94;
{===>} alpha=90;
{===>} beta=90;
{===>} gamma=120;

is returned as:

crystal.symmetry(
  unit_cell=(76.4, 76.4, 180.94, 90, 90, 120),
  space_group_symbol="P3(2)21")
iÿÿÿÿ(   t   division(   t   crystali@B c   	      C   sÑ  |  | g j  d  ƒ d k s! t ‚ | d  k r< t |  ƒ } n  g  t d ƒ D] } d  ^ qI } d  } d } x$| D]} | d k r£ | t | ƒ 7} | | k r£ Pq£ n  | j ƒ  } | j d ƒ rü | d d k sÔ t ‚ | d  k sì t d ƒ ‚ | d d !} qn d	 } x… d D]} } | d 7} | j d | ƒ r	| d	 d k sBt ‚ | | d  k sbt d | ƒ ‚ t | d t | ƒ d	 !ƒ | | <q	q	Wqn W| j  d  ƒ d k s©t ‚ | d  k	 s»t ‚ t	 j
 d | d | ƒ S(   Ni   i   i    s   {===>} sg="iþÿÿÿs   ";s   Duplicate space group symbol.i   iÿÿÿÿt   at   bt   ct   alphat   betat   gammas
   {===>} %s=t   ;s!   Duplicate unit cell parameter %s.i   t	   unit_cellt   space_group_symbol(   R   R   R   R   R   R   (   t   countt   Nonet   AssertionErrort   opent   xranget   lent   stript
   startswitht   floatR   t   symmetry(	   t	   file_namet   filet   max_characterst   iR	   R
   t   n_characterst   linet   label(    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/crystal_symmetry_from_inp.pyt   extract_from   s8    ! 
 ,	N(   t   __doc__t
   __future__R    t   cctbxR   R   R   (    (    (    sQ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/cns/crystal_symmetry_from_inp.pyt   <module>   s   