def main():
    if "CI_HSC_GEN3_DIR" not in os.environ:
        raise RuntimeError("ci_hsc_gen3 is not setup.")
    repo_root = os.path.join(os.environ["CI_HSC_GEN3_DIR"], "DATA")
    butler = Butler(repo_root)
    os.makedirs("DATA", exist_ok=False)
    with butler.export(directory="DATA",
                       filename="ci_hsc.yaml",
                       transfer="link") as exporter:
        for element in butler.registry.dimensions.getStaticElements():
            if element.hasTable() and element.viewOf is None:
                exporter.saveDimensionData(
                    element,
                    butler.registry.queryDimensionRecords(element),
                )
        for collection in butler.registry.queryCollections(...):
            exporter.saveCollection(collection)
        exporter.saveDatasets(
            butler.registry.queryDatasets(..., collections=...))
Example #2
0
    def rewrite(dataset: FileDataset) -> FileDataset:
        # Join the datastore root to the exported path.  This should yield
        # absolute paths that start with $CI_HSC_GEN2_DIR.
        dataset.path = os.path.join(butler.datastore.root.ospath, dataset.path)
        # Remove symlinks in the path; this should result in absolute paths
        # that start with $TESTDATA_CI_HSC_DIR, because ci_hsc_gen2 always
        # symlinks these datasets from there.
        dataset.path = os.path.realpath(dataset.path)
        # Recompute the path relative to $TESTDATA_CI_HSC_DIR, so we can deal
        # with that moving around after the export file is created.
        dataset.path = os.path.relpath(dataset.path,
                                       getPackageDir("testdata_ci_hsc"))
        return dataset

    with butler.export(filename=args.filename) as export:
        for datasetTypeName in ("brightObjectMask", "ps1_pv3_3pi_20170110",
                                "jointcal_photoCalib", "jointcal_wcs"):
            export.saveDatasets(butler.registry.queryDatasets(datasetTypeName,
                                                              collections=...),
                                elements=(),
                                rewrite=rewrite)
        for datasetTypeName in ("bias", "dark", "flat", "sky"):
            export.saveDatasets(butler.registry.queryDatasets(datasetTypeName,
                                                              collections=...),
                                elements=(),
                                rewrite=rewrite)
        for collection in butler.registry.queryCollections("HSC/defaults",
                                                           includeChains=True,
                                                           flattenChains=True):
            export.saveCollection(collection)
du = DimensionUniverse()
qgraph = QuantumGraph.loadUri('/home/krughoff/public_html/data/two_ccd_processccd.qgraph', du)
exports = set()
def runner(nodes, exports, visited=None):
    if not visited:
        visited = set()
    for node in nodes:
        if node in visited:
            continue
        exports.update([ref for thing in node.quantum.inputs.values() for ref in thing])
        exports.update([ref for thing in node.quantum.outputs.values() for ref in thing])
        exports.update([ref for ref in node.quantum.initInputs.values()])
        before = qgraph.determineAncestorsOfQuantumNode(node)
        visited.add(node)
        if before:
            runner(before, exports, visited)
runner([node for node in qgraph.getNodesForTask(qgraph.findTaskDefByLabel('calibrate'))], exports)
resolved_refs = [butler.registry.findDataset(datasetType=ex.datasetType, dataId=ex.dataId,
                 collections=butler.registry.queryCollections()) for ex in exports]

with butler.export(filename='export.yaml', directory='rsp_data_export', transfer='copy') as export:
    export.saveDatasets(resolved_refs)
    export.saveCollection("HSC/calib")
    export.saveCollection("HSC/calib/DM-28636")
    export.saveCollection("HSC/calib/gen2/20180117")
    export.saveCollection("HSC/calib/gen2/20180117/unbounded")
    export.saveCollection("HSC/calib/DM-28636/unbounded")
    export.saveCollection("HSC/calib/gen2/20180117")
    export.saveCollection("HSC/calib/gen2/20200115")
    export.saveCollection("refcats/DM-28636")