ó
é™xTc           @   s�  d  d l  m Z d  d l m Z m Z m Z d  d l m Z m Z d  d l m	 Z	 d  d l
 m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z e j j d ƒ Z d e f d	 „  ƒ  YZ e d
 „ Z d „  Z e d „ Z e d „ Z e d „ Z e e e e e e d „ Z e d „ Z e j d ƒ Z  e d „ Z! e d „ Z" e e d d „ Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d S(   iÿÿÿÿ(   t   division(   t   easy_picklet	   str_utilst
   smart_open(   t   adopt_init_argst   Auto(   t   gui_objects(   t   SorryNsx   
  job_title = None
    .type = str
    .input_size = 400
    .help = Job title in PHENIX GUI, not used on command line
t   indexc           B   so  e  Z d8 d8 e d  „ Z e d „ Z d „  Z d „  Z e d „ Z	 d „  Z
 d „  Z d „  Z d „  Z e d	 „ Z d8 d
 „ Z d8 d e e d8 d „ Z d8 d „ Z d8 d „ Z d „  Z e d „ Z d „  Z d8 d „ Z e d „ Z d8 d8 d8 d „ Z d „  Z d „  Z d „  Z d8 d „ Z d „  Z d „  Z d „  Z d „  Z  d „  Z! e e e d „ Z" d „  Z# d  „  Z$ d! „  Z% d" „  Z& d# „  Z' d$ „  Z( d% „  Z) d& „  Z* d' „  Z+ d( „  Z, d8 d8 d8 e e d8 d) „ Z- d* „  Z. d+ „  Z/ d8 e d, „ Z0 d8 d8 d8 d- „ Z1 d. „  Z2 d/ „  Z3 d0 „  Z4 d1 „  Z5 d2 „  Z6 e d8 d3 „ Z7 d8 d4 „ Z8 d5 „  Z9 d8 d9 d6 „ Z: d7 „  Z; RS(:   c         C   sÇ   t  |  t ƒ  ƒ g  |  _ i  |  _ i  |  _ i  |  _ i  |  _ i  |  _ i  |  _ g  |  _	 g  |  _
 t |  _ d  |  _ t j ƒ  |  _ d  |  _ | d  k r© t j j |  _ n  |  j | | ƒ |  j ƒ  d  S(   N(   R   t   localst   _statest   _full_path_indext   _full_text_indext   _template_indext   _multiple_scopest   _multiple_defst   _expert_levelst   _input_filest   _hiddent   Falset   _phil_has_changedt   Nonet   _output_dir_pathR   t   StringIOt   _logt   _prefixt   libtbxt   philt   parset
   setup_philt   parse_styles(   t   selft   master_philt   working_philR   t	   fetch_new(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   __init__   s$    												c         C   sq   | d  k r! |  j j ƒ  |  _ n* | rB |  j j d | ƒ |  _ n	 | |  _ |  j d t ƒ |  j j ƒ  |  _ d  S(   Nt   sourcet   collect_multiple(   R   R    t   fetchR!   t   build_indext   Truet   extractt   params(   R   R!   R"   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyR   -   s    	c         C   s.   | d  k s! t | t ƒ s! t ‚ | |  _ d  S(   N(   R   t
   isinstancet   strt   AssertionErrorR   (   R   t   prefix(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt
   set_prefix7   s    !c         C   s5   |  j  d  k r | S| j d ƒ r- |  j  | S| Sd  S(   Nt   .(   R   R   t
   startswith(   R   t	   phil_path(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_full_path;   s
    c         C   s:   i  |  _  i  |  _ i  |  _ | r6 i  |  _ i  |  _ n  d  S(   N(   R   R   R   R   R   (   R   t   clear_multiple(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   clear_indexC   s    				c         C   s2   x+ t  |  j ƒ d k r- |  j j ƒ  } ~ q Wd  S(   Ni    (   t   lenR
   t   pop(   R   t
   saved_phil(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   clear_state_stackK   s    c         C   s*   |  j  j |  j j ƒ  ƒ t |  j  ƒ d S(   Ni   (   R
   t   appendR!   R&   R6   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt
   push_stateP   s    c         C   s9   t  |  j ƒ d k r5 |  j j ƒ  |  _ |  j ƒ  t St S(   Ni    (   R6   R
   R7   R!   t   rebuild_indexR(   R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt	   pop_stateT   s
    
c         C   sR   | d k s t  ‚ t |  j ƒ d k r* n$ |  j | j ƒ  |  _ |  j ƒ  t St S(   Ni    (   R-   R6   R
   R&   R!   R<   R(   R   (   R   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt	   set_state[   s    
c         C   si   |  j  d | ƒ t d |  j d |  j d |  j d |  j d |  j d |  j d | d	 |  j d
 |  j	 ƒ 	d  S(   NR4   t   phil_objectt
   path_indext
   text_indext   template_indext   multiple_scopest   multiple_defsR%   t   expert_levelst   input_files(
   R5   t   index_phil_objectsR!   R   R   R   R   R   R   R   (   R   R%   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyR'   e   s    						c         C   s,   i  |  _  t d |  j d |  j  d | ƒ d  S(   NR?   R@   t
   only_scope(   R   t   reindex_phil_objectsR!   (   R   RH   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyR<   q   s    		t    c         C   sJ  | d  k r g  } n  | d k r: |  j d | d t ƒ n  |  j j d |  j g t | ƒ ƒ } | r} |  j j d | ƒ } n | } | d  k	 r« t d | d | d d	 ƒ n  y t	 j
 | d
 ƒ }	 Wn% t k
 rè }
 t t |
 ƒ ƒ ‚ n; X| d  k	 r	|	 j d | ƒ n  | j d |	 ƒ |	 j ƒ  | rFd | } t j | |  ƒ n  d  S(   NRJ   t   phil_stringR<   t   sourcesR$   R?   t	   path_namet   sub_namet   LIBTBX_BASE_DIRt   ws   LIBTBX_BASE_DIR = "%s"
t   outs   %s_cache.pkl(   R   t
   merge_philR   R    R&   R!   t   listt
   fetch_difft   substitute_directory_nameR   t   for_writingt   IOErrorR   R,   t   writet   showt   closeR   t   dump(   R   t	   file_nameRL   t
   extra_philt	   diff_onlyt
   save_statet   replace_patht
   final_philt   output_philt   ft   et
   cache_file(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   save_param_filew   s2    	


c         C   s8   | d  k r g  } n  |  j j d |  j g | ƒ } | S(   NRL   (   R   R    R&   R!   (   R   RL   t   new_phil(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_combined_philš   s    	c         C   s    |  j  d | d t d | ƒ d  S(   NR\   R^   R`   (   Rf   R(   (   R   R\   R`   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt	   save_diff    s    c         C   s   |  j  j d |  j ƒ S(   NR$   (   R    RT   R!   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_diff¥   s    c         C   s*   | r t  j t  j |  ƒ ƒ S|  j ƒ  Sd  S(   N(   R   t   loadst   dumpst   copy_master(   R   t   preserve_changes(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   copy¨   s    c         C   s   t  d |  j d |  j ƒ S(   NR    R   (   R   R    R   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRm   ®   s    c         C   sg   | d  k r. |  j d  k	 r' |  j } q7 t Sn	 | |  _ |  j ƒ  |  j j d | ƒ |  _ |  j ƒ  d  S(   Nt   python_object(   R   R*   R   R;   R    t   formatR!   R<   (   R   Rp   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   update_from_python³   s    	
c         C   se   |  j  d  k	 s t ‚ | r( |  j  j ƒ  S|  j s@ |  j d  k r^ |  j  j ƒ  |  _ t |  _ n  |  j S(   N(   R!   R   R-   R)   R   R*   R   (   R   t	   make_copy(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_python_object¿   s    c         C   sÃ   | | | g j  d  ƒ d k  s$ t ‚ yg | d  k ru | d  k	 rT |  j d | ƒ } qu | d  k	 ru |  j | ƒ } qu n  |  j j d | ƒ } Wn' t k
 r¡ ‚  n t k
 r´ } d  SX| j ƒ  Sd  S(   Ni   R\   R$   (	   t   countR   R-   R   R    R&   t   KeyboardInterruptt	   ExceptionR)   (   R   R?   R\   RK   Rg   Rd   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_python_from_otherÈ   s    $c         C   s   |  j  d | ƒ S(   NR?   (   t   get_python_from_params(   R   R?   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRy   Ù   s    c         C   s   |  j  d | ƒ S(   NR\   (   Rx   (   R   R\   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_python_from_fileÜ   s    c         C   s   |  j  d | ƒ S(   NRK   (   Rx   (   R   RK   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_python_from_stringß   s    c         C   s    |  j  | ƒ } | |  j k r˜ |  j | } t | t ƒ r‘ | d  k	 r‘ g  } x> | D]6 } x- | j D]" } | | k rc | j | ƒ qc qc WqS W| S| Sn d  Sd  S(   N(   R3   R   R+   RS   R   t   objectsR:   (   R   t
   scope_namet   phil_parentt   indexed_phil_objectst   child_objectst   object1t   object2(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_scope_by_nameå   s    c         C   s4   g  } x' |  j  j D] } | j | j ƒ  ƒ q W| S(   N(   R!   R|   R:   t	   full_path(   R   t   pathsR?   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_root_scope_namesõ   s    c         C   sF   |  j  | ƒ } |  j j | ƒ } d  } | d  k	 rB | j ƒ  } n  | S(   N(   R3   R   t   getR   t   customized_copy(   R   t	   phil_namet   templatet   new_copy(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_template_copyû   s    c         C   s�   |  j  | ƒ } |  j | ƒ } t | t ƒ rm g  } x3 | D]+ } | j ƒ  } | j ƒ  } | j | ƒ q: W| S| d  k	 r‰ | j ƒ  } | Sd  S(   N(   R3   Rƒ   R+   RS   R)   Rq   R:   R   (   R   t   def_nameR‰   t   phil_objectst   valst   objt   python_valuet
   phil_value(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_validated_param  s    c         C   s¡   | d  k r d  S|  j | ƒ } | } t | t ƒ rA | d } n | d  k rQ d  S| j d | d d ƒ } | j d  k	 rŠ t | j ƒ ‚ n t | j j	 ƒ  ƒ Sd  S(   Ni    t   input_stringt   source_infot   GUI(
   R   Rƒ   R+   RS   t   validate_and_formatt   error_messageRw   R,   t	   formattedR)   (   R   R�   t	   str_valuet   indexed_deft   dt   proxy(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   validate_format  s    c         C   ss   |  j  j | d  ƒ } | d  k	 r> | d } | d  k	 r> | Sn  |  j | ƒ } t | t ƒ ri | d } n  t | ƒ S(   Ni    (   R   R‡   R   Rƒ   R+   RS   t   get_standard_phil_label(   R   R�   t	   phil_textt   labelt   scope(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt	   get_label"  s    
c         C   s,  | j  ƒ  } x9 | D]1 } t j d | ƒ d  k	 r t d | ƒ ‚ q q Wg  | D] } t j | t j ƒ ^ qO } g  } t | ƒ }	 x£|  j j	 ƒ  D]’\ }
 } | \ } } } } |
 |  j
 k s’ | rÌ q’ n  d } | r.|
 j  d ƒ d } x| D]5 } | j | ƒ d  k r| rò Pqqò n  | d 7} qò WnÈ | rwx¿ | D]5 } | j | ƒ d  k rf| r;Pqfq;n  | d 7} q;Wn x| | D]t } | j | ƒ d  k rè| j |
 ƒ d  k rè| j | ƒ d  k rè| j | ƒ d  k rè| r~Pqèq~n  | d 7} q~W| r| |	 k s| d k r’ | j |
 ƒ q’ q’ W| S(   Ns   [^a-zA-Z\.\_]s   Invalid search string '%s'.i    R0   iÿÿÿÿi   (   t   splitt   ret   searchR   R   t   compilet   IR6   R   t	   iteritemsR   R:   (   R   t   search_textt	   match_allt   labels_onlyt   phil_name_onlyt   fieldst   wordt
   regex_listt   matching_defst   n_wordsR‰   R    R¡   t   captiont   helpt   is_deft   n_foundt   phil_name_tmpt   regex(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   search_phil_text-  sN    (   c         C   sw   |  j  | ƒ } t j ƒ  } |  j | ƒ } t | t ƒ r] x1 | D] } | j d | ƒ q@ Wn | j d | ƒ | j ƒ  S(   NRQ   (   R3   R   R   Rƒ   R+   RS   RY   t   getvalue(   R   R}   t   _phil_stringt   scope_objectsR?   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_scope_philX  s    c         C   sI   |  j  | ƒ } | |  j k rA |  j | \ } } } } t | ƒ Sd  Sd  S(   N(   R3   R   R,   R   (   R   R‰   R¡   R³   R´   Rµ   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_phil_help_stringc  s
    
c         C   s"   |  j  | ƒ } |  j j | d ƒ S(   Ni    (   R3   R   R‡   (   R   R‰   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_expert_levelk  s    c         C   si  g  } x\|  j  D]Q} |  j | ƒ } |  j | ƒ } t | t ƒ rÜ x| D]‹ } | j s_ t ‚ | j ƒ  } | d  k	 rJ | t	 k	 rJ t | t ƒ r¼ x= | D] } | j
 | | | f ƒ q™ WqÕ | j
 | | | f ƒ qJ qJ Wq | j së t ‚ | j ƒ  } | d  k	 r | t	 k	 r t | t ƒ rHx= | D] } | j
 | | | f ƒ q%Wqa| j
 | | | f ƒ q q W| S(   N(   R   Rƒ   R£   R+   RS   t   is_definitionR-   R)   R   R   R:   (   R   t   filesR�   R?   R¡   t   def_copyR\   t   fn(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_input_fileso  s*     c         C   s
   |  j  ƒ  S(   N(   t   get_job_title(   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_run_titleŒ  s    c         C   sn   xg |  j  j ƒ  D]V } | d k s@ | j d ƒ s@ | j d ƒ r |  j  | } | j s\ t ‚ | j ƒ  Sq Wd  S(   Nt   titlet	   job_titles   .titles
   .job_title(   s   titleRÈ   (   R   t   keyst   endswithRÀ   R-   R)   R   (   R   R�   t   phil_def(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRÅ   �  s    c         C   s   |  j  |  j ƒ j ƒ  S(   N(   Rƒ   R   R)   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_output_dir˜  s    c         C   s<   |  j  | ƒ } t | t ƒ r" t S| j j d k r8 t St S(   Nt   stringst   intst   floats(   RÍ   RÎ   RÏ   (   Rƒ   R+   RS   R   t   typet	   phil_typeR(   (   R   t   phil_scope_nameR?   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   is_list_type›  s    c         C   s    t  d |  j d | d | ƒ d  S(   NR?   RM   RN   (   RU   R!   (   R   RM   RN   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   substitute_directory¥  s    	c         C   s8   |  j  } t | | g ƒ |  j j d | g ƒ |  _  d  S(   NRL   (   R!   t   delete_phil_objectsR    R&   (   R   RÒ   t   old_phil(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   reset_scope«  s    	c         C   sô  | | | g j  d  ƒ d k s$ t ‚ | d  k	 rB |  j | ƒ } n! | d  k	 rc |  j d | ƒ } n  | d  k	 rð|  j } | rg  } t | | ƒ g  }	 x< | D]4 }
 |
 |  j k sÂ |
 |  j k rž |	 j |
 ƒ qž qž Wt	 |	 ƒ d k rt
 | |	 d | ƒqn  |  j d ƒ d  } t ru| j | ƒ } |  j j | ƒ } | j d | ƒ } t d |  j d | d	 | ƒ |  j } n |  j j d
 | | g ƒ } | d  k	 rÎ| |  _ | rÛ|  j d ƒ |  j d | ƒ qÛn |  j d ƒ t |  _ d  |  _ n  d  S(   Ni   R\   i    RH   s   Fetching new working philR$   t   current_philt	   new_scopeR}   RL   s   rebuilding indexs#   *** ERROR: new phil object is empty(   Ru   R   R-   R   R!   t   get_all_path_namesR   R   R:   R6   RÕ   t   log2R   R‡   R    R&   t   find_and_replace_scopeR<   t   logR(   R   R*   (   R   R?   RK   t	   phil_filet   overwrite_paramsR<   RH   RÖ   t	   new_pathst   redundant_pathst   pathRg   RÙ   t   scope_mastert   fetched_scope(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRR   °  sH    $				c         C   s   t  |  j | g ƒ d  S(   N(   RÕ   R!   (   R   t
   phil_scope(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   erase_scopeà  s    c         C   s  t  j j | ƒ s% t d | ƒ ‚ n  y |  j d | ƒ } Wn? t k
 rQ ‚  n, t k
 r| } |  j | ƒ t d ƒ ‚ n Xy |  j j	 d | ƒ } Wn` t k
 r¬ ‚  nM t k
 rø } |  j | ƒ |  j t
 | ƒ j ƒ  ƒ t d d d ƒ ‚ n X|  j d | ƒ d  S(	   Ns,   The path %s does not exist or is not a file.R\   s2   This parameter file could not be parsed correctly.R$   s8   This file contains invalid parameters for this program. s2   Check the manual for a list of allowed parameters s   for each module.R?   (   t   osRâ   t   isfileR   R   Rv   Rw   RÝ   R    R&   t   opent   readRR   (   R   R\   R?   Rd   Rg   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   merge_param_fileä  s(    c         C   sª   y( |  j  | ƒ } |  j j d | ƒ } Wne t k
 r> ‚  nR t k
 r� } t | ƒ GHd GHt | ƒ GH| r‰ t d d d d ƒ ‚ q� ‚  n X|  j d | d | ƒ d  S(	   NR$   s   bad string:s7   An unknown error occurred parsing internal parameters. s9   This is probably a bug; if the program was launched with s:   the argument --debug, further information will be printed s   to the console.R?   RH   (   R   R    R&   Rv   Rw   R,   R   RR   (   R   RK   RH   t   raise_sorryR?   Rg   Rd   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   updateû  s    c         C   s¨   | | | g j  d  ƒ d k s$ t ‚ | r< |  j | ƒ } n | rZ t j j d | ƒ } n  |  j j | ƒ |  j j d |  j	 g ƒ |  _	 |  j
 ƒ  |  j	 j ƒ  |  _ d  S(   Ni   R\   RL   (   Ru   R   R-   R   R   R   R    t   adopt_scopeR&   R!   R<   R)   R*   (   R   R?   RK   RÞ   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt
   adopt_phil  s    $
c         C   s@   g  } x3 | D]+ } |  j  | ƒ d  k r | j | ƒ q q W| S(   N(   Rƒ   R   R:   (   R   t
   phil_namest   missing_scopesR‰   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   check_scopes  s
    c         C   s   |  j  j | d ƒ d  S(   Ns   
(   R   RX   (   R   t   message(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRÝ   "  s    c         C   s`   t  j d ƒ } t j j | j j ƒ } |  j j d | j j	 | | j
 t | ƒ j ƒ  f ƒ d  S(   Ni   s   %s (%s:%d): %s
(   t   syst	   _getframeRç   Râ   t   basenamet   f_codet   co_filenameR   RX   t   co_namet   f_linenoR,   t   strip(   R   Ró   Rc   t   filename(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRÛ   %  s    c         C   sS   i  |  _  i  |  _ i  |  _ i  |  _ i  |  _ t j d ƒ |  _ |  j |  j	 ƒ d  S(   Nt   settings(
   t   stylet   _event_handlerst   _update_handlerst
   _rendererst   _file_type_mappingsR   t   menu_hierarchyt
   _menu_treet   generate_gui_componentsR!   (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyR   -  s    					c         C   s   t  j | ƒ S(   N(   R   Rþ   (   R   t   style_string(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   create_style6  s    c   
      C   s¨  | } | s |  j  } n  | j d k  r+ d  Sxv| j D]k} d  } | j ƒ  } | j d  k	 rh| j d k rh|  j | j ƒ } | j r© | j j	 d k r© d GHd | GHn  | |  j | <| j
 rÒ |  j j | ƒ n  | j rç | |  _ n  | j d  k	 rd | GH| j |  j | <n | j r+d |  j | <n  | j d  k	 rM| j |  j | <n  | j d  k	 ro| j |  j | <n  | j rØ| j r“| j d k r“qe| j rÈ| j | j ƒ | j | j ƒ j | ƒ qe| j | ƒ q{| j r{| j rü| j d k rüqe| j rF| j | j ƒ | j | j ƒ }	 |	 j | ƒ |	 j | ƒ } qe| j | ƒ | j | ƒ } q{n t j ƒ  |  j | <| j sš|  j | | | ƒ n  t  } q5 Wd  S(   Ni    iÿÿÿÿR,   s5   WARNING: deprecated 'str' type with 'selection' styles      name: %ss   OnUpdate is deprecated (%s)t   auto_extract_hkl_params(!   R  t   is_templateR|   R   R„   Rþ   R  t	   selectionRÐ   RÑ   t   hiddenR   R:   t
   output_dirR   t   OnUpdateR   t   process_hklRÿ   t   OnChanget   rendererR  t	   menu_itemt   multiplet   parent_submenut   add_submenut   get_submenut   add_menu_itemt   submenuR   RÀ   R  R   (
   R   Rå   t
   in_submenut   current_menut   use_submenut   objectt	   next_menut   full_object_pathRþ   R  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyR  9  sb    						
			c         C   s(   | |  j  k r |  j  | St j  ƒ  Sd  S(   N(   Rþ   R   (   R   R}   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_scope_stylep  s    c         C   s   |  j  S(   N(   R  (   R   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_menu_dbv  s    c         C   s^  | |  j  k r |  j  | Sg  } x|  j j ƒ  D]\ } } g  } | j d  k	 r0 | j d ƒ } | | k r7| j s0 | j s0 | | k r� q0 n  |  j | ƒ } t	 | t
 ƒ r» | d } n  t | ƒ }	 | j }
 | j sô |
 j sô | j j d k rý d  } n d } | j r|	 } n  | j | j ƒ  |	 | f ƒ q7q0 q0 Wt j | | ƒ } | |  j  | <| S(   Nt	   file_typei    RÍ   i   (   R  Rþ   R©   R   R   t   get_listt   no_mapt   new_fileRƒ   R+   RS   RŸ   t   primary_parent_scopeR  RÐ   RÑ   t   file_type_defaultR:   R„   R   t   file_type_map(   R   R   t   default_labelt   exclude_paramst
   param_infoRM   t	   def_stylet	   def_typesR?   R¡   t   parent_scopeRu   t   type_map(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_file_type_mapy  s4    				&c         C   s�   g  } x6 |  j  j ƒ  D]% \ } } | j r | j | ƒ q q Wt | ƒ d k rU d  St | ƒ d k rƒ t d d j | ƒ ƒ ‚ n | d Sd  S(   Ni    i   s!   Multiple seq_file definitions: %st    (   Rþ   R©   t   seq_fileR:   R6   R   t   RuntimeErrort   join(   R   R…   RM   R*  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_seq_file_def_name—  s    	N(    (<   t   __name__t
   __module__R   R   R#   R   R/   R3   R(   R5   R9   R;   R=   R>   R'   R<   Rf   Rh   Ri   Rj   Ro   Rm   Rr   Rt   Rx   Ry   Rz   R{   Rƒ   R†   RŒ   R“   Rž   R£   R¹   R½   R¾   R¿   RÄ   RÆ   RÅ   RÌ   RÓ   RÔ   R×   RR   Ræ   Rë   Rí   Rï   Rò   RÝ   RÛ   R   R  R  R  R  R.  R3  (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyR      sŒ   
						
											(									
		*								6	c         C   sA  t  | t ƒ s t ‚ d } x| t |  j ƒ k  r<|  j | j ƒ  } | d  k	 r— | | k p� | j | d ƒ p� | j | d ƒ s— | d 7} q q— n  |  j | j d k rº | d 7} q | | k rÓ |  j | =q t	 |  j | d ƒ r/xC | D]8 } | j | ƒ rð t
 d |  j | d | d | ƒ qð qð Wn  | d 7} q Wd  S(   Ni    R0   i   R|   RØ   t   phil_path_listRH   (   R+   RS   R-   R6   R|   R„   R   R1   R	  t   hasattrRÕ   (   RØ   R6  RH   t   iR„   RM   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRÕ   ¥  s*    
	c         C   sû   d } xî | t  |  j ƒ k  rö |  j | j ƒ  } | | k r³ | j |  ƒ | } xI | t  |  j ƒ k  r› |  j | j ƒ  | k rŽ |  j | =qS | d 7} qS W| j |  j | | +Pn6 | j | d ƒ ré t d |  j | d | d | ƒ n  | d 7} q	 Wd  S(   Ni    i   R0   RØ   RÙ   R}   (   R6   R|   R„   t   change_primary_parent_scopeR1   RÜ   (   RØ   RÙ   R}   R8  R„   t   j(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRÜ   ¾  s$    
c         C   s   |  j  d | ƒ } t | | ƒ S(   NR$   (   RT   t   _collect_unique_paths(   R    Rg   t   multiple_onlyt	   phil_diff(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   collect_redundant_pathsÔ  s    c         C   sš   g  } |  j  r% | j |  j ƒ  ƒ nq |  j rp xe |  j D]1 } | j ƒ  | k r8 | j t | | ƒ ƒ q8 q8 Wn& | r– |  j r– | j |  j ƒ  ƒ n  | S(   N(   R  R:   R„   t   is_scopeR|   t   extendR;  RÀ   (   R?   R<  R…   R  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyR;  Ø  s    		 c         C   sn   | d  k r g  } n  |  j ƒ  } | | k r= | j | ƒ n  |  j rj x! |  j D] } t | | ƒ qP Wn  d  S(   N(   R   R„   R:   R?  R|   RÚ   (   R?   R…   R„   R  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRÚ   ä  s    		c
         C   s­  |  j  ƒ  }
 | d  k	 rl |  j d  k	 r7 |  j | |
 <ql d j |
 j d ƒ d  ƒ } | j | d ƒ | |
 <n  |  j d k r¡ |  | |
 <|  j d k r˜ d  St } n | r´ |  | |
 <n  |  j t k r7| r|  j	 rë | d  k	 rë t | |
 <q| d  k	 rt | |
 <qn  |
 | k r'| |
 j
 |  ƒ qA|  g | |
 <n
 |  | |
 <|  j rl|  j d  k rlt d |
 ƒ ‚ n  d  } | d  k	 râ|  j d  k sœ|  j d k rât |  ƒ } | t |  j ƒ t |  j ƒ |  j f } | | |
 <| } n  |  j	 rEx» |  j D]I } t d | d | d | d	 | d
 | d | d | d | d | d |	 ƒ 
qõWnd |	 d  k	 r©|  j j d k r©|  j } | d  k	 r¦| j ƒ  } d | k r£|	 j
 |
 ƒ q£q¦q©n  d  S(   NR0   iÿÿÿÿi    s!   Type required for parameter '%s'.i   R?   R@   RA   RB   RC   RD   R%   t   in_templateRE   RF   Râ   RÍ   t
   input_file(   s   paths   strings(   R„   R   t   expert_levelR2  R¤   R‡   R	  R(   R  R?  R:   RÀ   RÐ   R1  RŸ   R,   R³   R´   R|   RG   RÑ   Rþ   (   R?   R@   RA   RB   RC   RD   R%   RA  RE   RF   R„   R,  t   text_index_for_child_objectsR¡   t   text_fieldsR  Rþ   t   style_words(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRG   î  sh    

	

			c         C   s™   |  j  d k  r d  S|  j ƒ  } |  j t k r^ | | k rN | | j |  ƒ qh |  g | | <n
 |  | | <|  j r• x! |  j D] } t | | ƒ q{ Wn  d  S(   Ni    (   R	  R„   R  R(   R:   R?  R|   RI   (   R?   R@   RH   R„   R  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRI   1  s    
	s   [^A-Za-z0-9_]c         C   s{  t  j | ƒ s t ‚ | r- d | d } n | } | j d ƒ sQ | j d ƒ r^ | d  } n  x|  j D]} | j rc| j d  k rŸ t d | j	 ƒ  ƒ ‚ n  | j j
 d k rs| j ƒ  } | d  k sh | t k rÛ qh n  t | t ƒ s-t | t ƒ rt | ƒ } q-t d t | ƒ | j	 ƒ  f ƒ ‚ n  | j | | ƒ } | j d	 | ƒ } | j | _ qsqh t | | | ƒ qh Wd  S(
   Ns   $(t   )t   /s   \iÿÿÿÿs"   Missing type for PHIL parameter %sRâ   s-   Disallowed type '%s' for path parameter '%s'.Rp   (   t	   non_alnumR¦   R-   RÊ   R|   RÀ   RÐ   R   R1  R„   RÑ   R)   R   R+   R,   t   unicodet   replaceRq   t   wordsRU   (   R?   RM   RN   t   treat_name_as_var_namet   sub_varR  t	   py_objectt
   new_object(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRU   A  s0    	 c         C   sL  | r! d d  l  } | j j } n t j j } t | ƒ j ƒ  } t } g  }	 xX | j ƒ  D]J }
 |
 j d ƒ r• |
 j	 | | ƒ }
 t
 } |	 j |
 ƒ qX |	 j |
 ƒ qX W| rÎ t | d ƒ j d j |	 ƒ ƒ nz | d | ƒ } |  j d | d t
 ƒ } t d | d	 | d
 d ƒ t | d ƒ } | j d | ƒ | j d | ƒ | j ƒ  d  S(   NiÿÿÿÿRO   RP   s   
R\   R$   t   skip_incompatible_objectsR?   RM   RN   s   LIBTBX_BASE_DIR = "%s"
RQ   (   t
   iotbx.philR   R   R   Ré   Rê   R   t
   splitlinesR1   RK  R(   R:   RX   R2  R&   RU   RY   RZ   (   R    R\   t   old_patht   new_patht   use_iotbx_parsert   iotbxR   t   phil_int
   new_formatt	   out_linest   linet	   file_philR!   Rc   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   update_phil_file_paths^  s4    "	RJ   c         C   sŽ   |  d  k r' | d  k r' t d ƒ ‚ n  |  d  k	 r€ |  j d  k ru | d  k	 r` t | ƒ |  _ qu t |  j ƒ |  _ n  |  j | St | ƒ Sd  S(   Ns%   No phil object or path name supplied.(   R   Rw   t   short_captiont   reformat_phil_namet   name(   R?   R‰   R:   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRŸ   ~  s    c         C   s   |  j  d ƒ d } t | ƒ S(   NR0   iÿÿÿÿ(   R¤   R_  (   t   phil_full_nameR‰   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   reformat_phil_full_name‹  s    c         C   sM   |  d k r |  Sd j  t |  ƒ j d ƒ ƒ } t j | d ƒ | d } | S(   NRJ   R/  t   _i    i   (   R2  R,   R¤   t   stringt   upper(   R‰   t   _nameR`  (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyR_  �  s
    c         C   s"   |  d k r | Sd |  | f Sd  S(   NRJ   s   %s.%s(    (   t   scope1t   scope2(    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   join_scope_paths–  s    c         C   s"   d j  |  j d ƒ d  ƒ d | S(   NR0   iÿÿÿÿ(   R2  R¤   (   t   def_pathR�   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   get_adjoining_phil_pathœ  s    c         C   s›   |  j  ry |  j j d k r— |  j } |  j d  k	 rv |  j j ƒ  } t | ƒ t | ƒ k ss t d |  j	 ƒ  ƒ ‚ qv q— n x |  j
 D] } t | ƒ qƒ Wd  S(   Nt   choices   %s(   RÀ   RÐ   RÑ   RL  R³   R   R¤   R6   R-   R„   R|   t   validate_choice_captions(   Rå   RL  t   labelsR?   (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyRm  Ÿ  s    		7()   t
   __future__R    R   R   R   R   R   R   t   libtbx.philR   t   libtbx.utilsR   Rd  R¥   Rç   Rô   R   R   t   tracking_paramsR  R   R   RÕ   RÜ   R(   R>  R;  RÚ   R   RG   RI   R§   RI  RU   R]  RŸ   Rb  R_  Ri  Rk  Rm  (    (    (    sC   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/phil/interface.pyt   <module>   sF   		ÿ ÿ �	:				