def _dummyApdbConfig(): config = ApdbConfig() config.db_url = "sqlite://" # in-memory DB config.isolation_level = "READ_UNCOMMITTED" return config
def _roundTripThroughApdb(objects, sources, forcedSources, dateTime): """Run object and source catalogs through the Apdb to get the correct table schemas. Parameters ---------- objects : `pandas.DataFrame` Set of test DiaObjects to round trip. sources : `pandas.DataFrame` Set of test DiaSources to round trip. forcedSources : `pandas.DataFrame` Set of test DiaForcedSources to round trip. dateTime : `datetime.datetime` Time for the Apdb. Returns ------- objects : `pandas.DataFrame` Round tripped objects. sources : `pandas.DataFrame` Round tripped sources. """ tmpFile = tempfile.NamedTemporaryFile() apdbConfig = ApdbConfig() apdbConfig.db_url = "sqlite:///" + tmpFile.name apdbConfig.isolation_level = "READ_UNCOMMITTED" apdbConfig.dia_object_index = "baseline" apdbConfig.dia_object_columns = [] apdbConfig.schema_file = _data_file_name("apdb-schema.yaml", "dax_apdb") apdbConfig.column_map = _data_file_name("apdb-ap-pipe-afw-map.yaml", "ap_association") apdbConfig.extra_schema_file = _data_file_name( "apdb-ap-pipe-schema-extra.yaml", "ap_association") apdb = Apdb(config=apdbConfig, afw_schemas=dict(DiaObject=make_dia_object_schema(), DiaSource=make_dia_source_schema())) apdb.makeSchema() minId = objects["pixelId"].min() maxId = objects["pixelId"].max() diaObjects = apdb.getDiaObjects([[minId, maxId + 1]], return_pandas=True).append(objects) diaSources = apdb.getDiaSources(np.unique(objects["diaObjectId"]), dateTime, return_pandas=True).append(sources) diaForcedSources = apdb.getDiaForcedSources( np.unique(objects["diaObjectId"]), dateTime, return_pandas=True).append(forcedSources) apdb.storeDiaSources(diaSources) apdb.storeDiaForcedSources(diaForcedSources) apdb.storeDiaObjects(diaObjects, dateTime) diaObjects = apdb.getDiaObjects([[minId, maxId + 1]], return_pandas=True) diaSources = apdb.getDiaSources(np.unique(diaObjects["diaObjectId"]), dateTime, return_pandas=True) diaForcedSources = apdb.getDiaForcedSources(np.unique( diaObjects["diaObjectId"]), dateTime, return_pandas=True) diaObjects.set_index("diaObjectId", drop=False, inplace=True) diaSources.set_index(["diaObjectId", "filterName", "diaSourceId"], drop=False, inplace=True) diaForcedSources.set_index(["diaObjectId"], drop=False, inplace=True) return (diaObjects, diaSources, diaForcedSources)