Add Stokes_cov_stat to fits and compute again P_debiased in plots
This commit is contained in:
@@ -2113,7 +2113,7 @@ class crop_Stokes(crop_map):
|
||||
for dataset in self.hdul_crop:
|
||||
if dataset.header["datatype"] == "STOKES":
|
||||
dataset.data = deepcopy(dataset.data[:, vertex[2] : vertex[3], vertex[0] : vertex[1]])
|
||||
elif dataset.header["datatype"] == "STOKES_COV":
|
||||
elif dataset.header["datatype"][:10] == "STOKES_COV":
|
||||
dataset.data = deepcopy(dataset.data[:, :, vertex[2] : vertex[3], vertex[0] : vertex[1]])
|
||||
else:
|
||||
dataset.data = deepcopy(dataset.data[vertex[2] : vertex[3], vertex[0] : vertex[1]])
|
||||
@@ -2142,6 +2142,12 @@ class crop_Stokes(crop_map):
|
||||
IQ_diluted_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV"].data[0, 1][mask] ** 2))
|
||||
IU_diluted_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV"].data[0, 2][mask] ** 2))
|
||||
QU_diluted_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV"].data[1, 2][mask] ** 2))
|
||||
I_diluted_stat_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV_STAT"].data[0, 0][mask]))
|
||||
Q_diluted_stat_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV_STAT"].data[1, 1][mask]))
|
||||
U_diluted_stat_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV_STAT"].data[2, 2][mask]))
|
||||
IQ_diluted_stat_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV_STAT"].data[0, 1][mask] ** 2))
|
||||
IU_diluted_stat_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV_STAT"].data[0, 2][mask] ** 2))
|
||||
QU_diluted_stat_err = np.sqrt(np.sum(self.hdul_crop["STOKES_COV_STAT"].data[1, 2][mask] ** 2))
|
||||
|
||||
P_diluted = np.sqrt(Q_diluted**2 + U_diluted**2) / I_diluted
|
||||
P_diluted_err = (1.0 / I_diluted) * np.sqrt(
|
||||
@@ -2150,6 +2156,18 @@ class crop_Stokes(crop_map):
|
||||
- 2.0 * (Q_diluted / I_diluted) * IQ_diluted_err
|
||||
- 2.0 * (U_diluted / I_diluted) * IU_diluted_err
|
||||
)
|
||||
P_diluted_stat_err = (
|
||||
P_diluted
|
||||
/ I_diluted
|
||||
* np.sqrt(
|
||||
I_diluted_stat_err
|
||||
- 2.0 / (I_diluted * P_diluted**2) * (Q_diluted * IQ_diluted_stat_err + U_diluted * IU_diluted_stat_err)
|
||||
+ 1.0
|
||||
/ (I_diluted**2 * P_diluted**4)
|
||||
* (Q_diluted**2 * Q_diluted_stat_err + U_diluted**2 * U_diluted_stat_err + 2.0 * Q_diluted * U_diluted * QU_diluted_stat_err)
|
||||
)
|
||||
)
|
||||
debiased_P_diluted = np.sqrt(P_diluted**2 - P_diluted_stat_err**2) if P_diluted**2 > P_diluted_stat_err**2 else 0.0
|
||||
|
||||
PA_diluted = princ_angle((90.0 / np.pi) * np.arctan2(U_diluted, Q_diluted))
|
||||
PA_diluted_err = (90.0 / (np.pi * (Q_diluted**2 + U_diluted**2))) * np.sqrt(
|
||||
@@ -2159,7 +2177,7 @@ class crop_Stokes(crop_map):
|
||||
for dataset in self.hdul_crop:
|
||||
if dataset.header["FILENAME"][-4:] != "crop":
|
||||
dataset.header["FILENAME"] += "_crop"
|
||||
dataset.header["P_int"] = (P_diluted, "Integrated polarization degree")
|
||||
dataset.header["P_int"] = (debiased_P_diluted, "Integrated polarization degree")
|
||||
dataset.header["sP_int"] = (np.ceil(P_diluted_err * 1000.0) / 1000.0, "Integrated polarization degree error")
|
||||
dataset.header["PA_int"] = (PA_diluted, "Integrated polarization angle")
|
||||
dataset.header["sPA_int"] = (np.ceil(PA_diluted_err * 10.0) / 10.0, "Integrated polarization angle error")
|
||||
@@ -2492,7 +2510,7 @@ class pol_map(object):
|
||||
ax_vec_sc = self.fig.add_axes([0.260, 0.030, 0.090, 0.01])
|
||||
ax_snr_reset = self.fig.add_axes([0.060, 0.020, 0.05, 0.02])
|
||||
ax_snr_conf = self.fig.add_axes([0.115, 0.020, 0.05, 0.02])
|
||||
SNRi_max = np.max(self.I[self.IQU_cov[0, 0] > 0.0] / np.sqrt(self.IQU_cov[0, 0][self.IQU_cov[0, 0] > 0.0]))
|
||||
SNRi_max = np.max(self.I[self.Stokes_cov[0, 0] > 0.0] / np.sqrt(self.Stokes_cov[0, 0][self.Stokes_cov[0, 0] > 0.0]))
|
||||
SNRp_max = np.max(self.P[self.P_ERR > 0.0] / self.P_ERR[self.P_ERR > 0.0])
|
||||
s_I_cut = Slider(ax_I_cut, r"$SNR^{I}_{cut}$", 1.0, int(SNRi_max * 0.95), valstep=0.5, valinit=self.SNRi_cut)
|
||||
self.P_ERR_cut = Slider(
|
||||
@@ -2988,9 +3006,13 @@ class pol_map(object):
|
||||
return self.U_ERR / np.where(self.I > 0, self.I, np.nan)
|
||||
|
||||
@property
|
||||
def IQU_cov(self):
|
||||
def Stokes_cov(self):
|
||||
return self.Stokes["STOKES_COV"].data
|
||||
|
||||
@property
|
||||
def Stokes_cov_stat(self):
|
||||
return self.Stokes["STOKES_COV_STAT"].data
|
||||
|
||||
@property
|
||||
def P(self):
|
||||
return self.Stokes["POL_DEG_DEBIASED"].data
|
||||
@@ -3016,7 +3038,7 @@ class pol_map(object):
|
||||
|
||||
@property
|
||||
def cut(self):
|
||||
s_I = np.sqrt(self.IQU_cov[0, 0])
|
||||
s_I = np.sqrt(self.Stokes_cov[0, 0])
|
||||
SNRp_mask, SNRi_mask = (np.zeros(self.P.shape).astype(bool), np.zeros(self.I.shape).astype(bool))
|
||||
SNRi_mask[s_I > 0.0] = self.I[s_I > 0.0] / s_I[s_I > 0.0] > self.SNRi
|
||||
if self.SNRp >= 1.0:
|
||||
@@ -3159,7 +3181,7 @@ class pol_map(object):
|
||||
kwargs["alpha"] = 1.0 - 0.75 * (self.P < self.P_ERR)
|
||||
label = r"$\theta_{P}$ [°]"
|
||||
elif self.display_selection.lower() in ["snri"]:
|
||||
s_I = np.sqrt(self.IQU_cov[0, 0])
|
||||
s_I = np.sqrt(self.Stokes_cov[0, 0])
|
||||
SNRi = np.zeros(self.I.shape)
|
||||
SNRi[s_I > 0.0] = self.I[s_I > 0.0] / s_I[s_I > 0.0]
|
||||
self.data = SNRi
|
||||
@@ -3354,68 +3376,77 @@ class pol_map(object):
|
||||
)
|
||||
fig.canvas.draw_idle()
|
||||
|
||||
def pol_int(self, fig=None, ax=None):
|
||||
def pol_int(self, fig=None, ax=None, cut=False):
|
||||
str_conf = ""
|
||||
if self.region is None:
|
||||
s_I = np.sqrt(self.IQU_cov[0, 0])
|
||||
s_I = np.sqrt(self.Stokes_cov[0, 0])
|
||||
I_reg = self.I.sum()
|
||||
I_reg_err = np.sqrt(np.sum(s_I**2))
|
||||
P_reg = self.Stokes[0].header["P_int"]
|
||||
debiased_P_reg = self.Stokes[0].header["P_int"]
|
||||
P_reg_err = self.Stokes[0].header["sP_int"]
|
||||
PA_reg = self.Stokes[0].header["PA_int"]
|
||||
PA_reg_err = self.Stokes[0].header["sPA_int"]
|
||||
|
||||
s_I = np.sqrt(self.IQU_cov[0, 0])
|
||||
s_Q = np.sqrt(self.IQU_cov[1, 1])
|
||||
s_U = np.sqrt(self.IQU_cov[2, 2])
|
||||
s_IQ = self.IQU_cov[0, 1]
|
||||
s_IU = self.IQU_cov[0, 2]
|
||||
s_QU = self.IQU_cov[1, 2]
|
||||
if cut:
|
||||
I_cut = self.I[self.cut].sum()
|
||||
Q_cut = self.Q[self.cut].sum()
|
||||
U_cut = self.U[self.cut].sum()
|
||||
I_cut_err = np.sqrt(np.sum(self.Stokes_cov[0, 0][self.cut]))
|
||||
Q_cut_err = np.sqrt(np.sum(self.Stokes_cov[1, 1][self.cut]))
|
||||
U_cut_err = np.sqrt(np.sum(self.Stokes_cov[2, 2][self.cut]))
|
||||
IQ_cut_err = np.sqrt(np.sum(self.Stokes_cov[0, 1][self.cut] ** 2))
|
||||
IU_cut_err = np.sqrt(np.sum(self.Stokes_cov[0, 2][self.cut] ** 2))
|
||||
QU_cut_err = np.sqrt(np.sum(self.Stokes_cov[1, 2][self.cut] ** 2))
|
||||
I_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 0][self.cut]))
|
||||
Q_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[1, 1][self.cut]))
|
||||
U_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[2, 2][self.cut]))
|
||||
IQ_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 1][self.cut] ** 2))
|
||||
IU_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 2][self.cut] ** 2))
|
||||
QU_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[1, 2][self.cut] ** 2))
|
||||
|
||||
I_cut = self.I[self.cut].sum()
|
||||
Q_cut = self.Q[self.cut].sum()
|
||||
U_cut = self.U[self.cut].sum()
|
||||
I_cut_err = np.sqrt(np.sum(s_I[self.cut] ** 2))
|
||||
Q_cut_err = np.sqrt(np.sum(s_Q[self.cut] ** 2))
|
||||
U_cut_err = np.sqrt(np.sum(s_U[self.cut] ** 2))
|
||||
IQ_cut_err = np.sqrt(np.sum(s_IQ[self.cut] ** 2))
|
||||
IU_cut_err = np.sqrt(np.sum(s_IU[self.cut] ** 2))
|
||||
QU_cut_err = np.sqrt(np.sum(s_QU[self.cut] ** 2))
|
||||
|
||||
with np.errstate(divide="ignore", invalid="ignore"):
|
||||
P_cut = np.sqrt(Q_cut**2 + U_cut**2) / I_cut
|
||||
P_cut_err = (
|
||||
np.sqrt(
|
||||
(Q_cut**2 * Q_cut_err**2 + U_cut**2 * U_cut_err**2 + 2.0 * Q_cut * U_cut * QU_cut_err) / (Q_cut**2 + U_cut**2)
|
||||
+ ((Q_cut / I_cut) ** 2 + (U_cut / I_cut) ** 2) * I_cut_err**2
|
||||
- 2.0 * (Q_cut / I_cut) * IQ_cut_err
|
||||
- 2.0 * (U_cut / I_cut) * IU_cut_err
|
||||
with np.errstate(divide="ignore", invalid="ignore"):
|
||||
P_cut = np.sqrt(Q_cut**2 + U_cut**2) / I_cut
|
||||
P_cut_err = (
|
||||
np.sqrt(
|
||||
(Q_cut**2 * Q_cut_err**2 + U_cut**2 * U_cut_err**2 + 2.0 * Q_cut * U_cut * QU_cut_err) / (Q_cut**2 + U_cut**2)
|
||||
+ ((Q_cut / I_cut) ** 2 + (U_cut / I_cut) ** 2) * I_cut_err**2
|
||||
- 2.0 * (Q_cut / I_cut) * IQ_cut_err
|
||||
- 2.0 * (U_cut / I_cut) * IU_cut_err
|
||||
)
|
||||
/ I_cut
|
||||
)
|
||||
/ I_cut
|
||||
)
|
||||
P_cut_stat_err = (
|
||||
P_cut
|
||||
/ I_cut
|
||||
* np.sqrt(
|
||||
I_cut_stat_err
|
||||
- 2.0 / (I_cut * P_cut**2) * (Q_cut * IQ_cut_stat_err + U_cut * IU_cut_stat_err)
|
||||
+ 1.0 / (I_cut**2 * P_cut**4) * (Q_cut**2 * Q_cut_stat_err + U_cut**2 * U_cut_stat_err + 2.0 * Q_cut * U_cut * QU_cut_stat_err)
|
||||
)
|
||||
)
|
||||
debiased_P_cut = np.sqrt(P_cut**2 - P_cut_stat_err**2) if P_cut**2 > P_cut_stat_err**2 else 0.0
|
||||
|
||||
PA_cut = princ_angle((90.0 / np.pi) * np.arctan2(U_cut, Q_cut))
|
||||
PA_cut_err = (90.0 / (np.pi * (Q_cut**2 + U_cut**2))) * np.sqrt(
|
||||
U_cut**2 * Q_cut_err**2 + Q_cut**2 * U_cut_err**2 - 2.0 * Q_cut * U_cut * QU_cut_err
|
||||
)
|
||||
PA_cut = princ_angle((90.0 / np.pi) * np.arctan2(U_cut, Q_cut))
|
||||
PA_cut_err = (90.0 / (np.pi * (Q_cut**2 + U_cut**2))) * np.sqrt(
|
||||
U_cut**2 * Q_cut_err**2 + Q_cut**2 * U_cut_err**2 - 2.0 * Q_cut * U_cut * QU_cut_err
|
||||
)
|
||||
|
||||
else:
|
||||
s_I = np.sqrt(self.IQU_cov[0, 0])
|
||||
s_Q = np.sqrt(self.IQU_cov[1, 1])
|
||||
s_U = np.sqrt(self.IQU_cov[2, 2])
|
||||
s_IQ = self.IQU_cov[0, 1]
|
||||
s_IU = self.IQU_cov[0, 2]
|
||||
s_QU = self.IQU_cov[1, 2]
|
||||
|
||||
I_reg = self.I[self.region].sum()
|
||||
Q_reg = self.Q[self.region].sum()
|
||||
U_reg = self.U[self.region].sum()
|
||||
I_reg_err = np.sqrt(np.sum(s_I[self.region] ** 2))
|
||||
Q_reg_err = np.sqrt(np.sum(s_Q[self.region] ** 2))
|
||||
U_reg_err = np.sqrt(np.sum(s_U[self.region] ** 2))
|
||||
IQ_reg_err = np.sqrt(np.sum(s_IQ[self.region] ** 2))
|
||||
IU_reg_err = np.sqrt(np.sum(s_IU[self.region] ** 2))
|
||||
QU_reg_err = np.sqrt(np.sum(s_QU[self.region] ** 2))
|
||||
I_reg_err = np.sqrt(np.sum(self.Stokes_cov[0, 0][self.region]))
|
||||
Q_reg_err = np.sqrt(np.sum(self.Stokes_cov[1, 1][self.region]))
|
||||
U_reg_err = np.sqrt(np.sum(self.Stokes_cov[2, 2][self.region]))
|
||||
IQ_reg_err = np.sqrt(np.sum(self.Stokes_cov[0, 1][self.region] ** 2))
|
||||
IU_reg_err = np.sqrt(np.sum(self.Stokes_cov[0, 2][self.region] ** 2))
|
||||
QU_reg_err = np.sqrt(np.sum(self.Stokes_cov[1, 2][self.region] ** 2))
|
||||
I_reg_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 0][self.region]))
|
||||
Q_reg_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[1, 1][self.region]))
|
||||
U_reg_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[2, 2][self.region]))
|
||||
IQ_reg_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 1][self.region] ** 2))
|
||||
IU_reg_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 2][self.region] ** 2))
|
||||
QU_reg_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[1, 2][self.region] ** 2))
|
||||
|
||||
conf = PCconf(QN=Q_reg / I_reg, QN_ERR=Q_reg_err / I_reg, UN=U_reg / I_reg, UN_ERR=U_reg_err / I_reg)
|
||||
if 1.0 - conf > 1e-3:
|
||||
@@ -3432,39 +3463,66 @@ class pol_map(object):
|
||||
)
|
||||
/ I_reg
|
||||
)
|
||||
P_reg_stat_err = (
|
||||
P_reg
|
||||
/ I_reg
|
||||
* np.sqrt(
|
||||
I_reg_stat_err
|
||||
- 2.0 / (I_reg * P_reg**2) * (Q_reg * IQ_reg_stat_err + U_reg * IU_reg_stat_err)
|
||||
+ 1.0 / (I_reg**2 * P_reg**4) * (Q_reg**2 * Q_reg_stat_err + U_reg**2 * U_reg_stat_err + 2.0 * Q_reg * U_reg * QU_reg_stat_err)
|
||||
)
|
||||
)
|
||||
debiased_P_reg = np.sqrt(P_reg**2 - P_reg_stat_err**2) if P_reg**2 > P_reg_stat_err**2 else 0.0
|
||||
|
||||
PA_reg = princ_angle((90.0 / np.pi) * np.arctan2(U_reg, Q_reg))
|
||||
PA_reg_err = (90.0 / (np.pi * (Q_reg**2 + U_reg**2))) * np.sqrt(
|
||||
U_reg**2 * Q_reg_err**2 + Q_reg**2 * U_reg_err**2 - 2.0 * Q_reg * U_reg * QU_reg_err
|
||||
)
|
||||
|
||||
new_cut = np.logical_and(self.region, self.cut)
|
||||
I_cut = self.I[new_cut].sum()
|
||||
Q_cut = self.Q[new_cut].sum()
|
||||
U_cut = self.U[new_cut].sum()
|
||||
I_cut_err = np.sqrt(np.sum(s_I[new_cut] ** 2))
|
||||
Q_cut_err = np.sqrt(np.sum(s_Q[new_cut] ** 2))
|
||||
U_cut_err = np.sqrt(np.sum(s_U[new_cut] ** 2))
|
||||
IQ_cut_err = np.sqrt(np.sum(s_IQ[new_cut] ** 2))
|
||||
IU_cut_err = np.sqrt(np.sum(s_IU[new_cut] ** 2))
|
||||
QU_cut_err = np.sqrt(np.sum(s_QU[new_cut] ** 2))
|
||||
if cut:
|
||||
new_cut = np.logical_and(self.region, self.cut)
|
||||
I_cut = self.I[new_cut].sum()
|
||||
Q_cut = self.Q[new_cut].sum()
|
||||
U_cut = self.U[new_cut].sum()
|
||||
I_cut_err = np.sqrt(np.sum(self.Stokes_cov[0, 0][new_cut]))
|
||||
Q_cut_err = np.sqrt(np.sum(self.Stokes_cov[1, 1][new_cut]))
|
||||
U_cut_err = np.sqrt(np.sum(self.Stokes_cov[2, 2][new_cut]))
|
||||
IQ_cut_err = np.sqrt(np.sum(self.Stokes_cov[0, 1][new_cut] ** 2))
|
||||
IU_cut_err = np.sqrt(np.sum(self.Stokes_cov[0, 2][new_cut] ** 2))
|
||||
QU_cut_err = np.sqrt(np.sum(self.Stokes_cov[1, 2][new_cut] ** 2))
|
||||
I_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 0][new_cut]))
|
||||
Q_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[1, 1][new_cut]))
|
||||
U_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[2, 2][new_cut]))
|
||||
IQ_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 1][new_cut] ** 2))
|
||||
IU_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[0, 2][new_cut] ** 2))
|
||||
QU_cut_stat_err = np.sqrt(np.sum(self.Stokes_cov_stat[1, 2][new_cut] ** 2))
|
||||
|
||||
with np.errstate(divide="ignore", invalid="ignore"):
|
||||
P_cut = np.sqrt(Q_cut**2 + U_cut**2) / I_cut
|
||||
P_cut_err = (
|
||||
np.sqrt(
|
||||
(Q_cut**2 * Q_cut_err**2 + U_cut**2 * U_cut_err**2 + 2.0 * Q_cut * U_cut * QU_cut_err) / (Q_cut**2 + U_cut**2)
|
||||
+ ((Q_cut / I_cut) ** 2 + (U_cut / I_cut) ** 2) * I_cut_err**2
|
||||
- 2.0 * (Q_cut / I_cut) * IQ_cut_err
|
||||
- 2.0 * (U_cut / I_cut) * IU_cut_err
|
||||
with np.errstate(divide="ignore", invalid="ignore"):
|
||||
P_cut = np.sqrt(Q_cut**2 + U_cut**2) / I_cut
|
||||
P_cut_err = (
|
||||
np.sqrt(
|
||||
(Q_cut**2 * Q_cut_err**2 + U_cut**2 * U_cut_err**2 + 2.0 * Q_cut * U_cut * QU_cut_err) / (Q_cut**2 + U_cut**2)
|
||||
+ ((Q_cut / I_cut) ** 2 + (U_cut / I_cut) ** 2) * I_cut_err**2
|
||||
- 2.0 * (Q_cut / I_cut) * IQ_cut_err
|
||||
- 2.0 * (U_cut / I_cut) * IU_cut_err
|
||||
)
|
||||
/ I_cut
|
||||
)
|
||||
/ I_cut
|
||||
)
|
||||
P_cut_stat_err = (
|
||||
P_cut
|
||||
/ I_cut
|
||||
* np.sqrt(
|
||||
I_cut_stat_err
|
||||
- 2.0 / (I_cut * P_cut**2) * (Q_cut * IQ_cut_stat_err + U_cut * IU_cut_stat_err)
|
||||
+ 1.0 / (I_cut**2 * P_cut**4) * (Q_cut**2 * Q_cut_stat_err + U_cut**2 * U_cut_stat_err + 2.0 * Q_cut * U_cut * QU_cut_stat_err)
|
||||
)
|
||||
)
|
||||
debiased_P_cut = np.sqrt(P_cut**2 - P_cut_stat_err**2) if P_cut**2 > P_cut_stat_err**2 else 0.0
|
||||
|
||||
PA_cut = princ_angle((90.0 / np.pi) * np.arctan2(U_cut, Q_cut))
|
||||
PA_cut_err = (90.0 / (np.pi * (Q_cut**2 + U_cut**2))) * np.sqrt(
|
||||
U_cut**2 * Q_cut_err**2 + Q_cut**2 * U_cut_err**2 - 2.0 * Q_cut * U_cut * QU_cut_err
|
||||
)
|
||||
PA_cut = princ_angle((90.0 / np.pi) * np.arctan2(U_cut, Q_cut))
|
||||
PA_cut_err = (90.0 / (np.pi * (Q_cut**2 + U_cut**2))) * np.sqrt(
|
||||
U_cut**2 * Q_cut_err**2 + Q_cut**2 * U_cut_err**2 - 2.0 * Q_cut * U_cut * QU_cut_err
|
||||
)
|
||||
|
||||
if hasattr(self, "cont"):
|
||||
self.cont.remove()
|
||||
@@ -3480,22 +3538,23 @@ class pol_map(object):
|
||||
self.pivot_wav, sci_not(I_reg * self.map_convert, I_reg_err * self.map_convert, 2)
|
||||
)
|
||||
+ "\n"
|
||||
+ r"$P^{{int}}$ = {0:.1f} $\pm$ {1:.1f} %".format(P_reg * 100.0, np.ceil(P_reg_err * 1000.0) / 10.0)
|
||||
+ r"$P^{{int}}$ = {0:.1f} $\pm$ {1:.1f} %".format(debiased_P_reg * 100.0, np.ceil(P_reg_err * 1000.0) / 10.0)
|
||||
+ "\n"
|
||||
+ r"$\Psi^{{int}}$ = {0:.1f} $\pm$ {1:.1f} °".format(PA_reg, np.ceil(PA_reg_err * 10.0) / 10.0)
|
||||
+ str_conf
|
||||
)
|
||||
self.str_cut = ""
|
||||
# self.str_cut = (
|
||||
# "\n"
|
||||
# + r"$F_{{\lambda}}^{{cut}}$({0:.0f} $\AA$) = {1} $ergs \cdot cm^{{-2}} \cdot s^{{-1}} \cdot \AA^{{-1}}$".format(
|
||||
# self.pivot_wav, sci_not(I_cut * self.map_convert, I_cut_err * self.map_convert, 2)
|
||||
# )
|
||||
# + "\n"
|
||||
# + r"$P^{{cut}}$ = {0:.1f} $\pm$ {1:.1f} %".format(P_cut * 100.0, np.ceil(P_cut_err * 1000.0) / 10.0)
|
||||
# + "\n"
|
||||
# + r"$\Psi^{{cut}}$ = {0:.1f} $\pm$ {1:.1f} °".format(PA_cut, np.ceil(PA_cut_err * 10.0) / 10.0)
|
||||
# )
|
||||
if cut:
|
||||
self.str_cut = (
|
||||
"\n"
|
||||
+ r"$F_{{\lambda}}^{{cut}}$({0:.0f} $\AA$) = {1} $ergs \cdot cm^{{-2}} \cdot s^{{-1}} \cdot \AA^{{-1}}$".format(
|
||||
self.pivot_wav, sci_not(I_cut * self.map_convert, I_cut_err * self.map_convert, 2)
|
||||
)
|
||||
+ "\n"
|
||||
+ r"$P^{{cut}}$ = {0:.1f} $\pm$ {1:.1f} %".format(debiased_P_cut * 100.0, np.ceil(P_cut_err * 1000.0) / 10.0)
|
||||
+ "\n"
|
||||
+ r"$\Psi^{{cut}}$ = {0:.1f} $\pm$ {1:.1f} °".format(PA_cut, np.ceil(PA_cut_err * 10.0) / 10.0)
|
||||
)
|
||||
self.an_int = ax.annotate(
|
||||
self.str_int + self.str_cut,
|
||||
color="white",
|
||||
@@ -3522,16 +3581,17 @@ class pol_map(object):
|
||||
+ str_conf
|
||||
)
|
||||
str_cut = ""
|
||||
# str_cut = (
|
||||
# "\n"
|
||||
# + r"$F_{{\lambda}}^{{cut}}$({0:.0f} $\AA$) = {1} $ergs \cdot cm^{{-2}} \cdot s^{{-1}} \cdot \AA^{{-1}}$".format(
|
||||
# self.pivot_wav, sci_not(I_cut * self.map_convert, I_cut_err * self.map_convert, 2)
|
||||
# )
|
||||
# + "\n"
|
||||
# + r"$P^{{cut}}$ = {0:.1f} $\pm$ {1:.1f} %".format(P_cut * 100.0, np.ceil(P_cut_err * 1000.0) / 10.0)
|
||||
# + "\n"
|
||||
# + r"$\Psi^{{cut}}$ = {0:.1f} $\pm$ {1:.1f} °".format(PA_cut, np.ceil(PA_cut_err * 10.0) / 10.0)
|
||||
# )
|
||||
if cut:
|
||||
str_cut = (
|
||||
"\n"
|
||||
+ r"$F_{{\lambda}}^{{cut}}$({0:.0f} $\AA$) = {1} $ergs \cdot cm^{{-2}} \cdot s^{{-1}} \cdot \AA^{{-1}}$".format(
|
||||
self.pivot_wav, sci_not(I_cut * self.map_convert, I_cut_err * self.map_convert, 2)
|
||||
)
|
||||
+ "\n"
|
||||
+ r"$P^{{cut}}$ = {0:.1f} $\pm$ {1:.1f} %".format(P_cut * 100.0, np.ceil(P_cut_err * 1000.0) / 10.0)
|
||||
+ "\n"
|
||||
+ r"$\Psi^{{cut}}$ = {0:.1f} $\pm$ {1:.1f} °".format(PA_cut, np.ceil(PA_cut_err * 10.0) / 10.0)
|
||||
)
|
||||
ax.annotate(
|
||||
str_int + str_cut,
|
||||
color="white",
|
||||
|
||||
Reference in New Issue
Block a user