def test_make_artificial_data_with_minor_events(self): self.params['n_minor_events'] = 10 events, all_interactions, _ = make_artificial_data(**self.params) assert_equal( self.params['event_size_mu'] * self.params['n_events'] + self.params['minor_event_size_mu'] * self.params['n_minor_events'] + self.params['n_noisy_interactions'], len(all_interactions) ) event_msg_ids = set([e.node[n]['message_id'] for e in events for n in e.nodes_iter()]) event_topics = set([np.asarray(e.node[n]['topics']).argmax() for e in events for n in e.nodes_iter()]) other_topics = set() for i in all_interactions: id_ = i['message_id'] if id_ not in event_msg_ids: # either noise or minor topic = np.asarray(i['topics']).argmax() other_topics.add(topic) assert(topic not in event_topics) # should complement each other and sum to all topics assert_equal(set(range(10)), other_topics | event_topics)
def test_make_artificial_data_with_large_noise_percentage(self): fraction = 1.1 self.params['n_noisy_interactions'] = None self.params['n_noisy_interactions_fraction'] = fraction events, all_interactions, _ = make_artificial_data(**self.params) n_event_interactions = sum([1 for e in events for _ in e]) total = len(all_interactions) assert_equal( int(n_event_interactions * fraction), total - n_event_interactions )
def test_make_artificial_data(self): events, all_interactions, params = make_artificial_data(**self.params) assert_equal(self.params['n_events'], len(params)) assert_equal( self.params['n_events'], len(events) ) assert_equal( self.params['event_size_mu'] * self.params['n_events'] + self.params['n_noisy_interactions'], len(all_interactions) ) for i in all_interactions: assert_true('message_id' in i) # make sure it's jsonable assert_true(isinstance(i['topics'], list)) # all ids are unique all_ids = list(itertools.chain(*[e.nodes() for e in events])) assert_equal(len(all_ids), len(set(all_ids))) for e in events: # make sure nodes are relabeled for n in e.nodes_iter(): assert_equal(n, e.node[n]['message_id']) interactions = [e.node[n] for n in e.nodes_iter()] assert_equal(len(interactions), IU.get_meta_graph( interactions, decompose_interactions=False, remove_singleton=True, given_topics=True).number_of_nodes()) for i in interactions: assert_true(isinstance(i['topics'], list)) for i in all_interactions: assert_true(i['sender_id'].startswith('u-'))