ó
 ™xTc        	   @   s’   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z i  d e d e	 e	 d e d „ Z d „  Z e d k rŽ e e j d	 ƒ n  d S(
   iÿÿÿÿ(   t   divisionN(   t   Sorryg      à?g      ð?c
   !      C   s‡  |	 r6 d G| GHd G| GHd G| GHd G| GHd G| GHn  | j  j }
 i  } d  } x+|  j ƒ  D]} |	 rv d | j GHn  xÿ| j ƒ  D]ñ} |	 rž d | j GHn  xÓ| j ƒ  D]Å} |	 rÏ d | j | j f GHn  xìt	 | j
 ƒ  ƒ D]Ø\ } } | j d k rqâ n  |	 r$d
 | | j | j f GHn  x“t	 | j
 ƒ  ƒ D]\ } } | | k  rUq7n  | j d k rjq7n  |	 r‹d
 | | j | j f GHn  | j j ƒ  r±| j j ƒ  r±q7n  | j j ƒ  rö| j j ƒ  rö| j j ƒ  | j j ƒ  k röq7qön  xÝ t	 | j ƒ  ƒ D]É \ } } xº t	 | j ƒ  ƒ D]¦ \ } } | | k rFq(n  |
 j | j | j ƒ } | d  k rpq(n  | | j g | t t | j | j g ƒ ƒ <|	 r(d GH| j ƒ  GH| j ƒ  GH| j G| j GHq(q(Wq	W| | k rèq7n  xË t	 | j ƒ  ƒ D]· \ } } x¨ t	 | j ƒ  ƒ D]” \ } } |
 j | j | j ƒ } | d  k rPqn  | | j g | t t | j | j g ƒ ƒ <|	 rd GH| j ƒ  GH| j ƒ  GH| j G| j GHqqWqûWq7Wqâ W| d  k rÖ| } q« n  x‘| j
 ƒ  D]ƒ} xzt	 | j
 ƒ  ƒ D]f\ } } | j j ƒ  r.| j j ƒ  r.qün  | j j ƒ  rs| j j ƒ  rs| j j ƒ  | j j ƒ  k rsqüqsn  |	 r”d | | j | j f GHn  xË t	 | j ƒ  ƒ D]· \ } } x¨ t	 | j ƒ  ƒ D]” \ } } |
 j | j | j ƒ } | d  k rüqÆn  | | j g | t t | j | j g ƒ ƒ <|	 rÆd GH| j ƒ  GH| j ƒ  GH| j G| j GHqÆqÆWq§WqüWqãW| } q« Wqƒ Wq[ Wi  } x0| D](} | | \ } } | | k r»| | | _ n | j | | <t | | ƒ } | r*| rÿ| j t j | ƒ | _ n | j | | | _ | j G| | G| GHn  | | | d <| | | d <|	 r‰d d GHxY |  j ƒ  D]H } | j | d k r‰| j ƒ  GHn  | j | d k rb| j ƒ  GHqbqbWq‰q‰W| rvx¸ | j  j D]§ }  |  j d | k rçqÈn  |  j d | k r qÈn  |  j d | k rqÈn  | |  j d } t | | ƒ } | r[|  j t j | ƒ |  _ qÈ|  j | | |  _ qÈWn  | j  j ƒ  | S(   Nt   min_occt	   sqrt_funct   func_factort   bond_weightingt   angle_weightings   model: "%s"s   chain: "%s"s'     residue_group: resseq="%s" icode="%s"t   HOHs-       %03d atom_group: altloc="%s" resname="%s"s   intra-atom_groups   inter-atom_groups6       %03d previous_atom_group: altloc="%s" resname="%s"s   inter-residue_groupi    i   t   -iP   i   (   R   (   R   (   t   geometryt   bond_params_tablet   Nonet   modelst   idt   chainst   residue_groupst   resseqt   icodet	   enumeratet   atom_groupst   resnamet   altloct   stript   atomst   lookupt   i_seqt   occt   tuplet   sortedt   format_atom_recordt   distance_idealt   weightt   maxt   matht   sqrtt   quotet   angle_proxiest   i_seqst   reset_internals(!   t	   hierarchyt   restraints_managert   altloc_weights_objectR   R   R   R   R   t   logt   verboseR
   t   altloc_bondst   previous_residue_groupt   modelt   chaint   residue_groupt   atom_group_it   atom_group1t   atom_group_jt   atom_group2t   it   atom1t   jt   atom2t   bondt
   atom_groupt   atom_group_kt   previous_atom_groupR%   t   keyR   t   atomt   angle_proxy(    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/conformation_dependent_library/altloc_weighting.pyt   update_restraints   sü    				         	  +  +"	  +"	     c         C   sE   t  j j |  ƒ } | j ƒ  } | j ƒ  j ƒ  t | t d t ƒd  S(   NR+   (	   t   iotbxt   pdbt   inputt   construct_hierarchyR   t   reset_serialR@   R(   t   True(   t   filenamet   pdb_inpR'   (    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/conformation_dependent_library/altloc_weighting.pyt   run°   s    t   __main__i   (   t
   __future__R    t   sysR!   t	   iotbx.pdbRA   t   libtbx.utilsR   t   FalseRF   R   R@   RI   t   __name__t   argv(    (    (    sc   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/conformation_dependent_library/altloc_weighting.pyt   <module>   s   Ÿ		