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

27 statements  

« prev     ^ index     » next       coverage.py v7.6.4, created at 2024-10-31 18:48 +0000

1##################### generated by xml-casa (v2) from simalma.xml ################### 

2##################### 4a3ac82c1288b5699e222ce63d959cad ############################## 

3from __future__ import absolute_import 

4import numpy 

5from casatools.typecheck import CasaValidator as _val_ctor 

6_pc = _val_ctor( ) 

7from casatools.coercetype import coerce as _coerce 

8from casatools.errors import create_error_string 

9from .private.task_simalma import simalma as _simalma_t 

10from casatasks.private.task_logging import start_log as _start_log 

11from casatasks.private.task_logging import end_log as _end_log 

12from casatasks.private.task_logging import except_log as _except_log 

13 

14class _simalma: 

15 """ 

16 simalma ---- Simulation task for ALMA 

17 

18  

19 This task simulates ALMA observation including 12-m, ACA 7-m and total 

20 power arrays, and images and analyzes simulated data. 

21  

22 This task makes multiple calls to simobserve (to calculate 

23 visibilities and total power spectra), followed by gridding of total 

24 power spectra (if total power is requested), concatenation of the 

25 simulated visibilities, calls to the simanalyze task for visibility 

26 inversion and deconvolution and calculation of difference and fidelity 

27 images, and feathering of single dish and interferometric data. 

28  

29 These steps may not all be familiar to new users, so the simalma task 

30 runs by default in a "dryrun" mode, in which it assesses the user's 

31 input parameters and sky model, and prints an informational report 

32 including the required calls to other CASA tasks, both to the screen 

33 and to a text file in the project directory (defined below). 

34  

35 The user can modify their parameters based on the information, then 

36 either run with dryrun=False to actually call the other tasks to 

37 create the simulated data, or run the other tasks individually one at 

38 a time to better understand and control the process. 

39  

40 NOTE The ALMA project is refining the optimal method of combining the 

41 three types of data. If that best practice is changed after this 

42 release of CASA, the user can control the process by modifying the 

43 calls to the other CASA tasks. 

44 

45 --------- parameter descriptions --------------------------------------------- 

46 

47 project root prefix for output file names 

48 dryrun dryrun=True will only produce the informative report, not run simobserve/analyze 

49 skymodel model image to observe 

50 inbright scale surface brightness of brightest pixel e.g. "1.2Jy/pixel" 

51 indirection set new direction e.g. "J2000 19h00m00 -40d00m00" 

52 incell set new cell/pixel size e.g. "0.1arcsec" 

53 incenter set new frequency of center channel e.g. "89GHz" (required even for 2D model) 

54 inwidth set new channel width e.g. "10MHz" (required even for 2D model) 

55 complist componentlist to observe 

56 compwidth bandwidth of components 

57 setpointings If True, calculate a map of pointings and write *ptgfile*. 

58 ptgfile list of pointing positions 

59 integration integration (sampling) time 

60 direction "J2000 19h00m00 -40d00m00" or "" to center on model 

61 mapsize angular size of map or "" to cover model 

62 antennalist antenna position files of ALMA 12m and 7m arrays 

63 hourangle hour angle of observation center e.g. -3:00:00, or "transit" 

64 totaltime total time of observation; vector corresponding to antennalist 

65 tpnant Number of total power antennas to use (0-4) 

66 tptime total observation time for total power 

67 pwv Precipitable Water Vapor in mm. 0 for noise-free simulation 

68 image image simulated data 

69 imsize output image size in pixels (x,y) or 0 to match model 

70 imdirection set output image direction, (otherwise center on the model) 

71 cell cell size with units or "" to equal model 

72 niter maximum number of iterations (0 for dirty image) 

73 threshold flux level (+units) to stop cleaning 

74 graphics display graphics at each stage to [screen|file|both|none] 

75 verbose Print extra information to the logger and terminal. 

76 overwrite overwrite files starting with $project 

77 RETURNS bool 

78 

79 --------- examples ----------------------------------------------------------- 

80 

81  

82 ------------------------------- 

83 Parameters: 

84  

85 project -- root filename for all output files. A subdirectory will be 

86 created, and all created files will be placed in that subdirectory 

87 including the informational report. 

88  

89 ------------------------------- 

90 skymodel -- input image (used as a model of the sky) 

91 * simalma requires a CASA or fits image. If you merely have a grid of 

92 numbers, you will need to write them out as fits or write a 

93 CASA script to read them in and use the ia tool to create an image 

94 and insert the data. 

95  

96 * simalma does NOT require a coordinate system in the header. If the 

97 coordinate information is incomplete, missing, or you would like to 

98 override it, set the appropriate "in" parameters. NOTE that setting 

99 those parameters simply changes the header values, ignoring 

100 any values already in the image. No regridding is performed. 

101  

102 * If you have a proper Coordinate System, simalma will do its best to 

103 generate visibilities from that, and then create a synthesis image 

104 according to the specified user parameters. 

105  

106 * You can manipulate an image header manually with the "imhead" task. 

107  

108 inbright -- peak brightness to scale the image to in Jy/pixel, 

109 or "" for unchanged 

110 * NOTE: "unchanged" will take the numerical values in your image 

111 and assume they are in Jy/pixel, even if it says some other unit 

112 in the header. 

113  

114 indirection -- central direction to place the sky model image, 

115 or "" to use whatever is in the image already 

116  

117 incell -- spatial pixel size to scale the skymodel image, 

118 or "" to use whatever is in the image already. 

119  

120 incenter -- frequency to use for the center channel (or only channel, 

121 if the skymodel is 2D) e.g. "89GHz", 

122 or "" to use what is in the header. 

123  

124 inwidth -- width of channels to use, or "" to use what is in the image 

125 should be a string representing a quantity with units e.g. "10MHz" 

126 * NOTE: only works reliably with frequencies, not velocities 

127 * NOTE: it is not possible to change the number of spectral planes 

128 of the sky model, only to relabel them with different frequencies 

129 That kind of regridding can be accomplished with the CASA toolkit. 

130  

131 ------------------------------- 

132 complist -- component list model of the sky, added to or instead of skymodel 

133 see http://casaguides.nrao.edu/index.php?title=Simulation_Guide_Component_Lists_%28CASA_4.1%29 

134  

135 compwidth -- bandwidth of components; if simulating from components only, 

136 this defines the bandwidth of the MS and output images 

137  

138 ------------------------------- 

139 setpointings -- if true, calculate a map of pointings and write ptgfile. 

140 * if graphics are on, display the pointings shown on the model image 

141 * observations with the ALMA 12m and ACA 7m arrays will observe a 

142 region of size "mapsize" using the same hexagonal algorithm as 

143 the ALMA OT, with Nyquist sampling. 

144 * The total power array maps a slightly (+1 primary beam) larger area 

145 than the 12m array does, to improve later image combination. 

146 It samples the region with lattice grids of spacing 0.33 lambda/D. 

147 * if setpointings=false, read pointings from ptgfile. 

148  

149 ptgfile -- a text file specifying directions in the same 

150 format as the example, and optional integration times, e.g. 

151 #Epoch RA DEC TIME(optional) 

152 J2000 23h59m28.10 -019d52m12.35 10.0 

153 * if the time column is not present in the file, it will use 

154 "integration" for all pointings. 

155 * NOTE: at this time the file should contain only science pointings: 

156 simalma will observe these until totaltime is used up. 

157  

158 integration --- Time interval for each integration e.g '10s' 

159 * NOTE: to simulate a "scan" longer than one integration, use 

160 setpointings to generate a pointing file, and then edit the 

161 file to increase the time at each point to be larger than 

162 the parameter integration time. 

163  

164 direction -- mosaic center direction e.g 'J2000 19h00m00 -40d00m00' 

165 if unset, will use the center of the skymodel image. 

166 * can optionally be a list of pointings, otherwise 

167 * simobserve will cover a region of size mapsize according to maptype 

168  

169 mapsize -- angular size of mosaic map to simulate. 

170 * set to "" to cover the model image 

171  

172 ------------------------------- 

173 antennalist -- vector of ascii files containing antenna positions, 

174 one for each configuration of 7m or 12m dishes. 

175 * NOTE: In this task, it should be an ALMA configuration. 

176 * standard arrays are found in your CASA data repository, 

177 os.getenv("CASAPATH").split()[0]+"/data/alma/simmos/" 

178 * a string of the form "alma;0.5arcsec" will be parsed into a 

179 12m ALMA configuration - see casaguides.nrao.edu 

180 * examples: ['alma.cycle2.5.cfg','aca.cycle2.i.cfg'] 

181 ['alma.cycle1;0.3arcsec','alma.cycle1.1.cfg','aca.i.cfg'] 

182  

183 hourangle -- hour angle of observation e.g. '-3h' 

184  

185 totaltime --- total time of observations. This should either be a scalar 

186 time quantity expressed as a string e.g. '1h', '3600sec', '10min', 

187 or a vector of such quantities, corresponding to the elements of 

188 the antennalist vector, e.g. ['5min','20min','3h']. If you 

189 specify a scalar, that will be used for the highest resolution 

190 12m configuration in antennalist, and any lower resolution 12m 

191 configurations, any 7m configurations, and any TP configurations 

192 will have observing times relative to totaltime of 0.5, 2,and 4, 

193 respectively. 

194 ------------------------------- 

195  

196 tpnant -- the number of total power antennas to use in simulation. 

197  

198 tptime -- if tpnant>0, the user must specify the observing time for 

199 total power as a CASA quantity e.g. '4h'. 

200 * NOTE: this is not broken up among multiple days - 

201 a 20h track will include observations below the horizon, 

202 which is probably not what is desired. 

203  

204 ------------------------------- 

205 pwv -- precipitable water vapor if constructing an atmospheric model. 

206 Set 0 for noise-free simulation. When pwv>0, thermal noise is 

207 applied to the simulated data. 

208 * J. Pardo's ATM library will be used to construct anatmospheric 

209 profile for the ALMA site: 

210 altitude 5000m, ground pressure 650mbar, relhum=20%, 

211 a water layer of pwv at altitude of 2km, 

212 the sky brightness temperature returned by ATM, and internally 

213 tabulated receiver temperatures. 

214 See the documentation of simobserve for more details. 

215  

216 ------------------------------- 

217 image -- option to invert and deconvolve the simulated measurement set(s) 

218 * NOTE: interactive clean or more parameters than the subset visible 

219 here are available by simply running the clean task directly. 

220 * if graphics turned on, display the clean image and residual image 

221 * uses Cotton-Schwab clean for single fields and Mosaic gridding 

222 for multiple fields (with Clark PSF calculation in minor cycles). 

223  

224 imsize -- image size in spatial pixels (x,y) 

225 0 or -1 will use the model image size; example: imsize=[500,500] 

226  

227 imdirection -- phase center for synthesized image. default is to 

228 center on the sky model. 

229  

230 cell -- cell size e.g '10arcsec'. "" defaults to the skymodel cell 

231  

232 niter -- number of clean/deconvolution iterations, 0 for no cleaning 

233  

234 threshold -- flux level to stop cleaning 

235 ------------------------------- 

236 graphics -- view plots on the screen, saved to file, both, or neither 

237 verbose -- print extra information to the logger and terminal 

238 overwrite -- overwrite existing files in the project subdirectory 

239 ------------------------------- 

240  

241 Please see the documents of simobserve and simanalyze for 

242 the list of outputs produced. 

243  

244 

245 

246 """ 

247 

248 _info_group_ = """simulation""" 

249 _info_desc_ = """Simulation task for ALMA """ 

250 

251 def __call__( self, project='sim', dryrun=True, skymodel='', inbright='', indirection='', incell='', incenter='', inwidth='', complist='', compwidth='"8GHz"', setpointings=True, ptgfile='$project.ptg.txt', integration='10s', direction=[ ], mapsize=[ '','' ], antennalist=[ 'alma.cycle1.1.cfg','aca.cycle1.cfg' ], hourangle='transit', totaltime=[ '20min','1h' ], tpnant=int(0), tptime='0s', pwv=float(0.5), image=True, imsize=[ int(128),int(128) ], imdirection='', cell='', niter=int(0), threshold='0.1mJy', graphics='both', verbose=False, overwrite=False ): 

252 schema = {'project': {'type': 'cStr', 'coerce': _coerce.to_str}, 'dryrun': {'type': 'cBool'}, 'skymodel': {'type': 'cStr', 'coerce': _coerce.to_str}, 'inbright': {'type': 'cStr', 'coerce': _coerce.to_str}, 'indirection': {'type': 'cStr', 'coerce': _coerce.to_str}, 'incell': {'type': 'cStr', 'coerce': _coerce.to_str}, 'incenter': {'type': 'cStr', 'coerce': _coerce.to_str}, 'inwidth': {'type': 'cStr', 'coerce': _coerce.to_str}, 'complist': {'type': 'cStr', 'coerce': _coerce.to_str}, 'compwidth': {'type': 'cStr', 'coerce': _coerce.to_str}, 'setpointings': {'type': 'cBool'}, 'ptgfile': {'type': 'cStr', 'coerce': _coerce.to_str}, 'integration': {'type': 'cStr', 'coerce': _coerce.to_str}, 'direction': {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, 'mapsize': {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, 'antennalist': {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, 'hourangle': {'type': 'cStr', 'coerce': _coerce.to_str}, 'totaltime': {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, 'tpnant': {'type': 'cInt', 'min': 0, 'max': 4}, 'tptime': {'type': 'cStr', 'coerce': _coerce.to_str}, 'pwv': {'type': 'cFloat', 'coerce': _coerce.to_float, 'min': 0}, 'image': {'type': 'cBool'}, 'imsize': {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}, 'imdirection': {'type': 'cStr', 'coerce': _coerce.to_str}, 'cell': {'type': 'cStr', 'coerce': _coerce.to_str}, 'niter': {'type': 'cInt'}, 'threshold': {'type': 'cStr', 'coerce': _coerce.to_str}, 'graphics': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'none', 'file', 'both', 'screen', '' ]}, 'verbose': {'type': 'cBool'}, 'overwrite': {'type': 'cBool'}} 

253 doc = {'project': project, 'dryrun': dryrun, 'skymodel': skymodel, 'inbright': inbright, 'indirection': indirection, 'incell': incell, 'incenter': incenter, 'inwidth': inwidth, 'complist': complist, 'compwidth': compwidth, 'setpointings': setpointings, 'ptgfile': ptgfile, 'integration': integration, 'direction': direction, 'mapsize': mapsize, 'antennalist': antennalist, 'hourangle': hourangle, 'totaltime': totaltime, 'tpnant': tpnant, 'tptime': tptime, 'pwv': pwv, 'image': image, 'imsize': imsize, 'imdirection': imdirection, 'cell': cell, 'niter': niter, 'threshold': threshold, 'graphics': graphics, 'verbose': verbose, 'overwrite': overwrite} 

254 assert _pc.validate(doc,schema), create_error_string(_pc.errors) 

255 _logging_state_ = _start_log( 'simalma', [ 'project=' + repr(_pc.document['project']), 'dryrun=' + repr(_pc.document['dryrun']), 'skymodel=' + repr(_pc.document['skymodel']), 'inbright=' + repr(_pc.document['inbright']), 'indirection=' + repr(_pc.document['indirection']), 'incell=' + repr(_pc.document['incell']), 'incenter=' + repr(_pc.document['incenter']), 'inwidth=' + repr(_pc.document['inwidth']), 'complist=' + repr(_pc.document['complist']), 'compwidth=' + repr(_pc.document['compwidth']), 'setpointings=' + repr(_pc.document['setpointings']), 'ptgfile=' + repr(_pc.document['ptgfile']), 'integration=' + repr(_pc.document['integration']), 'direction=' + repr(_pc.document['direction']), 'mapsize=' + repr(_pc.document['mapsize']), 'antennalist=' + repr(_pc.document['antennalist']), 'hourangle=' + repr(_pc.document['hourangle']), 'totaltime=' + repr(_pc.document['totaltime']), 'tpnant=' + repr(_pc.document['tpnant']), 'tptime=' + repr(_pc.document['tptime']), 'pwv=' + repr(_pc.document['pwv']), 'image=' + repr(_pc.document['image']), 'imsize=' + repr(_pc.document['imsize']), 'imdirection=' + repr(_pc.document['imdirection']), 'cell=' + repr(_pc.document['cell']), 'niter=' + repr(_pc.document['niter']), 'threshold=' + repr(_pc.document['threshold']), 'graphics=' + repr(_pc.document['graphics']), 'verbose=' + repr(_pc.document['verbose']), 'overwrite=' + repr(_pc.document['overwrite']) ] ) 

256 task_result = None 

257 try: 

258 task_result = _simalma_t( _pc.document['project'], _pc.document['dryrun'], _pc.document['skymodel'], _pc.document['inbright'], _pc.document['indirection'], _pc.document['incell'], _pc.document['incenter'], _pc.document['inwidth'], _pc.document['complist'], _pc.document['compwidth'], _pc.document['setpointings'], _pc.document['ptgfile'], _pc.document['integration'], _pc.document['direction'], _pc.document['mapsize'], _pc.document['antennalist'], _pc.document['hourangle'], _pc.document['totaltime'], _pc.document['tpnant'], _pc.document['tptime'], _pc.document['pwv'], _pc.document['image'], _pc.document['imsize'], _pc.document['imdirection'], _pc.document['cell'], _pc.document['niter'], _pc.document['threshold'], _pc.document['graphics'], _pc.document['verbose'], _pc.document['overwrite'] ) 

259 except Exception as exc: 

260 _except_log('simalma', exc) 

261 raise 

262 finally: 

263 task_result = _end_log( _logging_state_, 'simalma', task_result ) 

264 return task_result 

265 

266simalma = _simalma( ) 

267