mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-04 21:54:27 +08:00
80 lines
2.5 KiB
Python
Executable File
80 lines
2.5 KiB
Python
Executable File
#
|
|
# Copyright (C) 2001 greg Landrum
|
|
#
|
|
|
|
# unit testing code for the composite model COM server
|
|
import RDConfig
|
|
import unittest
|
|
from ML.Composite import Composite
|
|
from win32com.client import Dispatch
|
|
from Numeric import *
|
|
|
|
class TestCase(unittest.TestCase):
|
|
def setUp(self):
|
|
print '\n%s: '%self.shortDescription(),
|
|
def testConnect(self):
|
|
" connecting to COM server "
|
|
ok = 1
|
|
try:
|
|
c = Dispatch('RD.Composite')
|
|
except:
|
|
ok = 0
|
|
assert ok and c is not None, 'connection to COM server failed'
|
|
def testLoad(self):
|
|
" loading a composite "
|
|
c = Dispatch('RD.Composite')
|
|
ok = 1
|
|
try:
|
|
c.LoadComposite(RDConfig.RDCodeDir+'/ml/composite/test_data/composite_base.pkl')
|
|
except:
|
|
ok = 0
|
|
assert ok, 'LoadComposite failed'
|
|
def testNames(self):
|
|
" testing descriptor names "
|
|
c = Dispatch('RD.Composite')
|
|
c.LoadComposite(RDConfig.RDCodeDir+'/ml/composite/test_data/composite_base.pkl')
|
|
names = c.GetDescriptorNames()
|
|
expectedNames = ('composition', 'max_atomic', 'has3d', 'has4d', 'has5d',
|
|
'elconc', 'atvol', 'isferro')
|
|
assert names==expectedNames, 'GetDescriptorNames failed'
|
|
def testInputOrder(self):
|
|
" testing input order "
|
|
c = Dispatch('RD.Composite')
|
|
c.LoadComposite(RDConfig.RDCodeDir+'/ml/composite/test_data/composite_base.pkl')
|
|
names = c.GetDescriptorNames()
|
|
ok = 1
|
|
try:
|
|
c.SetInputOrder(names)
|
|
except:
|
|
ok = 0
|
|
assert ok,'SetInputOrder failed'
|
|
|
|
def testClassify(self):
|
|
" testing classification "
|
|
argV = ['CrPt3','fcc','AuCu3',58.09549962,36,4,0.228898,2.219,1,3.67481803894, 1, 0, 1, 0.619669341609, 14.523874905]
|
|
nameV = ['composition','Structure','Structure_Type','Volume',
|
|
'Electrons_Per_Unit','Atoms_Per_Unit','Hardness','DOS_Ef',
|
|
'isferro','max_atomic', 'has3d', 'has4d', 'has5d',
|
|
'elconc', 'atvol']
|
|
c = Dispatch('RD.Composite')
|
|
c.LoadComposite(RDConfig.RDCodeDir+'/ml/composite/test_data/composite_base.pkl')
|
|
c.SetInputOrder(nameV)
|
|
res = c.ClassifyExample(argV)
|
|
expected = [1,1.0]
|
|
assert res[0] == expected[0],'bad prediction'
|
|
assert res[1] == expected[1],'bad confidence'
|
|
|
|
def TestSuite():
|
|
suite = unittest.TestSuite()
|
|
suite.addTest(TestCase('testConnect'))
|
|
suite.addTest(TestCase('testLoad'))
|
|
suite.addTest(TestCase('testNames'))
|
|
suite.addTest(TestCase('testInputOrder'))
|
|
suite.addTest(TestCase('testClassify'))
|
|
return suite
|
|
|
|
|
|
if __name__ == '__main__':
|
|
suite = TestSuite()
|
|
unittest.TextTestRunner().run(suite)
|