ó
Ž™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 d  d l	 m
 Z
 m Z d  d l m Z d  d l m Z m Z m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l Z e j j d ƒ r÷ d  d l m Z n 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) e* d k r‘e) ƒ  n  d S(   iÿÿÿÿ(   t   divisionN(   t   Sorry(   t   easy_run(   t   Exception_expectedt   open_tmp_file(   t   file_reader(   t   any_filet   sort_by_file_typet   group_files(   t   miller(   t   crystal(   t   flext   ccp4io(   t   mtzc          C   s~   d }  t  d d ƒ } | j |  ƒ | j ƒ  t d ƒ } | j d ƒ t j d ƒ j } d | d k sm t ‚ t	 j
 d ƒ d  S(   Nsú  
data_comp_list
loop_
_chem_comp.id
_chem_comp.three_letter_code
_chem_comp.name
_chem_comp.group
_chem_comp.number_atoms_all
_chem_comp.number_atoms_nh
_chem_comp.desc_level
HOH      .   'water                               ' solvent             3   1 .
#
data_comp_HOH
#
loop_
_chem_comp_atom.comp_id
_chem_comp_atom.atom_id
_chem_comp_atom.type_symbol
_chem_comp_atom.type_energy
_chem_comp_atom.partial_charge
 HOH           O      O    OH2      -0.408
 HOH           H1     H    HOH2      0.204
 HOH           H2     H    HOH2      0.204
loop_
_chem_comp_tree.comp_id
_chem_comp_tree.atom_id
_chem_comp_tree.atom_back
_chem_comp_tree.atom_forward
_chem_comp_tree.connect_type
 HOH      O      n/a    .      END
 HOH      H1     O      .      .
 HOH      H2     O      .      .
loop_
_chem_comp_bond.comp_id
_chem_comp_bond.atom_id_1
_chem_comp_bond.atom_id_2
_chem_comp_bond.type
_chem_comp_bond.value_dist
_chem_comp_bond.value_dist_esd
 HOH      O      H1        coval       0.980    0.020
 HOH      O      H2        coval       0.980    0.020
loop_
_chem_comp_angle.comp_id
_chem_comp_angle.atom_id_1
_chem_comp_angle.atom_id_2
_chem_comp_angle.atom_id_3
_chem_comp_angle.value_angle
_chem_comp_angle.value_angle_esd
 HOH      H1     O      H2      106.800    3.000
s   tmp1.cift   wt   cifs   iotbx.file_reader tmp1.cifi    (   t   opent   writet   closeR   t   assert_file_typeR   t   fully_bufferedt   stdout_linest   AssertionErrort   ost   remove(   t   cif_datat   fR   t   lines(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_cif   s    3
c          C   s  d }  t  d d d d ƒ } | |  IJ| j ƒ  t | j ƒ } | j d ƒ | j d ƒ | j ƒ  } t | j ƒ  ƒ d k s‚ t	 ‚ t | j
 ƒ  ƒ d k s  t	 ‚ | j d	 k sµ t	 ‚ | j j } t | j ƒ  ƒ d
 k sß t	 ‚ | j j j ƒ  } t | ƒ d k s	t	 ‚ d  S(   Ns  data_4EDR
_cell.length_a           150.582
_cell.length_b           150.582
_cell.length_c           38.633
_cell.angle_alpha        90.000
_cell.angle_beta         90.000
_cell.angle_gamma        120.000
#
_symmetry.space_group_name_H-M             'P 61'
#
loop_
_atom_site.group_PDB
_atom_site.id
_atom_site.type_symbol
_atom_site.label_atom_id
_atom_site.label_alt_id
_atom_site.label_comp_id
_atom_site.label_asym_id
_atom_site.label_entity_id
_atom_site.label_seq_id
_atom_site.Cartn_x
_atom_site.Cartn_y
_atom_site.Cartn_z
_atom_site.occupancy
_atom_site.B_iso_or_equiv
_atom_site.auth_seq_id
_atom_site.auth_comp_id
_atom_site.auth_asym_id
_atom_site.auth_atom_id
_atom_site.pdbx_PDB_model_num
ATOM   1    N  N     . SER A 1 1 21.138  -69.073 17.360  1.00 23.68 108 SER A N     1
ATOM   2    C  CA    . SER A 1 1 22.164  -68.793 18.358  1.00 22.98 108 SER A CA    1
ATOM   3    C  C     . SER A 1 1 23.173  -67.799 17.805  1.00 21.13 108 SER A C     1
ATOM   4    O  O     . SER A 1 1 23.251  -67.594 16.595  1.00 19.34 108 SER A O     1
ATOM   5    C  CB    . SER A 1 1 22.882  -70.080 18.766  1.00 22.68 108 SER A CB    1
ATOM   6    O  OG    . SER A 1 1 23.683  -70.569 17.703  1.00 24.00 108 SER A OG    1
HETATM 2650 MN MN    . MN  F 4 . 9.296   -44.783 -6.320  1.00 44.18 505 MN  A MN    1
t   suffixR   t   modeR   t   pdbs   P 61s'   (150.582, 150.582, 38.633, 90, 90, 120)t   Modeli   i    (   R   R   R   t   nameR   t   check_file_typet   crystal_symmetryt   strt   space_group_infoR   t	   unit_cellt   file_descriptiont   file_objectt	   hierarchyt   lent   atomst   inputt   remark_section(   t
   input_4edrR   t   mmcift   symmR)   t   remarks(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_mmcifS   s    '

c          C   s½  d }  t  d d ƒ } | j |  ƒ | j ƒ  t d ƒ } y | j d ƒ Wn t k
 r\ n Xt ‚ | j d ƒ | j d ƒ y | j d ƒ Wn t k
 r¡ n Xt ‚ y | j d d d g ƒ Wn t k
 rÕ n Xt ‚ | j d d d g ƒ | j ƒ  } | d  k st
 ‚ t j d ƒ t  d	 d ƒ } | j |  ƒ | j ƒ  t d	 ƒ } | j d ƒ d
 |  } t  d d ƒ j | ƒ t d ƒ j d ƒ } | j ƒ  } t | j ƒ  ƒ d k s»t
 ‚ t | j ƒ  ƒ d k sÙt
 ‚ d } t  d d ƒ } | j | ƒ | j ƒ  y t d d t ƒ} Wn t k
 r0} n Xt ‚ y t d d d ƒ} Wn t k
 rb} n Xt ‚ y t d d d d t ƒ} Wn+ t k
 r²} d t | ƒ k s¹t
 ‚ n Xt ‚ d  S(   Ns;  
HEADER    HYDROLASE(METALLOPROTEINASE)            17-NOV-93   1THL
ATOM      1  N   ILE     1       9.581  51.813  -0.720  1.00 31.90      1THL 158
ATOM      2  CA  ILE     1       8.335  52.235  -0.041  1.00 52.95      1THL 159
ATOM      3  C   ILE     1       7.959  53.741   0.036  1.00 26.88      1THL 160
END
s   tmp1.pdbR   t   txtR   t   hklt   multiple_formatst   seqs   tmp1.ent.txtsG   CRYST1   21.937    4.866   23.477  90.00 107.08  90.00 P 1 21 1      2
s   tmp_file_reader2.pdbs   P 1 21 1s'   (21.937, 4.866, 23.477, 90, 107.08, 90)s:  
HEADER    HYDROLASE(METALLOPROTEINASE)            17-NOV-93   1THL
ATOM      1  N   ILE     1       9.581  51.813  -0.720  1.00 31.90      1THL 158
ATOM      2  CA  ILE     1       8.335  52.235  -0.041  1.00 52.95      1THL 159
ATOM      3  C   ILE     1       7.959  53.741   0.036  1,00 26.88      1THL 160
ENDs   tmp1_bad.pdbt"   raise_sorry_if_not_expected_formatt
   force_typet   philt   raise_sorry_if_errorss/   Couldn't read 'tmp1_bad.pdb' as file type 'pdb'(   R   R   R   R   R   R   R   R"   R#   t   NoneR   R   R   R$   R%   R&   t   Truet   RuntimeError(   t   pdb_dataR   R   R0   t   pdb_data_symmt   pdb_data_badt   e(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_pdbŠ   st    



	c          C   sÓ   d }  t  d d ƒ } | j |  ƒ | j ƒ  t d ƒ } | j d k sM t ‚ | j j ƒ  } | j j	 j
 d k sw t ‚ | j j j j j d  k s˜ t ‚ t j d ƒ y | j ƒ  } Wn t k
 rÈ n Xt ‚ d  S(   Ns±  refinement {
  input {
    include scope mmtbx.utils.neutron_data_str
    include scope mmtbx.utils.xray_data_str
  }
  refine {
    strategy = *individual_adp *individual_sites *tls occupancies group_adp
      .type = choice(multi=True)
    adp {
      tls = None
        .type = str
        .multiple = True
    }
  }
  main {
    number_of_macro_cycles = 3
      .type = int
    simulated_annealing = True
      .type = bool
  }
}s	   tmp1.philR   R9   i   (   R   R   R   R   t	   file_typeR   R(   t   extractt
   refinementt   maint   number_of_macro_cyclesR,   t	   xray_datat   r_free_flagst   test_flag_valueR;   R   R   R#   t   NotImplementedErrorR   (   t	   phil_dataR   R9   t   paramsR0   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_philÚ   s    
!c          C   s‹   t  d d ƒ }  t d d d ƒ } t j | |  ƒ |  j ƒ  t d ƒ } | j d k s\ t ‚ | j } | j	 d k sz t ‚ t
 j d ƒ d  S(   Ns   tmp1.pklt   wbiÑ  s   Hello, world!s	   tmp1.philt   pkl(   R   t   OSErrort   cPicklet   dumpR   R   RC   R   R(   t   errnoR   R   (   R   RA   RP   t	   exception(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_pickle  s    
	c          C   sD  d d d g }  d d d g } t  d d ƒ } | j d	 | d
 |  d
 f ƒ | j ƒ  t d ƒ } | j d k sw t ‚ | j d
 j |  d
 d k s› t ‚ t j	 d ƒ t  d d ƒ } | j |  d
 ƒ | j ƒ  t d ƒ } | j d k só t ‚ | j d
 j |  d
 k st ‚ t j	 d ƒ t  d d ƒ } | j d | d
 |  d
 f ƒ | j ƒ  t d d ƒ } | j d k s|t ‚ t j	 d ƒ t  d d ƒ } x4 t
 | |  ƒ D]# \ } } | j d | | f ƒ q¨W| j ƒ  t d ƒ } | j d k sút ‚ x6 t | j ƒ D]% \ } } | j |  | k s
t ‚ q
Wt j	 d ƒ d  S(   Nt   AAKDVKFGVNVLADAVt   AAKDVKFGNDARVKMLt   AVKDVRYGNEARVKILs   anb.pdb chain As   anb.pdb chain Bs   anb.pdb chain Cs   sequence.pirR   s
   > %s

%s
*i    R6   t   *s   sequence.dats   sequence.fas   > %s
%ss   sequences.fas   > %s
%s
(   R   R   R   R   RC   R   R(   t   sequenceR   R   t   zipt	   enumerate(   t   seqst   headersR   t   headerR6   t   it
   seq_object(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_sequence  sL    		
$
 

c          C   sª   d }  t  d d ƒ j |  ƒ t d ƒ } | j d ƒ | j j d d g k sS t ‚ d } t  d d ƒ j | ƒ t d ƒ } | j d ƒ | j j d d g k s¦ t ‚ d  S(   Nsµ  >1mru_A
-----------------GSHMTTPSHLSD-----RYELGEILGFGGMSEVHLARDLRLHR
DVAVKVLRADLARDPSFYLRFRREAQNAAALNHPAIVAVYDTGEAETPAGPLPYIVMEYV
DGVTLRDIVHTEGPMTPKRAIEVIADACQALNFSHQNGIIHRDVKPANIMISATNAVKVM
DFGIARAIADSGNSVTQTAAVIGTAQYLSPEQARGDSVDARSDVYSLGCVLYEVLTGEPP
FTGDSPVSVAYQHVREDPIPPSARHEGLSADLDAVVLKALAKNPENRYQTAAEMRADLVR
VHNGEPPEAPKVLTDAERTSLLSSAAGNLSGPR
>2h34_A
MGSSHHHHHHSSGLVPRGSHMDGTAESREGTQFGPYRLRRLVGRGGMGDVYEAEDTVRER
IVALKLMSETLSSDPVFRTRMQREARTAGRLQEPHVVPIHDFGEID---GQL-YVDMRLI
NGVDLAAMLRRQGPLAPPRAVAIVRQIGSALDAAHAAGATHRDVKPENILVSADDFAYLV
DFGIASATTD--EKLTQLGNTVGTLYYMAPERFSESHATYRADIYALTCVLYECLTGSPP
YQGDQ-LSVMGAHINQAIPRPSTVRPGIPVAFDAVIARGMAKNPEDRYVTCGDLSA----
-----AAHAALATADQDRATDILR--------Rs   seqs.alnR   t   alnt   1mru_At   2h34_Asù  MUSCLE (3.8) multiple sequence alignment


1mru_A          -----------------GSHMTTPSHLSD-----RYELGEILGFGGMSEVHLARDLRLHR
2h34_A          MGSSHHHHHHSSGLVPRGSHMDGTAESREGTQFGPYRLRRLVGRGGMGDVYEAEDTVRER
                                 ****  .:   :      * *  ::* ***.:*: * *    *

1mru_A          DVAVKVLRADLARDPSFYLRFRREAQNAAALNHPAIVAVYDTGEAETPAGPLPYIVMEYV
2h34_A          IVALKLMSETLSSDPVFRTRMQREARTAGRLQEPHVVPIHDFGEID---GQL-YVDMRLI
                 **:*::   *: ** *  *:.***..*. *: * :*.::* ** :   * * *: *  :(   R   R   R   R   R(   t   namesR   (   t   aln1R   t   aln2(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_alignment;  s    c          C   s…   t  j j d d d t j j ƒ }  |  d  k	 r� t |  d d d d d g ƒ} | j d k s` t	 ‚ t
 | j ƒ j d	 k s� t	 ‚ n  d  S(
   Nt   relative_paths   phenix_regression/misc/hewl.hhrt   testt   valid_typesR6   Rd   t   hhrR3   t   hhsearch_parser(   t   libtbxt   envt   find_in_repositoriesR   t   patht   isfileR;   R   RC   R   t   typeR(   t   __name__(   t   hhr_fileR   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_hhr_  s    c          C   s¿   t  j j d d d t j j ƒ }  |  d  k	 r» t |  d d d d d d	 g ƒ} | j d k sc t	 ‚ | j
 j d
 k s{ t	 ‚ t | j
 j ƒ d k s™ t	 ‚ | j
 j d j d k s» t	 ‚ n  d  S(   NRk   s   phenix_regression/misc/hewl.xmlRl   Rm   R6   Rd   Rn   t   xmlR3   s	   #documenti   i   t   BlastOutput(   Rp   Rq   Rr   R   Rs   Rt   R;   R   RC   R   R(   t   nodeNameR*   t
   childNodes(   t   xml_fileR   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_xmlh  s    !c          C   s‘   t  j j d d d t j j ƒ }  |  d  k	 rQ t |  ƒ } | j d k sQ t	 ‚ n  t  j j
 d d d d ƒ } t | ƒ } | j d	 k s� t	 ‚ d  S(
   NRk   s   phenix_regression/misc/cns.mapRl   t	   xplor_mapt   module_namet   iotbxRs   s   ccp4_map/tst_input.mapt   ccp4_map(   Rp   Rq   Rr   R   Rs   Rt   R;   R   RC   R   t
   under_dist(   R   R   R‚   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_mapss  s    	c          C   s  t  j d d d d	 ƒ }  t j d
 |  d t d d ƒ } g  d d g D]6 } | j d t j d | j ƒ  j	 ƒ  ƒ ƒ j
 ƒ  ^ qC } | d j d d ƒ } | j ƒ  j d ƒ t d ƒ } | j d k sÉ t ‚ | j j d j ƒ  j d g k sñ t ‚ t j d ƒ d  S(   NR&   i
   i   i   iU   i_   id   t   space_group_symbols   P 1R#   t   anomalous_flagt   d_mini   i    i   t   datat   sizet   column_root_labelt   F0s   tmp1.mtzR4   (   i
   i   i   iU   i_   id   (   R
   t   symmetryR	   t	   build_sett   Falset   arrayR   t   random_doublet   indicesR‰   t#   set_observation_type_xray_amplitudet   as_mtz_datasett
   mtz_objectR   R   RC   R   t   file_servert   miller_arrayst   infot   labelsR   R   (   R#   t
   miller_setRa   t   input_arrayst   mtz_datasetR4   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_hkl€  s    				F(c          C   s_  d d d d d g }  d d d d d g } x• t  |  ƒ D]‡ \ } } t | d	 ƒ } | j d
 ƒ | j ƒ  t j | ƒ } | j | | k s‘ t ‚ | j d k r7 | j j ƒ  d k s¾ t ‚ q7 q7 Wt	 |  d d d d g ƒ}  |  d d d d d g k sþ t ‚ t j
 d d d g ƒ } t j d k r:| d k s:t ‚ n  t j
 g  ƒ } | d k s[t ‚ d  S(   Ns   foo.pdbs   foo.mtzs   bar.pdbs   bar.mtzs   seq.datR   R4   R6   R   t   1s   CCP4 MTZt
   sort_ordert   darwins  Reflections file (*.mtz, *.hkl, *.sca, *.cns, *.xplor, *.cv, *.ref, *.fobs)|*.mtz;*.hkl;*.sca;*.cns;*.xplor;*.cv;*.ref;*.fobs|Model file (*.pdb, *.ent)|*.pdb;*.ent|Sequence file (*.fa, *.faa, *.seq, *.pir, *.dat, *.fasta)|*.fa;*.faa;*.seq;*.pir;*.dat;*.fasta|All files (*.*)|*.*s   All files (*.*)|*.*(   R]   R   R   R   R   t   any_file_fastRC   R   R(   R   t   get_wildcard_stringst   syst   platform(   t
   file_namest
   file_typesRa   t	   file_nameR   t
   input_filet   wc(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_misc•  s"    
"!c          C   sQ  d d d d d d d d d	 d
 d d d d d g }  t  |  ƒ } | j d d g k sZ t ‚ | j g  k so t ‚ | j d d g d d d g d d
 d g d d d	 g d g d g g k s½ t ‚ t  |  d d ƒ} | j g  k sä t ‚ | j g  k sù t ‚ | j d d d g d d d	 g d d g d
 d d g d g d d d g g k sMt ‚ d  S(   Ns   /data/user/project1/p1.scas   /data/user/project2/p2.pdbs   /data/user/project1/p1.pdbs&   /data/user/project1/process/mosflm.logs&   /data/user/project4/refine/current.pdbs   /data/user/project3/data.scas   /data/user/project3/model.pdbs   /data/user/project2/native.mtzs   /data/user/project3/ligands.cifs   /data/user/project4/data.mtzs&   /data/user/project4/refine/ligands.cifs   /data/user/new_data.hkls   /data/user/project5/model.pdbs   /data/user/project5/model2.pdbs   /data/user/project5/anom.mtzt   template_formatR4   (   R   t   ambiguous_filesR   t   ungrouped_filest   grouped_files(   t   filest   g(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exercise_groups¨  sh    		c           C   sx   t  ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  t	 ƒ  t
 ƒ  t ƒ  t d  k rh d GHn t ƒ  d GHd  S(   Ns   Skipping mtz file testst   OK(   R2   R°   R©   R   RB   RN   RV   Rc   Rj   Rx   R~   R„   R   R;   Rœ   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   exerciseä  s     t   __main__(+   t
   __future__R    R   R¢   t   libtbx.load_envRp   t   libtbx.utilsR   R   t   libtbx.test_utilsR   R   R�   R   t   iotbx.file_readerR   R   R   t   cctbxR	   R
   t   cctbx.array_familyR   RR   Rq   t
   has_moduleR   R;   R   R2   RB   RN   RV   Rc   Rj   Rx   R~   R„   Rœ   R©   R°   R²   Rv   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/regression/tst_file_reader.pyt   <module>   s>   	?	7	P	(		.	$							<	