ó
a#nSc           @   s(  y d  d l  m Z Wn9 e k
 rO d  d l Z e j j d ƒ d Z d Z nxXd  d l	 m
 Z
 y d  d l m Z Wn e k
 r� d Z n Xd Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l Z d  d l Z d  d l Z d „  Z d  d l m Z d e f d „  ƒ  YZ  d e f d „  ƒ  YZ! d  d l" m# Z$ d  d l% m& Z& m' Z' d e f d „  ƒ  YZ( d e f d „  ƒ  YZ) d „  Z e e _ e* d k r$d  d l Z e j+ d Z, e j+ d Z- d Z. e e, e- ƒ Z/ e e/ e. d d ƒn  d S(    iÿÿÿÿ(   t   platypusNsL   ReportLab module could not be imported.  Db->PDF functionality not available(   t   Chem(   t   chemdrawi    i   (   t   cactvs(   t
   rdDepictor(   t	   DrawUtils(   t	   DbConnect(   t   DbInfo(   t	   PDFReportt   ReportUtilsc         O   së   |  j  | | Ž  } | j ƒ  g } | j ƒ  } g  } xM t t | ƒ ƒ D]9 } | | t j k so | | d k rF | j | ƒ qF qF Wd } xL | D]D }	 | d 7} x$ | D] }
 t |	 ƒ }	 d |	 |
 <q§ W| j |	 ƒ q� Wt	 j
 | ƒ } | S(   s%    this becomes a method of DbConnect  t   binaryi    i   s   N/A(   t   GetDatat   GetColumnNamest   GetColumnTypest   ranget   lenR   t   sqlBinTypest   appendt   listR    t   Table(   t   selft   argst   kwargst   dbRest   rawDt   colTypest   binColst   it   nRowst   entryt   colt   res(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyt   GetReportlabTable"   s     #
(   t   incht   CDXImageTransformerc           B   s#   e  Z d  d  d d „ Z d „  Z RS(   i   c         C   sG   | |  _  | d  k r$ t j ƒ  } n  | |  _ | t |  _ | |  _ d  S(   N(   t   smiColt   NoneR	   t   TempFileHandlert   tempHandlerR!   t   widtht   verbose(   R   R#   R'   R(   R&   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyt   __init__9   s    		c   
      C   sõ   t  | ƒ } |  j r% d G| d GHn  t rñ | |  j } |  j j d ƒ } yw t j | ƒ } | j \ } } t	 | ƒ | } | j
 | ƒ t j | ƒ } |  j | _ | |  j | _ | | |  j <Wqñ d d  l }	 |	 j ƒ  d | |  j <qñ Xn  | S(   Ns   Render:i    s   .jpgiÿÿÿÿt   Failed(   R   R(   t   hasCDXR#   R&   t   getR   t   SmilesToPilImaget   sizet   floatt   saveR    t   ImageR'   t	   drawWidtht
   drawHeightt	   tracebackt	   print_exc(
   R   t   argR   t   smit   tmpNamet   imgt   wt   ht   aspectR4   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyt   __call__@   s(    	
N(   t   __name__t
   __module__R$   R)   R=   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR"   8   s   t   CactvsImageTransformerc           B   s#   e  Z d  d d d „ Z d „  Z RS(   g      ð?i   c         C   sG   | |  _  | d  k r$ t j ƒ  } n  | |  _ | t |  _ | |  _ d  S(   N(   R#   R$   R	   R%   R&   R!   R'   R(   (   R   R#   R'   R(   R&   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR)   W   s    		c   
      C   sþ   t  | ƒ } |  j r? t j j d |  j t | d ƒ f ƒ n  | |  j } |  j j d ƒ } d } d } | | } t	 j
 | | | | f ƒ } | r× y/ t j | ƒ }	 |  j |	 _ | |  j |	 _ Wq× d } q× Xn  | rí |	 | |  j <n d | |  j <| S(   Ns   Render(%d): %s
i    s   .gifi   i,  R*   (   R   R(   t   syst   stderrt   writeR#   t   strR&   R,   R   t   SmilesToGifR    R1   R'   R2   R3   (
   R   R6   R   R7   R8   R<   R'   t   heightt   okR9   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR=   ^   s(    	*
N(   R>   R?   R$   R)   R=   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR@   V   s   (   t   RLCanvas(   t
   MolDrawingt   DrawingOptionst   ReportLabImageTransformerc           B   s#   e  Z d  d d d „ Z d „  Z RS(   g      ð?i   c         C   s#   | |  _  | t |  _ | |  _ d  S(   N(   R#   R!   R'   R(   (   R   R#   R'   R(   R&   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR)   z   s    	c         C   sR  t  | ƒ } |  j r? t j j d |  j t | d ƒ f ƒ n  | |  j } d } |  j } | | } y‘ t j	 | ƒ } t j
 | ƒ t | | f ƒ } t ƒ  }	 d |	 _ d |	 _ t d |	 ƒ }
 | j ƒ  sÜ t j | ƒ n  |
 j | d | ƒt } Wn/ |  j rd d  l } | j ƒ  n  t } n X| rA| j | |  j <n d	 | |  j <| S(
   Ns   Render(%d): %s
i    i   i   g      à?t   optionst   canvasiÿÿÿÿR*   (   R   R(   RA   RB   RC   R#   RD   R'   R   t   MolFromSmilest   Kekulizet   CanvasRJ   t   atomLabelMinFontSizet   bondLineWidthRI   t   GetNumConformersR   t   Compute2DCoordst   AddMolt   TrueR4   R5   t   Falset   drawing(   R   R6   R   R7   R<   R'   RF   t   molt   canvRL   RX   RG   R4   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR=   ~   s8    	*	
			
	
N(   R>   R?   R$   R)   R=   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyRK   y   s   t   RDImageTransformerc           B   s#   e  Z d  d d d „ Z d „  Z RS(   g      ð?i   c         C   sG   | |  _  | d  k r$ t j ƒ  } n  | |  _ | t |  _ | |  _ d  S(   N(   R#   R$   R	   R%   R&   R!   R'   R(   (   R   R#   R'   R(   R&   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR)   ¡   s    		c   
      C   s  t  | ƒ } |  j r? t j j d |  j t | d ƒ f ƒ n  | |  j } |  j j d ƒ } d } d } | | } t	 j
 | | d | | f ƒ} | rÚ y/ t j | ƒ }	 |  j |	 _ | |  j |	 _ WqÚ d } qÚ Xn  | rð |	 | |  j <n d | |  j <| S(   Ns   Render(%d): %s
i    s   .jpgi   i,  R.   R*   (   R   R(   RA   RB   RC   R#   RD   R&   R,   R   t   SmilesToJpegR    R1   R'   R2   R3   (
   R   R6   R   R7   R8   R<   R'   RF   RG   R9   (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR=   ¨   s(    	*
N(   R>   R?   R$   R)   R=   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyR[       s   c         O   sà  d d l  m } d d l m } d d l m } | ƒ  } d } | j d ƒ rb | d } | d =n  g  |  j ƒ  D] }	 |	 j ƒ  ^ qo }
 y |
 j	 d ƒ } Wn> t
 k
 rÚ y |
 j	 d ƒ } WqÛ t
 k
 rÖ d } qÛ Xn X| d k rt rü t | ƒ } qt | ƒ } n d  } | | d	 <|  j | | Ž  } | j t j d
 d d d | j f d d d d d f g ƒ ƒ | d k r“| r“| j d | j | <n  | g } t ƒ  } | | _ t j | ƒ } | j | d | j d | j ƒd  S(   Niÿÿÿÿ(   t   colors(   t   getSampleStyleSheet(   R!   s	   Db Reportt   titlet   SMILESt   SMIt	   transformt   GRIDi    i   t   FONTs   Times-Romani   g333333ó?t   onFirstPaget   onLaterPages(   i    i    (   iÿÿÿÿiÿÿÿÿ(   i    i    (   iÿÿÿÿiÿÿÿÿ(   t   reportlab.libR]   t   reportlab.lib.stylesR^   t   reportlab.lib.unitsR!   t   has_keyR   t   uppert   indext
   ValueErrorR+   R"   RK   R$   R    t   setStyleR    t
   TableStylet   blackR'   t   _argWR   t
   pageHeadert   SimpleDocTemplatet   buildt   onPage(   t   connt   fileNameR   R   R]   R^   R!   t   stylesR_   t   xt   namesR#   t   tformt   tblt   elementst   reportTemplatet   doc(    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyt   QuickReportÀ   sB    	

%
!			t   __main__i   s
   report.pdft   wheres'   where mol_id in ('1','100','104','107')(0   t	   reportlabR    t   ImportErrorRA   RB   RC   R$   R    R€   t   rdkitR   t   pyRDkit.utilsR   R+   t   rdkit.utilsR   t
   rdkit.ChemR   t   rdkit.Chem.DrawR   t   rdkit.Dbase.DbConnectionR   t   rdkit.DbaseR   t   rdkit.Reports.PDFReportR   R	   t   ost   tempfileRi   R!   t   objectR"   R@   t"   rdkit.sping.ReportLab.pidReportLabRH   RP   t   rdkit.Chem.Draw.MolDrawingRI   RJ   RK   R[   R>   t   argvt   dbNamet   tblNamet   fNameRv   (    (    (    sV   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/python2.7/site-packages/rdkit/Dbase/DbReport.pyt   <module>   sH   

$	!' 	.	