ó
•™xTc           @   st  d  d l  m Z d  d l m Z d  d l m Z d  d l Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z d  d l m Z d  d l Z d  d l Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e j j f d „  ƒ  YZ e j j d e e e g ƒ Z d d d d e d „ Z d d e d „ Z d d „ Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ e j  d „ Z! d „  Z" d S(   iÿÿÿÿ(   t   division(   t   sgtbx(   t   uctbxN(   t   Sorryt   Usaget   import_python_object(   t	   tokenizer(   t   Autot   unit_cell_convertersc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   t	   unit_cellc         C   s   |  j  S(   N(   t	   phil_type(   t   self(    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt   __str__   s    c         C   sH   t  j j d | ƒ } | d  k r% d  S| t k r5 t St j t | ƒ ƒ S(   Nt   words(   t   libtbxt   philt   str_from_wordst   NoneR   R   R	   t   str(   R   R   t   mastert   s(    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt
   from_words   s      c         C   sk   | d  k r t j d d ƒ g S| t k r> t j d d ƒ g Sg  | j ƒ  D] } t j d d | ƒ ^ qK S(   Nt   valueR   R   s   %.10g(   R   R   t   wordR   t
   parameters(   R   t   python_objectR   t   v(    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt   as_words   s    (   t   __name__t
   __module__R
   R   R   R   (    (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR   
   s   		t   space_group_convertersc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   t   space_groupc         C   s   |  j  S(   N(   R
   (   R   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR   "   s    c         C   sH   t  j j | ƒ } | d  k r" d  S| t k r2 t St j d t | ƒ ƒ S(   Nt   symbol(   R   R   R   R   R   R   t   space_group_infoR   (   R   R   R   R    (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR   $   s      c         C   s]   | d  k r t j d d ƒ g S| t k r> t j d d ƒ g St j d t | ƒ d d ƒ g S(   NR   R   R   t   quote_tokent   "(   R   R   R   R   R   (   R   R   R   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR   *   s
    (   R   R   R
   R   R   R   (    (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR      s   		t   atom_selection_convertersc           B   s    e  Z d  Z d „  Z d „  Z RS(   t   atom_selectionc         C   s   |  j  S(   N(   R
   (   R   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR   5   s    c         C   sN   t  | ƒ d k r5 | d } | j d  k	 r5 | j Sn  t j j j |  | | ƒ S(   Ni   i    (   t   lenR"   R   R   R   R   t   qstr_convertersR   (   R   R   R   R   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR   7   s
    

(   R   R   R
   R   R   (    (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR$   1   s   	t   additional_convertersc         C   s@   | d  k r t } n  t j j d |  d | d | d | d | ƒ S(   Nt   input_stringt   source_infot	   file_namet   converter_registryt   process_includes(   R   t   default_converter_registryR   R   t   parse(   R)   R*   R+   R,   R-   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR/   D   s    	s   .paramsc      	   C   s:   | d  k r t } n  t j j d |  d | d | d | ƒ S(   Nt   caller_file_namet   params_extensionR,   R-   (   R   R.   R   R   t   read_default(   R0   R1   R,   R-   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR2   S   s    	c         C   sF   | d  k r' d d  l } | j j } n  t j j d |  d | d | ƒ S(   Niÿÿÿÿt   argst   master_stringR/   (   R   t
   iotbx.philR   R/   R   t   process_command_line(   R3   R4   R/   t   iotbx(    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR6   `   s
    t   process_command_line_with_filesc           B   sk   e  Z d d d d d d d d d d d d d d d  „ Z d „  Z d „  Z d „  Z d „  Z d d „ Z RS(   c         C   s  | d  k	 s | d  k	 s t ‚ | d  k	 rf | d  k s< t ‚ d d  l } | j j d | d t ƒ } n  | d  k	 r¾ t | ƒ d k s� d | k r¾ t d | | j d d d	 d
 ƒ f ƒ ‚ q¾ n  | |  _	 | |  _
 | |  _ | |  _ | |  _ | |  _ |	 |  _ |
 |  _ | |  _ | |  _ | |  _ | |  _ i  |  _ i  |  _ t j j j d |  j	 ƒ } g  |  _ | j d | d |  ƒ |  _ d  S(   NiÿÿÿÿR)   R-   i    s   --helps   
%s

Full parameters:

%st   prefixs     t   attributes_leveli   t   master_philR3   t   custom_processor(   R   t   AssertionErrorR5   R   R/   t   TrueR&   R   t   as_strR   t   pdb_file_deft   reflection_file_deft   cif_file_deft   map_file_deft   seq_file_deft   pickle_file_deft   directory_deft   integer_deft	   float_deft   space_group_deft   unit_cell_deft   _type_countst   _cacheR   t   command_linet   argument_interpretert   unused_argst   process_and_fetcht   work(   R   R3   R;   t   master_phil_stringR@   RA   RC   RB   RD   RE   RF   RG   RH   RI   RJ   t   usage_stringR7   t   cai(    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt   __init__h   s:    +																c         C   s   |  j  j | d ƒ S(   Ni    (   RK   t   get(   R   t	   file_type(    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt   get_file_type_countš   s    c         C   s§  d  } t } t j j | ƒ r' | } nˆ | j d ƒ sc | j d ƒ sc | j d ƒ sc | j d ƒ r¯ d j | j d ƒ d  ƒ } | d k r¯ t j j | ƒ r¯ | } t } q¯ n  | d  k	 r�d d l	 m
 } | j t j j | ƒ d	 t ƒ} | j d  k	 rI| j |  j k r d
 |  j | j <n  |  j | j c d 7<| |  j | j <n  d  } | j d k ry|  j d  k	 ry|  j } nÒ | j d k r£|  j d  k	 r£|  j } n¨ | j d k rÍ|  j d  k	 rÍ|  j } n~ | j d k r÷|  j d  k	 r÷|  j } nT | j d k r!|  j d  k	 r!|  j } n* | j d k rK|  j d  k	 rK|  j } n  | d  k	 r‰| j } | ro| } n  t j j d | | f ƒ St Sn
t j j | ƒ rÑ|  j d  k	 ršt j j d |  j | f ƒ SnÉd  }	 }
 |  j d  k	 r0y t | ƒ }	 Wn t k
 r} q0Xt j j d |  j |	 f ƒ Sn  |  j d  k	 r…y t  | ƒ }
 Wn t k
 rd} q…Xt j j d |  j |
 f ƒ Sn  |  j! d  k	 rÛy t" j# | ƒ } Wn t$ k
 rºqÛXt j j d |  j! | f ƒ Sn  |  j% d  k	 rš| j& d ƒ d k ršyA t' g  | j d ƒ D] } t  | ƒ ^ qƒ } t( j) | ƒ } Wn t* k
 rSqšXt j j d |  j% d j g  | j+ ƒ  D] } d | ^ qyƒ f ƒ Sn  |  j, | ƒ S(   Ns   =hklf3s   =hklf4s   =amplitudess   =intensitiest    t   =iÿÿÿÿ(   t   file_readert"   raise_sorry_if_not_expected_formati    i   t   pdbt   hklt   ccp4_mapt   cift   seqt   pkls   %s=%ss   %s=%ds   %s=%gt   ,i   s   %g(-   R   t   Falset   ost   patht   isfilet   endswitht   joint   splitR>   R7   R[   t   any_filet   abspathRW   RK   RL   R+   R@   RA   RC   RB   RD   RE   R   R   R/   t   isdirRF   RG   t   intt
   ValueErrorRH   t   floatRI   R   R!   t   RuntimeErrorRJ   t   countt   tupleR   R	   t	   ExceptionR   t   process_other(   R   t   argt   file_argt   is_shelx_filet   base_argR[   t   ft   file_def_nameR+   t	   int_valuet   float_valuet   eR!   t   xt	   uc_paramsR	   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt   __call__�   sŒ    				 
  $.4c         C   s   |  j  j | ƒ t S(   N(   RO   t   appendR>   (   R   Rv   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyRu   ì   s    c         C   s   |  j  j | d  ƒ S(   N(   RL   RV   R   (   R   R+   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt   get_cached_fileð   s    c         C   sl   |  j  j | ƒ } | d  k rL d d l m } | j | d | d t ƒ} n | d  k	 rh | j | ƒ n  | S(   Niÿÿÿÿ(   R[   t
   force_typet   raise_sorry_if_errors(   RL   RV   R   R7   R[   Rk   R>   t   assert_file_type(   R   R+   R„   t
   input_fileR[   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt   get_fileó   s    N(	   R   R   R   RU   RX   R�   Ru   Rƒ   Rˆ   (    (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR8   g   s&   #		O		t   setup_app_genericc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s’   t  | ƒ } | d  k r+ t d | ƒ ‚ n  t | d ƒ rF | ƒ  } n? t | t ƒ rj t | d t ƒ} n t | ƒ j	 d k s… t
 ‚ | |  _ d  S(   Ns8   Couldn't start program using specified phil object (%s)!R�   R-   t   scope(   t   load_from_cache_if_possibleR   R   t   hasattrt
   isinstanceR   R/   R>   t   typeR   R=   R;   (   R   t   master_phil_pathR;   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyRU      s    c         C   sR   t  d | d |  j d d d d d g d d  d	 d
 ƒ \ } } } |  j | | | f S(   NR3   R;   t   command_namet   phenixt
   usage_optss   [model.pdb]s
   [data.mtz]t   app_optionst
   home_scopeRY   (   t   parse_command_line_phil_argsR;   R   (   R   R3   t   working_philt   optionsRO   (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR�     s    	(   R   R   RU   R�   (    (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR‰   ÿ   s   	c         C   sÀ  g  } g  } | j  d | ƒ }	 xÿ |  D]÷ }
 t j j |
 ƒ r� y  t d |
 ƒ } | j | ƒ Wqt k
 r‹ } | j t j j |
 ƒ ƒ qXq% |
 d k r |
 j d ƒ r y |	 j	 d |
 ƒ } Wn, t
 k
 rï | d |
 IJ| j |
 ƒ qX| j | ƒ q% |
 d k r% | j |
 ƒ q% q% Wy | j d | d t ƒ } WnC t k
 r�} | d	 IJ| t | ƒ IJ| d
 IJ| j ƒ  } n X| d  k	 s”t ‚ d |  k r­| j ƒ  n  d  } | | | f S(   NR”   R+   RY   t   -Rv   s/   %s does not appear to be a parameter definitiont   sourcest   skip_incompatible_objectss;   Error incorporating parameters from user-specified file(s):s/   Will revert to default parameters for this run.s   --debug(   t!   command_line_argument_interpreterRe   Rf   Rg   R/   R‚   Rt   Rl   t
   startswitht   processRq   t   fetchR>   R   R   R=   t   show(   R3   R;   R�   R’   R“   R”   t   logR™   RO   t   interpreterRv   t	   user_philR~   t   paramsR–   t   cmdline_opts(    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR•     sB    		 

c      	   C   sy   d d  l  } t j j t | j j ƒ d d |  ƒ } t j j | ƒ rS t d | ƒ St	 d |  d d d d d	 d ƒ j
 Sd  S(
   Niÿÿÿÿt
   phil_caches   %s.philR+   t   import_patht   error_prefixRY   t   target_must_bet	   where_str(   t   libtbx.load_envRe   Rf   Ri   t   abst   envt
   build_patht   existsR/   R   t   object(   t	   phil_pathR   t	   full_path(    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyR‹   >  s    (#   t
   __future__R    t   cctbxR   R   t   libtbx.phil.command_lineR   t   libtbx.utilsR   R   R   t   libtbx.philR   R   t   sysRe   R¯   R   R   R   R'   R$   t   extended_converter_registryR.   R   Rd   R/   R>   R2   R6   R8   R‰   t   stdoutR•   R‹   (    (    (    s8   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/phil.pyt   <module>   s6   	˜%