def test_empty_if_not_commit(self): ''' This test verifies that the database is empty when reconnected but without any commit made during the previous session. ''' db = binarytree.connect('test2.dbdb') db.set(0, 'a') db.close() db = binarytree.connect('test2.dbdb') with self.assertRaises(KeyError): db.get(0) db.close()
def test_del_key_after_commit_2(self): ''' This test verifies that deletion does not affect key, value pairs and still be commited and reloaded ''' db = binarytree.connect('test9.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') db.delete(0) db.commit() db.close() db = binarytree.connect('test8.dbdb') self.assertEqual([db.get(1), db.get(-1), db.get(-2)], ['b', 'c', 'd']) db.close()
def test_del_key_after_commit_1(self): ''' This test verifies that deletion of keys can be commited and reloaded. ''' db = binarytree.connect('test8.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') db.delete(0) db.commit() db.close() db = binarytree.connect('test8.dbdb') with self.assertRaises(KeyError): db.get(0) db.close()
def test_get_closer_after_commit(self): ''' This test verifies that we can query keys that are smaller or equal than a particular key, when changes where made in a previous session which has been commited. ''' db = binarytree.connect('test5.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') db.commit() db.close() db = binarytree.connect('test5.dbdb') self.assertEqual(db.get_closer_than(0), [(0, 'a'), (-1, 'c'), (-2, 'd')]) db.close()
def test_set_get_after_commit(self): ''' This test verifies that we obtained the right values when searching for keys, when changes where made in a previous session which has been commited. ''' db = binarytree.connect('test3.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') db.commit() db.close() db = binarytree.connect('test3.dbdb') self.assertEqual( [db.get(0), db.get(1), db.get(-1), db.get(-2)], ['a', 'b', 'c', 'd']) db.close()
def test_overwrite_value_before_commit(self): ''' This test checks that the no duplicate property can be commited ''' db = binarytree.connect('test11.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') db.set(-1, 'new') db.commit() db.close() db = binarytree.connect('test11.dbdb') self.assertEqual(db.get(-1), 'new') db.close()
def in_radius_from_vantage(ts_stand, v_str, test=False): ''' Return the points in the circle of radius 2*k_corr(ts_stand, vantage_stand) Args: ----- - ts_stand: standardised ArrayTimeSeries - v_str: index of the vantage point as a string ''' if test: v = pickle.load(open("../ts_data/ts_{}.p".format(v_str), "rb")) else: v = pickle.load(open("ts_data/ts_{}.p".format(v_str), "rb")) v_stand = util.stand(v, v.mean(), v.std()) d = 2 * (1 - util.kernel_corr(ts_stand, v_stand)) if not test: db = binarytree.connect('dbs/db_{}.dbdb'.format(v_str)) else: db = binarytree.connect('../dbs/db_{}.dbdb'.format(v_str)) closest_in_vantage = [x[1] for x in db.get_closer_than(2 * d)] db.close() return closest_in_vantage
def test_set_get_before_commit(self): ''' This test verifies that while the database is still connected, we obtained the right values when searching for keys. ''' db = binarytree.connect('test1.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') self.assertEqual([db.get(0), db.get(-2)], ['a', 'd']) db.close()
def main(arguments): #Clean the databases or create the directory try: shutil.rmtree('dbs') except: pass os.mkdir('dbs') #Parse the number of vantage points wanted parser = argparse.ArgumentParser( description='Number of vantage points to generate') parser.add_argument('--n', help='Number of vantage points', type=int, default=20) parser.add_argument('--nts', help='Number of vantage points', type=int, default=1000) args = parser.parse_args(arguments) n = args.n nts = args.nts #sample the vantage points without replacement vantage = random.sample(range(nts), n) pickle.dump(vantage, open("ts_data/vantage_points.p", "wb")) print('Vantage Points are: ') for i in vantage: print('TS ' + str(i)) tss = [] #load the ts print('Loading the TS') for i in range(nts): tss.append(pickle.load(open("ts_data/ts_{}.p".format(i), "rb"))) #Store the negative of the k_corr of each vantage points to the eveyr other timeseries in the DB print('Creating the DBS') for ct, i in enumerate(vantage): print(str(ct + 1) + '/' + str(len(vantage)) + ' Done') db = binarytree.connect('dbs/db_' + str(i) + '.dbdb') ts_i_stand = stand(tss[i], tss[i].mean(), tss[i].std()) for j in range(0, nts): if j == i: continue kc = kernel_corr(ts_i_stand, stand(tss[j], tss[j].mean(), tss[j].std())) db.set(2 * (1 - kc), 'ts_' + str(j)) db.commit() db.close()
def test_get_closer_before_commit(self): ''' This test verifies that while the database is still connected, we can query keys that are smaller or equal than a particular key. ''' db = binarytree.connect('test4.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') self.assertEqual(db.get_closer_than(0), [(0, 'a'), (-1, 'c'), (-2, 'd')]) db.close()
def test_del_key_before_commit_2(self): ''' This test verifies that we can delete a key in the current sessions without affecting the other (key, value) in the tree. ''' db = binarytree.connect('test7.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') db.delete(0) self.assertEqual([db.get(1), db.get(-1), db.get(-2)], ['b', 'c', 'd']) db.close()
def test_del_key_before_commit_1(self): ''' This test verifies that we can delete a key in the current session. ''' db = binarytree.connect('test6.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') db.delete(0) with self.assertRaises(KeyError): db.get(0) db.close()
def test_overwrite_value_before_commit(self): ''' This test checks that no duplicate, i.e. a key cannot have two value, can be entered in the tree. ''' db = binarytree.connect('test10.dbdb') db.set(0, 'a') db.set(1, 'b') db.set(-1, 'c') db.set(-2, 'd') db.set(-1, 'new') self.assertEqual(db.get(-1), 'new') db.close()