Calibration¶
-
class
ehtim.caltable.
Caltable
(ra, dec, rf, bw, datadict, tarr, source='SgrA', mjd=51544, timetype='UTC')[source]¶ -
-
tarr
¶ The array of telescope data with datatype DTARR
- Type
numpy.recarray
-
applycal
(obs, interp='linear', extrapolate=None, force_singlepol=False, copy_closure_tables=True)[source]¶ Apply the calibration table to an observation.
- Parameters
obs (Obsdata) – The observation with data to be calibrated
interp (str) – Interpolation method (‘linear’,’nearest’,’cubic’)
extrapolate (bool) – If True, points outside interpolation range will be extrapolated.
force_singlepol (str) – If ‘L’ or ‘R’, will set opposite polarization gains equal to chosen polarization
- Returns
the calibrated Obsdata object
- Return type
(Obsdata)
-
copy
()[source]¶ Copy the observation object.
Args:
- Returns
a copy of the Caltable object.
- Return type
(Caltable)
-
enforce_positive
(method='median', min_gain=0.9, sites=[], verbose=True)[source]¶ Enforce that caltable gains are not low (e.g., that sites are not significantly more sensitive than estimated). By rescaling the entire gain curve to enforce a specified minimum site gain.
- Parameters
- Returns
Axes object with the plot
- Return type
(Caltable)
-
merge
(caltablelist, interp='linear', extrapolate=1)[source]¶ Merge the calibration table with a list of other calibration tables
-
plot_dterms
(sites='all', label=None, legend=True, clist=[0.11764705882352941, 0.5647058823529412, 1.0, 1.0, 0.38823529411764707, 0.2784313725490196, 0.5411764705882353, 0.16862745098039217, 0.8862745098039215, 0.4196078431372549, 0.5568627450980392, 0.13725490196078433, 1.0, 0.6470588235294118, 0.0, 0.5450980392156862, 0.27058823529411763, 0.07450980392156863, 0.0, 0.0, 0.803921568627451, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.39215686274509803, 0.0, 0.8235294117647058, 0.7058823529411765, 0.5490196078431373, 0.0, 0.0, 0.0], rangex=False, rangey=False, markersize=6, show=True, grid=True, export_pdf='')[source]¶ Make a plot of the D-terms.
- Parameters
sites (list) – list of sites to plot
label (str) – title for plot
legend (bool) – add telescope legend or not
clist (list) – list of colors for different stations
rangex (list) – lower and upper x-axis limits
rangey (list) – lower and upper y-axis limits
markersize (float) – marker size
show (bool) – display the plot or not
grid (bool) – add a grid to the plot or not
export_pdf (str) – save a pdf file to this path
- Returns
matplotlib.axes
-
plot_gains
(sites, gain_type='amp', pol='R', label=None, ang_unit='deg', timetype=False, yscale='log', legend=True, clist=[0.11764705882352941, 0.5647058823529412, 1.0, 1.0, 0.38823529411764707, 0.2784313725490196, 0.5411764705882353, 0.16862745098039217, 0.8862745098039215, 0.4196078431372549, 0.5568627450980392, 0.13725490196078433, 1.0, 0.6470588235294118, 0.0, 0.5450980392156862, 0.27058823529411763, 0.07450980392156863, 0.0, 0.0, 0.803921568627451, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.39215686274509803, 0.0, 0.8235294117647058, 0.7058823529411765, 0.5490196078431373, 0.0, 0.0, 0.0], rangex=False, rangey=False, markersize=[3], show=True, grid=False, axislabels=True, axis=False, export_pdf='')[source]¶ Plot gains on multiple sites vs time. :param sites: a list of site names for which to plot gains. Empty list is all sites. :type sites: list :param gain_type: ‘amp’ or ‘phase’ :type gain_type: str :param pol str: ‘R’ or ‘L’ :type pol str: str :param ang_unit: phase unit ‘deg’ or ‘rad’ :type ang_unit: str :param timetype: ‘GMST’ or ‘UTC’ :type timetype: str :param yscale: ‘log’ or ‘lin’, :type yscale: str :param clist: list of colors for the plot :type clist: list :param label: base label for legend :type label: str :param rangex: [xmin, xmax] x-axis (time) limits :type rangex: list :param rangey: [ymin, ymax] y-axis (gain) limits :type rangey: list :param legend: Plot legend if True :type legend: bool :param grid: Plot gridlines if True :type grid: bool :param axislabels: Show axis labels if True :type axislabels: bool :param show: Display the plot if true :type show: bool :param axis: add plot to this axis :type axis: matplotlib.axes.Axes :param markersize: size of plot markers :type markersize: int :param export_pdf: path to pdf file to save figure :type export_pdf: str
- Returns
Axes object with the plot
- Return type
(matplotlib.axes.Axes)
-
save_txt
(obs, datadir='.', sqrt_gains=False)[source]¶ Saves a Caltable object to text files in the given directory :param obs: The observation object associated with the Caltable :type obs: Obsdata :param datadir: directory to save caltable in :type datadir: str :param sqrt_gains: If True, we square gains before saving. :type sqrt_gains: bool
Returns:
-
-
ehtim.caltable.
load_caltable
(obs, datadir, sqrt_gains=False)[source]¶ Load apriori Caltable object from text files in the given directory :param obs: The observation object associated with the Caltable :type obs: Obsdata :param datadir: directory to save caltable in :type datadir: str :param sqrt_gains: If True, we take the sqrt of table gains before loading. :type sqrt_gains: bool
- Returns
a caltable object
- Return type
(Caltable)
-
ehtim.caltable.
make_caltable
(obs, gains, sites, times)[source]¶ Create a Caltable object for an observation :param obs: The observation object associated with the Caltable :type obs: Obsdata :param gains: list of gains (?? format ??) :type gains: list :param sites: list of sites :type sites: list :param times: list of times :type times: list
- Returns
a caltable object
- Return type
(Caltable)
-
ehtim.caltable.
save_caltable
(caltable, obs, datadir='.', sqrt_gains=False)[source]¶ Saves a Caltable object to text files in the given directory :param obs: The observation object associated with the Caltable :type obs: Obsdata :param datadir: directory to save caltable in :type datadir: str :param sqrt_gains: If True, we square gains before saving. :type sqrt_gains: bool
Returns:
-
ehtim.calibrating.self_cal.
self_cal
(obs, im, sites=[], pol='I', apply_singlepol=False, method='both', minimizer_method='BFGS', pad_amp=0.0, gain_tol=0.2, solution_interval=0.0, scan_solutions=False, ttype='direct', fft_pad_factor=2, caltable=False, debias=True, apply_dterms=False, copy_closure_tables=False, processes=- 1, show_solution=False, msgtype='bar', use_grad=False)[source]¶ Self-calibrate a dataset to an image.
- Parameters
obs (Obsdata) – The observation to be calibrated
im (Image) – the image to be calibrated to
sites (list) – list of sites to include in the self calibration. empty list calibrates all sites
pol (str) – which image polarization to self-calibrate visibilities to
apply_singlepol (str) – if calibrating to pol=’RR’ or pol=’LL’, apply solution only to the single polarization
method (str) – chooses what to calibrate, ‘amp’, ‘phase’, or ‘both’
minimizer_method (str) – Method for scipy.optimize.minimize (e.g., ‘CG’, ‘BFGS’)
pad_amp (float) – adds fractional uncertainty to amplitude sigmas in quadrature
gain_tol (float or list) – gains that exceed this value will be disfavored by the prior for asymmetric gain_tol for corrections below/above unity, pass a 2-element list
solution_interval (float) – solution interval in seconds; If 0., determine solution for each unique time
scan_solutions (bool) – If True, determine one gain per site per scan (supersedes solution_interval)
caltable (bool) – if True, returns a Caltable instead of an Obsdata
processes (int) – number of cores to use in multiprocessing
ttype (str) – if “fast” or “nfft” use FFT to produce visibilities. Else “direct” for DTFT
fft_pad_factor (float) – zero pad the image to fft_pad_factor * image size in FFT
debias (bool) – If True, debias the amplitudes
apply_dterms (bool) – if True, apply dterms (in obs.tarr) to clean data before calibrating
show_solution (bool) – if True, display the solution as it is calculated
msgtype (str) – type of progress message to be printed, default is ‘bar’
use_grad (bool) – if True, use gradients in minimizer
- Returns
the calibrated observation, if caltable==False (Caltable): the derived calibration table, if caltable==True
- Return type
(Obsdata)
-
ehtim.calibrating.self_cal.
self_cal_scan
(scan, im, V_scan=[], sites=[], polrep='stokes', pol='I', apply_singlepol=False, method='both', minimizer_method='BFGS', show_solution=False, pad_amp=0.0, gain_tol=0.2, debias=True, caltable=False, use_grad=False)[source]¶ Self-calibrate a scan to an image.
- Parameters
scan (np.recarray) – data array of type DTPOL_STOKES or DTPOL_CIRC
im (Image) – the image to be calibrated to
sites (list) – list of sites to include in the self calibration. empty list calibrates all sites
V_scan (list) – precomputed scan visibilities
polrep (str) – ‘stokes’ or ‘circ’ to specify the polarization products in scan
pol (str) – which image polarization to self-calibrate visibilities to
apply_singlepol (str) – if calibrating to pol=’RR’ or pol=’LL’, apply solution only to the single polarization
method (str) – chooses what to calibrate, ‘amp’, ‘phase’, or ‘both’
minimizer_method (str) – Method for scipy.optimize.minimize (e.g., ‘CG’, ‘BFGS’, ‘Nelder-Mead’, etc.)
pad_amp (float) – adds fractional uncertainty to amplitude sigmas in quadrature
gain_tol (float or list) – gains that exceed this value will be disfavored by the prior for asymmetric gain_tol for corrections below/above unity, pass a 2-element list
debias (bool) – If True, debias the amplitudes
caltable (bool) – if True, returns a Caltable instead of an Obsdata
show_solution (bool) – if True, display the solution as it is calculated
use_grad (bool) – if True, use gradients in minimizer
- Returns
the calibrated observation, if caltable==False (Caltable): the derived calibration table, if caltable==True
- Return type
(Obsdata)
-
ehtim.calibrating.network_cal.
network_cal
(obs, zbl, sites=[], zbl_uvdist_max=10000000.0, method='amp', minimizer_method='BFGS', pol='I', pad_amp=0.0, gain_tol=0.2, solution_interval=0.0, scan_solutions=False, caltable=False, processes=- 1, show_solution=False, debias=True, msgtype='bar')[source]¶ Network-calibrate a dataset with zero baseline constraints.
- Parameters
obs (Obsdata) – The observation to be calibrated
zbl (float or function) – constant zero baseline flux in Jy, or a function of UT hour.
sites (list) – list of sites to include in the network calibration. empty list calibrates all sites
zbl_uvdist_max (float) – maximum uv-distance considered a zero baseline
method (str) – chooses what to calibrate, ‘amp’, ‘phase’, or ‘both’.
minimizer_method (str) – Method for scipy.optimize.minimize (e.g., ‘CG’, ‘BFGS’)
pol (str) – which visibility to compute gains for
pad_amp (float) – adds fractional uncertainty to amplitude sigmas in quadrature
gain_tol (float) – gains that exceed this value will be disfavored by the prior
solution_interval (float) – solution interval in seconds; one gain is derived for each interval. If 0.0, a solution is determined for each unique time
scan_solutions (bool) – If True, determine one gain per site per scan. Supersedes solution_interval
debias (bool) – If True, debias the amplitudes
caltable (bool) – if True, returns a Caltable instead of an Obsdata
processes (int) – number of cores to use in multiprocessing
show_solution (bool) – if True, display the solution as it is calculated
msgtype (str) – type of progress message to be printed, default is ‘bar’
- Returns
the calibrated observation, if caltable==False (Caltable): the derived calibration table, if caltable==True
- Return type
(Obsdata)
-
ehtim.calibrating.network_cal.
network_cal_scan
(scan, zbl, sites, clustered_sites, polrep='stokes', pol='I', zbl_uvidst_max=10000000.0, method='both', minimizer_method='BFGS', show_solution=False, pad_amp=0.0, gain_tol=0.2, caltable=False, debias=True)[source]¶ Network-calibrate a scan with zero baseline constraints.
- Parameters
obs (Obsdata) – The observation to be calibrated
zbl (float or function) – constant zero baseline flux in Jy, or a function of UT hour.
sites (list) – list of sites to include in the network calibration. empty list calibrates all sites
clustered_sites (tuple) – information on clustered sites, returned by make_cluster_data
polrep (str) – ‘stokes’ or ‘circ’ to specify the polarization products in scan
pol (str) – which image polarization to self-calibrate visibilities to
zbl_uvdist_max (float) – maximum uv-distance considered a zero baseline
method (str) – chooses what to calibrate, ‘amp’, ‘phase’, or ‘both’
pad_amp (float) – adds fractional uncertainty to amplitude sigmas in quadrature
gain_tol (float) – gains that exceed this value will be disfavored by the prior
debias (bool) – If True, debias the amplitudes
caltable (bool) – if True, returns a Caltable instead of an Obsdata
show_solution (bool) – if True, display the solution as it is calculated
- Returns
the calibrated scan, if caltable==False (Caltable): the derived calibration table, if caltable==True
- Return type
(Obsdata)