Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# This file is part of obs_base. 

2# 

3# Developed for the LSST Data Management System. 

4# This product includes software developed by the LSST Project 

5# (http://www.lsst.org). 

6# See the COPYRIGHT file at the top-level directory of this distribution 

7# for details of code ownership. 

8# 

9# This program is free software: you can redistribute it and/or modify 

10# it under the terms of the GNU General Public License as published by 

11# the Free Software Foundation, either version 3 of the License, or 

12# (at your option) any later version. 

13# 

14# This program is distributed in the hope that it will be useful, 

15# but WITHOUT ANY WARRANTY; without even the implied warranty of 

16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 

17# GNU General Public License for more details. 

18# 

19# You should have received a copy of the GNU General Public License 

20# along with this program. If not, see <http://www.gnu.org/licenses/>. 

21 

22import click 

23 

24from lsst.daf.butler.cli.opt import (repo_argument, 

25 config_option, 

26 config_file_option, 

27 locations_argument, 

28 options_file_option, 

29 processes_option, 

30 regex_option, 

31 run_option, 

32 transfer_option 

33 ) 

34from lsst.daf.butler.cli.utils import ( 

35 ButlerCommand, 

36 cli_handle_exception, 

37 split_commas, 

38 typeStrAcceptsMultiple 

39) 

40from ..opt import instrument_argument 

41from ... import script 

42 

43 

44# regular expression that can be used to find supported fits file extensions. 

45fits_re = r"\.fit[s]?\b" 

46 

47 

48@click.command(short_help="Convert a gen2 repo to gen3.", cls=ButlerCommand) 

49@repo_argument(required=True, 

50 help="REPO is the URI or path to the gen3 repository. Will be created if it does not already " 

51 "exist") 

52@click.option("--gen2root", required=True, 

53 help="Root path of the gen 2 repo to be converted.") 

54@click.option("--skymap-name", 

55 help="Name of the new gen3 skymap (e.g. 'discrete/ci_hsc').") 

56@click.option("--skymap-config", 

57 help="Path to skymap config file defining the new gen3 skymap.") 

58@click.option("--calibs", 

59 help="Path to the gen 2 calibration repo. It can be absolute or relative to gen2root.") 

60@click.option("--reruns", multiple=True, callback=split_commas, metavar=typeStrAcceptsMultiple, 

61 help="List of gen 2 reruns to convert.") 

62@transfer_option(help="Mode to use to transfer files into the new repository.") 

63@processes_option() 

64@config_file_option(help="Path to a `ConvertRepoConfig` override to be included after the Instrument config " 

65 "overrides are applied.") 

66@options_file_option() 

67def convert(*args, **kwargs): 

68 """Convert a Butler gen 2 repository into a gen 3 repository.""" 

69 cli_handle_exception(script.convert, *args, **kwargs) 

70 

71 

72@click.command(short_help="Define visits from exposures.", cls=ButlerCommand) 

73@repo_argument(required=True) 

74@instrument_argument(required=True) 

75@config_file_option(help="Path to a pex_config override to be included after the Instrument config overrides " 

76 "are applied.") 

77@click.option("--collections", 

78 help="The collections to be searched (in order) when reading datasets.", 

79 multiple=True, 

80 callback=split_commas, 

81 metavar=typeStrAcceptsMultiple) 

82@processes_option() 

83@options_file_option() 

84def define_visits(*args, **kwargs): 

85 """Define visits from exposures in the butler registry.""" 

86 cli_handle_exception(script.defineVisits, *args, **kwargs) 

87 

88 

89@click.command(short_help="Ingest raw frames.", cls=ButlerCommand) 

90@repo_argument(required=True) 

91@locations_argument(help="LOCATIONS specifies files to ingest and/or locations to search for files.", 

92 required=True) 

93@regex_option(default=fits_re, 

94 help="Regex string used to find files in directories listed in LOCATIONS. " 

95 "Searches for fits files by default.") 

96@config_option(metavar="TEXT=TEXT", multiple=True) 

97@config_file_option(type=click.Path(exists=True, writable=False, file_okay=True, dir_okay=False)) 

98@run_option(required=False) 

99@transfer_option() 

100@processes_option() 

101@click.option("--ingest-task", default="lsst.obs.base.RawIngestTask", help="The fully qualified class name " 

102 "of the ingest task to use.") 

103@options_file_option() 

104def ingest_raws(*args, **kwargs): 

105 """Ingest raw frames into from a directory into the butler registry""" 

106 cli_handle_exception(script.ingestRaws, *args, **kwargs) 

107 

108 

109@click.command(short_help="Add an instrument to the repository", cls=ButlerCommand) 

110@repo_argument(required=True) 

111@instrument_argument(required=True, nargs=-1, help="The fully-qualified name of an Instrument subclass.") 

112def register_instrument(*args, **kwargs): 

113 """Add an instrument to the data repository. 

114 """ 

115 cli_handle_exception(script.registerInstrument, *args, **kwargs) 

116 

117 

118@click.command(short_help="Add an instrument's curated calibrations.", cls=ButlerCommand) 

119@repo_argument(required=True) 

120@instrument_argument(required=True) 

121@click.option("--collection", required=False, 

122 help="Name of the calibration collection that associates datasets with validity ranges.") 

123@click.option("--suffix", required=False, 

124 help=("Name suffix to append (with an automatic delimiter) to all RUN collection names " 

125 "as well as the calibration collection name if it is not provided via --collection.")) 

126@options_file_option() 

127def write_curated_calibrations(*args, **kwargs): 

128 """Add an instrument's curated calibrations to the data repository. 

129 """ 

130 cli_handle_exception(script.writeCuratedCalibrations, *args, **kwargs)