some code formatting

This commit is contained in:
2025-04-08 19:43:59 +02:00
parent 217d7862ae
commit e8ef3bd67a
7 changed files with 159 additions and 1005 deletions

View File

@@ -48,20 +48,16 @@ def _upsampled_dft(data, upsampled_region_size, upsample_factor=1, axis_offsets=
"""
# if people pass in an integer, expand it to a list of equal-sized sections
if not hasattr(upsampled_region_size, "__iter__"):
upsampled_region_size = [
upsampled_region_size,
] * data.ndim
upsampled_region_size = [upsampled_region_size] * data.ndim
else:
if len(upsampled_region_size) != data.ndim:
raise ValueError("shape of upsampled region sizes must be equal " "to input data's number of dimensions.")
raise ValueError("shape of upsampled region sizes must be equal to input data's number of dimensions.")
if axis_offsets is None:
axis_offsets = [
0,
] * data.ndim
axis_offsets = [0] * data.ndim
else:
if len(axis_offsets) != data.ndim:
raise ValueError("number of axis offsets must be equal to input " "data's number of dimensions.")
raise ValueError("number of axis offsets must be equal to input data's number of dimensions.")
im2pi = 1j * 2 * np.pi

File diff suppressed because it is too large Load Diff

View File

@@ -173,11 +173,7 @@ def get_product_list(target=None, proposal_id=None, instrument="foc"):
observations = Observations.query_criteria(obs_id=list(results["Dataset"][b]))
products = Observations.filter_products(
Observations.get_product_list(observations),
productType=["SCIENCE"],
dataproduct_type=dataproduct_type,
calib_level=[2],
description=description,
Observations.get_product_list(observations), productType=["SCIENCE"], dataproduct_type=dataproduct_type, calib_level=[2], description=description
)
products["proposal_id"] = Column(products["proposal_id"], dtype="U35")

View File

@@ -191,8 +191,8 @@ def bin_ndarray(ndarray, new_shape, operation="sum"):
Example
-------
>>> m = np.arange(0,100,1).reshape((10,10))
>>> n = bin_ndarray(m, new_shape=(5,5), operation='sum')
>>> m = np.arange(0, 100, 1).reshape((10, 10))
>>> n = bin_ndarray(m, new_shape=(5, 5), operation="sum")
>>> print(n)
[[ 22 30 38 46 54]
@@ -279,9 +279,7 @@ def crop_array(data_array, headers, error_array=None, data_mask=None, step=5, nu
if null_val is None:
null_val = [1.00 * error.mean() for error in error_array]
elif type(null_val) is float:
null_val = [
null_val,
] * error_array.shape[0]
null_val = [null_val] * error_array.shape[0]
vertex = np.zeros((data_array.shape[0], 4), dtype=int)
for i, image in enumerate(data_array): # Get vertex of the rectangular convex hull of each image
@@ -348,10 +346,7 @@ def crop_array(data_array, headers, error_array=None, data_mask=None, step=5, nu
headers,
vmin=convert_flux * data_array[data_array > 0.0].mean() / 5.0,
vmax=convert_flux * data_array[data_array > 0.0].max(),
rectangle=[
rectangle,
]
* len(headers),
rectangle=[rectangle] * len(headers),
savename=savename + "_crop_region",
plots_folder=plots_folder,
)
@@ -629,12 +624,7 @@ def rebin_array(data_array, error_array, headers, pxsize=2, scale="px", operatio
# Compute binning ratio
if scale.lower() in ["px", "pixel"]:
Dxy_arr[i] = np.array(
[
pxsize,
]
* 2
)
Dxy_arr[i] = np.array([pxsize] * 2)
scale = "px"
elif scale.lower() in ["arcsec", "arcseconds"]:
Dxy_arr[i] = np.array(pxsize / np.abs(w.wcs.cdelt) / 3600.0)
@@ -938,12 +928,7 @@ def smooth_data(data_array, error_array, data_mask, headers, FWHM=1.5, scale="pi
dist_rc = np.where(data_mask, np.sqrt((r - xx) ** 2 + (c - yy) ** 2), fmax)
# Catch expected "OverflowWarning" as we overflow values that are not in the image
with warnings.catch_warnings(record=True) as w:
g_rc = np.array(
[
np.exp(-0.5 * (dist_rc / stdev) ** 2) / (2.0 * np.pi * stdev**2),
]
* data_array.shape[0]
)
g_rc = np.array([np.exp(-0.5 * (dist_rc / stdev) ** 2) / (2.0 * np.pi * stdev**2)] * data_array.shape[0])
# Apply weighted combination
smoothed[r, c] = np.where(data_mask[r, c], np.sum(data_array * weight * g_rc) / np.sum(weight * g_rc), data_array.mean(axis=0)[r, c])
error[r, c] = np.where(
@@ -1438,9 +1423,7 @@ def compute_Stokes(data_array, error_array, data_mask, headers, FWHM=None, scale
all_Q_stokes = np.zeros((np.unique(rotate).size, data_array.shape[1], data_array.shape[2]))
all_U_stokes = np.zeros((np.unique(rotate).size, data_array.shape[1], data_array.shape[2]))
all_Stokes_cov = np.zeros((np.unique(rotate).size, 3, 3, data_array.shape[1], data_array.shape[2]))
all_header_stokes = [
{},
] * np.unique(rotate).size
all_header_stokes = [{}] * np.unique(rotate).size
for i, rot in enumerate(np.unique(rotate)):
rot_mask = rotate == rot

View File

@@ -23,12 +23,7 @@ def main(infile, P_cut=0.99, target=None, display="pf", output_dir=None):
stkI = Stokes["I_STOKES"].data
QN, UN, QN_ERR, UN_ERR = np.full((4, stkI.shape[0], stkI.shape[1]), np.nan)
for sflux, nflux in zip(
[
Stokes["Q_STOKES"].data,
Stokes["U_STOKES"].data,
np.sqrt(Stokes["IQU_COV_MATRIX"].data[1, 1]),
np.sqrt(Stokes["IQU_COV_MATRIX"].data[2, 2]),
],
[Stokes["Q_STOKES"].data, Stokes["U_STOKES"].data, np.sqrt(Stokes["IQU_COV_MATRIX"].data[1, 1]), np.sqrt(Stokes["IQU_COV_MATRIX"].data[2, 2])],
[QN, UN, QN_ERR, UN_ERR],
):
nflux[stkI > 0.0] = sflux[stkI > 0.0] / stkI[stkI > 0.0]
@@ -49,25 +44,10 @@ def main(infile, P_cut=0.99, target=None, display="pf", output_dir=None):
target = Stokes[0].header["TARGNAME"]
fig = figure(figsize=(8, 8.5), layout="constrained")
fig, ax = polarization_map(
Stokes,
P_cut=P_cut,
step_vec=1,
scale_vec=5,
display=display,
fig=fig,
width=0.33,
linewidth=0.5,
)
fig, ax = polarization_map(Stokes, P_cut=P_cut, step_vec=1, scale_vec=5, display=display, fig=fig, width=0.33, linewidth=0.5)
ax.plot(*Stokescenter, marker="+", color="k", lw=3)
ax.plot(
*Stokescenter,
marker="+",
color="red",
lw=1.5,
label="Best confidence for center: {0}".format(Stokespos.to_string("hmsdms")),
)
ax.plot(*Stokescenter, marker="+", color="red", lw=1.5, label="Best confidence for center: {0}".format(Stokespos.to_string("hmsdms")))
ax.contour(Stokescentconf, [0.01], colors="k", linewidths=3)
confcentcont = ax.contour(Stokescentconf, [0.01], colors="red")
# confcont = ax.contour(Stokesconf, [0.9905], colors="r")
@@ -82,14 +62,7 @@ def main(infile, P_cut=0.99, target=None, display="pf", output_dir=None):
# handles.append(Rectangle((0, 0), 1, 1, fill=False, ls="--", ec=snr3cont.get_edgecolor()[0]))
# labels.append(r"$SNR_P \geq$ 4 contour")
# handles.append(Rectangle((0, 0), 1, 1, fill=False, ec=snr4cont.get_edgecolor()[0]))
ax.legend(
handles=handles,
labels=labels,
bbox_to_anchor=(-0.05, -0.02, 1.10, 0.01),
loc="upper left",
mode="expand",
borderaxespad=0.0,
)
ax.legend(handles=handles, labels=labels, bbox_to_anchor=(-0.05, -0.02, 1.10, 0.01), loc="upper left", mode="expand", borderaxespad=0.0)
if output_dir is not None:
filename = pathjoin(output_dir, "%s_center.pdf" % target)
@@ -103,57 +76,11 @@ if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="Look for the center of emission for a given reduced observation")
parser.add_argument(
"-t",
"--target",
metavar="targetname",
required=False,
help="the name of the target",
type=str,
default=None,
)
parser.add_argument(
"-f",
"--file",
metavar="path",
required=False,
help="The full or relative path to the data product",
type=str,
default=None,
)
parser.add_argument(
"-c",
"--pcut",
metavar="pcut",
required=False,
help="The polarization cut for the data mask",
type=float,
default=0.99,
)
parser.add_argument(
"-d",
"--display",
metavar="display",
required=False,
help="The map on which to display info",
type=str,
default="pf",
)
parser.add_argument(
"-o",
"--output_dir",
metavar="directory_path",
required=False,
help="output directory path for the plots",
type=str,
default="./data",
)
parser.add_argument("-t", "--target", metavar="targetname", required=False, help="the name of the target", type=str, default=None)
parser.add_argument("-f", "--file", metavar="path", required=False, help="The full or relative path to the data product", type=str, default=None)
parser.add_argument("-c", "--pcut", metavar="pcut", required=False, help="The polarization cut for the data mask", type=float, default=0.99)
parser.add_argument("-d", "--display", metavar="display", required=False, help="The map on which to display info", type=str, default="pf")
parser.add_argument("-o", "--output_dir", metavar="directory_path", required=False, help="output directory path for the plots", type=str, default="./data")
args = parser.parse_args()
exitcode = main(
infile=args.file,
P_cut=args.pcut,
target=args.target,
display=args.display,
output_dir=args.output_dir,
)
exitcode = main(infile=args.file, P_cut=args.pcut, target=args.target, display=args.display, output_dir=args.output_dir)
print("Written to: ", exitcode)

View File

@@ -15,17 +15,7 @@ Radio = fits.open("./data/NGC1068/MERLIN-VLA/Combined_crop.fits")
levels = np.logspace(-0.5, 1.99, 7) / 100.0 * Stokes_UV[0].data.max() * Stokes_UV[0].header["photflam"]
A = overplot_pol(Stokes_UV, Radio, norm=LogNorm())
A.plot(
levels=levels,
P_cut=0.99,
SNRi_cut=1.0,
scale_vec=3,
step_vec=1,
norm=LogNorm(5e-5, 1e-1),
cmap="inferno_r",
width=0.8,
linewidth=1.2,
)
A.plot(levels=levels, P_cut=0.99, SNRi_cut=1.0, scale_vec=3, step_vec=1, norm=LogNorm(5e-5, 1e-1), cmap="inferno_r", width=0.8, linewidth=1.2)
A.add_vector(
A.other_wcs.celestial.wcs.crpix - (1.0, 1.0),
pol_deg=0.124,

View File

@@ -271,18 +271,9 @@ class specpol(object):
"""
data_dump = np.loadtxt(join_path(data_dir, filename), skiprows=1).T
self.zero(data_dump.shape[1])
(
self.wav,
self.wav_err[:, 0],
self.I,
self.IQUV_cov[0, 0],
self.Q,
self.IQUV_cov[1, 1],
self.U,
self.IQUV_cov[2, 2],
self.V,
self.IQUV_cov[3, 3],
) = data_dump[:10]
(self.wav, self.wav_err[:, 0], self.I, self.IQUV_cov[0, 0], self.Q, self.IQUV_cov[1, 1], self.U, self.IQUV_cov[2, 2], self.V, self.IQUV_cov[3, 3]) = (
data_dump[:10]
)
self.wav_err[:, 1] = deepcopy(self.wav_err[:, 0])
self.bin_edges[:-1], self.bin_edges[-1] = deepcopy(self.wav - self.wav_err[:, 0]), deepcopy(self.wav[-1] + self.wav_err[-1, 1])
for i in range(4):
@@ -314,11 +305,7 @@ class specpol(object):
self.PA_err,
]
).T
np.savetxt(
join_path(output_dir, filename + ".txt"),
data_dump,
header=header,
)
np.savetxt(join_path(output_dir, filename + ".txt"), data_dump, header=header)
return join_path(output_dir, filename)
def plot(self, fig=None, ax=None, savename=None, plots_folder=""):