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])
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()]})
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()] })
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)
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, })
def setUp(self): self.sa = SourceAnalyser(doc_ids=[1], start_date=datetime(2014, 2, 10), end_date=datetime(2014, 2, 14))