def test_boost(self): cont_id = ContiguousID() self.assertEquals(cont_id['a'], 0) self.assertEquals(cont_id['b'], 1) self.assertEquals(cont_id[0], 2) cont_id.boost(10) self.assertEquals(cont_id['a'], 10) self.assertEquals(cont_id['b'], 11) self.assertEquals(cont_id[0], 12)
def test_all(self): cont_id = ContiguousID() self.assertEquals(cont_id['a'], 0) self.assertEquals(cont_id['b'], 1) self.assertEquals(cont_id[0], 2) self.assertEquals(cont_id['a'], 0) self.assertEquals(cont_id[int], 3) new_keys = range(1, 200) random.shuffle(new_keys) iter_vals = iter(range(4, 204)) for i in new_keys: self.assertEquals(cont_id[i], next(iter_vals)) for i, d in enumerate(sorted(cont_id.itervalues())): self.assertEqual(i, d) self.assertEquals(203, len(cont_id))
def create_annotations(annotations_file): ''' Creates annotations from a LibraryThing annotations file. Arguments --------- annotations_file : file Annotations file to parse ''' user_ids = ContiguousID() item_ids = ContiguousID() tag_ids = ContiguousID() annotation_list = [] with open(annotations_file) as annotations: for line in annotations: spl = line.split() #trace is: user, item, rating, tag user = spl[0] item = spl[1] tag = ' '.join(spl[3:]) #deals with multiple word tags uid = user_ids[user] iid = item_ids[item] tid = tag_ids[tag] annotation = {} annotation['user'] = uid annotation['item'] = iid annotation['tag'] = tid annotation_list.append(annotation) return annotation_list, user_ids, item_ids, tag_ids
def __reset(self): '''Resets the parser ids to new ones. Useful for reusing the same parser object''' self.tag_ids = ContiguousID() self.item_ids = ContiguousID() self.user_ids = ContiguousID()