ó
™™xTc           @   sÆ  d  d l  m Z d  d l m Z d  d l Z d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z m Z m Z d  d l Z d  d l Z d  d l Z d e f d	 „  ƒ  YZ d
 d g Z g  d „ Z e g  d d „ Z d e f d „  ƒ  YZ d e d „ Z d e d „ Z d e d „ Z d e f d „  ƒ  YZ  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& e d „ Z' d „  Z( d e f d „  ƒ  YZ) d  e) f d! „  ƒ  YZ* d" e) f d# „  ƒ  YZ+ d S($   iÿÿÿÿ(   t   division(   t	   cif_typesN(   t(   residue_name_plus_atom_names_interpreter(   t   dicts(   t   show_string(   t   Sorryt   format_exceptiont   windows_device_namest   MonomerLibraryServerErrorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR      s    t   MMTBX_CCP4_MONOMER_LIBt	   CLIBD_MONc         C   s>   |  d  k	 r: t j j |  | Œ } t j j | ƒ r: | Sn  d  S(   N(   t   Nonet   ost   patht   joint   isfile(   t   mon_lib_patht   relative_path_componentst   cif_path(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   load_mon_lib_file   s
    t   medc         C   sÖ   t  d t j j |  d d  ƒ d | ƒ } | d  k	 r8 | SxN d d d d g D]: } t  d t j j d | ƒ d | ƒ } | d  k	 rK | SqK WxF |  d	 D]: } t  d t j j | d  ƒ d | ƒ } | d  k	 r” | Sq” Wd  S(
   NR   i    R   s   chem_data/geostds   chem_data/mon_libt   mon_libs   ext_ref_files/mon_libt   relative_pathi   (   R   R   t   environt   getR   t   libtbxt   envt   find_in_repositories(   t   env_varsR   t   resolution_ranget   resultR   t   env_var(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   find_mon_lib_file   s.    	 		 	 t   mon_lib_cif_loaderc           B   s   e  Z d g  e d  d „ Z RS(   R   c         C   sq   | |  _  |  j  d  k rX t d | ƒ |  _  |  j  d  k rX t d d j t ƒ ƒ ‚ qX n  t d |  j  ƒ |  _ d  S(   NR   sT   Cannot find CCP4 monomer library. Please define one of these environment variables: s   , t	   file_name(   R   R   R"   R   R   t   mon_lib_env_varst   read_cift   cif(   t   selfR   R   t   strictR   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   __init__4   s    	N(   R	   R
   R   t   FalseR*   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR#   2   s   c         C   s   t  d |  d d d g d | ƒ S(   NR   R   t   lists   mon_lib_list.cifR)   (   R#   (   R   R)   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   mon_lib_list_cifE   s    c         C   s>   y# t  d |  d d d g d | ƒ SWn t k
 r9 } d  SXd  S(   NR   R   R,   s   geostd_list.cifR)   (   R#   R   R   (   R   R)   t   e(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   geostd_list_cifK   s    c         C   sz   t  d |  d d g d | ƒ } | Sy" t  d |  d d g d | ƒ } Wn t k
 r] d  } n X| rv t | | ƒ } n  | S(   NR   R   s   ener_lib.cifR)   s   geostd_ener_lib.cif(   R#   R   R   t   merge_and_overwrite_cifs(   R   R)   t   mon_lib_enert   geostd_ener(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   mon_lib_ener_lib_cifT   s    			
t   trivial_html_tag_filterc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   t  t | ƒ ƒ |  _ d  S(   N(   t   itert   opent   f(   R(   R$   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR*   h   s    c         C   s-   x& |  j  j ƒ  } | d d k r | Sq d  S(   Ni    t   <(   R7   t   next(   R(   R    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR9   k   s    c         C   s   |  S(   N(    (   R(   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   __iter__q   s    (   R	   R
   R*   R9   R:   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR4   f   s   		c         C   s   t  j j d |  d t ƒ j ƒ  S(   Nt	   file_pathR)   (   t   iotbxR'   t   readerR+   t   model(   R$   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR&   t   s    c         #   s7  i  } | j  | ƒ }	 |	 d  k	 rx |	 j  | ƒ }
 |
 d  k	 rx x6 |
 j ƒ  D]% } | t | ƒ �  } | | | j <qI Wqx n  x¸| j ƒ  D]ª\ } } | j | ƒ r… | t | ƒ } | | | k rÆ q… n  | j  | ƒ } | d  k ró | d | ƒ } n  d  } x| D]\ ‰  } | j  d ˆ  ƒ } | d  k rŸt ‡  f d †  | j ƒ  Dƒ ƒ } t | ƒ d k r t | | ƒ } t t	 ˆ  ƒ } | j
 | t | ƒ �  ƒ q q n  | d  k r½| |  | ƒ } n  t | | ƒ } t t	 ˆ  ƒ } x- | j ƒ  D] } | j
 | t | ƒ �  ƒ qèWq W| d  k	 r/| | _ | Vq/q… q… Wd  S(   Nt   idt   _c         3   s4   |  ]* \ } } | j  d  ˆ  ƒ r | | f Vq d S(   R@   N(   t
   startswith(   t   .0t   kt   v(   t
   loop_block(    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pys	   <genexpr>“   s    	i    (   R   R   t   iterrowst   dictR?   t	   iteritemsRA   t   lent   getattrR   t   appendt
   cif_object(   t   source_infoRL   t	   list_namet   list_item_namet   data_prefixt   cif_type_innert   cif_type_outert   outer_mappingst   tabulated_itemst
   list_blockt   list_item_blockt   rowt	   obj_innert   keyt   cif_datat   item_idt	   obj_outert   lst_namet   rowst   dt   lstt   typ(    (   RE   sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   convert_list_blockw   sF    	 "!	c         c   sh   xa t  d |  d | d d d d d d d	 t j d
 t j d d d d d d d d  g ƒ D] } | VqU Wd  S(!   NRM   RL   RN   t	   comp_listRO   t
   _chem_compRP   t   comp_RQ   RR   RS   t   chem_comp_atomt	   atom_listt   chem_comp_bondt	   bond_listt   chem_comp_anglet
   angle_listt   chem_comp_tort   tor_listt   chem_comp_chirt	   chir_listt   chem_comp_plane_atomt   plane_atom_listt   chem_comp_rotamer_infot   rotamer_info_phil_str_list(   Rf   Rg   (   Rh   Ri   (   Rj   Rk   (   Rl   Rm   (   Rn   Ro   (   Rp   Rq   (   Rr   Rs   (   Rb   R   t	   chem_compt   comp_comp_id(   RM   RL   Ru   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   convert_comp_list¤   s"    			 c         c   sb   x[ t  d |  d | d d d d d d d	 t j d
 t j d d d d d d g ƒ D] } | VqO Wd  S(   NRM   RL   RN   t	   link_listRO   t
   _chem_linkRP   t   link_RQ   RR   RS   t   chem_link_bondRi   t   chem_link_angleRk   t   chem_link_torRm   t   chem_link_chirRo   t   chem_link_planet
   plane_list(   Rz   s	   bond_list(   R{   s
   angle_list(   R|   s   tor_list(   R}   s	   chir_list(   R~   R   (   Rb   R   t	   chem_linkt   link_link_id(   RM   RL   R�   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   convert_link_list¸   s    			c         c   se   x^ t  d |  d | d d d d d d d	 t j d
 t j d d d d d d d g ƒ D] } | VqR Wd  S(   NRM   RL   RN   t   mod_listRO   t	   _chem_modRP   t   mod_RQ   RR   RS   t   chem_mod_atomRg   t   chem_mod_bondRi   t   chem_mod_angleRk   t   chem_mod_torRm   t   chem_mod_chirRo   t   chem_mod_plane_atomRq   (   R†   s	   atom_list(   R‡   s	   bond_list(   Rˆ   s
   angle_list(   R‰   s   tor_list(   RŠ   s	   chir_list(   R‹   s   plane_atom_list(   Rb   R   t   chem_modt
   mod_mod_id(   RM   RL   R�   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   convert_mod_listÉ   s    			c         C   sL   |  j  | ƒ } | d  k r g  S| j  | ƒ } | d  k	 rD | j ƒ  Sg  Sd  S(   N(   R   R   RF   (   RL   t	   data_namet
   table_nameRZ   t   table(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   get_rowsÛ   s      
c         C   sß  | j  } |  d  k	 rÛ|  j  } xº| D]¯} | | } | j | ƒ } | rr d d GH| GHd d GH| GHd d GHn  t } t }	 | j d ƒ r� n | j d ƒ r¨ t }	 n t } | s½ t } n  |	 rHd „  }
 | j ƒ  } | sä q% n  g  } xÇ| D]P} | j d ƒ d k rqñ n  | j d ƒ d	 } | | k r7qñ n  | j	 | ƒ | j | ƒ } | j | ƒ } | snqñ n  | r”d
 d d | | d d f GHn  xª | j
 ƒ  D]œ } | råx1 | D]) } d | j d | d ƒ | | f GHq´WHn  xU t | j
 ƒ  ƒ D]A \ } } |
 | | | ƒ rø| j | ƒ | j | j ƒ  ƒ qøqøWq¡Wqñ Wnl| s…| j ƒ  } | sfq% n  g  } xE| D]} | j d ƒ d k r”qsn  | j d ƒ d	 } | | k r¹qsn  | j	 | ƒ | j | ƒ } | j | ƒ } | sðqsn  | rd d d | | d d f GHn  xe | j
 ƒ  D]W } | rgx1 | D]) } d | j d | d ƒ | | f GHq6WHn  | j | j ƒ  ƒ q#WqsWn/ | rªd d d d d f GH| GHn  | | | <| r% d d GH| GHd d GHq% q% Wn  | S(   Nt   +iP   t   -t   _listt   energyc         S   s¢   i d g d 6} | | k s" t  ‚ | | } d } xS |  D]K } | | k rQ q9 n  | | k rc q9 n  |  | | | k r9 | d 7} q9 q9 W| t | ƒ k rž t St S(   Ns   _lib_atom.typet	   _lib_atomi    i   (   t   AssertionErrorRI   t   TrueR+   (   t   row1t   row2RY   t
   match_keysRC   t   countt   k1(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt
   _row_matchú   s    
    t   .iÿÿÿÿi    s;   
%s
  Merging rows to CIF
    block "%s"
      loop "%s
%s
s       %-20s : %ss   %s.t    s:   
%s
  Adding rows to CIF
    block "%s"
      loop "%s
%s
s#   
%s
  Adding/replacing CIF block
%s(   R'   R   R   R+   t   endswithR™   t   keyst   findt   splitRK   RF   t   replacet	   enumeratet
   delete_rowt   add_rowt   values(   t   geostd_list_cif_objt   list_cift   verboset   mon_lib_cift
   geostd_cift   geostd_block_keyt   geostd_blockt   mon_lib_blockt   replace_blockt   merge_blockRŸ   t   geostd_loop_keyst   donet   geostd_loop_keyt   geostd_loopt   mon_lib_loopRš   RY   t   iR›   RW   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR0   â   s¼    		
					    %    
	c         C   sX   d } xF t  |  ƒ j d ƒ D]/ } | j d ƒ d k r= q n  | d | 7} q W| GHd  S(   NR¡   s   
R@   iÿÿÿÿs   %s
(   t   strR¥   R¤   (   R'   t   outlt   line(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   print_filtered_cifY  s    t   process_cif_mixinc           B   s   e  Z d d  „ Z d „  Z RS(   c         C   s˜   | d  k r d  } n
 d | } y |  j d | d | ƒ WnX t k
 rO ‚  nE t k
 r“ | d  k rq d } n  t d t | ƒ t ƒ  f ƒ ‚ n Xd  S(   Ns   file: RM   RL   s   (file name not available)s&   Error processing CIF file:
  %s
  (%s)(   R   t   convert_allt   KeyboardInterruptt	   ExceptionR   R   R   (   R(   RL   R$   RM   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   process_cif_objecte  s    	
   	c         C   ss   y t  d | ƒ } WnC t k
 r) ‚  n0 t k
 rX t d t | ƒ t ƒ  f ƒ ‚ n X|  j d | d | ƒ d  S(   NR$   s#   Error reading CIF file:
  %s
  (%s)RL   (   R&   RÁ   RÂ   R   R   R   RÃ   (   R(   R$   RL   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   process_cifs  s      N(   R	   R
   R   RÃ   RÄ   (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR¿   c  s   t   serverc           B   s˜   e  Z d d e d  „ Z e d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d d d	 „ Z d d d
 „ Z e d „ Z d „  Z RS(   c         C   s  | d  k r t ƒ  } n  | d  k r? t ƒ  } t | | ƒ } n  t j j t j j | j ƒ ƒ |  _ t j j t j j |  j ƒ d ƒ |  _	 i  |  _
 i  |  _ t j t ƒ |  _ i  |  _ g  |  _ i  |  _ g  |  _ i  |  _ |  j d d | j d | j d t ƒ i  |  _ |  j ƒ  d  S(   Nt   geostdRM   s   file: RL   t   skip_comp_list(   R   R-   R/   R0   R   R   t   dirnamet	   root_pathR   t   geostd_patht   deriv_list_dictt   comp_synonym_list_dictR   t   with_default_factoryRG   t   comp_synonym_atom_list_dictt   comp_comp_id_dictt   link_link_id_listt   link_link_id_dictt   mod_mod_id_listt   mod_mod_id_dictRÀ   R'   R™   t   comp_comp_id_mod_dictt   process_geostd_rna_dna(   R(   R¬   t   another_list_cifR­   R«   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR*     s*    	$'									c         C   s   |  j  d | ƒ |  j d | ƒ |  j d | ƒ | sO |  j d | d | ƒ n  |  j d | d | ƒ |  j d | d | ƒ d  S(   NRL   RM   (   t   convert_deriv_list_dictt   convert_comp_synonym_listt   convert_comp_synonym_atom_listRv   R‚   RŽ   (   R(   RM   RL   RÇ   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyRÀ   ˜  s    			c         C   sF   x? t  | d d ƒ D]+ } t j t | ƒ �  } | |  j | j <q Wd  S(   Nt
   deriv_listt   _chem_comp_deriv(   R’   R   t   chem_comp_derivRG   RË   t   comp_id(   R(   RL   RW   t   deriv(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR×   ¤  s    	c         C   s6   x/ t  | d d ƒ D] } | d |  j | d <q Wd  S(   Nt   comp_synonym_listt   _chem_comp_synonyms   _chem_comp_synonym.comp_ids&   _chem_comp_synonym.comp_alternative_id(   R’   RÌ   (   R(   RL   RW   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyRØ   ª  s    	c         C   sˆ   x� t  | d d ƒ D]m } t j t | ƒ �  } |  j | j } | j | | j <| j d k r |  j | j } | j | | j <q q Wd  S(   Nt   comp_synonym_atom_listt   _chem_comp_synonym_atomR¡   (	   R’   R   t   chem_comp_synonym_atomRG   RÎ   RÝ   t   atom_idt   atom_alternative_idt   comp_alternative_id(   R(   RL   RW   t   synonymR_   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyRÙ   °  s    	c         C   sS   xL t  d | d | ƒ D]5 } | j ƒ  | j } | |  j | j j ƒ  j ƒ  <q Wd  S(   NRM   RL   (   Rv   t   normalize_atom_ids_in_placeRt   RÏ   R?   t   stript   upper(   R(   RM   RL   Ru   Rt   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyRv   º  s
    	
	c         C   sG   x@ t  d | d | ƒ D]) } |  j j | ƒ | |  j | j j <q Wd  S(   NRM   RL   (   R‚   RÐ   RK   RÑ   R€   R?   (   R(   RM   RL   R�   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR‚   Á  s    	c         C   sG   x@ t  d | d | ƒ D]) } |  j j | ƒ | |  j | j j <q Wd  S(   NRM   RL   (   RŽ   RÒ   RK   RÓ   RŒ   R?   (   R(   RM   RL   R�   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyRŽ   Ç  s    	c         C   sk   t  j j |  j ƒ s d  SxK d d d d d d d d g D]+ } |  j d	 t  j j |  j d
 | ƒ ƒ q8 Wd  S(   Ns   chain_link_rna2p.cifs   chain_link_rna3p.cifs   mod_rna2p.cifs   mod_rna3p.cifs   mod_rna2p_pur.cifs   mod_rna3p_pur.cifs   mod_rna2p_pyr.cifs   mod_rna3p_pyr.cifR$   t   rna_dna(   R   R   t   isdirRÊ   RÄ   R   (   R(   R$   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyRÕ   Í  s     	c            sŒ  ˆ  j  ƒ  j ƒ  ‰  t ˆ  ƒ d k r( d  Sˆ j j ˆ  ƒ } | d  k	 rJ | Sˆ j j ˆ  d ƒ j  ƒ  j ƒ  ‰ ‡  ‡ ‡ ‡ f d †  } | ƒ  } | d  k rœ d  Sˆ j d | ƒ t ˆ ƒ d k rÓ ˆ j j ˆ ƒ } n d  } | d  k	 rõ | ˆ j ˆ  <n“ ˆ j j ˆ  ƒ } | d  k	 r8t ˆ ƒ d k rˆ| ˆ j ˆ <qˆnP d } t ˆ ƒ d k rcd t ˆ ƒ } n  t	 d t | ƒ t ˆ  ƒ | f ƒ ‚ | S(   Ni    R¡   c    	         sœ  x•d d g D]‡}  x~ˆ ˆ  g D]p} t  | ƒ d k r> q  n  t j j ˆ j | d j ƒ  ƒ } t j j | ƒ r¨d | } |  d k rWt j j | | ƒ g } ˆ d  k	 r-ˆ d k rÁ d } n/ ˆ d k rÚ d ˆ } n d sð t d	 ˆ ƒ ‚ d
 | | f } t j j | | ƒ t j j | | ƒ g } n  xu | D] } t j j	 | ƒ r4| Sq4Wq¨| j ƒ  } xB t j
 | ƒ D]. } | j ƒ  | k r‘qsn  t j j | | ƒ SWn  t j j ˆ j | d j ƒ  ƒ } t j j | ƒ r  | t k rûd | | f } n
 | d } |  d k r?t j j | | ƒ } t j j	 | ƒ r�| Sq�| j ƒ  } xB t j
 | ƒ D]. } | j ƒ  | k ryq[n  t j j | | ƒ SWq  q  Wq Wd  S(   Ni    i   s   data_%s.cifR   R¡   t   lowt   highs   _resolution_%ss   unknown resolution range : %ss   data_%s%s.cifs	   %s_%s.cifs   .cif(   s   med(   Rí   Rî   (   RI   R   R   R   RÊ   t   lowerRì   R   R˜   R   t   listdirRÉ   R   (	   t   i_passt   trial_comp_idt   dir_namet   cif_namet
   file_namest   rrt   rr_cif_nameR$   t   node(   RÝ   R   R(   t   std_comp_id(    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt	   find_fileæ  sR     "
 	 "
 R$   s   or %ss4   Monomer library file %s does not define comp_id %s%s(
   Ré   Rê   RI   R   RÏ   R   RÌ   RÄ   R   R   (   R(   RÝ   R   t   pH_rangeR    Rú   R$   t   or_std_comp_id(    (   RÝ   R   R(   Rù   sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   get_comp_comp_id_directÛ  s8     !-	 c      	   C   s¥   t  d | d | d | d t ƒ } | j d  k r4 d St | j d d  ƒ } | d  k	 rƒ |  j j | ƒ d  k	 rƒ |  j d | ƒ d  f S|  j d | j d | ƒ | j f S(	   Nt   residue_namet
   atom_namest#   translate_cns_dna_rna_residue_namest   return_mon_lib_dna_namet   d_aa_residue_nameRÝ   R   (   NN(	   R   R™   t   work_residue_nameR   RJ   t   atom_name_interpretationRÏ   R   Rý   (   R(   Rþ   Rÿ   R   R   t   rnpanit   d_aa_rn(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt-   get_comp_comp_id_and_atom_name_interpretation*  s    	 c         C   s>   |  j  d | ƒ } | d  k r" d  S| j d | d | d | ƒ S(   NRÝ   Rÿ   t
   sites_cartt   fine_sampling(   Rý   R   t   rotamer_iterator(   R(   RÝ   Rÿ   R  R	  Ru   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR
  B  s    	c   	      C   s©   d j  | j j f | ƒ } |  j j | ƒ } | d  k r¥ | } g  } x@ | D]8 } |  j | } | j d | ƒ } | j | j	 j ƒ qM W| | f } | |  j | <n  | S(   Nt   %t   mod(
   R   Rt   R?   RÔ   R   R   RÓ   t	   apply_modRK   RŒ   (	   R(   Ru   t   mod_idsRY   R    t   mod_comp_comp_idt   chem_mod_idst   mod_idR�   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   get_comp_comp_id_modO  s    N(   R	   R
   R   R+   R*   RÀ   R×   RØ   RÙ   Rv   R‚   RŽ   RÕ   Rý   R  R
  R  (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyRÅ   }  s   			
				O	t   ener_libc           B   sD   e  Z d d e d  „ Z e d „ Z d „  Z e d „ Z d „  Z RS(   c         C   s_   | d  k r t ƒ  } n  i  |  _ i  |  _ g  |  _ |  j d | d | j d | ƒ g  |  _ d  S(   NRM   RL   t   use_neutron_distances(   R   R3   t   lib_synonymt   lib_atomt   lib_vdwRÀ   R'   t   source_infos(   R(   t   ener_lib_cifRM   R  (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR*   _  s    				c         C   sY   | d  k	 r |  j j | ƒ n  |  j d | ƒ |  j d | d | ƒ |  j d | ƒ d  S(   NRL   R  (   R   R  RK   t   convert_lib_synonymt   convert_lib_atomt   convert_lib_vdw(   R(   RM   RL   R  (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyRÀ   o  s    c         C   sI   xB t  | d d ƒ D]. } t j t | ƒ �  } | j |  j | j <q Wd  S(   NR–   t   _lib_synonym(   R’   R   t   energy_lib_synonymRG   t	   atom_typeR  t   atom_alternative_type(   R(   RL   RW   t   syn(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR  x  s    c         C   sm   xf t  | d d ƒ D]R } t j t | ƒ �  } | rU | j d  k	 rU | j | _ qU n  | |  j | j <q Wd  S(   NR–   R—   (	   R’   R   t   energy_lib_atomRG   t   vdw_radius_neutronR   t
   vdw_radiusR  t   type(   R(   RL   R  RW   t   entry(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR  }  s    c         C   sF   x? t  | d d ƒ D]+ } t j t | ƒ �  } |  j j | ƒ q Wd  S(   NR–   t   _lib_vdw(   R’   R   t   energy_lib_vdwRG   R  RK   (   R(   RL   RW   t   vdw(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR  …  s    N(	   R	   R
   R   R+   R*   RÀ   R  R  R  (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyR  ]  s   		(,   t
   __future__R    t   mmtbx.monomer_libraryR   t	   iotbx.cifR<   t	   iotbx.pdbR   t   scitbx.python_utilsR   t   libtbx.str_utilsR   t   libtbx.utilsR   R   R   t   libtbx.load_envR   t   libtbx.pathR   t   RuntimeErrorR   R%   R   R"   t   objectR#   R   R+   R-   R/   R3   R4   R&   Rb   Rv   R‚   RŽ   R’   R0   R¾   R¿   RÅ   R  (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/monomer_library/server.pyt   <module>   s>   			-				w	
à