def setUpClass(cls): cls.root = testUtils.makeTestTempDir( os.path.abspath(os.path.dirname(__file__))) cls.addClassCleanup(testUtils.removeTestTempDir, cls.root) # Can't use in-memory datastore because JobReporter creates a # new Butler from scratch. cls.repo = dafButler.Butler(dafButler.Butler.makeRepo(cls.root), writeable=True) # White-box testing: must use real metrics, and provide datasets of # type metricvalue_*_*. butlerTests.addDataIdValue(cls.repo, "instrument", "NotACam") butlerTests.addDataIdValue(cls.repo, "detector", 101) # physical_filter needed for well-behaved visits butlerTests.addDataIdValue(cls.repo, "physical_filter", "k2021", band="k") butlerTests.addDataIdValue(cls.repo, "visit", 42) # Dependency on verify_metrics, but not on the code for computing # these metrics. butlerTests.addDatasetType( cls.repo, "metricvalue_pipe_tasks_CharacterizeImageTime", {"instrument", "visit", "detector"}, "MetricValue")
def setup_butler(repo): """Create a butler at the given location, and register appropriate things in it to allow adding metricvalues. """ lsst.daf.butler.Butler.makeRepo(repo) butler = lsst.daf.butler.Butler(repo, writeable=True) addDataIdValue(butler, "instrument", "TestCam") for x in range(189): addDataIdValue(butler, "detector", x) addDataIdValue(butler, "visit", 12345) addDataIdValue(butler, "visit", 54321) butler.registry.registerCollection(collection, lsst.daf.butler.CollectionType.RUN) return butler
def setUpClass(cls): super().setUpClass() repoDir = tempfile.mkdtemp() cls.addClassCleanup(shutil.rmtree, repoDir, ignore_errors=True) cls.repo = butlerTests.makeTestRepo(repoDir) INSTRUMENT = "notACam" VISIT = 42 CCD = 101 HTM = 42 SKYMAP = "TreasureMap" TRACT = 28 PATCH = 4 BAND = 'k' PHYSICAL = 'k2022' SUB_FILTER = 9 # Mock instrument by hand, because some tasks care about parameters instrumentRecord = cls.repo.registry.dimensions[ "instrument"].RecordClass(name=INSTRUMENT, visit_max=256, exposure_max=256, detector_max=128) cls.repo.registry.syncDimensionData("instrument", instrumentRecord) butlerTests.addDataIdValue(cls.repo, "physical_filter", PHYSICAL, band=BAND) butlerTests.addDataIdValue(cls.repo, "subfilter", SUB_FILTER) butlerTests.addDataIdValue(cls.repo, "exposure", VISIT) butlerTests.addDataIdValue(cls.repo, "visit", VISIT) butlerTests.addDataIdValue(cls.repo, "detector", CCD) butlerTests.addDataIdValue(cls.repo, "skymap", SKYMAP) butlerTests.addDataIdValue(cls.repo, "tract", TRACT) butlerTests.addDataIdValue(cls.repo, "patch", PATCH) cls.exposureId = cls.repo.registry.expandDataId({ "instrument": INSTRUMENT, "exposure": VISIT, "detector": CCD }) cls.visitId = cls.repo.registry.expandDataId({ "instrument": INSTRUMENT, "visit": VISIT, "detector": CCD }) cls.visitOnlyId = cls.repo.registry.expandDataId({ "instrument": INSTRUMENT, "visit": VISIT }) cls.skymapId = cls.repo.registry.expandDataId({"skymap": SKYMAP}) cls.skymapVisitId = cls.repo.registry.expandDataId({ "instrument": INSTRUMENT, "visit": VISIT, "detector": CCD, "skymap": SKYMAP }) cls.patchId = cls.repo.registry.expandDataId({ "skymap": SKYMAP, "tract": TRACT, "patch": PATCH, "band": BAND }) cls.subfilterId = cls.repo.registry.expandDataId({ "skymap": SKYMAP, "tract": TRACT, "patch": PATCH, "band": BAND, "subfilter": SUB_FILTER }) cls.htmId = cls.repo.registry.expandDataId({"htm7": HTM}) butlerTests.addDatasetType(cls.repo, "postISRCCD", cls.exposureId.keys(), "Exposure") butlerTests.addDatasetType(cls.repo, "icExp", cls.visitId.keys(), "ExposureF") butlerTests.addDatasetType(cls.repo, "icSrc", cls.visitId.keys(), "SourceCatalog") butlerTests.addDatasetType(cls.repo, "icExpBackground", cls.visitId.keys(), "Background") butlerTests.addDatasetType(cls.repo, "gaia_dr2_20200414", cls.htmId.keys(), "SimpleCatalog") butlerTests.addDatasetType(cls.repo, "ps1_pv3_3pi_20170110", cls.htmId.keys(), "SimpleCatalog") butlerTests.addDatasetType(cls.repo, "calexp", cls.visitId.keys(), "ExposureF") butlerTests.addDatasetType(cls.repo, "src", cls.visitId.keys(), "SourceCatalog") butlerTests.addDatasetType(cls.repo, "calexpBackground", cls.visitId.keys(), "Background") butlerTests.addDatasetType(cls.repo, "srcMatch", cls.visitId.keys(), "Catalog") butlerTests.addDatasetType(cls.repo, "srcMatchFull", cls.visitId.keys(), "Catalog") butlerTests.addDatasetType( cls.repo, lsst.skymap.BaseSkyMap.SKYMAP_DATASET_TYPE_NAME, cls.skymapId.keys(), "SkyMap") butlerTests.addDatasetType(cls.repo, "goodSeeingCoadd", cls.patchId.keys(), "ExposureF") butlerTests.addDatasetType(cls.repo, "deepDiff_differenceExp", cls.visitId.keys(), "ExposureF") butlerTests.addDatasetType(cls.repo, "deepDiff_differenceTempExp", cls.visitId.keys(), "ExposureF") butlerTests.addDatasetType(cls.repo, "deepDiff_templateExp", cls.visitId.keys(), "ExposureF") butlerTests.addDatasetType(cls.repo, "goodSeeingDiff_templateExp", cls.visitId.keys(), "ExposureF") butlerTests.addDatasetType(cls.repo, "deepDiff_matchedExp", cls.visitId.keys(), "ExposureF") butlerTests.addDatasetType(cls.repo, "deepDiff_diaSrc", cls.visitId.keys(), "SourceCatalog") butlerTests.addDatasetType(cls.repo, "deepDiff_diaSrcTable", cls.visitId.keys(), "DataFrame") butlerTests.addDatasetType(cls.repo, "visitSsObjects", cls.visitOnlyId.keys(), "DataFrame") butlerTests.addDatasetType(cls.repo, "apdb_marker", cls.visitId.keys(), "Config") butlerTests.addDatasetType(cls.repo, "deepDiff_associDiaSrc", cls.visitId.keys(), "DataFrame")
def setUpClass(cls): # Repository should be re-created for each test case, but # this has a prohibitive run-time cost at present cls.root = makeTestTempDir(TESTDIR) cls.creatorButler = makeTestRepo(cls.root) addDataIdValue(cls.creatorButler, "instrument", "notACam") addDataIdValue(cls.creatorButler, "instrument", "dummyCam") addDataIdValue(cls.creatorButler, "physical_filter", "k2020", band="k", instrument="notACam") addDataIdValue(cls.creatorButler, "physical_filter", "l2019", instrument="dummyCam") addDataIdValue(cls.creatorButler, "visit", 101, instrument="notACam", physical_filter="k2020") addDataIdValue(cls.creatorButler, "visit", 102, instrument="notACam", physical_filter="k2020") addDataIdValue(cls.creatorButler, "detector", 5) # Leave skymap/patch/tract undefined so that tests can assume # they're missing. registerMetricsExample(cls.creatorButler) addDatasetType(cls.creatorButler, "DataType1", {"instrument"}, "StructuredDataNoComponents") addDatasetType(cls.creatorButler, "DataType2", {"instrument", "visit"}, "StructuredData")
def testAddDataIdValue(self): addDataIdValue(self.butler, "visit", 1, instrument="notACam", physical_filter="k2020") self._checkButlerDimension({"visit", "instrument"}, "visit=1", [{ "instrument": "notACam", "visit": 1 }]) addDataIdValue(self.butler, "visit", 2, instrument="dummyCam", physical_filter="l2019") self._checkButlerDimension({"visit", "instrument"}, "visit=2", [{ "instrument": "dummyCam", "visit": 2 }]) with self.assertRaises(ValueError): addDataIdValue(self.butler, "NotADimension", 42) with self.assertRaises(ValueError): addDataIdValue(self.butler, "detector", "nonNumeric") with self.assertRaises(ValueError): addDataIdValue(self.butler, "detector", 101, nonsenseField="string") # Keywords imply different instruments with self.assertRaises(RuntimeError): addDataIdValue(self.butler, "exposure", 101, instrument="dummyCam", physical_filter="k2020") # No skymap defined with self.assertRaises(RuntimeError): addDataIdValue(self.butler, "tract", 42) with self.assertRaises(RuntimeError): addDataIdValue(self.butler, "tract", 43, skymap="map")
def setUpClass(cls): super().setUpClass() # Repository should be re-created for each test case, but # this has a prohibitive run-time cost at present cls.root = tempfile.mkdtemp() cls.repo = butlerTests.makeTestRepo(cls.root) butlerTests.addDataIdValue(cls.repo, "instrument", "notACam") butlerTests.addDataIdValue(cls.repo, "visit", 101) butlerTests.addDataIdValue(cls.repo, "visit", 102) butlerTests.addDataIdValue(cls.repo, "skymap", "sky") butlerTests.addDataIdValue(cls.repo, "tract", 42) butlerTests.addDataIdValue(cls.repo, "patch", 0) butlerTests.addDataIdValue(cls.repo, "patch", 1) butlerTests.registerMetricsExample(cls.repo) for typeName in {"VisitA", "VisitB", "VisitOutA", "VisitOutB"}: butlerTests.addDatasetType(cls.repo, typeName, {"instrument", "visit"}, "StructuredData") for typeName in {"PatchA", "PatchOut"}: butlerTests.addDatasetType(cls.repo, typeName, {"skymap", "tract", "patch"}, "StructuredData") butlerTests.addDatasetType(cls.repo, "PatchB", {"skymap", "tract"}, "StructuredData") for typeName in {"PixA", "PixOut"}: butlerTests.addDatasetType(cls.repo, typeName, {"htm7"}, "StructuredData") butlerTests.addDatasetType(cls.repo, "VisitInitIn", set(), "StructuredData")