Files
rdkit/Python/ML/Data/UnitTestMLData.py
Greg Landrum 75a79b6327 initial import
2006-05-06 22:20:08 +00:00

123 lines
5.3 KiB
Python
Executable File

#
# Copyright (C) 2001 greg Landrum
#
""" unit testing code for MLData sets
"""
import unittest
import cPickle
from ML.Data import MLData,DataUtils
import RDConfig
class TestCase(unittest.TestCase):
def setUp(self):
#print '\n%s: '%self.shortDescription(),
pass
def setUpQuantLoad(self):
self.d = DataUtils.BuildQuantDataSet(RDConfig.RDCodeDir+'/ML/Data/test_data/test.qdat')
def setUpGeneralLoad(self):
self.d = DataUtils.BuildDataSet(RDConfig.RDCodeDir+'/ML/Data/test_data/test.dat')
def testQuantLoad(self):
" testing QuantDataSet load"
ok = 1
try:
self.d = DataUtils.BuildQuantDataSet(RDConfig.RDCodeDir+'/ML/Data/test_data/test.qdat')
except:
ok = 0
assert ok,'BuildQuantDataSet failed'
def testQuantProps(self):
" testing QuantDataSet Properties"
self.setUpQuantLoad()
assert self.d.GetNPts()==5,'nPts wrong'
assert self.d.GetNVars()==4,'nVars wrong'
assert self.d.GetNResults()==1,'nResults wrong'
assert self.d.GetVarNames()==['foo1','foo2','foo3','foo4','res'],'varNames wrong'
assert self.d.GetPtNames()==['p1','p2','p3','p4','p5'],'ptNames wrong'
assert self.d.GetNPossibleVals()==[3, 3, 2, 2, 2],'nPossible Wrong'
assert self.d.GetQuantBounds()==[[], [], [], [], []],'quantBounds Wrong'
assert self.d.GetResults()==[0, 0, 1, 1, 1],'GetResults wrong'
assert self.d.GetAllData()[1]==[0, 0, 0, 1, 0],'GetAllData wrong'
assert self.d.GetInputData()[3]==[2, 1, 0, 0],'GetInputData wrong'
assert self.d.GetNamedData()[2]==['p3', 1, 0, 0, 0, 1],'GetNamedData wrong'
def testQuantPickle(self):
" testing QuantDataSet pickling "
self.setUpQuantLoad()
DataUtils.WritePickledData(RDConfig.RDCodeDir+'/ML/Data/test_data/testquant.qdat.pkl',self.d)
f = open(RDConfig.RDCodeDir+'/ML/Data/test_data/testquant.qdat.pkl','rb')
vNames = cPickle.load(f)
qBounds = cPickle.load(f)
ptNames = cPickle.load(f)
examples = cPickle.load(f)
d = MLData.MLQuantDataSet(examples,varNames=vNames,qBounds=qBounds,ptNames=ptNames)
assert self.d.GetNPts()==d.GetNPts(),'nPts wrong'
assert self.d.GetNVars()==d.GetNVars(),'nVars wrong'
assert self.d.GetNResults()==d.GetNResults(),'nResults wrong'
assert self.d.GetVarNames()==d.GetVarNames(),'varNames wrong'
assert self.d.GetPtNames()==d.GetPtNames(),'ptNames wrong'
assert self.d.GetNPossibleVals()==d.GetNPossibleVals(),'nPossible Wrong'
assert self.d.GetQuantBounds()==d.GetQuantBounds(),'quantBounds Wrong'
assert self.d.GetResults()==d.GetResults(),'GetResults wrong'
assert self.d.GetAllData()[1]==d.GetAllData()[1],'GetAllData wrong'
assert self.d.GetInputData()[3]==d.GetInputData()[3],'GetInputData wrong'
assert self.d.GetNamedData()[2]==d.GetNamedData()[2],'GetNamedData wrong'
def testGeneralLoad(self):
" testing DataSet load"
ok = 1
try:
self.d = DataUtils.BuildDataSet(RDConfig.RDCodeDir+'/ML/Data/test_data/test.dat')
except:
ok = 0
assert ok,'BuildDataSet failed'
def testGeneralProps(self):
" testing DataSet properties"
self.setUpGeneralLoad()
assert self.d.GetNPts()==5,'nPts wrong'
assert self.d.GetNVars()==4,'nVars wrong'
assert self.d.GetNResults()==1,'nResults wrong'
assert self.d.GetVarNames()==['foo1','foo2','foo3','foo4','res'],'varNames wrong'
assert self.d.GetPtNames()==['p1','p2','p3','p4','p5'],'ptNames wrong'
assert self.d.GetNPossibleVals()==[0, 6, 0, 0, 3],'nPossible Wrong'
assert self.d.GetQuantBounds()==[[], [], [], [], [2,4]],'quantBounds Wrong'
assert self.d.GetResults()==[1.1, 2.1, 3.1, 4.1, 5.1],'GetResults wrong'
assert self.d.GetAllData()[1]==['foo', 2, 1.0, 1, 2.1],'GetAllData wrong'
assert self.d.GetInputData()[4]==['foo', 5, 1.1, 1],'GetInputData wrong'
assert self.d.GetNamedData()[3]==['p4', 'foo', 4, 1.0, 1, 4.1],'GetNamedData wrong'
assert self.d[1]==['p2','foo', 2, 1.0, 1, 2.1]
assert self.d[3]==['p4', 'foo', 4, 1.0, 1, 4.1]
self.d[3]=self.d[1]
assert self.d[3]==['p2','foo', 2, 1.0, 1, 2.1]
def testGeneralPickle(self):
" testing DataSet pickling"
self.setUpGeneralLoad()
DataUtils.WritePickledData(RDConfig.RDCodeDir+'/ML/Data/test_data/testgeneral.dat.pkl',self.d)
f = open(RDConfig.RDCodeDir+'/ML/Data/test_data/testgeneral.dat.pkl','rb')
vNames = cPickle.load(f)
qBounds = cPickle.load(f)
ptNames = cPickle.load(f)
examples = cPickle.load(f)
d = MLData.MLDataSet(examples,varNames=vNames,qBounds=qBounds,ptNames=ptNames)
assert self.d.GetNPts()==d.GetNPts(),'nPts wrong'
assert self.d.GetNVars()==d.GetNVars(),'nVars wrong'
assert self.d.GetNResults()==d.GetNResults(),'nResults wrong'
assert self.d.GetVarNames()==d.GetVarNames(),'varNames wrong'
assert self.d.GetPtNames()==d.GetPtNames(),'ptNames wrong'
assert self.d.GetNPossibleVals()==d.GetNPossibleVals(),'nPossible Wrong'
assert self.d.GetQuantBounds()==d.GetQuantBounds(),'quantBounds Wrong'
assert self.d.GetResults()==d.GetResults(),'GetResults wrong'
assert self.d.GetAllData()[1]==d.GetAllData()[1],'GetAllData wrong'
assert self.d.GetInputData()[3]==d.GetInputData()[3],'GetInputData wrong'
assert self.d.GetNamedData()[2]==d.GetNamedData()[2],'GetNamedData wrong'
if __name__ == '__main__':
unittest.main()