22 from lsst.daf.butler
import Butler
23 from lsst.daf.butler.core.utils
import findFileResources
24 from lsst.pipe.base.configOverrides
import ConfigOverrides
28 def ingestRaws(repo, locations, regex, output_run, config=None, config_file=None, transfer="auto",
29 processes=1, ingest_task="lsst.obs.base.RawIngestTask"):
30 """Ingests raw frames into the butler registry
35 URI to the repository.
36 locations : `list` [`str`]
37 Files to ingest and directories to search for files that match
40 Regex string used to find files in directories listed in locations.
42 The path to the location, the run, where datasets should be put.
43 config : `dict` [`str`, `str`] or `None`
44 Key-value pairs to apply as overrides to the ingest config.
45 config_file : `str` or `None`
46 Path to a config file that contains overrides to the ingest config.
47 transfer : `str` or None
48 The external data transfer type, by default "auto".
50 Number of processes to use for ingest.
52 The fully qualified class name of the ingest task to use by default
53 lsst.obs.base.RawIngestTask.
58 Raised if operations on configuration object fail.
60 butler = Butler(repo, writeable=
True)
61 TaskClass = doImport(ingest_task)
62 ingestConfig = TaskClass.ConfigClass()
63 ingestConfig.transfer = transfer
64 configOverrides = ConfigOverrides()
65 if config_file
is not None:
66 configOverrides.addFileOverride(config_file)
67 if config
is not None:
68 for name, value
in config.items():
69 configOverrides.addValueOverride(name, value)
70 configOverrides.applyTo(ingestConfig)
71 ingester = TaskClass(config=ingestConfig, butler=butler)
72 files = findFileResources(locations, regex)
73 ingester.run(files, run=output_run, processes=processes)