ó
©%�Tc           @   sr  d  „  Z  e a g  a e a e a e a e a e a d „  Z	 d „  Z
 d „  Z e d „ Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z e d „ Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d e d „ Z  d e d „ Z! d d „ Z" d e d „ Z# d d „ Z$ d „  Z% d  „  Z& d! „  Z' d" „  Z( d# S($   c         C   s  t  |  ƒ t |  ƒ t |  ƒ } t ƒ  } t ƒ  } | d k rK t d ƒ nžt |  ƒ t d ƒ x‡t |  ƒ D]y} t	 |  | ƒ sl t
 | |  ƒ } d i | d 6| d 6GHx;t | ƒ D]*} t |  | | ƒ } t |  | | ƒ } t |  | | ƒ }	 t |  | | |	 ƒ }
 |	 d  k	 r´ t |
 ƒ d k rÞxµ t |  | | |	 ƒ D]› } d G| G| Gd	 GHt | | d
 ƒ t d d ƒ | d k r›t | | |	 | |  | d d ƒ n  | d k rÇt |  | | | | ƒ t ƒ  n  t d d ƒ q9WqÞq´ q´ Wql ql W| d k rt d ƒ n  | d k rt |  ƒ n  d  S(   Niÿÿÿÿs   Oops.  Must set a map to fiti   s'   There are %(a)i residues in chain %(b)st   at   bi   s   centering on s    CAt   CAi   g333333Ó?t    gš™™™™™¹?i    (   t   set_go_to_atom_moleculet   make_backupt   backup_statet   imol_refinement_mapt&   refinement_immediate_replacement_statet   info_dialogt   turn_off_backupt$   set_refinement_immediate_replacementt	   chain_idst   is_solvent_chain_qmt   chain_n_residuest   ranget   resname_from_serial_numbert   seqnum_from_serial_numbert!   insertion_code_from_serial_numbert   residue_infot   Nonet   lent   residue_alt_confst&   set_go_to_atom_chain_residue_atom_namet   rotate_y_scenet   auto_fit_best_rotamert   refine_zonet   accept_regularizementt   turn_on_backup(   t   imolt   backup_modet   imol_mapt   replacement_statet   chain_idt
   n_residuest   serial_numbert   res_namet   res_not   ins_codet	   res_atomst   alt_conf(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   fit_protein"   sF    

		


"c   
      C   sð   d d l  m } t |  ƒ s  g  S| d k r; t |  ƒ } n$ t | ƒ | k rY | g } n g  } g  } x€ | D]x } t t | |  ƒ ƒ } xZ | D]R } t |  | | ƒ } t |  | | ƒ }	 |	 d  k	 rŽ | j
 |  | | |	 g ƒ qŽ qŽ Wql W| Sd  S(   Niÿÿÿÿ(   t
   StringTypes
   all-chains(   t   typesR*   t   valid_model_molecule_qmR   t   typeR   R   R   R   R   t   append(
   R   t   chain_specifierR*   t
   chain_listt	   spec_listR!   t   serial_number_listR#   R%   R&   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   fit_protein_make_specsp   s(    				c            sH   t  |  ƒ rD | | k rD t ‡  f d †  t | | d ƒ ƒ } | Sn  g  S(   Nc            s   ˆ  |  d g S(   NR   (    (   R%   (   R!   (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   <lambda>‘   s    i   (   R,   t   mapR   (   R   R!   t   res_no_startt
   res_no_endt   ret(    (   R!   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt)   fit_protein_make_specs_from_residue_range�   s    c   	      C   sp  |  d } |  d } |  d } |  d } t  | | | | ƒ } t | t ƒ rl| d k rlxt | | | | ƒ D]ô } d G| G| Gd GHt | | d ƒ t d d	 ƒ t | | | | ƒ } t | ƒ d k rn | d
 k r
t | ƒ �$ t	 | | | | | | d d ƒ Wd  QXn  t
 | ƒ rRt | ƒ �+ t ƒ  � t | | | | | ƒ Wd  QXWd  QXn  t d d	 ƒ qn qn Wqln  d  S(   Ni    i   i   i   t   HOHs   centering onR   i
   g333333Ó?R   gš™™™™™¹?(   t   residue_namet
   isinstancet   strR   R   R   R   R   t	   NoBackupsR   t   valid_map_molecule_qmt
   AutoAcceptR   (	   t   res_specR   R   R!   R%   R&   R$   R(   R'   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   fit_protein_fit_function—   s,    




%c         C   s*  |  d } |  d } |  d } |  d } t  ƒ  } t ƒ  } t d ƒ xË t | | | | ƒ D]´ }	 | rs t d ƒ n  t | | | | ƒ }
 |
 d k sZ d G| G| Gd GHt | | | d |	 ƒ t d	 d
 ƒ t | ƒ �( t	 ƒ  � t
 | | | |	 ƒ Wd  QXWd  QXt d	 d
 ƒ qZ qZ Wt | ƒ t | ƒ d  S(   Ni    i   i   i   i�  R:   s   centering onR   i
   g333333Ó?(   t"   dragged_refinement_steps_per_framet    refine_ramachandran_angles_statet&   set_dragged_refinement_steps_per_frameR   t   set_refine_ramachandran_anglesR;   t+   set_go_to_atom_chain_residue_atom_name_fullR   R>   R@   t   refine_auto_range(   RA   R   t   use_ramaR   R!   R%   R&   t   current_steps_per_framet   current_rama_stateR(   R$   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt#   fit_protein_stepped_refine_function´   s.    



		
	

c         C   s   t  |  | t ƒ d  S(   N(   RL   t   True(   RA   R   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   fit_protein_rama_fit_functionÑ   s    c            s   d d  l  } t |  d ƒ } | r{ t |  ƒ t ƒ  a t d d d ƒ a | a ‡  f d †  } | j | ƒ | a	 t
 |  ƒ n  d  S(   Niÿÿÿÿs
   all-chainst   Stops    stop_interruptible_fit_protein()s   gtk-stopc             sd   t  s* t j ƒ  t a t j ƒ  t a t St rU t ƒ  }  ˆ  t  d |  ƒ t  d =t St ƒ  t Sd  S(   Ni    (	   t   multi_refine_spec_listt   multi_refine_stop_buttont   destroyt   Falset   multi_refine_separatort   continue_multi_refineR   RM   R   (   R   (   t   func(    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt	   idle_funcê   s    

	(   t   gobjectR3   R   t   add_coot_toolbar_separatorRT   t   coot_toolbar_buttonRQ   RP   t   idle_addt   multi_refine_idle_procR   (   R   RV   RX   t   specsRW   (    (   RV   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   interruptible_fit_proteinØ   s    
		c           C   s;   t  a t d d d ƒ a t d d d ƒ a t j t  ƒ d  S(   Nt   Cancels"   cancel_interruptible_fit_protein()s
   gtk-cancelt   Continues$   continue_interruptible_fit_protein()s	   gtk-apply(   RS   RU   RZ   t   multi_refine_cancel_buttont   multi_refine_continue_buttonRQ   t   set_sensitive(    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   stop_interruptible_fit_protein  s    		c           C   sD   t  j t ƒ t j ƒ  t a t j ƒ  t a t a t j	 t
 ƒ d  S(   N(   RQ   Rc   RM   Ra   RR   RS   Rb   RU   RX   R[   R\   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt"   continue_interruptible_fit_protein  s    

c           C   sJ   t  a t j ƒ  t  a t j ƒ  t  a t j ƒ  t  a t j ƒ  t  a d  S(   N(   RS   RU   RQ   RR   Ra   Rb   RT   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt    cancel_interruptible_fit_protein-  s    



c      
   C   s�  t  |  ƒ t |  ƒ } t ƒ  } d } t ƒ  } t |  ƒ t d ƒ | d k rV d GHnt | |  ƒ } xï t | ƒ D]á } t |  | | ƒ } t	 |  | | ƒ }	 t
 |  | | ƒ }
 |
 d  k	 rr t |  | |	 |
 ƒ } t | ƒ d k rSd G| G|	 Gd GHt | |	 d ƒ t |	 | |
 | |  | d d	 ƒ | d k rPt |  | |	 |	 | ƒ t ƒ  qPqSqr qr W| d
 k rpt d
 ƒ n  | d k r‰t |  ƒ n  d  S(   NR   i   iÿÿÿÿs2   WARNING:: fit-chain undefined imol-map. Skipping!!i   s   centering on s    CAR   gš™™™™™¹?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(   R    R"   R#   R$   R%   R&   R'   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt	   fit_chainD  s8    
		

c      
   C   sQ  t  |  ƒ t |  ƒ } t ƒ  } d } t ƒ  } t |  ƒ t d ƒ | d k rV d GHnÅ t | |  ƒ } d }	 x­ t | | ƒ D]œ }
 d G| G|
 Gd GHt | |
 d ƒ t	 |  | |
 |	 ƒ } t
 | ƒ d k r{ t |
 | |	 | |  | d d	 ƒ | d k rt |  | |
 |
 | ƒ t ƒ  qq{ q{ W| d
 k r4t d
 ƒ n  | d k rMt |  ƒ n  d  S(   NR   i   iÿÿÿÿs2   WARNING:: fit-chain undefined imol-map. Skipping!!s   centering on s    CAR   i   gš™™™™™¹?i    (   R   R   R   R   R
   R   R   t   number_listR   R   R   R   R   R   R   (   R   R!   t   resno_startt	   resno_endR   R   R(   R    R"   R&   R%   R'   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   fit_residue_rangei  s2    
		

c         C   sÁ  d G| GHt  ƒ  } t } | r' t } n  d G| GH| d k r³t ƒ  } t |  ƒ } d } t |  ƒ t d ƒ t |  ƒ xt |  ƒ D]ø } t	 |  | ƒ r‚ t
 | |  ƒ } d i | d 6| d 6GHxº t | ƒ D]© }	 t |  | |	 ƒ }
 | rVt |  | |
 d ƒ } | g  k sl| d	 } | d	 } t | |
 | ƒ t |  | |
 |
 | ƒ t d
 d ƒ qln t |  | |
 |
 | ƒ t ƒ  qÊ Wq‚ q‚ W| d	 k r—t d	 ƒ n  | d k r½t |  ƒ q½n
 t d ƒ d  S(   Ns	   animate?:s   do_animate?: iÿÿÿÿR   i   s'   There are %(a)i residues in chain %(b)sR    R   i    i   g333333ã?s*   You need to define a map to fit the waters(   R   RS   RM   R   R   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   t   add_status_bar_text(   R   t
   animate_qmR   t   do_animate_qmR    R   R(   R!   R"   R#   R%   t   res_infot   atomt	   atom_name(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt
   fit_watersŽ  sD    					




c   
      C   sÕ   t  ƒ  } | d k rÑ t ƒ  } t |  ƒ } d } t |  ƒ t d ƒ t |  | ƒ rœ | } x@ | | k r˜ | }	 t |  | |	 |	 | ƒ t ƒ  | d 7} q\ Wn  | d k rµ t d ƒ n  | d k rÑ t |  ƒ qÑ n  d  S(   NiÿÿÿÿR   i   i    (	   R   R   R   R
   R   R   R   R   R   (
   R   R!   t   startt   endR   R    R   R(   R#   R%   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   fit_waters_rangeÁ  s$    		

i   c            sa   d d  l  } d d l  m } t ƒ  } t | ƒ s> t d ƒ n ‡  f d †  } t ˆ  | | ƒ d  S(   Niÿÿÿÿ(   t   IntTypes   Oops, must set map to refine toc            sH   t  |  | d ƒ t d d ƒ t ˆ  |  | d ƒ t ƒ  t d d ƒ d  S(   NR   i   g333333Ó?R   (   R   R   RH   R   (   R!   R%   (   R   (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   refine_funcè  s
    (   R+   Rv   R   R?   R	   t'   stepped_refine_protein_with_refine_func(   R   t   res_stepR+   Rv   R   Rw   (    (   R   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   stepped_refine_proteinß  s    	c            s   t  ƒ  } t | ƒ s" t d ƒ nY t ƒ  } t ƒ  } ‡  f d †  } t d ƒ t d ƒ t ˆ  | d ƒ t | ƒ t | ƒ d  S(   Ns   Oops, must set map to refine toc            s.   t  |  | d ƒ t ˆ  |  | d ƒ t ƒ  d  S(   NR   R   (   R   RH   R   (   R!   R%   (   R   (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyRw   ü  s    i�  i   (   R   R?   R	   RC   RD   RE   RF   Rx   (   R   R   t   current_steps_frameRK   Rw   (    (   R   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   stepped_refine_protein_for_ramaô  s    			


c         C   s—  t  |  ƒ t |  ƒ t |  ƒ } d } t ƒ  } t ƒ  } | d k rQ t d ƒ nBt |  ƒ t d ƒ t | ƒ } | d k r� t	 d ƒ d } n t	 t | d ƒ ƒ xº t
 |  ƒ D]¬ } t | |  ƒ } d i | d 6| d 6GHx} t d	 | | ƒ D]i }	 t |  | |	 ƒ }
 t |  | |	 ƒ } t |  | |	 ƒ } | d  k	 rð d
 G| G| Gd GH| | | ƒ qð qð Wq± W| d	 k rzt d	 ƒ n  | d k r“t |  ƒ n  d  S(   NR   iÿÿÿÿs   Oops.  Must set a map to fiti   i   s'   There are %(a)i residues in chain %(b)sR    R   i    s   centering on s    CA(   R   R   R   R   R   Rl   R
   R   t   intt   set_refine_auto_range_stepR   R   R   R   R   R   R   R   (   R   Rw   Ry   R   R(   R   R    R!   R"   R#   R$   R%   R&   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyRx     s:    

		


	c              s    d „  ‰  t  ‡  f d †  ƒ d  S(   Nc         S   sa   t  |  ƒ s t St |  ƒ } d | k rY | g } x! t |  ƒ D] } | j | ƒ q> W| St Sd  S(   Ns   Fitted ligand(   t   is_valid_model_moleculeRS   t   molecule_namet   molecule_centreR.   (   R   t   namet   listt   i(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   test4  s    	c            s
   ˆ  |  ƒ S(   N(    (   R   (   R…   (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyR4   A  s    (   t   molecules_matching_criteria(    (    (   R…   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   post_ligand_fit_gui2  s    	c            s*  yd d  l  } | j d ƒ d d  l } d d  l } g  } x- t ƒ  D]" } |  | ƒ rD | j | ƒ qD qD Wt | ƒ d k r‡  f d †  } d „  } | j | j ƒ ‰  | j	 ƒ  } | j
 t d ƒ }	 | j
 t d ƒ }
 ˆ  j d d ƒ ˆ  j d	 ƒ |
 j d ƒ ˆ  j |	 ƒ |	 j | t t d ƒ | j |
 ƒ | j | j | j ƒ xa | D]Y } | } t | ƒ } | j t | ƒ ƒ } |
 j | t t d
 ƒ | j d | | | ƒ qMW|	 j d ƒ | j d ƒ } |	 j | t t d ƒ | j d | ˆ  ƒ ˆ  j d | ƒ ˆ  j ƒ  n
 t d ƒ Wn d GHn Xd  S(   Niÿÿÿÿs   2.0i    c             s   ˆ  j  ƒ  t S(   N(   RR   RS   (   t   args(   t   window(    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   delete_event`  s    
c         S   s.   d | } t  | ƒ t | ƒ } t | Œ  d  S(   Ns   Centred on (   Rl   R�   t   set_rotation_centre(   t   widgetR   R‚   t   st   centre(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   centre_on_mold  s    

i   iÈ   iŒ   s   Fitted Ligandsi   t   clickedi   t   OKRŠ   s   No matching molecules!s2   BL WARNING:: no pygtk2. This function doesnt work!(   t   pygtkt   requiret   gtkt   pangot   molecule_number_listR.   R   t   Windowt   WINDOW_TOPLEVELt   ScrolledWindowt   VBoxRS   t   set_default_sizet	   set_titlet   set_border_widtht   addt
   pack_startRM   t   add_with_viewportt
   set_policyt   POLICY_AUTOMATICt   POLICY_ALWAYSR€   t   ButtonR=   t   connectt   connect_objectt   show_allRl   (   t	   test_funcR’   R”   R•   t   passed_moleculest   molecule_numbersRŠ   R�   t   scrolled_wint   outside_vboxt   inside_vboxR   R‚   t   buttont	   ok_button(    (   R‰   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyR†   M  sJ    	c   
      C   sÓ   t  ƒ  } | s d GHn¸ | d } | d } | d } | d } | d } | d } d G| GHt ƒ  } t ƒ  }	 | d	 k r‡ t d
 ƒ n/ t d ƒ t | | | |  | |  | ƒ t ƒ  |	 d k rÏ t d ƒ n  d  S(   Ns   No active atomi    i   i   i   i   i   s   active-atom:iÿÿÿÿs!   Oops.  Must Select Map to fit to!(   t   active_residueR   R   R	   R   R   R   (
   t   side_residue_offsett   active_atomR   R!   R%   R&   Rq   R(   R   R    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   refine_active_residue_generic›  s*    	





			
c           C   s   t  d ƒ d  S(   Ni    (   R³   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   refine_active_residue¸  s    c           C   s   t  d ƒ d  S(   Ni   (   R³   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   refine_active_residue_triple¼  s    c   	      C   s—   t  ƒ  } | s d GHn< | d } | d } | d } | d } | d } | d } t ƒ  } | d k ru t d	 ƒ n t | | | |  | |  | ƒ d  S(
   Ns   No active atomi    i   i   i   i   i   iÿÿÿÿs!   Oops.  Must Select Map to fit to!(   R°   R   R	   R   (	   R±   R²   R   R!   R%   R&   Rq   R(   R   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   manual_refine_residuesÂ  s     	





		i   c         C   s¤  d d l  m } t ƒ  } | s, t d ƒ nt|  rL t t ƒ  ƒ rL t ƒ  nT| d } | d } | d } | d } | d }	 | d	 }
 | d d !} t | | | ƒ } | g } t | ƒ | k rÏ | | 7} n  | rn| j	 ƒ  | } xx | D]p } | } | } | d d | d <| d d | d <| | k rA| j
 | ƒ n  | | k rí | j
 | ƒ qí qí W| j	 ƒ  n  d
 | | f GH|  r“t | | ƒ n t | | ƒ d  S(   Niÿÿÿÿ(   t   ListTypes   No active residuei    i   i   i   i   i   s   imol: %s residues: %s(   R+   R·   R°   Rl   R?   R   t   show_select_map_dialogt   residues_near_residueR-   t   sortR.   t   refine_residuest   regularize_residues(   t   use_mapt   radiust   expandR·   R²   R   R!   R%   R&   Rq   R(   t   centred_residuet   other_residuest   all_residuest   tmp_lst   rest
   before_rest	   after_res(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt    sphere_refine_regularize_genericÛ  sD    	






	
g      @c         C   s   t  t |  | ƒ d  S(   N(   RÇ   RM   (   R¾   R¿   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   sphere_refine  s    c         C   s   t  |  t ƒ d  S(   N(   RÈ   RM   (   R¾   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   sphere_refine_plus	  s    c         C   s   t  t |  | ƒ d  S(   N(   RÇ   RS   (   R¾   R¿   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   sphere_regularize  s    c         C   s   t  |  t ƒ d  S(   N(   RÊ   RM   (   R¾   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   sphere_regularize_plus  s    c          C   sm   t  ƒ  }  |  s d GHn< |  d } |  d } |  d } |  d } |  d } |  d } t | | | | | ƒ d  S(   Ns   No active atomi    i   i   i   i   i   (   R°   t   pepflip(   R²   R   R!   R%   R&   Rq   R(   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   pepflip_active_residue  s    	





c    	   	   C   sª   t  ƒ  }  |  s d GHn� |  d } |  d } |  d } |  d } |  d } |  d } d G|  GHt ƒ  } t ƒ  } | d	 k r‡ t d
 ƒ n t | | | | | | d d ƒ d  S(   Ns   No active atomi    i   i   i   i   i   s   active-atom:iÿÿÿÿs!   Oops.  Must Select Map to fit to!gš™™™™™¹?(   R°   R   R   R	   R   (	   R²   R   R!   R%   R&   Rq   R(   R   R    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   auto_fit_rotamer_active_residue'  s    	





			c         C   s   x t  | | ƒ D] } q Wd  S(   N(   R   (   R   R!   t   resno_range_startt   resno_range_endt   atom_sel_typet   imol_refR%   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt&   add_extra_restraints_to_other_moleculeB  s    c      	   C   s‚   t  |  t | ƒ t | ƒ t | ƒ ƒ } xT | D]L } t | ƒ } t | ƒ } t |  t | ƒ t | ƒ t | ƒ | | | ƒ q. Wd  S(   N(   R   t   residue_spec2chain_idt   residue_spec2res_not   residue_spec2ins_codet   residue_atom2atom_namet   residue_atom2alt_conft   add_extra_start_pos_restraint(   R   t   residue_spect   esdt   rit	   atom_infoRq   R(   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   add_extra_start_pos_restraintsI  s    					N()   R)   RS   RU   RP   R\   RQ   Ra   Rb   RT   R3   R9   RB   RL   RN   R^   Rd   Re   Rf   Rg   Rk   Rr   Ru   Rz   R|   Rx   R‡   R†   R³   R´   Rµ   R¶   RM   RÇ   RÈ   RÉ   RÊ   RË   RÍ   RÎ   RÓ   RÞ   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/fitting.pyt   <module>"   sL   	A		
			/				%	%3			*		N				+			