ó
©%�Tc           @   sî   d  a  d a e j d ƒ Z e r' e n d Z d a d Z e j j	 e j j
 e ƒ e ƒ Z e j j e ƒ s¨ e j d ƒ Z e r¨ e j j	 e j j
 e ƒ e ƒ Z q¨ n  d e d g Z e a d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d S(   s   .coot-to-jligand-8lcss   .jligand-to-coot-linkt   JLIGAND_HOMEt   .t   javas   JLigand.jart   CCP4_BINs   -jars   -cootc         C   ss   d „  } | |  ƒ so t  |  ƒ } t | ƒ d k ro | j d |  d d t j j | ƒ ƒ | j d ƒ qo n  d  S(   Nc         S   sL   d d d d d d d d d	 d
 d d d d d d d d d d g } |  | k S(   Nt   ALAt   ARGt   ASNt   ASPt   CYSt   GLNt   GLUt   GLYt   HISt   ILEt   LEUt   LYSt   METt   PHEt   PROt   SERt   THRt   TRPt   TYRt   VAL(    (   t   comp_idt   aa_ls(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   jligand_standard_amino_acid_qm'   s    i    s   CODE t    s   FILE s   
(   t   cif_file_for_comp_idt   lent   writet   ost   patht   normpath(   R   t   portR   t   cif_file(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   jligand_code_file_maybe%   s    		#c   
      C   s%  t  ƒ  } | d d k o& | d d k } t t d ƒ } t j ƒ  } t |  ƒ } t | ƒ }	 | j d | d | d t t |  ƒ ƒ ƒ | j d ƒ | r¬ t | | ƒ n  | j d | d |	 d t t | ƒ ƒ ƒ | j d ƒ | rü t | | ƒ n  | j d	 t | ƒ d ƒ | j	 ƒ  d  S(
   Ni    i   i   i   t   ws   CODE R   s   
s   TIME (
   t   get_refmac_versiont   opent   to_jligand_secret_file_namet   timet   res_spec2chain_idR   t   strt   res_spec2res_noR$   t   close(
   t
   res_spec_1t	   resname_1t
   res_spec_2t	   resname_2t   refmac_versiont   refmac_new_enought   fint   int_timet
   chain_id_1t
   chain_id_2(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   write_file_for_jligand7   s&    	c         C   s   |  d |  d |  d g S(   Ni   i   i   (    (   t   click(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   click2res_specP   s    c          C   s)   t  t ƒ a d „  }  t j d |  ƒ d  S(   Nc          S   si   d d  l  }  t t ƒ } |  j | ƒ re |  j t ƒ sF | a t ƒ  qe | t k re | a t ƒ  qe n  t S(   Niÿÿÿÿ(   t   operatort   get_file_latest_timet"   from_jligand_secret_link_file_namet   isNumberTypet   startup_mtimet   handle_read_from_jligand_filet   True(   R;   t   now_time(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   jligand_timeout_funca   s    
i¼  (   R<   R=   R?   t   gobjectt   timeout_add(   RC   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   start_jligand_listenerY   s    	c             s;  d „  ‰  ‡  f d †  ‰ ‡ f d †  }  t  j j t ƒ r7t t d ƒ } | j ƒ  j ƒ  } | j ƒ  | sv d Gt GHq7| d } | d k r” d GHn  t  j j | ƒ r7t | ƒ | d	 } d
 G| GHt	 | ƒ d k r4| d d !} | d d !} | d d !} | d d !} | d d !}	 | d d !}
 t
 |	 ƒ } t
 |
 ƒ } d } d } d } d } | d } d GHd G| GHd G| GHd G| GHd G| GHd G|	 GHd G|
 GHd G| GHt t ƒ r1| | | g } | | | g } | | | g } | | | g } |  | | ƒ } | sd | | | f GHq.t t | | | | ƒ q1q4q7n  d  S(    Nc         S   sL   d „  } d „  } d d  l  } | j t t | t | |  | ƒ ƒ ƒ ƒ } | S(   Nc         S   s   |  |  S(   N(    (   t   x(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   square|   s    c         S   s   |  | S(   N(    (   RG   t   y(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   sub~   s    iÿÿÿÿ(   t   matht   sqrtt   sumt   map(   t   pos_1t   pos_2RH   RJ   RK   t   ret(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   bond_length{   s
    		*c            sQ   t  |  t ƒ s d G|  GHd  St  | t ƒ s8 d G| GHd  Sˆ  |  d | d ƒ Sd  S(   Ns7      WARNING:: bond_length_from_atoms: atom_1 not a list:s7      WARNING:: bond_length_from_atoms: atom_2 not a list:i   (   t
   isinstancet   list(   t   atom_1t   atom_2(   RR   (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   bond_length_from_atoms…   s    		
c            sY   t  t g |  Œ  } t  t g | Œ  } t | t ƒ oA t | t ƒ sH t Sˆ  | | ƒ Sd  S(   N(   t   get_atomt   imol_jligand_linkRS   RT   t   False(   t   atom_spec_1t   atom_spec_2RU   RV   (   RW   (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   get_dist�   s    t   rs   BL WARNING:: empty filei    t   READYs   JLigand is readyi   s   Now handle this link lineiH   i   i   i*   i.   i   i   i3   i4   i   i8   t    s   we parsed these: s          atom_name_1s          atom_name_2s           chain_id_1s           chain_id_2s         res_no_1_strs         res_no_2_strs            link_types   bad dist %s from %s %s(   R   R    t   isfileR=   R'   t   readt
   splitlinesR-   t   read_cif_dictionaryR   t   intt   valid_model_molecule_qmRY   t	   make_link(   R]   R4   t   linest   cif_dictionaryt	   link_linet   atom_name_1t   atom_name_2R6   R7   t   res_no_1_strt   res_no_2_strt   res_no_1t   res_no_2t
   ins_code_1t
   ins_code_2t
   alt_conf_1t
   alt_conf_2t	   link_typeR.   R0   R[   R\   t   dist(    (   RR   RW   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyR@   v   s`    	
	



	
								N(   R(   R=   R   t   getenvt   jligand_home_envt   jligand_homet   java_commandt   jligand_nameR    t   joinR!   t   jligand_jarRa   t   ccp4_bint   jligand_argsRZ   RY   R$   R8   R:   RF   R@   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/jligand.pyt   <module>	   s"   !'					