Coverage for /wheeldirectory/casa-6.7.0-12-py3.10.el8/lib/py/lib/python3.10/site-packages/casatasks/plotbandpass.py: 89%
27 statements
« prev ^ index » next coverage.py v7.6.4, created at 2024-11-01 07:19 +0000
« prev ^ index » next coverage.py v7.6.4, created at 2024-11-01 07:19 +0000
1##################### generated by xml-casa (v2) from plotbandpass.xml ##############
2##################### 6e5fc5594be7f2b7f3b7377f38fdecc1 ##############################
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_plotbandpass import plotbandpass as _plotbandpass_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
14class _plotbandpass:
15 """
16 plotbandpass ---- Makes detailed plots of Tsys and bandpass solutions.
18 Developed at the NAASC, this is a generic task to display CASA
19 Tsys and bandpass solution tables with options to overlay them in various
20 combinations, and/or with an atmospheric transmission or sky temperature
21 model. It works with both the 'new' (casa 3.4) and 'old' calibration
22 table formats, and allows for mixed mode spws (e.g. TDM and FDM for ALMA).
23 It uses the new msmd tool to access the information about an ms. This
24 task is still being developed as new ALMA observing modes are commissioned.
25 So if you encounter problems, please report them.
28 --------- parameter descriptions ---------------------------------------------
30 caltable Input table name, either a bandpass solution or a Tsys solution
31 antenna A comma-delimited string list of antennas (either names or integer indices) for which to display solutions. Default = all antennas.
32 field A comma-delimited string list of fields (either names or integer indices) for which to display solutions. Default = all fields.
33 spw A comma-delimited string list of spws for which to display solutions. Default = all spws.
34 yaxis The quantity to plot on the y-axis ("amp", "phase", "both", "tsys", append "db" for dB).
35 xaxis The quantity to plot on the x-axis ("chan" or "freq").
36 figfile The name of the plot file to produce.
37 plotrange The axes limits to use [x0,x1,y0,y1].
38 caltable2 A second cal table, of type BPOLY or B, to overlay on a B table
39 overlay Show multiple solutions in same frame in different colors (time, antenna, spw, baseband, or time,antenna)
40 showflagged Show the values of the solution, even if flagged
41 timeranges Show only these timeranges, the first timerange being 0
42 buildpdf If True, assemble all the pngs into a pdf
43 caltable3 A third cal table, of type BPOLY, to overlay on the first two tables
44 markersize Size of points
45 density dpi to use in creating PNGs and PDFs (default=108)
46 interactive if False, then run to completion automatically without pause
47 showpoints Draw points for the data (default=F for amp, T for phase)
48 showlines Draw lines connecting the data (default=T for amp, F for phase)
49 subplot 11..81,22,32 or 42 for RowsxColumns (default=22), any 3rd digit is ignored
50 zoom "intersect" will zoom to overlap region of caltable with caltable2
51 poln Polarizations to plot: "" = all, or "RR","RL","LR","LL","XX","XY","YX","YY","RR,LL","XX,YY"
52 showatm Compute and overlay the atmospheric transmission curve
53 pwv Define the pwv to use for the showatm option: "auto" or value in mm
54 gs For buildpdf=T, full path for ghostscript command (in case it is not found)
55 convert For buildpdf=T, full path for the ImageMagick convert command (in case it is not found)
56 chanrange Set xrange ("5~100") over which to autoscale y-axis for xaxis="freq"
57 solutionTimeThresholdSeconds Consider 2 solutions simultaneous if within this interval in seconds
58 debug Print verbose messages for debugging purposes
59 phase The y-axis limits to use for phase plots when yaxis="both"
60 vis name of the ms for this table, in case it does not match the string in the caltable
61 showtsky Compute and overlay the sky temperature curve instead of transmission
62 showfdm when showing TDM spws, draw the locations of the corresponding FDM spws
63 showatmfield for overlay="time", use first observation of this fieldID or name
64 lo1 specify the LO1 setting (in GHz) for the observation ('' = automatic)
65 showimage also show the atmospheric curve for the image sideband (in black)
66 showatmpoints Draw atmospheric curve with points instead of a line
67 parentms if showimage=T, name of the parent ms (only needed if the ms has been previously split)
68 pdftk For buildpdf=T, full path for pdftk command (in case it is not found)
69 channeldiff Set to a value > 0 (sigma) to plot derivatives of the solutions
70 edge The number of edge channels to ignore in finding outliers (for channeldiff>0)
71 resample The channel expansion factor to use when computing MAD of derivative (for channeldiff>0)
72 platformingThreshold if platformingSigma=0, then declare platforming if the amplitude derivative exceeds this percentage of the median
73 platformingSigma declare platforming if the amplitude derivative exceeds this many times the MAD
74 basebands A baseband number or list of baseband numbers for which to display solutions. Default = all.
75 showBasebandNumber Put the baseband converter number (BBC_NO) in the title of each plot
76 scans A scan or list of scans for which to display solutions. Default = all. Does not work with overlay="time".
77 figfileSequential naming scheme for pngs: False: name by spw/antenna (default), True: figfile.000.png, figfile.001.png, etc.
78 chanrangeSetXrange If True, then chanrange also sets the xrange to display
79 [1;42mRETURNS[1;m variant
81 --------- examples -----------------------------------------------------------
85 plotbandpass('X3c1.tsys',overlay='antenna',yaxis='amp',field='0~1,4',xaxis='chan',figfile='tsys.png')
87 plotbandpass('bandpass.bcal',caltable2='bandpass.bcal_smooth',xaxis='freq')
89 plotbandpass('bandpass.bcal',caltable2='bandpass.bcal_smooth',xaxis='freq',poln='X',showatm=T)
91 plotbandpass('bandpass.bcal',channeldiff='5')
93 This task returns void unless the channeldiff option is selected, in which case it returns a
94 dictionary containing the statistics of the solutions, keyed by the antenna name, followed
95 by the spw, timerange, polarization, and finally 'amp' and/or 'phase' depending
96 on the yaxis selection.
98 Keyword arguments:
100 antenna: must be either an ID (int or string or list), or a single antenna name or list
101 basebands: show only spws from the specified baseband or list of basebands (default: ''=[]=all)
102 buildpdf: True/False, if True and figfile is set, assemble pngs into a pdf
103 caltable: a bandpass table, of type B or BPOLY
104 caltable2: a second cal table, of type BPOLY or B, to overlay on a B table
105 caltable3: a third cal table, of type BPOLY, to overlay on the first two
106 channeldiff: set to value > 0 to plot derivatives of amplitude, the value is also used as sigma, and any outliers beyond this sigma will be printed to the logger
107 chanrange: set xrange (e.g. "5~100") over which to autoscale y-axis for xaxis='freq'
108 chanrangeSetXrange: if True, then chanrange also sets the xrange to display
109 convert: full path for convert command (in case it's not found)
110 density: dpi to use in creating PNGs and PDFs (default=108)
111 edge: the number of edge channels to ignore in finding outliers (for channeldiff>0)
112 field: must be an ID, source name, or list thereof; can use trailing *: 'J*'
113 figfile: the base_name of the png files to save: base_name.antX.spwY.png
114 figfileSequential: naming scheme, False: name by spw/antenna (default)
115 True: figfile.1.png, figfile.2.png, etc.
116 gs: full path for ghostscript command (in case it's not found)
117 interactive: if False, then figfile will run to completion automatically
118 lo1: specify the LO1 setting (in GHz) for the observation
119 overlay: 'antenna','time','spw', or 'baseband', make 1 plot with different items in colors
120 markersize: size of points (default=3)
121 ms: name of the ms for this table, in case it does not match the string in the caltable
122 parentms: name of the parent ms, in case the ms has been previously split
123 pdftk: full path for pdftk command (in case it's not found)
124 phase: the y-axis limits to use for phase plots when yaxis='both'
125 platformingSigma: declare platforming if the amplitude derivative exceeds this many times the MAD
126 platformingThreshold: if platformingSigma=0, then declare platforming if the amplitude
127 derivative exceeds this percentage of the median
128 plotrange: define axis limits: [x0,x1,y0,y1] where 0,0 means auto
129 poln: polarizations to plot (e.g. 'XX','YY','RR','LL' or '' for both)
130 pwv: define the pwv to use for the showatm option: 'auto' or value in mm
131 resample: channel expansion factor to use when computing MAD of derivative (for channeldiff>0)
132 scans: show only solutions for the specified scans (int, list, or string)
133 showatm: compute and overlay the atmospheric transmission curve (on B or Tsys solutions)
134 showatmfield: use first observation of this fieldID or name
135 showatmPoints: draw atmospheric curve with points instead of a line
136 showBasebandNumber: put the BBC_NO in the title of each plot
137 showfdm: when showing TDM spws with xaxis='freq', draw locations of FDM spws
138 showflagged: show the values of data, even if flagged
139 showimage: also show the atmospheric curve for the image sideband (in black)
140 showtsky: compute and overlay the sky temperature curve instead of transmission
141 showlines: draw lines connecting the data (default=T for amp, F for phase)
142 showpoints: draw points for the data (default=F for amp, T for phase)
143 solutionTimeThresholdSeconds: consider 2 solutions simultaneous if within this interval (default=60)
144 spw: must be single ID or list or range (e.g. 0~4, not the original ID)
145 subplot: 11..81,22,32 or 42 for RowsxColumns (default=22), any 3rd digit is ignored
146 timeranges: show only these timeranges, the first timerange being 0
147 xaxis: 'chan' or 'freq'
148 yaxis: 'amp', 'tsys', 'phase', or 'both' amp+phase == 'ap'. Append 'db' for dB
149 zoom: 'intersect' will zoom to overlap region of caltable with caltable2
154 """
156 _info_group_ = """visualization, calibration"""
157 _info_desc_ = """Makes detailed plots of Tsys and bandpass solutions."""
159 def __call__( self, caltable='', antenna='', field='', spw='', yaxis='amp', xaxis='chan', figfile='', plotrange=[ float(0),float(0),float(0),float(0) ], caltable2='', overlay='', showflagged=False, timeranges='', buildpdf=False, caltable3='', markersize=int(3), density=int(108), interactive=True, showpoints='auto', showlines='auto', subplot='22', zoom='', poln='', showatm=False, pwv='auto', gs='gs', convert='convert', chanrange='', solutionTimeThresholdSeconds=float(30.0), debug=False, phase='', vis='', showtsky=False, showfdm=False, showatmfield='', lo1='', showimage=False, showatmpoints=False, parentms='', pdftk='pdftk', channeldiff=False, edge=int(8), resample=int(1), platformingThreshold=float(10.0), platformingSigma=float(10.0), basebands='', showBasebandNumber=False, scans='', figfileSequential=False, chanrangeSetXrange=False ):
160 schema = {'caltable': {'type': 'cReqPath', 'coerce': _coerce.expand_path}, 'antenna': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cInt'}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'field': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cInt'}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'spw': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cInt'}, {'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'yaxis': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'tsys', 'bothdb', 'ap', 'apdb', 'phase', 'amp', 'ampdb', 'both' ]}, 'xaxis': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'chan', 'freq' ]}, 'figfile': {'type': 'cStr', 'coerce': _coerce.to_str}, 'plotrange': {'type': 'cFloatVec', 'coerce': [_coerce.to_list,_coerce.to_floatvec]}, 'caltable2': {'type': 'cStr', 'coerce': _coerce.to_str}, 'overlay': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'antenna,time', 'antenna', 'time,antenna', 'baseband', 'spw', '', 'time' ]}, 'showflagged': {'type': 'cBool'}, 'timeranges': {'type': 'cStr', 'coerce': _coerce.to_str}, 'buildpdf': {'type': 'cBool'}, 'caltable3': {'type': 'cStr', 'coerce': _coerce.to_str}, 'markersize': {'type': 'cInt'}, 'density': {'type': 'cInt'}, 'interactive': {'type': 'cBool'}, 'showpoints': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cBool'}]}, 'showlines': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cBool'}]}, 'subplot': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cInt'}]}, 'zoom': {'type': 'cStr', 'coerce': _coerce.to_str, 'allowed': [ 'intersect', '' ]}, 'poln': {'anyof': [{'type': 'cStrVec', 'coerce': [_coerce.to_list,_coerce.to_strvec]}, {'type': 'cStr', 'coerce': _coerce.to_str}]}, 'showatm': {'type': 'cBool'}, 'pwv': {'anyof': [{'type': 'cFloat', 'coerce': _coerce.to_float}, {'type': 'cStr', 'coerce': _coerce.to_str}]}, 'gs': {'type': 'cStr', 'coerce': _coerce.to_str}, 'convert': {'type': 'cStr', 'coerce': _coerce.to_str}, 'chanrange': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'solutionTimeThresholdSeconds': {'type': 'cFloat', 'coerce': _coerce.to_float}, 'debug': {'type': 'cBool'}, 'phase': {'anyof': [{'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}, {'type': 'cStr', 'coerce': _coerce.to_str}]}, 'vis': {'type': 'cStr', 'coerce': _coerce.to_str}, 'showtsky': {'type': 'cBool'}, 'showfdm': {'type': 'cBool'}, 'showatmfield': {'anyof': [{'type': 'cInt'}, {'type': 'cStr', 'coerce': _coerce.to_str}]}, 'lo1': {'anyof': [{'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'showimage': {'type': 'cBool'}, 'showatmpoints': {'type': 'cBool'}, 'parentms': {'type': 'cStr', 'coerce': _coerce.to_str}, 'pdftk': {'type': 'cStr', 'coerce': _coerce.to_str}, 'channeldiff': {'anyof': [{'type': 'cBool'}, {'type': 'cFloat', 'coerce': _coerce.to_float}]}, 'edge': {'type': 'cInt'}, 'resample': {'type': 'cInt'}, 'platformingThreshold': {'type': 'cFloat', 'coerce': _coerce.to_float}, 'platformingSigma': {'type': 'cFloat', 'coerce': _coerce.to_float}, 'basebands': {'anyof': [{'type': 'cInt'}, {'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'showBasebandNumber': {'type': 'cBool'}, 'scans': {'anyof': [{'type': 'cInt'}, {'type': 'cStr', 'coerce': _coerce.to_str}, {'type': 'cIntVec', 'coerce': [_coerce.to_list,_coerce.to_intvec]}]}, 'figfileSequential': {'type': 'cBool'}, 'chanrangeSetXrange': {'type': 'cBool'}}
161 doc = {'caltable': caltable, 'antenna': antenna, 'field': field, 'spw': spw, 'yaxis': yaxis, 'xaxis': xaxis, 'figfile': figfile, 'plotrange': plotrange, 'caltable2': caltable2, 'overlay': overlay, 'showflagged': showflagged, 'timeranges': timeranges, 'buildpdf': buildpdf, 'caltable3': caltable3, 'markersize': markersize, 'density': density, 'interactive': interactive, 'showpoints': showpoints, 'showlines': showlines, 'subplot': subplot, 'zoom': zoom, 'poln': poln, 'showatm': showatm, 'pwv': pwv, 'gs': gs, 'convert': convert, 'chanrange': chanrange, 'solutionTimeThresholdSeconds': solutionTimeThresholdSeconds, 'debug': debug, 'phase': phase, 'vis': vis, 'showtsky': showtsky, 'showfdm': showfdm, 'showatmfield': showatmfield, 'lo1': lo1, 'showimage': showimage, 'showatmpoints': showatmpoints, 'parentms': parentms, 'pdftk': pdftk, 'channeldiff': channeldiff, 'edge': edge, 'resample': resample, 'platformingThreshold': platformingThreshold, 'platformingSigma': platformingSigma, 'basebands': basebands, 'showBasebandNumber': showBasebandNumber, 'scans': scans, 'figfileSequential': figfileSequential, 'chanrangeSetXrange': chanrangeSetXrange}
162 assert _pc.validate(doc,schema), create_error_string(_pc.errors)
163 _logging_state_ = _start_log( 'plotbandpass', [ 'caltable=' + repr(_pc.document['caltable']), 'antenna=' + repr(_pc.document['antenna']), 'field=' + repr(_pc.document['field']), 'spw=' + repr(_pc.document['spw']), 'yaxis=' + repr(_pc.document['yaxis']), 'xaxis=' + repr(_pc.document['xaxis']), 'figfile=' + repr(_pc.document['figfile']), 'plotrange=' + repr(_pc.document['plotrange']), 'caltable2=' + repr(_pc.document['caltable2']), 'overlay=' + repr(_pc.document['overlay']), 'showflagged=' + repr(_pc.document['showflagged']), 'timeranges=' + repr(_pc.document['timeranges']), 'buildpdf=' + repr(_pc.document['buildpdf']), 'caltable3=' + repr(_pc.document['caltable3']), 'markersize=' + repr(_pc.document['markersize']), 'density=' + repr(_pc.document['density']), 'interactive=' + repr(_pc.document['interactive']), 'showpoints=' + repr(_pc.document['showpoints']), 'showlines=' + repr(_pc.document['showlines']), 'subplot=' + repr(_pc.document['subplot']), 'zoom=' + repr(_pc.document['zoom']), 'poln=' + repr(_pc.document['poln']), 'showatm=' + repr(_pc.document['showatm']), 'pwv=' + repr(_pc.document['pwv']), 'gs=' + repr(_pc.document['gs']), 'convert=' + repr(_pc.document['convert']), 'chanrange=' + repr(_pc.document['chanrange']), 'solutionTimeThresholdSeconds=' + repr(_pc.document['solutionTimeThresholdSeconds']), 'debug=' + repr(_pc.document['debug']), 'phase=' + repr(_pc.document['phase']), 'vis=' + repr(_pc.document['vis']), 'showtsky=' + repr(_pc.document['showtsky']), 'showfdm=' + repr(_pc.document['showfdm']), 'showatmfield=' + repr(_pc.document['showatmfield']), 'lo1=' + repr(_pc.document['lo1']), 'showimage=' + repr(_pc.document['showimage']), 'showatmpoints=' + repr(_pc.document['showatmpoints']), 'parentms=' + repr(_pc.document['parentms']), 'pdftk=' + repr(_pc.document['pdftk']), 'channeldiff=' + repr(_pc.document['channeldiff']), 'edge=' + repr(_pc.document['edge']), 'resample=' + repr(_pc.document['resample']), 'platformingThreshold=' + repr(_pc.document['platformingThreshold']), 'platformingSigma=' + repr(_pc.document['platformingSigma']), 'basebands=' + repr(_pc.document['basebands']), 'showBasebandNumber=' + repr(_pc.document['showBasebandNumber']), 'scans=' + repr(_pc.document['scans']), 'figfileSequential=' + repr(_pc.document['figfileSequential']), 'chanrangeSetXrange=' + repr(_pc.document['chanrangeSetXrange']) ] )
164 task_result = None
165 try:
166 task_result = _plotbandpass_t( _pc.document['caltable'], _pc.document['antenna'], _pc.document['field'], _pc.document['spw'], _pc.document['yaxis'], _pc.document['xaxis'], _pc.document['figfile'], _pc.document['plotrange'], _pc.document['caltable2'], _pc.document['overlay'], _pc.document['showflagged'], _pc.document['timeranges'], _pc.document['buildpdf'], _pc.document['caltable3'], _pc.document['markersize'], _pc.document['density'], _pc.document['interactive'], _pc.document['showpoints'], _pc.document['showlines'], _pc.document['subplot'], _pc.document['zoom'], _pc.document['poln'], _pc.document['showatm'], _pc.document['pwv'], _pc.document['gs'], _pc.document['convert'], _pc.document['chanrange'], _pc.document['solutionTimeThresholdSeconds'], _pc.document['debug'], _pc.document['phase'], _pc.document['vis'], _pc.document['showtsky'], _pc.document['showfdm'], _pc.document['showatmfield'], _pc.document['lo1'], _pc.document['showimage'], _pc.document['showatmpoints'], _pc.document['parentms'], _pc.document['pdftk'], _pc.document['channeldiff'], _pc.document['edge'], _pc.document['resample'], _pc.document['platformingThreshold'], _pc.document['platformingSigma'], _pc.document['basebands'], _pc.document['showBasebandNumber'], _pc.document['scans'], _pc.document['figfileSequential'], _pc.document['chanrangeSetXrange'] )
167 except Exception as exc:
168 _except_log('plotbandpass', exc)
169 raise
170 finally:
171 task_result = _end_log( _logging_state_, 'plotbandpass', task_result )
172 return task_result
174plotbandpass = _plotbandpass( )