mirror of
https://github.com/rdkit/rdkit.git
synced 2026-06-04 21:54:27 +08:00
119 lines
3.2 KiB
Python
Executable File
119 lines
3.2 KiB
Python
Executable File
# $Id$
|
|
#
|
|
# Copyright (C) 2003-2006 greg Landrum and Rational Discovery LLC
|
|
#
|
|
# @@ All Rights Reserved @@
|
|
#
|
|
""" unit testing code for BitEnsembles
|
|
"""
|
|
import RDConfig
|
|
import os
|
|
import unittest
|
|
from DataStructs.BitEnsemble import BitEnsemble
|
|
from DataStructs import BitEnsembleDb
|
|
from DataStructs import SparseBitVect
|
|
|
|
|
|
class TestCase(unittest.TestCase):
|
|
def test1(self):
|
|
ensemble = BitEnsemble()
|
|
ensemble.SetBits([1,11,21,31])
|
|
bv = SparseBitVect(100)
|
|
bv.SetBit(1)
|
|
bv.SetBit(11)
|
|
bv.SetBit(13)
|
|
|
|
score = ensemble.ScoreWithOnBits(bv)
|
|
assert score==2,'bad score: %d'%(score)
|
|
score = ensemble.ScoreWithIndex(bv)
|
|
assert score==2,'bad score: %d'%(score)
|
|
|
|
def test2(self):
|
|
ensemble = BitEnsemble([1,11,21,31])
|
|
bv = SparseBitVect(100)
|
|
bv.SetBit(1)
|
|
bv.SetBit(11)
|
|
bv.SetBit(13)
|
|
|
|
score = ensemble.ScoreWithOnBits(bv)
|
|
assert score==2,'bad score: %d'%(score)
|
|
score = ensemble.ScoreWithIndex(bv)
|
|
assert score==2,'bad score: %d'%(score)
|
|
|
|
def test3(self):
|
|
ensemble = BitEnsemble()
|
|
for bit in [1,11,21,31]:
|
|
ensemble.AddBit(bit)
|
|
bv = SparseBitVect(100)
|
|
bv.SetBit(1)
|
|
bv.SetBit(11)
|
|
bv.SetBit(13)
|
|
|
|
score = ensemble.ScoreWithOnBits(bv)
|
|
assert score==2,'bad score: %d'%(score)
|
|
score = ensemble.ScoreWithIndex(bv)
|
|
assert score==2,'bad score: %d'%(score)
|
|
|
|
def _setupDb(self):
|
|
from Dbase.DbConnection import DbConnect
|
|
fName = RDConfig.RDTestDatabase
|
|
self.conn = DbConnect(fName)
|
|
self.dbTblName = 'bit_ensemble_test'
|
|
return self.conn
|
|
|
|
def testdb1(self):
|
|
""" test the sig - db functionality """
|
|
conn = self._setupDb()
|
|
ensemble = BitEnsemble()
|
|
for bit in [1,3,4]:
|
|
ensemble.AddBit(bit)
|
|
|
|
sigBs = [([0,0,0,0,0,0],(0,0,0)),
|
|
([0,1,0,1,0,0],(1,1,0)),
|
|
([0,1,0,0,1,0],(1,0,1)),
|
|
([0,1,0,0,1,1],(1,0,1)),
|
|
]
|
|
ensemble.InitScoreTable(conn,self.dbTblName)
|
|
for bs,tgt in sigBs:
|
|
ensemble.ScoreToDb(bs,conn)
|
|
conn.Commit()
|
|
|
|
d = conn.GetData(table=self.dbTblName)
|
|
assert len(d) == len(sigBs),'bad number of results returned'
|
|
for i in range(len(sigBs)):
|
|
bs,tgt = tuple(sigBs[i])
|
|
dbRes = tuple(d[i])
|
|
assert dbRes==tgt,'bad bits returned: %s != %s'%(str(dbRes),str(tgt))
|
|
d = None
|
|
self.conn = None
|
|
def testdb2(self):
|
|
""" test the sig - db functionality """
|
|
conn = self._setupDb()
|
|
ensemble = BitEnsemble()
|
|
for bit in [1,3,4]:
|
|
ensemble.AddBit(bit)
|
|
|
|
sigBs = [([0,0,0,0,0,0],(0,0,0)),
|
|
([0,1,0,1,0,0],(1,1,0)),
|
|
([0,1,0,0,1,0],(1,0,1)),
|
|
([0,1,0,0,1,1],(1,0,1)),
|
|
]
|
|
ensemble.InitScoreTable(conn,self.dbTblName,idInfo='id varchar(10)',actInfo='act int')
|
|
for bs,tgt in sigBs:
|
|
ensemble.ScoreToDb(bs,conn,id='foo',act=1)
|
|
conn.Commit()
|
|
|
|
d = conn.GetData(table=self.dbTblName)
|
|
assert len(d) == len(sigBs),'bad number of results returned'
|
|
for i in range(len(sigBs)):
|
|
bs,tgt = tuple(sigBs[i])
|
|
dbRes = tuple(d[i])
|
|
assert dbRes[1:-1]==tgt,'bad bits returned: %s != %s'%(str(dbRes[1:-1]),str(tgt))
|
|
|
|
d = None
|
|
self.conn = None
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|