Ejemplo n.º 1
0
    def test_storeForcedSources(self):
        """Store and retrieve DiaForcedSources."""

        config = PpdbConfig(db_url="sqlite:///",
                            isolation_level="READ_UNCOMMITTED",
                            read_sources_months=12,
                            read_forced_sources_months=12)
        ppdb = Ppdb(config)
        ppdb.makeSchema()

        pixel_ranges = _makePixelRanges()
        visit_time = datetime.datetime.now()

        # have to store Objects first
        if self.use_pandas:
            objects = _makeObjectCatalogPandas(pixel_ranges)
            catalog, oids = _makeForcedSourceCatalogPandas(objects)
        else:
            objects = _makeObjectCatalog(pixel_ranges)
            catalog, oids = _makeForcedSourceCatalog(objects)

        ppdb.storeDiaObjects(objects, visit_time)

        # save them
        ppdb.storeDiaForcedSources(catalog)

        # read it back and check sizes
        res = ppdb.getDiaForcedSources(oids, visit_time, return_pandas=self.use_pandas)
        self._assertCatalog(res, len(catalog), type=self.data_type)
Ejemplo n.º 2
0
    def test_storeObjectsLast(self):
        """Store and retrieve DiaObjects using DiaObjectLast table."""
        # don't care about sources.
        config = PpdbConfig(db_url="sqlite:///",
                            isolation_level="READ_UNCOMMITTED",
                            dia_object_index="last_object_table",
                            object_last_replace=True)
        ppdb = Ppdb(config)
        ppdb.makeSchema()

        pixel_ranges = _makePixelRanges()
        visit_time = datetime.datetime.now()

        # make afw catalog with Objects
        if self.use_pandas:
            catalog = _makeObjectCatalogPandas(pixel_ranges)
        else:
            catalog = _makeObjectCatalog(pixel_ranges)

        # store catalog
        ppdb.storeDiaObjects(catalog, visit_time)

        # read it back and check sizes
        res = ppdb.getDiaObjects(pixel_ranges, return_pandas=self.use_pandas)
        self._assertCatalog(res, len(catalog), type=self.data_type)
Ejemplo n.º 3
0
class TestApVerifyQueries(unittest.TestCase):
    def setUp(self):
        self.ppdbCfg = PpdbConfig()
        # Create DB in memory.
        self.ppdbCfg.db_url = 'sqlite://'
        self.ppdbCfg.isolation_level = "READ_UNCOMMITTED"
        self.ppdbCfg.dia_object_index = "baseline"
        self.ppdbCfg.dia_object_columns = []
        self.ppdb = Ppdb(
            config=self.ppdbCfg,
            afw_schemas=dict(
                DiaObject=afwTable.SourceTable.makeMinimalSchema(),
                DiaSource=afwTable.SourceTable.makeMinimalSchema()))
        self.ppdb._schema.makeSchema()

    def tearDown(self):
        del self.ppdb

    def test_count_zero_objects(self):
        value = self.ppdb.countUnassociatedObjects()
        self.assertEqual(value, 0)

    def test_count_objects(self):
        n_created = 5
        sources = createTestObjects(n_created, {'nDiaSources': 'I'})
        sources[-1]['nDiaSources'] = 2

        # nsecs must be an integer, not 1.4e18
        dateTime = dafBase.DateTime(nsecs=1400000000 * 10**9)
        self.ppdb.storeDiaObjects(sources, dateTime.toPython())

        value = self.ppdb.countUnassociatedObjects()
        self.assertEqual(n_created - 1, value)

    @staticmethod
    def _makeVisitInfo(exposureId):
        # Real VisitInfo hard to create
        visitInfo = unittest.mock.NonCallableMock(
            afwImage.VisitInfo, **{"getExposureId.return_value": exposureId})
        return visitInfo

    def test_isExposureProcessed(self):
        n_created = 5
        sources = createTestObjects(n_created, {'ccdVisitId': 'I'})
        for source in sources:
            source['ccdVisitId'] = 2381

        self.ppdb.storeDiaSources(sources)

        self.assertTrue(
            self.ppdb.isVisitProcessed(
                TestApVerifyQueries._makeVisitInfo(2381)))
        self.assertFalse(
            self.ppdb.isVisitProcessed(TestApVerifyQueries._makeVisitInfo(42)))