Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatasks/private/task_partition.py: 96%

46 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-11-01 07:19 +0000

1import os 

2import shutil 

3import string 

4import copy 

5import math 

6 

7from casatasks import casalog 

8from casatools import ms, mstransformer 

9from .parallel.parallel_data_helper import ParallelDataHelper 

10from . import flaghelper as fh 

11from .mstools import write_history 

12 

13def partition(vis, 

14 outputvis, 

15 createmms, 

16 separationaxis, 

17 numsubms, 

18 flagbackup, # only for MMS 

19 datacolumn, 

20 field, 

21 spw, 

22 scan, 

23 antenna, 

24 correlation, 

25 timerange, 

26 intent, 

27 array, 

28 uvrange, 

29 observation, 

30 feed, 

31 disableparallel, # HIDDEN parameter to create an MMS in sequential 

32 ddistart, # HIDDEN parameter to be used when merging sub-tables 

33 taql # HIDDEN parameter to be used for balanced partition schema 

34 

35 ): 

36 """Create a multi visibility set from an existing visibility set: 

37 

38 Keyword arguments: 

39 vis -- Name of input visibility file (MS) 

40 default: none; example: vis='ngc5921.ms' 

41 outputvis -- Name of output visibility file (MS) 

42 default: none; example: outputvis='ngc5921_src.ms' 

43 createmms -- Boolean flag if we're creating Multi MS 

44 default: True 

45 separationaxis -- what axis do we intend to split on. 

46 default = 'auto' 

47 Options: 'scan','spw','auto' 

48 numsubms -- Number of sub-MSs to create. 

49 default: 'auto' 

50 flagbackup -- Backup the FLAG column of the output MMS 

51 default: True 

52  

53 datacolumn -- Which data column to use to create the output 

54 default='data'; example: datacolumn='data' 

55 Options: 'data', 'corrected', 'model', 'all', 

56 'float_data', 'lag_data', 'float_data,data', and 

57 'lag_data,data'. 

58 note: 'all' = whichever of the above that are present. 

59 field -- Field name 

60 default: field = '' means use all sources 

61 field = 1 # will get field_id=1 (if you give it an 

62 integer, it will retrieve the source with that index) 

63 field = '1328+307' specifies source '1328+307'. 

64 Minimum match can be used, egs field = '13*' will 

65 retrieve '1328+307' if it is unique or exists. 

66 Source names with imbedded blanks cannot be included. 

67 spw -- Spectral window index identifier 

68 default=-1 (all); example: spw=1 

69 antenna -- antenna names 

70 default '' (all), 

71 antenna = '3 & 7' gives one baseline with antennaid = 3,7. 

72 timerange -- Time range 

73 default='' means all times. examples: 

74 timerange = 'YYYY/MM/DD/hh:mm:ss~YYYY/MM/DD/hh:mm:ss' 

75 timerange='< YYYY/MM/DD/HH:MM:SS.sss' 

76 timerange='> YYYY/MM/DD/HH:MM:SS.sss' 

77 timerange='< ddd/HH:MM:SS.sss' 

78 timerange='> ddd/HH:MM:SS.sss' 

79 scan -- Scan numbers to select. 

80 default '' (all). 

81 intent -- Select based on the scan intent. 

82 default '' (all) 

83 array -- (Sub)array IDs to select.  

84 default '' (all). 

85 uvrange -- uv distance range to select. 

86 default '' (all). 

87 observation -- observation ID(s) to select. 

88 default '' (all). 

89 """ 

90 

91 casalog.origin('partition') 

92 

93 # Initiate the helper class  

94 pdh = ParallelDataHelper('partition', locals()) 

95 

96 # Validate input and output parameters 

97 pdh.setupIO() 

98 

99 if createmms: 

100 

101 if disableparallel: 

102 pdh.bypassParallelProcessing(1) 

103 else: 

104 pdh.bypassParallelProcessing(0) 

105 

106 # Get a cluster 

107 pdh.setupCluster(thistask='partition') 

108 

109 # Execute the jobs using cluster 

110 pdh.go() 

111 pdh.bypassParallelProcessing(0) 

112 

113 # Create a backup of the flags that are in the MMS 

114 casalog.origin('partition') 

115 if flagbackup and os.path.exists(outputvis): 

116 casalog.post('Create a backup of the flags that are in the MMS') 

117 fh.backupFlags(aflocal=None, msfile=outputvis, prename='partition') 

118 

119 # Write history to output MS, not the input ms. 

120 try: 

121 param_names = partition.__code__.co_varnames[:partition.__code__.co_argcount] 

122 local_vars = locals( ) 

123 param_vals = [local_vars[p] for p in param_names] 

124 

125 casalog.post('Updating the history in the output', 'DEBUG1') 

126 write_history(ms(), outputvis, 'partition', param_names, 

127 param_vals, casalog) 

128 except Exception as instance: 

129 casalog.post("*** Error \'%s\' updating HISTORY" % (instance), 

130 'WARN') 

131 

132 return 

133 

134 

135 try: 

136 mtlocal = mstransformer() 

137 

138 # Gather all the parameters in a dictionary.  

139 config = {} 

140 config = pdh.setupParameters(inputms=vis, outputms=outputvis, field=field, 

141 spw=spw, array=array, scan=scan, antenna=antenna, correlation=correlation, 

142 uvrange=uvrange,timerange=timerange, intent=intent, observation=str(observation), 

143 feed=feed,taql=taql) 

144 

145 # ddistart will be used in the tool when re-indexing the spw table 

146 config['ddistart'] = ddistart 

147 

148 config['datacolumn'] = datacolumn 

149 

150 # Configure the tool and all the parameters 

151 

152 casalog.post('%s'%config, 'DEBUG1') 

153 mtlocal.config(config) 

154 

155 # Open the MS, select the data and configure the output 

156 mtlocal.open() 

157 

158 # Run the tool 

159 casalog.post('Run the tool to partition the MS') 

160 mtlocal.run() 

161 

162 finally: 

163 mtlocal.done()