def test_delete_encoding(self): self.__save_records() encoding = Observation.encoding(self.dataset) self.assertTrue(isinstance(encoding, dict)) Observation.delete_encoding(self.dataset) encoding = Observation.encoding(self.dataset) self.assertEqual(encoding, None)
def test_delete(self): for dataset_name in self.TEST_DATASETS: dataset = Dataset.create(self.test_dataset_ids[dataset_name]) records = Dataset.find(self.test_dataset_ids[dataset_name]) self.assertNotEqual(records, []) dataset.delete() records = Dataset.find(self.test_dataset_ids[dataset_name]) self.assertEqual(records, []) self.assertEqual(Observation.encoding(dataset), None)
def test_delete(self): for dataset_name in self.TEST_DATASETS: dataset = Dataset.create(self.test_dataset_ids[dataset_name]) records = Dataset.find(self.test_dataset_ids[dataset_name]) self.assertNotEqual(records, []) dataset.delete() records = Dataset.find(self.test_dataset_ids[dataset_name]) self.assertEqual(records, []) self.assertEqual(Observation.encoding(dataset), None)
def test_encoding(self): self.__save_records() encoding = Observation.encoding(self.dataset) for column in self.dataset.dframe().columns: if column == MONGO_ID: column = MONGO_ID_ENCODED self.assertTrue(column in encoding.keys()) for v in encoding.values(): self.assertTrue(isinstance(int(v), int))
def get_value(self, period): value = None if self.dataset: fields = Observation.encoding(self.dataset) fields["dataset"] = self.dataset fields['dataset_id_field'] = fields[DATASET_ID] fields['period'] = period query = json.loads(Template(self.final_str).render(fields)) form_meta_timeend = '%(form_meta_timeend)s' % fields query[0]['$match'][form_meta_timeend]['$gte'] = period.start query[0]['$match'][form_meta_timeend]['$lte'] = period.end aggregate_value = self._db.observations.aggregate(query) if not aggregate_value['result']: return 0 value = aggregate_value['result'][0]['total_num'] return value
def get_value(self, period): value = None if self.dataset: fields = Observation.encoding(self.dataset) fields["dataset"] = self.dataset fields['dataset_id_field'] = fields[DATASET_ID] fields['period'] = period query = json.loads(Template(self.final_str).render(fields)) form_meta_timeend = '%(form_meta_timeend)s' % fields query[0]['$match'][form_meta_timeend]['$gte'] = period.start query[0]['$match'][form_meta_timeend]['$lte'] = period.end aggregate_value = self._db.observations.aggregate(query) if not aggregate_value['result']: return 0 value = aggregate_value['result'][0]['total_num'] return value
def get_value(self, period): value = None if self.dataset: fields = Observation.encoding(self.dataset) fields["dataset"] = self.dataset fields['dataset_id_field'] = fields[DATASET_ID] fields['period'] = period mapper = Code(Template(self.mapper_str).render(fields)) reducer = Code(Template(self.reducer_str).render(fields)) query = json.loads(Template(self.query_str).render(fields)) query['%(form_meta_timeend)s' % fields]['$gte'] = period.start query['%(form_meta_timeend)s' % fields]['$lte'] = period.end aggregate = json.loads(Template(self.aggregate_str).render(fields)) results = self._db.observations.map_reduce( mapper, reducer, 'myresults_malaria', query=query) value = None if results.count(): aggregate_value = results.aggregate(aggregate) value = aggregate_value['result'][0]['total'] self._db.myresults_malaria.drop() return value
def get_value(self, period): value = None if self.dataset: fields = Observation.encoding(self.dataset) fields["dataset"] = self.dataset fields['dataset_id_field'] = fields[DATASET_ID] fields['period'] = period mapper = Code(Template(self.mapper_str).render(fields)) reducer = Code(Template(self.reducer_str).render(fields)) query = json.loads(Template(self.query_str).render(fields)) query['%(form_meta_timeend)s' % fields]['$gte'] = period.start query['%(form_meta_timeend)s' % fields]['$lte'] = period.end aggregate = json.loads(Template(self.aggregate_str).render(fields)) results = self._db.observations.map_reduce(mapper, reducer, 'myresults_malaria', query=query) value = None if results.count(): aggregate_value = results.aggregate(aggregate) value = aggregate_value['result'][0]['total'] self._db.myresults_malaria.drop() return value
{"{{dataset_id_field}}": "{{dataset.dataset_id}}", "{{form_meta_timeend}}": { "$gte": "{{period.start}}", "$lte": "{{period.end}}" } } """ aggregate_str = """ {"$group": {"_id": 0, "total": {"$sum": "$value.{{num_using_fp}}"}}} """ dataset_id = "5791793ac29b4d77b20cf1a04d8e7161" dataset = Dataset.find_one(dataset_id) period = Period.month_period(2013, 3) if dataset: fields = Observation.encoding(dataset) fields["dataset"] = dataset fields['dataset_id_field'] = fields[DATASET_ID] fields['period'] = Period.month_period(2013, 3) mapper = Code(Template(mapper_str).render(fields)) reducer = Code(Template(reducer_str).render(fields)) query = json.loads(Template(query_str).render(fields)) query['%(form_meta_timeend)s' % fields]['$gte'] = period.start query['%(form_meta_timeend)s' % fields]['$lte'] = period.end aggregate = json.loads(Template(aggregate_str).render(fields)) results = db.observations.map_reduce(mapper, reducer, 'myresults_fp', query=query) if results.count(): value = results.aggregate(aggregate)
{"{{dataset_id_field}}": "{{dataset.dataset_id}}", "{{form_meta_timeend}}": { "$gte": "{{period.start}}", "$lte": "{{period.end}}" } } """ aggregate_str = """ {"$group": {"_id": 0, "total": {"$sum": "$value.{{num_using_fp}}"}}} """ dataset_id = "5791793ac29b4d77b20cf1a04d8e7161" dataset = Dataset.find_one(dataset_id) period = Period.month_period(2013, 3) if dataset: fields = Observation.encoding(dataset) fields["dataset"] = dataset fields['dataset_id_field'] = fields[DATASET_ID] fields['period'] = Period.month_period(2013, 3) mapper = Code(Template(mapper_str).render(fields)) reducer = Code(Template(reducer_str).render(fields)) query = json.loads(Template(query_str).render(fields)) query['%(form_meta_timeend)s' % fields]['$gte'] = period.start query['%(form_meta_timeend)s' % fields]['$lte'] = period.end aggregate = json.loads(Template(aggregate_str).render(fields)) results = db.observations.map_reduce(mapper, reducer, 'myresults_fp', query=query) if results.count(): value = results.aggregate(aggregate) print value['result'][0]['total'] assert value['result'][0]['total'] == 1641 db.myresults_fp.drop()