ó
šxTc           @   s€  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d Z d e f d „  ƒ  YZ d „  Z	 d „  Z
 d „  Z e d	 „ Z d
 „  Z g  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d  „  Z$ d! e% f d" „  ƒ  YZ& d# e% f d$ „  ƒ  YZ' d% e% f d& „  ƒ  YZ( d' e% f d( „  ƒ  YZ) d) e% f d* „  ƒ  YZ* d+ e% f d, „  ƒ  YZ+ d- e% f d. „  ƒ  YZ, d/ e% f d0 „  ƒ  YZ- d1 e% f d2 „  ƒ  YZ. d3 „  Z/ e j0 d4 k rJe1 e- j2 d5 ƒ Z3 n e/ e- j2 ƒ Z3 e3 rke& ƒ  Z4 n e5 d6 e- j2 ƒ d S(7   s*   
Created on Dec 29, 2009

@author: gaborb
iÿÿÿÿNiûÿÿÿt   InvalidSettingc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR       s   c         C   s;   t  j ƒ  } | j d ƒ x |  D] } | j | ƒ q  W| S(   Ni   (   t   gtkt   VBoxt   set_spacingt   add(   t
   componentst   vboxt   comp(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   create_group   s
    c         C   s   t  j ƒ  } | j d ƒ x | D] } | j | ƒ q  Wt  j t d ƒ } | j | t t d ƒ t  j |  ƒ } | j | ƒ | S(   Ni   i    (   R   R   R   R   t   HBoxt   Falset
   pack_startt   Frame(   t   titleR   R   R	   t   hboxt   frame(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   create_framed_group!   s    c         C   sV   |  s t  ‚ t j d  |  d ƒ } | g g  |  d D] } t j | | ƒ ^ q3 } | S(   Ni    i   (   t   AssertionErrorR   t   RadioButtont   None(   t   titlest   ft   tt   buttons(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   create_radio_button_group1   s    0c         C   s.   t  j ƒ  } x |  D] } | j | ƒ q W| S(   N(   R   t   combo_box_new_textt   append_text(   t   valuest   defaultt   combot   m(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   create_combo_box9   s    c         C   s<   t  j t d ƒ } | j d ƒ |  j | t  j | ƒ ƒ | S(   Ni   i
   (   R   R   R   t   set_border_widtht   append_paget   Label(   t   notebookR   t	   frame_box(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   create_notebook_pageC   s    c         C   sê   t  j |  ƒ } t d | d | j d | ƒ d | ƒ t d | d | ƒ } x+ | j ƒ  | D] } | j d t | ƒ qZ W| j ƒ  t  j	 t
 d ƒ }	 |	 j | t
 t
 d ƒ |	 j | t
 t
 d ƒ x$ | D] }
 |	 j |
 t
 t
 d ƒ qÆ W|	 S(	   Nt   widgett   settingt   keyt   constantt   modelt   datat   toggledi    (   R   t   CheckButtont    connect_multi_selection_checkboxt   gett   create_text_entry_groupt   get_childrent   connectt   disable_if_uncheckedR.   R   R   R   (   t   labelR,   R*   R+   R-   t   extrast   cbt   paramst   wt   groupt   e(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt&   create_checkbox_controlled_entry_groupK   s    
c      	   C   sÌ   | s t  j t d ƒ St  j t | ƒ d t ƒ } x” t | ƒ D]† \ } \ } } | j t  j | ƒ d d | | d d d ƒt  j ƒ  } | j | d d | | d ƒ t	 d | d |  j
 d | ƒ ƒ q> W| S(	   Ni    i   i   t   xpaddingi   R(   R)   R*   (   R   R   R   t   Tablet   lent	   enumeratet   attachR$   t   Entryt   connect_text_entryR1   (   R,   R-   t
   params_boxt   indexR6   R*   t   entry(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR2   c   s    ,#c         C   s
   t  |  ƒ S(   N(   t   int(   t   value(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt
   to_integers   s    c         C   s
   t  |  ƒ S(   N(   t   float(   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   to_floatx   s    c         C   s   |  s
 d  S|  Sd  S(   N(   R   (   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   to_value_or_none}   s    c         C   s   |  d  k	 r t |  ƒ Sd S(   Nt    (   R   t   str(   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt	   to_string†   s    c         C   sm   | \ } } | j  ƒ  t j t ƒ } x! | j D] } | j | g ƒ q/ W| j | ƒ | j | j ƒ  ƒ d  S(   N(	   t   updateR   t	   ListStoreRO   t   allowedt   appendt	   set_modelt
   set_activeRF   (   R(   R-   R   R)   t	   liststoret   fn(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   refresh_comboŒ   s    
c         C   s*   |  j  t | ƒ ƒ |  j d t | ƒ d  S(   Nt   changed(   t   set_textRO   R4   t   on_text_entry_change(   R(   R)   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRD   š   s    c         C   s*   |  j  | j ƒ  ƒ |  j d t | ƒ d  S(   NRZ   (   RV   RF   R4   t   on_combo_select(   R(   R)   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   connect_combo_box    s    c         C   s@   | j  | } |  j | j | k ƒ |  j d t | | f ƒ d  S(   NR.   (   RS   RV   RI   R4   t   on_radio_button_toggle(   R(   R)   RF   R+   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   connect_radio_button¦   s    c         C   s'   |  j  | j ƒ |  j d t | ƒ d  S(   NR.   (   RV   RI   R4   t   on_single_checkbox_toggle(   R(   R)   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt!   connect_single_selection_checkbox­   s    c         C   s3   |  j  | | j k ƒ |  j d t | | f ƒ d  S(   NR.   (   RV   t   currentR4   t   on_multi_checkbox_toggle(   R(   R)   R+   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR0   ³   s    c         C   s   | j  |  j ƒ  d k ƒ d  S(   Niÿÿÿÿ(   t   set_sensitivet
   get_active(   R(   R-   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   disable_if_unsetº   s    c         C   s   | j  |  j ƒ  ƒ d  S(   N(   Re   Rf   (   R(   R-   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR5   ¿   s    c         C   sD   y | j  |  j ƒ  ƒ Wn& t k
 r? } |  j t | ƒ ƒ n Xd  S(   N(   t   sett   get_textt
   ValueErrorR[   RO   (   R(   R-   R<   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR\   Ä   s    c         C   s/   |  j  ƒ  r+ | \ } } | j d | ƒ n  d  S(   NRI   (   Rf   Rh   (   R(   R-   R)   R+   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR_   Í   s    c         C   s'   |  j  ƒ  r | j ƒ  n
 | j ƒ  d  S(   N(   Rf   Rh   t   unset(   R(   R-   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRa   Ô   s    c         C   s?   | \ } } |  j  ƒ  r+ | j d | ƒ n | j d | ƒ d  S(   NRI   (   Rf   Rh   Rk   (   R(   R-   R)   R+   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRd   Ý   s    c         C   sI   |  j  ƒ  } | d k r! d  } n |  j ƒ  | d } | j d | ƒ d  S(   Niÿÿÿÿi    RI   (   Rf   R   t	   get_modelRh   (   R(   R-   RF   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR]   è   s
    	c      
   C   s!  t  j d d d t  j d t  j t  j t  j t  j f ƒ } | j t  j ƒ | j t	 j
 ƒ  ƒ t  j ƒ  } | j d ƒ | j d ƒ | j | ƒ t  j ƒ  } | j d ƒ | j d ƒ | j d	 ƒ | j d
 ƒ | j | ƒ | j ƒ  } | t t  j ƒ k r| j | j ƒ  ƒ n  | j ƒ  d  S(   NR   s   Open alignment...t   actionR   s	   All filest   *t
   Alignmentss   *.alns   *.alis   *.pir(   R   t   FileChooserDialogt   FILE_CHOOSER_ACTION_OPENt   STOCK_CANCELt   RESPONSE_CANCELt
   STOCK_OPENt   RESPONSE_OKt   set_default_responset   set_current_foldert   ost   getcwdt
   FileFiltert   set_namet   add_patternt
   add_filtert   runRH   R[   t   get_filenamet   destroy(   R(   R-   t   choosert   filtert   response(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   on_browse_alignment_filesõ   s.    		c         C   s&  | \ } } } | j  ƒ  } | j  ƒ  } | j  ƒ  } t j d d d d  d t j t j Bd t j t j t j t j	 f ƒ } | j
 }	 t j ƒ  }
 |
 j t j d ƒ ƒ t d | j ƒ } t d | d	 | ƒ |
 j | ƒ |	 j |
 ƒ t j ƒ  } | j t j d
 ƒ ƒ t j ƒ  } t d | d	 | ƒ | j | ƒ |	 j | ƒ t j ƒ  } | j t j d ƒ ƒ t d | j ƒ } t d | d	 | ƒ | j | ƒ |	 j | ƒ |	 j ƒ  | j ƒ  } | t t j	 ƒ k r| j d t | j ƒ ƒ | j d t | j ƒ ƒ | j d t | j ƒ ƒ n  | j ƒ  d  S(   NR   s   Calculation...t   parentt   flagsR   s   Matrix:R   R(   R)   s   Window:s
   Weighting:RI   (   t   copyR   t   DialogR   t   DIALOG_MODALt   DIALOG_DESTROY_WITH_PARENTRr   t   RESPONSE_REJECTt   STOCK_OKt   RESPONSE_ACCEPTR   R   R   R$   R!   RS   R^   RC   RD   t   show_allR~   RH   Rh   RO   RI   R€   (   R(   R-   t   matrixt   windowt	   weightingt   c_matrixt   c_windowt   c_weightingt   dialogt   areat   hb1t   matrix_combot   hb2t   window_entryt   hb3t   weighting_comboRƒ   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   on_similarity_calculation  sH    		
c         C   s<   d d d g } g  | D]" } |  j  d d | | f ƒ ^ q S(   NR�   R�   R‘   R*   s   %s.%s(   R1   (   R,   t   roott
   propertiest   p(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   get_similarity_settingsM  s    t   SculptorViewc           B   s_   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   s!   
    GUI for phenix.sculptor
    c   )      C   sø  t  ƒ  |  _ d  |  _ t j t j ƒ |  _ |  j j d ƒ |  j j	 d |  j
 d  ƒ |  j j	 d |  j d  ƒ t j t d ƒ } t j t d ƒ } t j t d ƒ } |  j j | ƒ | j | t t d ƒ | j | t t d ƒ t j d ƒ |  _ t j d ƒ |  _ t j d	 ƒ |  _ |  j j	 d
 |  j d  ƒ |  j j	 d
 |  j d  ƒ |  j j d
 t j j |  j ƒ | j |  j t t d ƒ | j |  j t t d ƒ | j |  j t t d ƒ |  j j t ƒ t j t d ƒ } | j t j d ƒ t t d ƒ t j ƒ  } t d | d |  j j d ƒ ƒ | j | t t d ƒ t j d ƒ } | j	 d
 t | ƒ | j | t t d ƒ | j | t t d ƒ t j t d ƒ } | j t j d ƒ t t d ƒ t j  ƒ  } | j | t t d ƒ t j d ƒ }	 |  j j d d ƒ }
 |	 j	 d
 t! | |
 f ƒ |	 j" ƒ  t# d | d |
 ƒ | j |	 t t d ƒ t j t d ƒ } | j t j d ƒ t t d ƒ t j  ƒ  } |  j j d d ƒ }
 | j	 d t! | |
 f ƒ | j	 d t$ | ƒ | j% | j& ƒ  ƒ t# d | d |
 ƒ | j | t t d ƒ | j	 d t$ |  j ƒ | j% | j& ƒ  ƒ | j | t t d ƒ | j | t t d ƒ | j t j' ƒ  ƒ t j t d ƒ } | j | ƒ t( d d d d g ƒ } xB t) | ƒ D]4 \ } } t* d | d |  j j d d ƒ d | ƒ q©W| j t+ d d d | ƒ ƒ t j, d  ƒ } t- d | d |  j j d d! ƒ ƒ | j | ƒ | j t j' ƒ  ƒ t( d d" d# g ƒ } t j t d ƒ } t* d | d d |  j j d d$ ƒ d d ƒ | j | d ƒ |  j j d d% ƒ }
 t. d& |
 j/ ƒ } t# d | d |
 ƒ | d j	 d' t0 | ƒ | j | ƒ | j | ƒ t j t d ƒ } t* d | d( d |  j j d d$ ƒ d d( ƒ | j | d( ƒ t j1 ƒ  } | j | ƒ | j | ƒ | d( j	 d' t0 | ƒ t2 d) | d d* ƒ } g  } t j d+ ƒ } | j	 d
 t3 t4 d, |  j d- d. ƒ ƒ t j d+ ƒ } | j	 d
 t3 t4 d, |  j d- d/ ƒ ƒ d0 d1 g  g  f d2 d3 dp g | g f d6 d7 dq g | g f f } xW | D]O \ } } } } t5 d: | d, |  j d d; d< | d= | d> | ƒ }  | j6 |  ƒ qrWt7 d | ƒ }! | j |! t t d ƒ t2 d) | d d? ƒ } g  } d@ dA dr g g  f dD dE ds g g  f f } xW | D]O \ } } } } t5 d: | d, |  j d dH d< | d= | d> | ƒ }  | j6 |  ƒ q6Wt7 d | ƒ }! | j |! t t d ƒ t2 d) | d dI ƒ } t j d+ ƒ }" |" j	 d
 t3 t4 d, |  j d- dJ ƒ ƒ g  } dK dL dt g g  f dO dP du dv dw g |" g f f } xW | D]O \ } } } } t5 d: | d, |  j d dV d< | d= | d> | ƒ }  | j6 |  ƒ q7	Wt7 d | ƒ }! | j |! t t d ƒ t2 d) | d dW ƒ } t j d+ ƒ }# |# j	 d
 t3 t4 d, |  j d- dX ƒ ƒ g  } dY dZ dx g g  f dO dP dy g |# g f d^ d_ dz g g  f f } xW | D]O \ } } } } t5 d: | d, |  j d da d< | d= | d> | ƒ }  | j6 |  ƒ qD
Wt7 d | ƒ }! | j |! t t d ƒ t2 d) | d db ƒ } d{ g }$ xa |$ D]Y \ } } t j, | ƒ }% t8 d |% d |  j j d de ƒ d< | ƒ | j |% t t df ƒ qá
Wt( d dg dh di dj g ƒ |  _9 dk dl dm dn g }& xC t: |  j9 |& ƒ D]/ \ }' }( |' j	 d' |  j; |( ƒ |' j t ƒ q�W| j t+ d do d |  j9 ƒ ƒ |  j9 d j% t< ƒ |  j j= ƒ  d  S(|   Ns   Sculptor GUIt   delete_eventR€   i
   i    i   t   Previewt   Createt   Cancelt   clickeds
   Alignment:R(   R)   s   input.alignment.file_namet   Browses   Model:t   RefreshR*   s   input.model.file_names   Chain:s   input.model.selectionRZ   R   t   Targett   ModelR   s   mm.renumber.useRF   R   t   RenumberingR   s   Rename residuess   mm.rename.uses   Predefined protocolss   User-defined protocolt   multiprotocols   mm.protocolsR   R.   i   R%   t   Deletions   Calculation...R,   Rž   s   mm.deletion.tbs.calcs   mm.deletion.cbs.calct   Gapt   gaps   Threshold based similarityt   threshold_based_similaritys
   Threshold:s   mm.deletion.tbs.thresholds   Completeness based similarityt   completeness_based_similaritys   Offset:s   mm.deletion.cbs.offsetR6   s   mm.deletion.useR+   R-   R7   t	   Polishings   Remove short segmentst   remove_shorts   Minimum lengths   mm.polishing.rs.minimum_lengths   Keep residues in SSt   keep_regulars   Maximum lengths   mm.polishing.kr.maximum_lengths   mm.polishing.uset	   Sidechains   mm.pruning.sim.calct   Schwarzenbachert   schwarzenbachert   Levels   mm.pruning.sch.pruning_levelt
   Similarityt
   similaritys   mm.pruning.sim.pruning_levelt   Lowers$   mm.pruning.sim.full_truncation_limitt   Highers    mm.pruning.sim.full_length_limits   mm.pruning.uset   Bfactors   mm.bfactor.sim.calct   Originalt   originalt   Factors   mm.bfactor.original.factors   mm.bfactor.sim.factort   ASAt   asas   mm.bfactor.asa.factors   mm.bfactor.uset
   Completions   Add missing Cbetat   cbetas   mm.completion.usei   s   Residue deletions   Atom deletions   Atom additionss   Atom b-factorst    highlight_residue_deletions_modet   highlight_atom_deletions_modet   highlight_atom_additions_modet   highlight_atom_bfactors_modet   View(   s
   Threshold:s   mm.deletion.tbs.threshold(   s   Offset:s   mm.deletion.cbs.offset(   s   Minimum lengths   mm.polishing.rs.minimum_length(   s   Maximum lengths   mm.polishing.kr.maximum_length(   R¹   s   mm.pruning.sch.pruning_level(   R¹   s   mm.pruning.sim.pruning_level(   R¼   s$   mm.pruning.sim.full_truncation_limit(   R½   s    mm.pruning.sim.full_length_limit(   RÁ   s   mm.bfactor.original.factor(   RÁ   s   mm.bfactor.sim.factor(   RÁ   s   mm.bfactor.asa.factor(   s   Add missing CbetaRÅ   (>   t   SculptorModelt   _modelR   t   _previewR   t   Windowt   WINDOW_TOPLEVELR�   t	   set_titleR4   R£   R€   R   R   R   R   R   t   Buttont   preview_buttont   create_buttont   cancel_buttont
   on_previewt	   on_createt   connect_objectt   Widgett   pack_endRe   R$   RC   RD   R1   R„   R   RY   R§   R^   Rg   RV   Rf   t
   HSeparatorR   RA   R`   R   R/   Rb   R!   RS   R5   t   NotebookR'   R�   R¡   R=   RT   R
   R0   t   viewst   zipt   on_view_changet   TrueRŽ   ()   t   selft   main_boxt	   input_boxt   control_boxt   alignment_boxt   alignment_entryt   alignment_browset   imol_boxt
   imol_combot   imol_refreshR)   t	   chain_boxt   chain_combot   general_boxt   renumber_rbst   it   bt	   rename_cbt   mode_rbst   predefined_boxt   predefined_combot   user_defined_boxR%   t   paget   param_groupst   tbs_ssc_buttont   cbs_ssc_buttont   creation_dataR6   R+   R-   R7   t   gR;   t   sim_ssc_buttont   bsim_ssc_buttont
   completerst   buttont   methodsR:   R    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   __init__X  sÚ   			



												c         C   s   t  S(   N(   R   (   Rà   R(   t   eventR-   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR£   ¸  s    c         C   s*   |  j  j ƒ  |  j r& |  j j ƒ  n  d  S(   N(   RÌ   t   cleanupRÍ   t   close(   Rà   R(   R-   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR€   ½  s    	c         C   s-  |  j  rg |  j  j ƒ  d  |  _  |  j j t ƒ x |  j D] } | j t ƒ q9 W|  j d j t ƒ n  y |  j	 j
 ƒ  } Wn" t k
 rž } t d | ƒ d  SXy t d | ƒ |  _  Wn" t k
 rÙ } t d | ƒ d  SX|  j j t ƒ x |  j D] } | j t ƒ qô W|  j d j t ƒ |  j ƒ  d  S(   Ni    s   Operation did not succeed: %st	   blueprints   Could not create view: %s(   RÍ   R  R   RÓ   Re   R   RÜ   RV   Rß   RÌ   t   get_coot_outputt   RuntimeErrort   info_dialogt	   CootModelt   select_and_toggle_residue(   Rà   R(   R-   R:   R  R<   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRÕ   Æ  s,    		c   	      G   sð   |  j  s d  St | ƒ d k s% t ‚ t | d ƒ d k r] | d \ } } } } } } } n9 t | d ƒ d k r’ | d \ } } } } } } n d  S|  j  j | k r¶ |  j ƒ  d  S|  j  j d | d | d | ƒ |  j  j ƒ  |  j ƒ  d  S(   Ni   i    i   i   t   chaint   resseqt   icode(   RÍ   R@   R   t   imolR	  t   toggle_residuet	   actualize(	   Rà   t   argsR,   R  R
  R  R  t	   atom_namet   altloc(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   do_toggle_residueì  s    	"
c         C   s   t  d |  j ƒ d  S(   Ni   (   t   user_defined_clickR  (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR	    s    c         C   s4   | j  ƒ  s d  S|  j s d  St |  j | ƒ ƒ  d  S(   N(   Rf   RÍ   t   getattr(   Rà   R(   R-   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRÞ     s
    	c         C   sH   |  j  s t ‚ y |  j  j ƒ  Wn! t k
 rC } t d | ƒ n Xd  S(   Ns	   Error: %s(   RÍ   R   t   snapshotR  R  (   Rà   R(   R-   R<   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRÖ     s
    c         C   s   t  j ƒ  d  S(   N(   R   t   main(   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  "  s    (   R   R   t   __doc__R   R£   R€   RÕ   R  R	  RÞ   RÖ   R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR¢   S  s   	ÿ a				&				t   PhilListc           B   s5   e  Z d  Z g  d „ Z d „  Z d „  Z d „  Z RS(   s0   
    List with Phil-like printing behaviour
    c         C   s7   | |  _  t ƒ  |  _ x | D] } |  j | ƒ q Wd  S(   N(   RS   Rh   Rc   (   Rà   RS   t   initialRî   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   ,  s    	c         C   s3   | |  j  k r t d | ‚ n  |  j j | ƒ d  S(   Ns   Unknown value: %s(   RS   Rj   Rc   R   (   Rà   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRh   5  s    c         C   s   |  j  j | ƒ d  S(   N(   Rc   t   discard(   Rà   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRk   =  s    c         C   s+   |  j  r# d j d „  |  j  Dƒ ƒ Sd Sd  S(   Nt   +c         s   s   |  ] } t  | ƒ Vq d  S(   N(   RO   (   t   .0R<   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pys	   <genexpr>E  s    R   (   Rc   t   join(   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   __str__B  s    	(   R   R   R  R   Rh   Rk   R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  '  s
   			t
   PhilChoicec           B   s>   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z d „  Z RS(   s,   
    A constant from predefined choices
    c         C   s>   | |  _  | d  k r* t | ƒ j ƒ  } n  |  j d | ƒ d  S(   NRI   (   RS   R   t   itert   nextRh   (   Rà   RS   R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   P  s    	c         C   s,   | |  j  k r t d | ‚ n  | |  _ d  S(   Ns   Unknown value: %s(   RS   Rj   RI   (   Rà   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRh   Z  s    c         C   s   |  j  j |  j ƒ S(   N(   RS   RF   RI   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRF   b  s    c         C   s   |  j  d |  j d |  j ƒ S(   NRS   R  (   t	   __class__RS   RI   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR‡   g  s    c         C   s   t  |  j ƒ S(   N(   RO   RI   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  l  s    N(	   R   R   R  R   R   Rh   RF   R‡   R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   K  s   
			t   PhilBoolc           B   s>   e  Z d  Z e e g Z d „  Z d „  Z d „  Z d „  Z	 RS(   s    
    A value with a default
    c         C   s   t  | ƒ |  _ d  S(   N(   t   boolRI   (   Rà   t   is_set(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   x  s    c         C   s   t  |  _ d  S(   N(   Rß   RI   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRh   }  s    c         C   s   t  |  _ d  S(   N(   R   RI   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRk   ‚  s    c         C   s   t  |  j ƒ S(   N(   RO   RI   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  ‡  s    (
   R   R   R  Rß   R   RS   R   Rh   Rk   R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR$  q  s   			t	   PhilValuec           B   s_   e  Z d  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 RS(   s#   
    A value with a conversion
    c         C   s&   | |  _  | |  _ |  j d | ƒ d  S(   NRI   (   t   to_valueRP   Rh   (   Rà   R(  RP   R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   ‘  s    		c         C   s   |  j  | ƒ |  _ d  S(   N(   R(  RI   (   Rà   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRh   ˜  s    c         C   s%   |  j  d |  j d |  j d |  j ƒ S(   NR(  RP   R  (   R#  R(  RP   RI   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR‡   �  s    			c         C   s   |  j  |  j ƒ S(   N(   RP   RI   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  ¦  s    c         C   s   |  d t  d t d | ƒ S(   NR(  RP   R  (   RJ   RP   (   t   clsR  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   Integer«  s    c         C   s   |  d t  d t d | ƒ S(   NR(  RP   R  (   RL   RP   (   R)  R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   Float±  s    c         C   s   |  d t  d t d | ƒ S(   NR(  RP   R  (   RM   RP   (   R)  R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   String·  s    (   R   R   R  R   Rh   R‡   R  t   classmethodR*  R+  R,  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR'  Œ  s   					t	   PhilModelc           B   sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s(   
    A model from coot's model list
    c         C   s   |  j  ƒ  d  S(   N(   RQ   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   Â  s    c         C   sJ   t  ƒ  |  _ g  |  j D] } t j j t | ƒ ƒ ^ q |  _ d  |  _ d  S(   N(	   t   model_molecule_listt   imolsRx   t   patht   basenamet   molecule_nameRS   R   RI   (   Rà   R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRQ   Ç  s    1c         C   s:   | d  k r d  |  _ n | |  j k s- t ‚ | |  _ d  S(   N(   R   RI   RS   R   (   Rà   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRh   Ð  s    c         C   s+   |  j  ƒ  } | d k r# |  j | Sd Sd  S(   Niÿÿÿÿ(   RF   R0  (   Rà   RF   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  Ú  s    c         C   s&   |  j  d  k	 r" |  j j |  j  ƒ Sd S(   Niÿÿÿÿ(   RI   R   RS   RF   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRF   å  s    c         C   s&   |  j  ƒ  } t | ƒ r" t | ƒ Sd S(   NRN   (   R  t   is_valid_model_moleculeR3  (   Rà   R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  ê  s    (	   R   R   R  R   RQ   Rh   R  RF   R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR.  ½  s   				
		t	   PhilChainc           B   s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s"   
    A chain for a coot model
    c         C   s   | |  _  |  j ƒ  d  S(   N(   R,   RQ   (   Rà   R,   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   õ  s    	c         C   s’   |  j  j ƒ  } g  |  _ g  |  _ t | ƒ r… xU t | ƒ D]D } t | | ƒ s: |  j j | rd | n d ƒ |  j j | ƒ q: q: Wn  d  |  _	 d  S(   Ns   <blank>(
   R,   R  RS   t   chainsR4  t	   chain_idst   is_solvent_chain_qmRT   R   RI   (   Rà   R  R
  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRQ   û  s    		c         C   s:   | d  k r d  |  _ n | |  j k s- t ‚ | |  _ d  S(   N(   R   RI   RS   R   (   Rà   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRh   
  s    c         C   s&   |  j  d  k	 r" |  j j |  j  ƒ Sd S(   Niÿÿÿÿ(   RI   R   RS   RF   (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRF     s    c         C   s+   |  j  ƒ  } | d k r d Sd |  j | S(   NiÿÿÿÿRN   s   %s(   RF   R6  (   Rà   RF   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR    s    (   R   R   R  R   RQ   Rh   RF   R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR5  ð  s   			
	RË   c           B   sÉ   e  Z d  Z d Z d d d d g Z d d g Z d d	 d
 g Z d d g Z d d g Z d d d g Z	 d Z
 d Z d Z d Z e e
 e Z e e e Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   
    Application layer
    s   phenix.sculptort   blosum50t   blosum62t   dayhofft   identityt   uniformt
   triangularR°   R±   R²   R´   Rµ   R¸   R»   RÀ   RÃ   s<  
  deletion {
    use = %(mm.deletion.use)s
    completeness_based_similarity {
      offset = %(mm.deletion.cbs.offset)s
      calculation {
        matrix = %(mm.deletion.cbs.calc.matrix)s
        window = %(mm.deletion.cbs.calc.window)s
        weighting = %(mm.deletion.cbs.calc.weighting)s
      }
    }
    threshold_based_similarity {
      threshold = %(mm.deletion.tbs.threshold)s
      calculation {
        matrix = %(mm.deletion.tbs.calc.matrix)s
        window = %(mm.deletion.tbs.calc.window)s
        weighting = %(mm.deletion.tbs.calc.weighting)s
      }
    }
  }

  polishing {
    use = %(mm.polishing.use)s
    remove_short {
      minimum_length = %(mm.polishing.rs.minimum_length)s
    }
    keep_regular {
      maximum_length = %(mm.polishing.kr.maximum_length)s
    }
  }

  pruning {
    use = %(mm.pruning.use)s
    schwarzenbacher {
      pruning_level = %(mm.pruning.sch.pruning_level)s
    }
    similarity {
      pruning_level = %(mm.pruning.sim.pruning_level)s
      full_length_limit = %(mm.pruning.sim.full_length_limit)s
      full_truncation_limit = %(mm.pruning.sim.full_truncation_limit)s
      calculation {
        matrix = %(mm.pruning.sim.calc.matrix)s
        window = %(mm.pruning.sim.calc.window)s
        weighting = %(mm.pruning.sim.calc.weighting)s
      }
    }
  }

  bfactor {
    use = %(mm.bfactor.use)s
    minimum = %(mm.bfactor.minimum)s
    asa {
      factor = %(mm.bfactor.asa.factor)s
      precision = 960
      probe_radius = 1.4
    }
    original {
      factor = %(mm.bfactor.original.factor)s
    }
    similarity {
      factor = %(mm.bfactor.sim.factor)s
      calculation {
        matrix = %(mm.bfactor.sim.calc.matrix)s
        window = %(mm.bfactor.sim.calc.window)s
        weighting = %(mm.bfactor.sim.calc.weighting)s
      }
    }
  }

  completion = %(mm.completion.use)s
  s   
protocols = %(mm.protocols)s
s8  input {
  model {
    file_name = %(input.model.file_name)s
    selection = all
    remove_alternate_conformations = False
  }
  alignment {
    file_name = %(input.alignment.file_name)s
    target_index = 1
  }
}

output {
  root = %(output.root)s
  folder = %(output.folder)s
  format = coot
}

macromolecule {s¡   
  renumber {
    use = %(mm.renumber.use)s
    start = 1
  }
  rename = %(mm.rename.use)s
}
hetero = %(hetero)s
min_hssp_length = 6
min_matching_fraction = 0.4
c         C   sf  d  |  _ t j ƒ  |  _ i  |  _ t d t t g d t ƒ |  j d <t d g  t	 d d ƒ D] } t
 | ƒ ^ qY ƒ |  j d <t ƒ  |  j d <t d |  j d ƒ |  j d	 <t j d  ƒ |  j d
 <|  j |  j d <d |  j d <t d |  j d |  j d g ƒ |  j d <t j d ƒ |  j d <t d |  j d |  j d ƒ |  j d <t j d ƒ |  j d <t d |  j d |  j d ƒ |  j d <t j d ƒ |  j d <t d |  j d |  j d ƒ |  j d <t j d ƒ |  j d <t d |  j d |  j d ƒ |  j d <t d |  j d g  ƒ |  j d <t j d ƒ |  j d <t j d ƒ |  j d <t d |  j d |  j d g ƒ |  j d <t j d  ƒ |  j d! <t j d  ƒ |  j d" <t j d# ƒ |  j d$ <t j d% ƒ |  j d& <t d |  j d |  j d ƒ |  j d' <t j d ƒ |  j d( <t d |  j d |  j d ƒ |  j d) <t d |  j d g  ƒ |  j d* <t j d ƒ |  j d+ <t j d, ƒ |  j d- <t j d. ƒ |  j d/ <t j d0 ƒ |  j d1 <t d |  j d |  j d ƒ |  j d2 <t j d ƒ |  j d3 <t d |  j d |  j d ƒ |  j d4 <t d d5 g d g  ƒ |  j d6 <t d d7 d d8 g d d7 ƒ |  j d9 <t d: t ƒ |  j d; <d  |  j d< <d  S(=   NRS   R  R­   i   i   s   mm.protocolss   input.model.file_nameR,   s   input.model.selections   input.alignment.file_names   output.foldert   sculptors   output.rooti    s   mm.deletion.usegš™™™™™É¿s   mm.deletion.tbs.thresholds   mm.deletion.tbs.calc.matrixi   s   mm.deletion.tbs.calc.windows   mm.deletion.tbs.calc.weightingg        s   mm.deletion.cbs.offsets   mm.deletion.cbs.calc.matrixs   mm.deletion.cbs.calc.windows   mm.deletion.cbs.calc.weightings   mm.polishing.usei   s   mm.polishing.rs.minimum_lengths   mm.polishing.kr.maximum_lengths   mm.pruning.usei   s   mm.pruning.sch.pruning_levels   mm.pruning.sim.pruning_levelg      à?s    mm.pruning.sim.full_length_limitg333333ã¿s$   mm.pruning.sim.full_truncation_limits   mm.pruning.sim.calc.matrixs   mm.pruning.sim.calc.windows   mm.pruning.sim.calc.weightings   mm.bfactor.uses   mm.bfactor.minimumg      ð?s   mm.bfactor.original.factorg       @s   mm.bfactor.asa.factoriœÿÿÿs   mm.bfactor.sim.factors   mm.bfactor.sim.calc.matrixs   mm.bfactor.sim.calc.windows   mm.bfactor.sim.calc.weightingRÅ   s   mm.completion.uset   targetRÀ   s   mm.renumber.useR&  s   mm.rename.uset   hetero(   R   RÍ   t   tempfilet   mkdtempt   _tmp_dirt   _settings_forR   Rß   R   t   rangeRO   R.  R5  R'  R,  R  t   DELETIONR+  t   MATRICESR*  t   WEIGHTING_SCHEMESt	   POLISHINGt	   SIDECHAINt   BFACTORR$  (   Rà   Rî   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   Ÿ  s”    		2													c         C   s&   | |  j  k s t ‚ | |  j  | <d  S(   N(   RE  R   (   Rà   R*   RI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRh     s    c         C   s    | |  j  k s t ‚ |  j  | S(   N(   RE  R   (   Rà   R*   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR1     s    c         C   së  t  |  j d d ƒ ƒ } | r@ t j j | ƒ r@ t d ƒ ‚ n  | sO d } n  |  j d j ƒ  } t  |  j d ƒ } t | d | ƒ } | d k r¤ t d	 | ‚ n  t j j	 |  j
 d
 ƒ } t j j | ƒ sÕ t ‚ t | | ƒ t | ƒ t |  j j ƒ  d | f d | f g ƒ } d t j j	 | d | d ƒ } | d j r{|  j d d f } |  j | }	 d | | d f }
 n& |  j d f } |  j | }	 d | }
 t j j |
 ƒ rÃt j |
 ƒ n  z¡ yt t j | d t j d t j d t j d t j d k d t d „  t j j ƒ  Dƒ ƒ ƒ} | j d |	 ƒ \ } } Wn& t t f k
 rb} t d | ‚ n XWd  t j | ƒ X| GH| j ƒ  r–t d | ‚ n  t j j |
 ƒ s®t ‚ y t t |
 ƒ j  ƒ  ƒ } Wn t! k
 ræt d ‚ n X| S(   NR*   s   input.alignment.file_names   Alignment file does not existR   s   input.model.file_names   input.model.selections   //%s/iÿÿÿÿs   Empty selection for chain %ss   selection.pdbs   %s_selections   output.folders   output.rootR­   s   --stdins   --mode=predefineds
   %s_%s.coots   mm.protocolss   %s.coott   stdint   stdoutt   stderrt   shellt   ntt   envc         s   s-   |  ]# \ } } | d k r | | f Vq d S(   t
   PYTHONHOMEN(   RS  (    (   R  R*   t   val(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pys	   <genexpr>J  s    	t   inputs   System error: %ss   Sculptor error: %ss$   Unexpected data returned by sculptor("   RO   R1   Rx   R1  t   existsR  RE  R  t   new_molecule_by_atom_selectionR  RD  R   t   write_pdb_filet   close_moleculet   dictt   itemsRI   t   SCULPTOR_EXEt   PHIL_MULTI_PROTOCOLt   PHIL_SINGLE_PROTOCOLt   unlinkt
   subprocesst   Popent   PIPEt   namet   environt   communicatet   OSErrorRj   t   pollt   evalt   opent   readt   SyntaxError(   Rà   t   afilet   mol_imolt   chain_idR  t   pdb_filet   settings_fort   outrootR  t   philt   outfileR    t   outputt   errorR<   R-   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR    sh    	
	
 			"c         C   se   |  j  ra x9 t j |  j  ƒ D]% } t j t j j |  j  | ƒ ƒ q Wt j |  j  ƒ d  |  _  n  d  S(   N(   RD  Rx   t   listdirR_  R1  R  t   rmdirR   (   Rà   R   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  e  s
    	#(   R   R   R  R\  RH  RI  RG  RJ  RK  RL  t   PHIL_PROTOCOLt   PHIL_MULTIPROTOCOLSt	   PHIL_HEADt	   PHIL_TAILR^  R]  R   Rh   R1   R  R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRË     s&   I	f			TR  c           B   s†   e  Z d  Z d Z d Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   s$   
    Controller object for coot
    id   i    c         C   s�   | d |  _  t | d ƒ |  _ t | d ƒ |  _ t | d ƒ |  _ t |  j  d ƒ |  _ |  j d k rv t d ‚ n  g  |  _ |  j	 ƒ  d  S(   Ni    i   i   i   t   sculptor_preview_moleculeiÿÿÿÿs   Empty molecule(
   t   reprRh   t   moribund_residuest   moribund_atomst   attached_atomst   add_moleculeR  R  t   pendingRÆ   (   Rà   R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR   w  s    	c         C   s   t  ƒ  t |  j ƒ d  S(   N(   t   clear_pending_picksRY  R  (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  ‡  s    c         C   s}   | | | f } | |  j  k rM |  j  j | ƒ |  j d | d | d | ƒ n, |  j  j | ƒ |  j d | d | d | ƒ d  S(   NR
  R  R  (   R~  t   removet   update_on_resurrection_policyR   t   update_on_deletion_policy(   Rà   R
  R  R  t
   identifier(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  �  s    	
	c      
   C   s§   t  |  j | | | ƒ } | | | f } xy | D]q \ \ } } } }	 | | | f }
 |
 |  j k rk |  j n |  j } |  j j |  j | | | | | d | g ƒ q. Wd  S(   Nt   B(   t   residue_infoR  R  t   DELETE_Bt   KEEP_BR‚  RT   (   Rà   R
  R  R  t   residue_atomst   residRc  R  RŸ   t   coordst   atidRI   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt$   show_residue_resurrection_on_display¢  s    !	c   	      C   sl   t  |  j | | | ƒ } |  j j g  | D]9 \ \ } } } } |  j | | | | | d |  j g ^ q( ƒ d  S(   NRˆ  (   R‰  R  R‚  t   extendRŠ  (	   Rà   R
  R  R  RŒ  Rc  R  RŸ   RŽ  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt    show_residue_deletion_on_display¯  s    	c         C   s   d  S(   N(    (   Rà   R
  R  R  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   no_display_updateº  s    c         C   sä   t  j |  j ƒ } x– | D]Ž } x… | D]} } | d } xj | d D]^ \ } } } } | | | f |  j k rw |  j }	 n	 |  j }	 x | D] }
 |	 |
 d d <q‡ WqA Wq& Wq Wt |  j | ƒ t |  j ƒ |  j	 |  _
 |  j |  _ d  S(   Ni    i   (   R‡   t   deepcopyR}  R~  RŠ  R‹  t   clear_and_update_moleculeR  t'   graphics_to_b_factor_cas_representationR’  R†  R�  R…  (   Rà   t   representationR,   R
  t   cidR  R  t   resnamet   atomst   bfact   atr(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRÆ   ¿  s    
	c         C   s  t  j |  j ƒ } xÍ | D]Å } x¼ | D]´ } | d } x¡ | d D]• \ } } } } | | | f }	 xq | D]i }
 |	 |
 d d |
 d d f } |	 |  j k s­ | |  j k rÁ |  j |
 d d <qi |  j |
 d d <qi WqA Wq& Wq Wt |  j | ƒ t	 |  j ƒ |  j
 |  _ |  j |  _ d  S(   Ni    i   (   R‡   R”  R}  R~  R  RŠ  R‹  R•  R  t#   graphics_to_b_factor_representationR’  R†  R�  R…  (   Rà   R—  R,   R
  R˜  R  R  R™  Rš  R�  Rœ  R�  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRÇ   Ö  s    
 !c         C   s  t  j |  j ƒ } x¾ | D]¶ } x­ | D]¥ } | d } x’ | d D]† \ } } } } | | | f }	 xb | D]Z }
 |	 |
 d d |
 d d f } | |  j k r² |  j |
 d d <qi |  j |
 d d <qi WqA Wq& Wq Wt |  j | ƒ t |  j ƒ |  j	 |  _
 |  j	 |  _ d  S(   Ni    i   (   R‡   R”  R}  R€  RŠ  R‹  R•  R  R�  R“  R†  R…  (   Rà   R—  R,   R
  R˜  R  R  R™  Rš  R�  Rœ  R�  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRÈ   î  s    
 !c         C   s<   t  |  j |  j ƒ t |  j ƒ |  j |  _ |  j |  _ d  S(   N(   R•  R  R}  R�  R“  R†  R…  (   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyRÉ     s    c      	   C   sG  g  } x|  j  D]} g  } xã | D]Û } g  } | d } x¦ | d D]š \ } } }	 }
 | | | f } | |  j k rz qD n  g  |
 D]5 } | | d d | d d f |  j k r� | ^ q� } | rD | j | | |	 | g ƒ qD qD W| r# | j | | g ƒ q# q# W| r | j | ƒ q q Wt | d ƒ } | d k rCt d ‚ n  | S(   Ni    i   R  iÿÿÿÿs   Empty molecule(   R}  R~  R  RT   R�  R  (   Rà   R—  R,   t
   copy_modelR
  t
   copy_chainR˜  R  R  R™  Rš  R�  t   at
   copy_atomsR  (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR    s,    
5 c         C   sS   t  |  j ƒ g  |  _ t |  j ƒ d k rH t |  j ƒ t |  j ƒ n t ƒ  d  S(   Ni   (   t   set_atom_attributesR‚  t   graphics_molecule_bond_typeR  t   graphics_to_ca_representationR–  t   graphics_draw(   Rà   (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  4  s    	(   R   R   R  RŠ  R‹  R   R  R  R�  R’  R“  RÆ   RÇ   RÈ   RÉ   R  R  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyR  o  s   											%c   
      C   s  d d  l  } d t |  ƒ } t j j d d ƒ j t j ƒ } | | k rxÄ | D]¼ } |  | } t j j | ƒ rv t	 Sy‡ t j d } xs | j | t j ƒ D]\ } t j j
 | |  ƒ } t j j | ƒ rÍ t	 St j j
 | | ƒ }	 t j j |	 ƒ rœ t	 Sqœ WWqP d GHqP XqP Wt Sd  S(   Niÿÿÿÿt   .t   PATHEXTRN   t   PATHs   BL WARNING:: couldnt open $PATH(   t   stringt   file_name_extensionRx   Rd  R1   t   splitt   pathsepR1  RV  Rß   R  R   (
   t   cmdR©  t   file_extt   executablest   extt   cmdxtt   primary_pathR1  t   programt   program_exe(    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   command_in_pathB  s(    !
RQ  R¨  s   Cannot find %s in the path(6   R  R   Rx   RB  R`  R‡   t   PYGTK_RESPONSE_OKR  R    R
   R   R   R   R!   R'   R=   R2   RJ   RL   RM   RP   RY   RD   R^   R`   Rb   R0   Rg   R5   R\   R_   Ra   Rd   R]   R„   R�   R¡   t   objectR¢   R  R   R$  R'  R.  R5  RË   R  Rµ  Rc  t   find_exeR\  t   rett   guiR  (    (    (    sB   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/phaser/coot_sculptor.pyt   <module>   sh   			
																							"	6	ÿ Õ$&13/ÿ QÓ	