ó
‚™xTc           @   s´   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 d „ Z	 d e
 f d	 „  ƒ  YZ d
 e
 f d „  ƒ  YZ d d „ Z e d k r° e e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t   pdb(   t   show_string(   t   adopt_init_argsNi    c         C   s\   y | |  | d | d !ƒ SWn8 t  k
 rW | rX t | d d |  j ƒ  ƒ ‚ qX n X| S(   Ni    i   s   
s     PDB input line: (   t
   ValueErrort   RuntimeErrort   rstrip(   t   linet   icolst   target_typet   strictt   error_messaget   substitute_value(    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyt   field_as_number   s      "t   atom_labelsc           B   s/   e  Z d d d d d d d d  „ Z d „  Z RS(   c         C   s   t  |  t ƒ  ƒ d  S(   N(   R   t   locals(   t   selft   chaint   resnamet   resseqt   icodet   namet   altloct   segid(    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyt   __init__   s    c         C   s¦   g  } | j  } | d t |  j ƒ ƒ | d t |  j ƒ ƒ | d |  j ƒ | d t |  j ƒ ƒ | d t |  j ƒ ƒ | d t |  j ƒ ƒ t d j | ƒ ƒ S(   Ns   chain %ss
   resname %ss	   resseq %ss   icode %ss   name %ss	   altloc %ss    and (	   t   appendR   R   R   R   R   R   R   t   join(   R   t   resultt   a(    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyt   selection_string!   s    	N(   t   __name__t
   __module__t   NoneR   R   (    (    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyR      s   t   link_recordc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s  | d t  d d t | ƒ ƒ } | d  d k s7 t ‚ t d | d d !d	 | d d
 | d d !d | d d t d | d d& d t d t d d ƒ d | d ƒ g |  _ y t | d d !ƒ |  _	 Wn t
 k
 rÛ d  |  _	 n X|  j j t d | d d !d	 | d d
 | d d !d | d d t d | d d' d t d t d d ƒ d | d! ƒ ƒ | d" d# !| d$ d% !g |  _ | d% d !|  _ d  S((   Nt    i    iP   i   s   LINK  R   i   i   R   R   i   i   R   i   R   R   R   i   i   R	   R
   R   s!   Serial number must be an integer:R   i   i(   i*   i.   i/   i2   i3   i4   i8   i;   iA   iB   iH   (   i   i   (   i4   i8   (   t   maxt   lent   AssertionErrorR   R   t   intt   Truet   labels_pairt   floatt   distanceR   R    R   t   symopst   margin(   R   R   (    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyR   .   s4    !

	  

	c         C   sV   |  j  d  k r d } n d |  j  } d t g  |  j D] } | j ƒ  ^ q5 | g ƒ S(   NR    s   %.6gs¨     bond {
    action = *add delete change
    atom_selection_1 = %s
    atom_selection_2 = %s
    symmetry_operation = None
    distance_ideal = %s
    sigma = None
  }
(   R*   R    t   tupleR(   R   (   R   t   distance_idealt   labels(    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyt   as_geometry_restraints_editsX   s
    	
%(   R   R   R   R0   (    (    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyR!   ,   s   	*s+   iotbx.pdb.link_as_geometry_restraints_editsc         C   sÀ   x¹ |  D]± } t  j d | ƒ j ƒ  } d GHx† | D]~ } | j d ƒ sL q1 n  t d | ƒ } | j d j ƒ  d k sz t ‚ | j d j ƒ  d k s™ t ‚ t j	 j
 | j ƒ  ƒ q1 Wd GHq Wd  S(	   Nt	   file_names&   refinement.geometry_restraints.edits {s   LINK  R   i    t    i   t   }(   R   t   inputt   connectivity_annotation_sectiont
   startswithR!   R+   t   stripR%   t   syst   stdoutt   writeR0   (   t   argst   command_nameR1   t   sectionR   t   link(    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyt   runi   s     t   __main__i   (   t
   __future__R    t   iotbxR   t   libtbx.str_utilsR   t   libtbxR   R8   R   t   objectR   R!   R?   R   t   argv(    (    (    sf   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/command_line/pdb.link_as_geometry_restraints_edits.pyt   <module>   s   =