ó
©%�Tc           @   s:   d  d d „ Z  d  d „ Z d „  Z d „  Z d „  Z d S(   t    i   c   )   	      su  t  ƒ  } | d k r" t d ƒ nOt ˆ ƒ } t ˆ ƒ t ˆ ƒ t ƒ  } t | ƒ | | k  rx | d | d g }	 n | d | d g }	 t t ‡  ‡ f d †  |	 ƒ ƒ r8t	 ˆ ƒ }
 t
 | | ƒ d } | d k rè t	 ˆ ƒ } n  d ˆ  d t t | | ƒ d ƒ d t t | | ƒ d ƒ } t ˆ | ƒ } t | d	 ƒ t ˆ ˆ  | | | ƒ t |
 ˆ  | | | ƒ t | ˆ ˆ  | | ƒ } t | |
 ˆ  | | ƒ } ˆ | g |
 | g g } | d k rÐt | | g ƒ } t | | g ƒ } | | d
 d } | d } | d	 | d
 !} | | d
 t | ƒ !} t | ˆ  | | | ƒ t | ˆ  | | | ƒ t ƒ  } t d ƒ t | ˆ  | | d | | d d ƒ t ƒ  t | ƒ t | | ˆ  | | ƒ } | j | | g ƒ n  d } d	 } xµ | t | ƒ d k  r“| d } x„ | t | ƒ k  r…t | | d | | d ƒ t | | d | | d ƒ | k rxt | | d	 ƒ | j | ƒ n  | d 7} qW| d 7} qßWd t j j ƒ  k rg  } xh t | ƒ D]Z \ } \ } } t | | ƒ }  | j |  | g ƒ t |  d	 ƒ | d	 k r¼t | ƒ q¼q¼Wg  }! d	 }" | d	 d }# xÍ t | ƒ D]¿ \ } \ }  } d t d | ƒ d }$ d t ˆ ƒ d t |  ƒ d | d }% |! j |$ d |% d g ƒ | t | ƒ d k  rA|# | | d d k  r | d }" | | d d }# q qAqAW| j | d g ƒ t d „  | ƒ }& d d j |& ƒ d }' d t ˆ ƒ d t ˆ  ƒ d t t | | ƒ ƒ d t t | | ƒ ƒ d t ˆ ƒ d t | ƒ d | d d j |& ƒ d }( t |! ƒ d k r5t  d d d g |! d  |' |" d! |( ƒ q5qN| | k rt t! ƒ qNt" ˆ t! | ƒ t t! ƒ n t ˆ ˆ  | | | ƒ t | ƒ | d k rqt# ˆ ƒ n  d  S("   Niÿÿÿÿs   Need to set a map to fit a loopi   c            s   t  ˆ ˆ  |  d ƒ S(   NR    (   t   residue_exists_qm(   t   resno(   t   chain_idt   imol(    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/gap.pyt   <lambda>0   s    i   s   //t   /t   -i    i   i   R    gÍÌÌÌÌÌì?t   pygtks    Loop iA   t    s   replace_fragment(s   , s   , "s   "), t   (t   )g    ðiøÀc         S   s   |  \ } } d t  | ƒ d S(   Ns   close_molecule(R   (   t   str(   t   .0t   xt   y(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/gap.pyR   Š   s    s   (delete_residue_range(s   ", s   ), replace_fragment(s   Select LoopiÈ   id   s
     Accept  s
     Reject  ($   t   imol_refinement_mapt   info_dialogt   backup_statet   make_backupt   turn_off_backupt    refine_ramachandran_angles_statet   set_refine_ramachandran_anglest   allt   mapt   copy_moleculet   absR   t   mint   maxt   new_molecule_by_atom_selectiont   set_mol_displayedt   fit_gap_generict   low_density_averaget   lent&   refinement_immediate_replacement_statet$   set_refinement_immediate_replacementt   refine_zonet   accept_regularizementt   appendt   close_moleculet   popt   syst   modulest   keyst	   enumeratet   chrt   joint   dialog_box_of_radiobuttonst	   imol_copyt   replace_fragmentt   turn_on_backup()   R   R   t   start_resnot
   stop_resnot   sequencet   use_rama_restraintst   imol_mapt   backup_modet   rama_statust
   res_limitst   imol_backwardst   loop_lent	   imol_botht   atom_selectiont   imol_fragment_backupt   result_at   result_bt	   loop_listt   start_resno1t   stop_resno2t   stop_resno1t   start_resno2t	   sequence1t	   sequence2t   immediate_refinement_modet   result_ct   cut_offt   it   jt   fragment_listt	   imol_loopt   resultt   imol_fragmentt   buttonst   selected_buttont
   max_resultt	   label_strt   replace_strt   close_lst   go_functiont   cancel_function(    (   R   R   sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/gap.pyt   fit_gap   s®    	

	
!@
	


B*
…
c         C   s”  d d  l  } | j | ƒ } t |  ƒ d k r@ d i |  d 6GHnPt d ƒ t ƒ  } | | k  rh d } n d } d G| GHt d ƒ | d k rš | d } n
 | d } x’ t t | | ƒ d ƒ D]v }	 d	 G| GHt |  | | d
 d ƒ }
 |
 r,t	 |  | | d ƒ t
 ƒ  | d k r| d } q5| d } q¿ d G| GHq¿ W| d k r­t |  | ƒ r­d G|  G| G| G| G| GH| d k r”t |  | | | | ƒ q­t |  | | | | ƒ n  t |  | | d d ƒ rÎd GHn d GHt |  | | d d ƒ rù| d } n | } t |  | | d d ƒ r%| d } n | } | d k rF| | g } n | | g } t |  | | d | d d ƒ | d k r�t d ƒ t
 ƒ  n  d  S(   Niÿÿÿÿi    s3   Molecule number %(a)i is not a valid model moleculet   at	   backwardst   forwardss   direction is i   s&   add-terminal-residue: residue number: t   autoR    s   Failure in fit-gap at residue s!   mutate-and-autofit-residue-range s
   Test findss   Test: not there(   t   stringt   uppert   valid_model_molecule_qmt)   set_residue_selection_flash_frames_numberR"   R#   t   rangeR   t   add_terminal_residuet   refine_auto_rangeR%   t   has_sequence_qmt    mutate_and_autofit_residue_rangeR   R$   (   R   R   R3   R4   R5   R_   RI   t	   directionR   RL   t   statust   low_endt   high_endt
   final_zone(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/gap.pyR   ¸   sb    
			

!			
	

c         C   s`   t  |  ƒ r\ xM t  |  ƒ D]< } | d } | d } | | k r t | ƒ d k r t Sq Wn  t S(   Ni    i   (   t   sequence_infoR!   t   Truet   False(   R   t   chain_id_reft   itemR   R5   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/gap.pyRf     s    

c      	   C   sF   | } x9 | | k rA t  | d d | |  d d d ƒ | d } q	 Wd  S(   NR    iÿÿÿÿi   gš™™™™™¹?(   t   auto_fit_best_rotamer(   R   R   t   resno_startt	   resno_endR   (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/gap.pyt   de_clash)  s    c         C   sþ   g  } g  } xi t  | | d ƒ D]T } t | | | d ƒ } x6 | D]. }	 |	 d d d k rB | j |	 d	 ƒ qB qB Wq  Wx3 | D]+ \ }
 } } | j t |  |
 | | ƒ ƒ q W| j ƒ  t | ƒ d
 } | d k rÝ d } n  t | d | !ƒ t | ƒ } | S(   Ni   R    i    s    N  s    CA s    CB s    C  s    O  i   i   (   s    N  s    CA s    CB s    C  s    O  (   Rc   t   residue_infoR&   t   density_at_pointt   sortR!   t   sumt   float(   R7   R   R   R3   R4   t
   map_coordst   map_densityR   t   atom_lst   atomR   R   t   zRK   t   map_average(    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/gap.pyR    1  s     
	N(   RZ   R   Rf   Ru   R    (    (    (    sJ   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/gap.pyt   <module>   s   œc		