B
    3Rc                 @   sB   d Z ddlmZ ddlmZ ddlmZ dd ZG dd dZd	S )
zO contains a class to store parameters for and results from
Composite building

    )RDConfig)	DbConnect)DbModulec             C   s4  d| _ d| _d| _d| _d| _d| _d| _d| _d| _d| _	d| _
d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _tj| _tj| _d	| _ d| _!d| _"d| _#g | _$d| _%g | _&d| _'d| _(d| _)d
| _*d
| _+d
| _,d
| _-d
| _.d| _/d| _0d| _1d| _2d| _3d| _4| S )a    initializes a details object with default values

      **Arguments**

        - details:  (optional) a _CompositeRun.CompositeRun_ object.
          If this is not provided, the global _runDetails will be used.

      **Returns**

        the initialized _CompositeRun_ object.


     
    r   gffffff?Fg      *g        g333333?N)   *   )5ZnRunsnModelsZoutNameZbadNameZsplitRun	splitFracZ
lockRandomZrandomActivitiesZshuffleActivitiesZreplacementSelectionZuseTreesZpruneItZ
lessGreedy
limitDepthZrecycleVarsZrandomDescriptorsZuseKNNZknnDistFuncZ	knnNeighsZuseSigTreesZuseCMIMZallowCollectionsZuseNaiveBayesZmEstimateValZuseSigBayesZ
bayesModeldbNamer   ZdefaultDBUserdbUserZdefaultDBPassword
dbPassworddbWhatdbWheredbJoinZ
qTableNameZqBoundsqBoundCountZactivityBoundsactivityBoundsValsZdetailedResZnoScreen	threshold
filterFrac	filterValmodelFilterValmodelFilterFracZinternalHoldoutFracZpickleDataFileNameZstartAtZpersistTblNameZ
randomSeednote)Z
runDetails r   4lib/python3.7/site-packages/rdkit/ML/CompositeRun.pySetDefaults   sf    r   c            !   @   s|   e Zd ZdZdddddddd	d
dddddddddddddddddddddd d!ejff Zd"d# Zd/d(d)Zd*d+ Z	d,d- Z
d.S )0CompositeRuna   class to store parameters for and results from Composite building

   This class has a default set of fields which are added to the database.

   By default these fields are stored in a tuple, so they are immutable.  This
     is probably what you want.


  )Zrundatezvarchar(32))r   zvarchar(200))r   zvarchar(200))r   zvarchar(200))r   zvarchar(200))	tableNamezvarchar(80))r   zvarchar(120))Zshuffledsmallint)Z
randomizedr"   )Zoverall_errorfloat)Zholdout_errorr#   )Zoverall_fraction_droppedr#   )Zholdout_fraction_droppedr#   )Zoverall_correct_confr#   )Zoverall_incorrect_confr#   )Zholdout_correct_confr#   )Zholdout_incorrect_confr#   )Zoverall_result_matrixzvarchar(256))Zholdout_result_matrixzvarchar(256))r   r#   )r   r#   )r   r#   )r   r#   )r   r#   )r   r#   )r   int)r   r$   )ZbayesModelsr$   )r   zvarchar(3000))r   zvarchar(200))cmdzvarchar(500)Zmodelc       
      C   s   t dd | }| |krv| }g }x$| jD ]\}}|d||f  q2W d|}|d||f  |  nVdd |	 D }	| }x2| jD ](\}}| |	kr|d|||f  qW |  d	S )
z *Internal Use only*

    c             S   s   |    S )N)stripupper)xr   r   r   <lambda>       z+CompositeRun._CreateTable.<locals>.<lambda>z%s %s,zcreate table %s (%s)c             S   s   g | ]}|  qS r   )r'   ).0r(   r   r   r   
<listcomp>   s    z-CompositeRun._CreateTable.<locals>.<listcomp>zalter table %s add %s %sN)
mapZGetTableNamesr'   	GetCursorfieldsappendjoinexecuteCommitZGetColumnNames)
selfcnZtblNamenamescursZfmtnamevalueZfmtStrZheadsr   r   r   _CreateTable   s    

zCompositeRun._CreateTable
models.gdbresultssysdba	masterkeyc          	   C   s   t ||||}| }| || g }g }xN| jD ]D\}	}
yt| |	}W n tk
r\   Y q2X |d|	  || q2W t|}dt	j
g| }t|}d|d||f }||| |  dS )z adds the result to a database

      **Arguments**

        - db: name of the database to use

        - table: name of the table to use

        - user&password: connection information

    z%sr+   zinsert into %s (%s) values (%s)N)r   r/   r;   r0   getattrAttributeErrorr1   lenr2   r   ZplaceHoldertupler3   r4   )r5   Zdbtableuserpasswordr6   r8   ZcolsZvalsr9   _vZnToDoZqsr%   r   r   r   Store   s$    zCompositeRun.Storec             K   s>   ddl m} |j| j| jf| j| j| j| j| j	d|}|S )zN Returns a MLDataSet pulled from a database using our stored
    values.

    r   )	DataUtils)rE   rF   whatwherer2   )
Zrdkit.ML.DatarJ   ZDBToDatar   r!   r   r   r   r   r   )r5   kwargsrJ   datar   r   r   
GetDataSet   s
    zCompositeRun.GetDataSetc             K   s(   t | j| j}|j| j| j| jd}|S )zN Returns a MLDataSet pulled from a database using our stored
    values.

    )r2   rK   rL   )r   r   r!   ZGetColumnNamesAndTypesr   r   r   )r5   rM   ZconnZresr   r   r   GetDataSetInfo   s    zCompositeRun.GetDataSetInfoN)r<   r=   r>   r?   )__name__
__module____qualname____doc__r   ZbinaryTypeNamer0   r;   rI   rO   rP   r   r   r   r   r    {   sJ   	
#r    N)	rT   Zrdkitr   Zrdkit.Dbase.DbConnectionr   Zrdkit.Dbaser   r   r    r   r   r   r   <module>   s
   g