Exemplo n.º 1
0
class TestSourceAnalyser(unittest.TestCase):
    def setUp(self):
        self.sa = SourceAnalyser(doc_ids=[1], start_date=datetime(2014, 2, 10), end_date=datetime(2014, 2, 14))

    def test_basic_trends(self):
        self.sa.people = {
            1: Person(name='Fred', id=1),
            2: Person(name='Joe', id=2),
            3: Person(name='Sue', id=3)
        }

        self.sa.load_people_sources = MagicMock()
        self.sa.count_utterances = MagicMock(return_value={
            1: 10,
            2: 4,
        })
        self.sa.source_frequencies = MagicMock(return_value={
            1: [0, 0, 0, 1, 2],
            2: [1, 2, 3, 0, 0],
            3: [0, 0, 9, 0, 0],
        })
        self.sa.analyse()

        self.assertEqual(self.sa.analysed_people[1].source_counts, [0, 0, 0, 100.0, 100.0])
        self.assertEqual(self.sa.analysed_people[2].source_counts, [100.0, 100.0, 25.0, 0.0, 0.0])
        self.assertEqual(self.sa.analysed_people[3].source_counts, [0, 0, 75.0, 0.0, 0.0])

        self.assertAlmostEqual(self.sa.analysed_people[1].source_counts_trend, 2.0, places=1)
        self.assertAlmostEqual(self.sa.analysed_people[2].source_counts_trend, -1.5699, places=3)
        self.assertAlmostEqual(self.sa.analysed_people[3].source_counts_trend, -0.436, places=3)

        self.assertEqual([s.person.id for s in self.sa.top_people], [3, 2, 1])

        self.assertEqual([s.person.id for s in self.sa.people_trending_up], [1])
        self.assertEqual([s.person.id for s in self.sa.people_trending_down], [2])
Exemplo n.º 2
0
def mine_people():
    """ All the people that are in the documents covered by this span. """
    form = MineForm(request.args)

    sa = SourceAnalyser(doc_ids=form.document_ids())
    sa.load_people_sources()

    return jsonify({'people': [p.json() for p in sa.people.itervalues()]})
Exemplo n.º 3
0
def mine_people():
    """ All the people that are in the documents covered by this span. """
    form = MineForm(request.args)

    sa = SourceAnalyser(doc_ids=form.document_ids())
    sa.load_people_sources()

    return jsonify({
        'people': [p.json() for p in sa.people.itervalues()]
    })
Exemplo n.º 4
0
def mine_home():
    form = MineForm(request.args)

    ma = MediaAnalyser(doc_ids=form.document_ids(overview=True))
    ma.analyse()

    sa = SourceAnalyser(doc_ids=form.document_ids())
    sa.analyse()
    sa.load_utterances()

    return render_template('mine/index.haml',
                           form=form,
                           source_analyser=sa,
                           media_analyser=ma)
Exemplo n.º 5
0
class TestSourceAnalyser(unittest.TestCase):
    def setUp(self):
        self.sa = SourceAnalyser(doc_ids=[1],
                                 start_date=datetime(2014, 2, 10),
                                 end_date=datetime(2014, 2, 14))

    def test_basic_trends(self):
        self.sa.people = {
            1: Person(name='Fred', id=1),
            2: Person(name='Joe', id=2),
            3: Person(name='Sue', id=3)
        }

        self.sa.load_people_sources = MagicMock()
        self.sa.count_utterances = MagicMock(return_value={
            1: 10,
            2: 4,
        })
        self.sa.source_frequencies = MagicMock(return_value={
            1: [0, 0, 0, 1, 2],
            2: [1, 2, 3, 0, 0],
            3: [0, 0, 9, 0, 0],
        })
        self.sa.analyse()

        self.assertEqual(self.sa.analysed_people[1].source_counts,
                         [0, 0, 0, 100.0, 100.0])
        self.assertEqual(self.sa.analysed_people[2].source_counts,
                         [100.0, 100.0, 25.0, 0.0, 0.0])
        self.assertEqual(self.sa.analysed_people[3].source_counts,
                         [0, 0, 75.0, 0.0, 0.0])

        self.assertAlmostEqual(self.sa.analysed_people[1].source_counts_trend,
                               2.0,
                               places=1)
        self.assertAlmostEqual(self.sa.analysed_people[2].source_counts_trend,
                               -1.5699,
                               places=3)
        self.assertAlmostEqual(self.sa.analysed_people[3].source_counts_trend,
                               -0.436,
                               places=3)

        self.assertEqual([s.person.id for s in self.sa.top_people], [3, 2, 1])

        self.assertEqual([s.person.id for s in self.sa.people_trending_up],
                         [1])
        self.assertEqual([s.person.id for s in self.sa.people_trending_down],
                         [2])
Exemplo n.º 6
0
def mine_person(id):
    person = Person.query.get_or_404(id)
    form = MineForm(request.args)

    sa = SourceAnalyser(doc_ids=form.document_ids())
    sa.analyse()
    sa.load_utterances([person])

    source = sa.analysed_people.get(person.id)
    if not source:
        return jsonify({'row': '', 'utterances': ''})

    row = render_template('mine/_source.haml', i=-1, source=source)
    utterances = render_template("mine/_quotations.haml", i=-1, source=source, source_analyser=sa)

    return jsonify({
        'row': row,
        'utterances': utterances,
    })
Exemplo n.º 7
0
def mine_home():
    form = MineForm(request.args)

    ma = MediaAnalyser(doc_ids=form.document_ids(overview=True))
    ma.analyse()

    sa = SourceAnalyser(doc_ids=form.document_ids())
    sa.analyse()
    sa.load_utterances()

    return render_template('mine/index.haml',
                           form=form,
                           source_analyser=sa,
                           media_analyser=ma)
Exemplo n.º 8
0
def mine_person(id):
    person = Person.query.get_or_404(id)
    form = MineForm(request.args)

    sa = SourceAnalyser(doc_ids=form.document_ids())
    sa.analyse()
    sa.load_utterances([person])

    source = sa.analysed_people.get(person.id)
    if not source:
        return jsonify({'row': '', 'utterances': ''})

    row = render_template('mine/_source.haml', i=-1, source=source)
    utterances = render_template("mine/_quotations.haml",
                                 i=-1,
                                 source=source,
                                 source_analyser=sa)

    return jsonify({
        'row': row,
        'utterances': utterances,
    })
Exemplo n.º 9
0
 def setUp(self):
     self.sa = SourceAnalyser(doc_ids=[1], start_date=datetime(2014, 2, 10), end_date=datetime(2014, 2, 14))
Exemplo n.º 10
0
 def setUp(self):
     self.sa = SourceAnalyser(doc_ids=[1],
                              start_date=datetime(2014, 2, 10),
                              end_date=datetime(2014, 2, 14))