ó
Ê™xTc           @   sÛ   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l m Z m	 Z	 d  d l
 m Z d  d l m Z m Z d  d l m Z m Z d  d l m Z m Z d  d l Z
 d	 „  Z e d
 k r× e ƒ  n  d S(   iÿÿÿÿ(   t   divisionN(   t   master_phil(   t   ChemicalEnvironmentt   ScatteringEnvironment(   t   ions(   t   WATER_RES_NAMESt   AtomProperties(   t	   ion_classt   predict_ion(   t   generate_zinc_inputst   generate_calcium_inputsc          C   sË  t  t g }  d d g } x§t |  | ƒ D]–\ } } | d t ƒ \ } } t j j ƒ  } t j j	 d | | d j
 | ƒ d d g d t ƒ  d	 | d
 t d t d t d d ƒ } t j | ƒ t j | ƒ t j t j j | ƒ d d ƒ t j t j j | ƒ d d ƒ t j j d | j d | j d | j d | j j j d | j d | j j d | d t j j ƒ } g  }	 xÂ | j j ƒ  j ƒ  D]« }
 x¢ |
 j ƒ  D]” } | j ƒ  } t  | ƒ d k rÁq—n  xg | D]_ } | j! j" ƒ  j# ƒ  } | t$ k rÈ| j% ƒ  } t  | ƒ d k r'|	 j& | d j' ƒ q'qÈqÈWq—Wq„Wt  |	 ƒ d k sKt( ‚ g  |	 D] } t) | | ƒ ^ qR} xN| D]F} | j' } t* | | j+ | d d ƒ| ƒ } t, | | d | j- d | ƒ d | j- d  | ƒ d! | j- d" | ƒ ƒ} t. | ƒ } | d# k st( ‚ t/ | | d$ d% d& d' g ƒ} | d  k rXd( GHd) j
 t j j1 t2 ƒ d ƒ GHd  S| | d d k rtd* j
 | d d | ƒ GHx% | D] \ } } d+ j
 | | ƒ GHqŒWt3 j4 ƒ  qtqtWq( Wd, GHd  S(-   Ngffffffð?g¤p=
×£ø?t	   anonymizet   argss   wavelength={}s   use_phaser=Trues   use_svm=TrueR   t   outt   process_pdb_filet   create_fmodelt   prefer_anomaloust   set_inelastic_form_factorst   sasakii    s   _fmodel.effs   .pdbt   pdb_hierarchyt   fmodelt   geometry_restraints_managert
   wavelengtht   paramst   nproct   logt   manager_classi   t   far_distance_cutoffg      @t
   fo_densityt   mFot   fofc_densitys   mFo-DFct   anom_densityt   anomt    t   elementst   HOHt   ZNt   CAs   Could not load SVM classifiers   Skipping {}s*   Prediction ({}) did not match expected: {}s     {}: {:.2f}t   OK(5   R
   R	   t   zipt   Truet   libtbxt   utilst   null_outt   mmtbxt   command_linet   load_model_and_datat   formatR   t   ost   removet   patht   splitextR   t   identifyt   create_managerR   R   t   geometryR   t   inputR   R   t   svmt   managert
   only_modelt   chainst   residue_groupst   atom_groupst   lent   resnamet   stript   upperR   t   atomst   appendt   i_seqt   AssertionErrorR   R   t   find_nearby_atomsR   t   get_map_gaussian_fitR   R   t   Nonet   splitt   __file__t   syst   exit(   t   fnst   wavelengthst   fnR   t   mtz_filet   pdb_fileR+   t   cmdlineR9   t   waterst   chaint   residue_groupR=   t
   atom_groupR?   RB   RD   t
   atom_propst	   atom_propt   chem_envt   scatter_envt   predictionst   elementt   prob(    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/ions/svm/tst_classifier.pyt   exercise   s†    		!!				&"			t   __main__(   t
   __future__R    R0   RK   R)   t   mmtbx.command_line.water_screenR   t   mmtbx.ions.environmentR   R   R,   R   t   mmtbx.ions.identifyR   R   t   mmtbx.ions.svmR   R   t)   mmtbx.regression.make_fake_anomalous_dataR	   R
   t   mmtbx.command_lineR^   t   __name__(    (    (    sK   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/mmtbx/ions/svm/tst_classifier.pyt   <module>   s   	X