ó
©%�Tc           @   sd   d  Z  d Z d Z d a d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 d
 „  Z
 d „  Z d S(   s   http://www.ebi.ac.uks   pdbe-srv/view/filest   ents   coot-downloadc         C   sg   d d l  } t } d | j f d „  ƒ  Y} | ƒ  } y | j |  | ƒ \ } } Wn d |  GHn X| S(   so   Helper function to avoid downloading empty files
    returns download filename upon success or False when fail.iÿÿÿÿNt   CootURLopenerc           B   s   e  Z d  „  Z RS(   c         S   s   d  S(   N(    (   t   selft   urlt   fpt   errcodet   errmsgt   headers(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   http_error_default:   s    (   t   __name__t
   __module__R   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyR   9   s   s&   BL WARNING:: retrieve of url %s failed(   t   urllibt   Falset   FancyURLopenert   retrieve(   R   t	   file_nameR   t   local_filenameR   t   openert   header(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   coot_urlretrieve2   s    	c         C   sÌ   d d  l  } d d  l } | j j |  ƒ s< | j j |  ƒ rŒ | j j |  ƒ rZ |  Gd GHqÈ | j j |  ƒ r| t | | ƒ qÈ d G|  Gd GHn< | j |  ƒ | j j |  ƒ r» t | | ƒ n d G|  Gd GHd  S(   Niÿÿÿÿs9    is atually a file and not a dir, so we can't write to its   ERROR:: Oops - Can't write to s    directory!s    ERROR:: Oops - create-directory s    failed!(   t   osR   t   patht   isfilet   isdirR   t   mkdir(   t   dirR   t
   url_stringR   R   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   check_dir_and_get_urlM   s    $c         C   s´   d d  l  } | d k rN t d |  d t } t t | | ƒ t | ƒ } | S| d k r° t d |  d } | } | j | ƒ r° | d k r° t t | | ƒ t | | ƒ q° n  d  S(   Niÿÿÿÿt   pdbt   /s   .pdb.t   sfss   .cif(   t   operatort   coot_tmp_dirt   pdbe_file_name_tailR   t   handle_read_draw_moleculet   isNumberTypet   read_cif_data(   t   idR   t	   data_typet   imol_coords_arg_listR   t   pdb_file_namet   imol_coordst   sfs_file_name(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   get_url_strb   s    c         C   s›   d d  l  } d d  l } t |  ƒ } | j | ƒ s? d G| GHn  | d k  rS d GHnD | j |  ƒ } t d t d d | d t } t |  | d | ƒ d  S(	   Niÿÿÿÿs/   Failed at reading coordinates. imol-coords was i    s   failed to read coordinates.R   t   rs   sf.R   (	   R   t   stringt   get_ebi_pdbR#   t   lowert   pdbe_servert   pdbe_pdb_file_dirR!   R+   (   R%   R   R-   R)   t   down_idt   url_str(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   get_ebi_pdb_and_sfsx   s    c         C   sz   d d  l  } d d  l } | j |  ƒ } t d t d | d t } t |  | d d  ƒ } t | ƒ rv t	 | | ƒ n  | S(   NiÿÿÿÿR   t   .R   (
   R   R-   R/   R0   R1   R!   R+   t   Nonet   valid_model_molecule_qmt   pdb_validate(   R%   R   R-   R2   R3   R)   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyR.   Œ   s    c            s  d d  l  ‰  d d  l } ‡  f d †  } d } d } d „  } | |  ƒ } t | t ƒ r[ | St t ƒ } | rˆ  j |  ƒ } | d }	 d | d }
 t d	 |
 } | | ƒ } |	 | | d	 |
 } | d
 } t d	 | } |	 | | d	 | } | d | } y5 t | ƒ } d | k } d | k r4d |  GHt SWn d G| GHt SXt	 | | ƒ } d G| GHt	 | | ƒ } d G| GH| ršd | d } t
 | ƒ n  t | ƒ } t | d d d d d ƒ } t | d d d d d ƒ } t | ƒ t | ƒ rÿ| | | g St Sn	 d Gt GHd  S(   Niÿÿÿÿc            s
  ˆ  j  |  ƒ } t j j d d | d ƒ } t j j d | d ƒ } t j j | ƒ s[ t St j j | ƒ sq t St | ƒ } t | d d d d d ƒ } t | d	 d
 d d d ƒ } t | ƒ oÔ t	 | ƒ oÔ t	 | ƒ sù t
 | ƒ t
 | ƒ t
 | ƒ t S| | | g Sd  S(   Ns   coot-downloadR   s   .ents   _sigmaa.mtzt   2FOFCWTt	   PH2FOFCWTt    i    t   FOFCWTt   PHFOFCWTi   (   R/   R   R   t   joinR   R   t   read_pdbt   make_and_draw_mapR7   t   valid_map_molecule_qmt   close_molecule(   t   accession_codet	   down_codeR(   t   mtz_file_namet   imolt   imol_mapt
   imol_map_d(   R-   (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   get_cached_eds_files¶   s(    


s   http://eds.bmc.uu.se/edss   http://eds.bmc.uu.sec         S   s3   |  s
 d St  |  ƒ d k s  d S|  d d !d Sd  S(   Ns   //fail//i   s   /FAIL/i   i   R   (   t   len(   t   id_code(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt	   mid_charsÕ   s
    s   /dfs/R   s   .entR   s   _sigmaa.mtzs   /cgi-bin/eds/uusfs?pdbCode=s   No reliable map availables"   There is no structure factor entrys=   BL WARNING:: no sfs available for entry %s, so wont download.s/   BL ERROR:: could not get pre_download_info froms   INFO:: read model status: s   INFO:: read mtz   status: s
   This map (s.   ) is marked by the EDS as "not a reliable map"R9   R:   R;   i    R<   R=   i   s   Can't make directory (   R-   R   t
   isinstancet   listt
   coot_mkdirR    R/   t   coot_get_url_as_stringR   R   t   info_dialogR"   R@   t   set_scrollable_mapR7   (   R%   R   RI   t   eds_sitet   eds_coreRL   t   cached_statusR,   R2   t   eds_urlt   target_pdb_filet   dir_target_pdb_filet   mct	   model_urlt   target_mtz_filet   dir_target_mtz_filet   mtz_urlt   eds_info_paget   pre_download_infot   bad_map_statust   s1t   s2t   st   r_imolt   map_1t   map_2(    (   R-   sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   get_eds_pdb_and_mtz§   s^    	


				
c         C   s   t  |  | ƒ d  S(   N(   t   coot_get_url(   t   my_urlR   (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   net_get_url  s    c   	      C   sL  t  |  t ƒ s d GHn1t |  ƒ d k s1 d GHnt j |  ƒ }  d |  d d !d |  d |  d } |  d	 } |  d
 } |  d } | d } | d } | d } d G| GHt | | ƒ d G| GHt | | ƒ d G| GHt | | ƒ t | ƒ } | d k  rd GHnE d G| GHt | d d d d d ƒ t | d d d d d ƒ t | ƒ d  S(   Ns*   BL WARNING:: No string. No accession code.i   s(   BL WARNING:: Accession code not 4 chars.s   http://www.cmbi.ru.nl/pdb_redo/i   i   R   t   _finals
   _final.pdbs
   _final.mtzs   .pys   .pdbs   .mtzt   gettingi    sd   BL INFO:: problem opening pdb file. Most likely                 something went wrong in the downloads   make-and-draw-map witht   FWTt   PHWTR;   t   DELFWTt   PHDELWT(	   RM   t   strRJ   R-   R/   Rj   R?   R@   t   execfile(	   t   textt   stubR(   RE   t   py_file_namet   url_pdbt   url_mtzt   url_pyt   status_imol(    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   get_pdb_redo  s2    %





				N(   R0   R1   R!   R    R   R   R+   R4   R.   Rg   Rj   Rz   (    (    (    sN   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/coot/get_ebi.pyt   <module>   s   						p	