Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
antdata = anthdu.data
self.antenna_names = np.array(list(map(str, antdata["ANTNAME"])))
self.antenna_numbers = np.array(list(map(int, antdata["ANTINDEX"])))
self.ant_array = np.array(list(map(int, antdata["ANTARR"])))
if np.min(self.ant_array) < 0:
# ant_array was shorter than the other columns, so it was
# padded with -1s.
# Remove the padded entries.
self.ant_array = self.ant_array[np.where(self.ant_array >= 0)[0]]
self.channel_width = hdr.pop("CHWIDTH")
self.integration_time = hdr.pop("INTTIME")
self.telescope_name = hdr.pop("TELESCOP")
self.history = str(hdr.get("HISTORY", ""))
if not uvutils._check_history_version(
self.history, self.pyuvdata_version_str
):
if not self.history.endswith("\n"):
self.history += "\n"
self.history += self.pyuvdata_version_str
self.time_range = list(map(float, hdr.pop("TMERANGE").split(",")))
self.gain_convention = hdr.pop("GNCONVEN")
self.gain_scale = hdr.pop("GNSCALE", None)
self.x_orientation = hdr.pop("XORIENT")
self.cal_type = hdr.pop("CALTYPE")
if self.cal_type == "delay":
self.freq_range = list(map(float, hdr.pop("FRQRANGE").split(",")))
else:
if "FRQRANGE" in hdr:
# other info -- not required but frequently used
self.object_name = vis_hdr.pop("OBJECT", None)
self.telescope_name = vis_hdr.pop("TELESCOP", None)
self.instrument = vis_hdr.pop("INSTRUME", None)
latitude_degrees = vis_hdr.pop("LAT", None)
longitude_degrees = vis_hdr.pop("LON", None)
altitude = vis_hdr.pop("ALT", None)
self.x_orientation = vis_hdr.pop("XORIENT", None)
blt_order_str = vis_hdr.pop("BLTORDER", None)
if blt_order_str is not None:
self.blt_order = tuple(blt_order_str.split(", "))
if self.blt_order == ("bda",):
self._blt_order.form = (1,)
self.history = str(vis_hdr.get("HISTORY", ""))
if not uvutils._check_history_version(
self.history, self.pyuvdata_version_str
):
self.history += self.pyuvdata_version_str
self.vis_units = vis_hdr.pop("BUNIT", "UNCALIB")
self.phase_center_epoch = vis_hdr.pop("EPOCH", None)
self.phase_center_frame = vis_hdr.pop("PHSFRAME", None)
self.extra_keywords = uvutils._get_fits_extra_keywords(
vis_hdr, keywords_to_skip=["DATE-OBS"]
)
# Next read the antenna table
ant_hdu = hdu_list[hdunames["AIPS AN"]]
# stuff in the header
None
"""
# get telescope information
latitude = header["latitude"][()]
longitude = header["longitude"][()]
altitude = header["altitude"][()]
self.telescope_location_lat_lon_alt_degrees = (latitude, longitude, altitude)
self.instrument = header["instrument"][()].tobytes().decode("utf8")
self.telescope_name = header["telescope_name"][()].tobytes().decode("utf8")
# get source information
self.object_name = header["object_name"][()].tobytes().decode("utf8")
# set history appropriately
self.history = header["history"][()].tobytes().decode("utf8")
if not uvutils._check_history_version(self.history, self.pyuvdata_version_str):
self.history += self.pyuvdata_version_str
# check for vis_units
if "vis_units" in header:
self.vis_units = header["vis_units"][()].tobytes().decode("utf8")
else:
# default to uncalibrated data
self.vis_units = "UNCALIB"
# check for optional values
if "dut1" in header:
self.dut1 = float(header["dut1"][()])
if "earth_omega" in header:
self.earth_omega = float(header["earth_omega"][()])
if "gst0" in header:
self.gst0 = float(header["gst0"][()])
)
delay_str_list = []
gain_str_list = []
for pol in range(n_pol):
delay_str_list.append(
"[" + ", ".join([str(x) for x in delays[pol, :]]) + "]"
)
gain_str_list.append(
"[" + ", ".join([str(x) for x in amplitudes[pol, :]]) + "]"
)
delay_str = "[" + ", ".join(delay_str_list) + "]"
gain_str = "[" + ", ".join(gain_str_list) + "]"
self.history += " delays set to " + delay_str + " gains set to " + gain_str
if not uvutils._check_history_version(self.history, self.pyuvdata_version_str):
self.history += self.pyuvdata_version_str
self.x_orientation = "east"
self._set_efield()
self.Naxes_vec = 2
self.Ncomponents_vec = 2
self.feed_array = np.array([str(pol.lower()) for pol in pol_names])
self.Nfeeds = self.feed_array.size
self.data_normalization = "physical"
# for now this returns a simple beam because it requires amps & delays
# to make the beam
self.antenna_type = "simple"
this,
attr,
np.concatenate(
[getattr(this, attr), getattr(other, attr)], axis=ax
),
)
# May 21, 2020 - should only happen for weights_square_array attr
else:
raise ValueError(
f"{attr} optional parameter is missing from second UVFlag"
f" object. To concatenate two {this.mode} objects, they"
" must both contain the same optional parameters set."
)
this.history += "Data combined along " + axis + " axis. "
if not uvutils._check_history_version(this.history, this.pyuvdata_version_str):
this.history += this.pyuvdata_version_str
this.Ntimes = np.unique(this.time_array).size
if run_check:
this.check(
check_extra=check_extra, run_check_acceptability=run_check_acceptability
)
if not inplace:
return this
self.phase_center_epoch = float(
tb.getcolkeyword("UVW", "MEASINFO")["Ref"][1:]
)
self.phase_center_ra = float(tb_field.getcol("PHASE_DIR")[0][0][0])
self.phase_center_dec = float(tb_field.getcol("PHASE_DIR")[0][0][1])
self._set_phased()
# set LST array from times and itrf
proc = self.set_lsts_from_time_array(background=background_lsts)
# set the history parameter
_, self.history = self._ms_hist_to_string(
tables.table(filepath + "/HISTORY", ack=False)
)
# CASA weights column keeps track of number of data points averaged.
if not uvutils._check_history_version(self.history, self.pyuvdata_version_str):
self.history += self.pyuvdata_version_str
# 'WEIGHT_SPECTRUM' is optional - some files may not have per-channel values
if "WEIGHT_SPECTRUM" in tb.colnames():
self.nsample_array = tb.getcol("WEIGHT_SPECTRUM")
else:
self.nsample_array = tb.getcol("WEIGHT")
# Propagate the weights in frequency
self.nsample_array = np.stack(
[self.nsample_array for chan in range(self.Nfreqs)], axis=1
)
if len(self.nsample_array.shape) == 3:
self.nsample_array = np.expand_dims(self.nsample_array, axis=1)
self.object_name = tb_field.getcol("NAME")[0]
tb_field.close()
tb.close()
run_check_acceptability : bool
Option to check acceptable range of the values of parameters after
converting to flag mode.
"""
if self.mode == "flag":
return
elif self.mode == "metric":
self.flag_array = np.where(self.metric_array >= threshold, True, False)
self._set_mode_flag()
else:
raise ValueError(
"Unknown UVFlag mode: " + self.mode + ". Cannot convert to flag."
)
self.history += 'Converted to mode "flag". '
if not uvutils._check_history_version(self.history, self.pyuvdata_version_str):
self.history += self.pyuvdata_version_str
self.clear_unused_attributes()
if run_check:
self.check(
check_extra=check_extra, run_check_acceptability=run_check_acceptability
)
"""
if (self.mode != "flag") or (other.mode != "flag"):
raise ValueError(
'UVFlag object must be in "flag" mode to use "or" function.'
)
# Handle in place
if inplace:
this = self
else:
this = self.copy()
this.flag_array += other.flag_array
if other.history not in this.history:
this.history += "Flags OR'd with: " + other.history
if not uvutils._check_history_version(this.history, this.pyuvdata_version_str):
this.history += this.pyuvdata_version_str
if run_check:
this.check(
check_extra=check_extra, run_check_acceptability=run_check_acceptability
)
if not inplace:
return this
self.Npols = len(self.polarization_array)
self._check_pol_state()
else:
warnings.warn(
"Cannot collapse polarization axis when only one pol present."
)
return
if ((method == "or") or (method == "and")) and (self.mode == "flag"):
self.flag_array = darr
else:
self.metric_array = darr
self._set_mode_metric()
self.clear_unused_attributes()
self.history += "Pol axis collapse. "
if not uvutils._check_history_version(self.history, self.pyuvdata_version_str):
self.history += self.pyuvdata_version_str
if run_check:
self.check(
check_extra=check_extra, run_check_acceptability=run_check_acceptability
)