Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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
     )
Exemplo n.º 3
0
    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-'))