ó
©%�Tc           @   sŸ  d  Z  e j d ƒ sª e j j e  ƒ Z e j j e ƒ Z e j j e d d ƒ Z e j j e d ƒ Z	 e j j
 e	 ƒ r– e e j d <d GHd Ge GHqª e ƒ  r¢ qª d GHn  d a d	 a e j d
 ƒ Z e rç e ƒ  rç e j d ƒ Z n  e re j j e d d d d ƒ a n	 d Ge GHd a d a d	 a d „  Z d „  Z d „  Z d „  Z e t ƒ a e t ƒ a d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   t   cprodrgt   CLIBDt   libt   datas   prodrg.params   BL INFO:: found prodrg.params             and set CLIBD tos"   Sorry, prodrg module not availables   prodrg-in.mdls   .sbase-to-coot-comp-idt   HOMEt	   COOT_HOMEt   Projectss   build-xp-pythont   lbgs   BL DEBUG:: buggery home iss0   ../../build-xp-python/lbg/.sbase-to-coot-comp-idc         C   s   t  d | ƒ d  S(   Ns   mini-no(   t   import_from_prodrg(   t	   file_namet   comp_id(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt!   import_from_3d_generator_from_mdl8   s    c            s`  d „  ‰ d „  } ‡  ‡ f d †  } d „  ‰  t  | ƒ t ƒ  } | sX | d d k re | |  ƒ n÷ t ƒ  �ì \ } } } } }	 }
 t | | | d ƒ s¥ | |  ƒ n± | |  | | | ƒ } ˆ | | | | ƒ } | rVd GHt | d ƒ t | d ƒ t | ƒ } | d	 } t | d d
 | | | ƒ } t | | ƒ t | d ƒ t | d ƒ t	 ƒ  n  Wd  QXt
 S(   Nc         S   sp   t  | | | d ƒ } t | ƒ } | s+ t St | | | d ƒ sD t Sd |  | | | f GHt |  | | | ƒ Sd  S(   Nt    s4   ----------- overlap-ligands %s %s %s %s ------------(   t   residue_namet   monomer_restraintst   Falset   residue_has_hetatms_qmt   overlap_ligands(   t   imol_ligandt   imol_reft   chain_id_reft
   res_no_reft   res_namet
   restraints(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   overlap_ligands_maybeW   s    c      	   S   sV   t  |  ƒ } t ƒ  } t d ƒ t ƒ  � t | d d d g g ƒ Wd  QXt | ƒ | S(   Niô  R   i   (   t0   handle_read_draw_molecule_and_move_molecule_heret"   dragged_refinement_steps_per_framet&   set_dragged_refinement_steps_per_framet
   AutoAcceptt   regularize_residues(   t   prodrg_xyzoutt   imolt   s(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   read_and_regularizej   s    	


c      	      s¦   t  |  ƒ } ˆ  t | | | d ƒ ƒ s+ t Sˆ | | | | ƒ } t ƒ  } t d ƒ t ƒ  � t | d d d g g ƒ Wd  QXt | ƒ | r¢ t | | | | ƒ n  | S(   NR   iX  i   (   R   R   R   R   R   R   R   t   match_ligand_torsions(   R   R   R   R   R   t   overlap_statusR    (   t   have_restraints_for_qmR   (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt(   read_regularize_and_match_torsions_maybex   s    		


c         S   s   t  |  ƒ } | t k S(   N(   R   R   (   R   R   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyR$   �   s    i   R   s$   ------ overlapped-flag was true!!!!!i    i   i   (   t   read_cif_dictionaryt   active_residuet   UsingActiveAtomt$   residue_is_close_to_screen_centre_qmt   set_mol_displayedt   set_mol_activet&   get_molecule_bonds_colour_map_rotationt'   add_ligand_delete_residue_copy_moleculet&   set_molecule_bonds_colour_map_rotationt   graphics_drawt   True(   R   t
   prodrg_cifR!   R%   t   active_atomt   aa_imolt   aa_chain_idt	   aa_res_not   aa_ins_codet   aa_atom_namet   aa_alt_confR   t   overlapped_flagt   colt   new_colt   imol_replaced(    (   R$   R   sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   import_ligand_with_overlay<   s@    			

		
	c   	      C   s  d d  l  } d } t | ƒ t j j | d | d ƒ } t j j | d ƒ } t j j | d ƒ } |  d k ru d n d	 } t j j t ƒ p– t t ƒ s¦ t d
 ƒ nb t	 t d t
 d | d | g d | d g | t ƒ } t | t ƒ r| d k rt | | ƒ qn  d  S(   Niÿÿÿÿs	   coot-ccp4s   prodrg-s   .pdbs   prodrg-out.cifs
   prodrg.logs   mini-not   NOt   PREPs   BL INFO:: No cprodrg foundt   XYZINt   XYZOUTt   LIBOUTs   MINI t   ENDi    (   t   operatort   make_directory_maybet   ost   patht   joint   isfileR    t   command_in_path_qmt   info_dialogt   popen_commandt   prodrg_xyzinR0   t
   isinstancet   intR=   (	   t   minimize_modeR   RD   t
   prodrg_dirR   R1   t
   prodrg_logt	   mini_modet   status(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyR   Ñ   s&    
	c         C   s*   t  j j |  ƒ s t St  j |  ƒ j Sd  S(   N(   RF   RG   RI   R   t   statt   st_mtime(   R	   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   get_file_latest_timeó   s    c          C   s  d d  l  }  t t ƒ } t t ƒ } |  j | ƒ rg |  j t ƒ rg | t k rd | a t d ƒ qd qg n  |  j t ƒ r|  j | ƒ r| t k r| a yc t t d ƒ } | j	 ƒ  } | j
 ƒ  t | ƒ } t | ƒ sã d G| GHn t t | d d d ƒ Wqd Gt GHqXqqn  t S(	   Niÿÿÿÿs	   mini-prept   rs    failed to get SBase molecule forR3   R4   R5   s   BL ERROR:: reading sbase file(   RD   RW   RM   t   sbase_to_coot_tlct   isNumberTypet   mdl_latest_timeR   t   sbase_transfer_latest_timet   opent   readlinet   closet"   get_ccp4srs_monomer_and_dictionaryt   valid_model_molecule_qmt   using_active_atomR   R0   (   RD   t   mdl_now_timet   sbase_now_timet   fint
   tlc_symbolR   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   mdl_update_timeout_funcÿ   s0    
	c         C   s…  d d l  } d d l } d „  } d | d t | ƒ } t |  | ƒ } t j j d d ƒ } t j j d d ƒ }	 t j j d d	 ƒ }
 t j j d d
 ƒ } t j j d d ƒ } t | d ƒ t | d ƒ t	 | | ƒ t
 d ƒ d | d |	 d |
 d | g } d G| GHt t | d d d g | t ƒ } | j | ƒ sGt d ƒ t S| d k sqd | | ƒ } t | ƒ t S| |	 |
 | g Sd S(   s;  return False (if fail) or a list of: the molecule number of the
    selected residue, the prodrg output mol file_name, the prodrg
    output pdb file_name

    Keyword arguments:
    imol_in -- the molecule number
    chain_id_in -- chain id of the molecule
    res_no_in -- residue number ot the molecule
    
    iÿÿÿÿNc         S   sd   t  j j |  ƒ s d St |  d ƒ } | j ƒ  } | j ƒ  x | D] } d | k rB | SqB Wd Sd  S(   NR   RX   s	    PRODRG: (   RF   RG   RI   R]   t	   readlinesR_   (   t   log_fileRe   t   linest   line(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   get_prodrg_error_message@  s    
s   //t   /s	   coot-ccp4s   tmp-residue-for-prodrg.pdbs   .coot-to-lbg-mols   .coot-to-lbg-pdbs   .coot-to-lbg-libs   tmp-prodrg-flat.logi    R@   t   MOLOUTRA   RB   t   arg_lists   COORDS BOTHs	   MINI FLATRC   s   Ooops: cprodrg not found?s%   Something went wrong running cprodrg
(   RD   t   randomt   strt   new_molecule_by_atom_selectionRF   RG   RH   R*   R+   t   write_pdb_fileRE   RL   R    R0   RZ   RK   R   (   t   imol_int   chain_id_int	   res_no_inRD   Rp   Rl   t   selection_stringR   t   prodrg_input_file_namet   prodrg_output_mol_filet   prodrg_output_pdb_filet   prodrg_output_lib_fileRR   Ro   RT   t   mess(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   prodrg_flat/  sF    	
	

c         C   sÈ   d | d t  | ƒ } t | | ƒ } t j j d d t  t j ƒ  ƒ ƒ } | d } | d } | d }	 | d }
 t | | ƒ t t d	 | d
 | d |	 g d d g |
 t	 ƒ } t
 | ƒ | | |	 g S(   Ns   //Rm   s	   coot-ccp4s   prodrg-tmp-s
   -xyzin.pdbs   -xyzout.pdbs	   -dict.cifs   .logR@   RA   RB   s	   MINI PREPRC   (   Rq   Rr   RF   RG   RH   t   getpidRs   RL   R    R0   t   close_molecule(   t   modeRt   Ru   Rv   Rw   R   t   stubRM   R   R1   RR   t   result(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   prodrg_plainu  s"    %



		
c      
   C   sË   d d  l  } t |  | | ƒ } t d |  | | ƒ } | rÇ | d d k rÇ | d } | d } | d }	 | d }
 | d } t ƒ  } | d } | d } | d } t | | | d | | |	 | |
 ƒ	 n  d  S(   Niÿÿÿÿs   mini-noi    i   i   i   R   (   RD   R}   Rƒ   R'   t   fle_view_internal(   R   t   chain_idt   res_not   ins_codeRD   t   r_flatt   r_plaint   imol_ligand_fragmentt    prodrg_output_flat_mol_file_namet    prodrg_output_flat_pdb_file_namet   prodrg_output_cif_file_namet   prodrg_output_3d_pdb_file_nameR2   R3   R4   R5   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   fle_viewŒ  s&    




	


c         C   sÅ   t  ƒ  } | d }  | d } | d } t |  | | ƒ } t d |  | | ƒ } | rÁ | d d k rÁ | d }	 | d }
 | d } | d } | d } t |  | | d |	 |
 | | | d | ƒ n  d  S(   Ni    i   i   s   mini-noi   R   (   R'   R}   Rƒ   t   fle_view_internal_to_png(   R   R…   R†   R‡   t   neighb_radiust   png_file_nameR2   Rˆ   R‰   RŠ   R‹   RŒ   R�   RŽ   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   fle_view_to_pngÃ  s&    	







c      
   C   s]   t  ƒ  rY t ƒ  �8 \ } } } } } } t |  ƒ } t | | | | ƒ Wd QXt |  ƒ n  d S(   sA   
    import from SBASE, callback using sbase_import_function
    N(   R'   R(   R`   R   (   R
   R3   R4   R5   R6   R7   R8   R   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   get_ccp4srs_monomer_and_overlayá  s    		N(   R    RF   t   getenvRG   t   dirnamet   bin_dirt   base_dirRH   t   clibdt   prodrg_paramsRI   t   environt   enhanced_ligand_coot_pRM   RY   t   homet
   is_windowsR   R=   R   RW   R[   R\   Rg   R}   Rƒ   R�   R“   R”   (    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/prodrg_import.pyt   <module>   sH   				•	"			0	F		7	