Skip to content

Commit 79ca49c

Browse files
authored
Add fwhm, fix aperpix and aperas in PhotoPolResult (#169)
- Add fwhm field to PhotoPolResult. - Save aperpix, aperas, fwhm to PhotoPolResult.
1 parent 54d2b05 commit 79ca49c

File tree

5 files changed

+66
-48
lines changed

5 files changed

+66
-48
lines changed

iop4lib/db/photopolresult.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ class PhotoPolResult(models.Model):
108108

109109
## host galaxy correction
110110
aperas = models.FloatField(null=True, help_text="Aperture radius in arcseconds.")
111+
fwhm = models.FloatField(null=True, help_text="FWHM in arcseconds.")
111112
mag_corr = models.FloatField(null=True, help_text="Magnitude corrected for host galaxy.")
112113
mag_corr_err = models.FloatField(null=True, help_text="Error for mag_corr.")
113114
p_corr = models.FloatField(null=True, help_text="Polarization corrected for host galaxy.")

iop4lib/instruments/cafos.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ def compute_relative_polarimetry(cls, polarimetry_group):
270270
# 1. Compute all aperture photometries
271271

272272
aperpix, r_in, r_out, fit_res_dict = cls.estimate_common_apertures(polarimetry_group, reductionmethod=REDUCTIONMETHODS.RELPHOT)
273-
target_fwhm = fit_res_dict['mean_fwhm']
273+
mean_fwhm = fit_res_dict['mean_fwhm']
274274

275275
logger.debug(f"Computing aperture photometries for the {len(polarimetry_group)} reducedfits in the group with target aperpix {aperpix:.1f}.")
276276

@@ -390,15 +390,19 @@ def compute_relative_polarimetry(cls, polarimetry_group):
390390

391391
# save the results
392392

393-
result = PhotoPolResult.create(reducedfits=polarimetry_group,
394-
astrosource=astrosource,
395-
reduction=REDUCTIONMETHODS.RELPOL,
396-
mag_inst=mag_inst, mag_inst_err=mag_inst_err,
397-
mag_zp=mag_zp, mag_zp_err=mag_zp_err,
398-
flux_counts=flux_mean,
399-
p=P, p_err=dP,
400-
chi=Theta, chi_err=dTheta,
401-
aperpix=aperpix)
393+
result = PhotoPolResult.create(
394+
reducedfits=polarimetry_group,
395+
astrosource=astrosource,
396+
reduction=REDUCTIONMETHODS.RELPOL,
397+
mag_inst=mag_inst, mag_inst_err=mag_inst_err,
398+
mag_zp=mag_zp, mag_zp_err=mag_zp_err,
399+
flux_counts=flux_mean,
400+
p=P, p_err=dP,
401+
chi=Theta, chi_err=dTheta,
402+
aperpix=aperpix,
403+
aperas=aperpix*polarimetry_group[0].pixscale.to(u.arcsec/u.pix).value,
404+
fwhm=mean_fwhm*polarimetry_group[0].pixscale.to(u.arcsec/u.pix).value,
405+
)
402406

403407
result.aperphotresults.set(qs, clear=True)
404408

iop4lib/instruments/dipol.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,7 +1081,7 @@ def compute_relative_polarimetry(cls, polarimetry_group):
10811081
# 1. Compute all aperture photometries
10821082

10831083
aperpix, r_in, r_out, fit_res_dict = cls.estimate_common_apertures(polarimetry_group, reductionmethod=REDUCTIONMETHODS.RELPHOT)
1084-
target_fwhm = fit_res_dict['mean_fwhm']
1084+
mean_fwhm = fit_res_dict['mean_fwhm']
10851085

10861086
logger.debug(f"Computing aperture photometries for the {len(polarimetry_group)} reducedfits in the group with target aperpix {aperpix:.1f}.")
10871087

@@ -1199,12 +1199,16 @@ def _get_p_and_chi(Qr, Ur, dQr, dUr):
11991199

12001200
# save the results
12011201

1202-
result = PhotoPolResult.create(reducedfits=polarimetry_group,
1203-
astrosource=astrosource,
1204-
reduction=REDUCTIONMETHODS.RELPOL,
1205-
p=P, p_err=dP, chi=chi, chi_err=dchi,
1206-
_q_nocorr=Qr_uncorr, _u_nocorr=Ur_uncorr, _p_nocorr=P_uncorr, _chi_nocorr=chi_uncorr,
1207-
aperpix=aperpix)
1202+
result = PhotoPolResult.create(
1203+
reducedfits=polarimetry_group,
1204+
astrosource=astrosource,
1205+
reduction=REDUCTIONMETHODS.RELPOL,
1206+
p=P, p_err=dP, chi=chi, chi_err=dchi,
1207+
_q_nocorr=Qr_uncorr, _u_nocorr=Ur_uncorr, _p_nocorr=P_uncorr, _chi_nocorr=chi_uncorr,
1208+
aperpix=aperpix,
1209+
aperas=aperpix*polarimetry_group[0].pixscale.to(u.arcsec/u.pix).value,
1210+
fwhm=mean_fwhm*polarimetry_group[0].pixscale.to(u.arcsec/u.pix).value,
1211+
)
12081212

12091213
result.aperphotresults.set(aperphotresults, clear=True)
12101214

iop4lib/instruments/instrument.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,8 @@ def compute_relative_photometry(cls, redf: 'ReducedFit') -> None:
637637
result = PhotoPolResult.create(reducedfits=[redf], astrosource=astrosource, reduction=REDUCTIONMETHODS.RELPHOT)
638638

639639
result.aperpix = aperpix
640+
result.aperas = aperpix * redf.pixscale.to(u.arcsec / u.pix).value
641+
result.fwhm = target_fwhm * redf.pixscale.to(u.arcsec / u.pix).value
640642
result.bkg_flux_counts = aperphotresult.bkg_flux_counts
641643
result.bkg_flux_counts_err = aperphotresult.bkg_flux_counts_err
642644
result.flux_counts = aperphotresult.flux_counts

iop4lib/instruments/osn_cameras.py

Lines changed: 38 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -293,7 +293,7 @@ def compute_relative_polarimetry(cls, polarimetry_group):
293293
# 1. Compute all aperture photometries
294294

295295
aperpix, r_in, r_out, fit_res_dict = cls.estimate_common_apertures(polarimetry_group, reductionmethod=REDUCTIONMETHODS.RELPHOT)
296-
target_fwhm = fit_res_dict['mean_fwhm']
296+
mean_fwhm = fit_res_dict["mean_fwhm"]
297297

298298
logger.debug(f"Computing aperture photometries for the {len(polarimetry_group)} reducedfits in the group with target {aperpix:.1f}.")
299299

@@ -307,18 +307,20 @@ def compute_relative_polarimetry(cls, polarimetry_group):
307307
photopolresult_L = list()
308308

309309
for astrosource in group_sources:
310+
311+
qs = AperPhotResult.objects.filter(reducedfit__in=polarimetry_group, astrosource=astrosource, aperpix=aperpix, pairs="O")
310312

311-
flux_0 = AperPhotResult.objects.get(reducedfit__in=polarimetry_group, astrosource=astrosource, aperpix=aperpix, pairs="O", reducedfit__rotangle=0.0).flux_counts
312-
flux_0_err = AperPhotResult.objects.get(reducedfit__in=polarimetry_group, astrosource=astrosource, pairs="O", aperpix=aperpix, reducedfit__rotangle=0.0).flux_counts_err
313+
flux_0 = qs.get(reducedfit__rotangle=0.0).flux_counts
314+
flux_0_err = qs.get(reducedfit__rotangle=0.0).flux_counts_err
313315

314-
flux_45 = AperPhotResult.objects.get(reducedfit__in=polarimetry_group, astrosource=astrosource, pairs="O", aperpix=aperpix, reducedfit__rotangle=45.0).flux_counts
315-
flux_45_err = AperPhotResult.objects.get(reducedfit__in=polarimetry_group, astrosource=astrosource, pairs="O", aperpix=aperpix, reducedfit__rotangle=45.0).flux_counts_err
316+
flux_45 = qs.get(reducedfit__rotangle=45.0).flux_counts
317+
flux_45_err = qs.get(reducedfit__rotangle=45.0).flux_counts_err
316318

317-
flux_90 = AperPhotResult.objects.get(reducedfit__in=polarimetry_group, astrosource=astrosource, pairs="O", aperpix=aperpix, reducedfit__rotangle=90.0).flux_counts
318-
flux_90_err = AperPhotResult.objects.get(reducedfit__in=polarimetry_group, astrosource=astrosource, pairs="O", aperpix=aperpix, reducedfit__rotangle=90.0).flux_counts_err
319+
flux_90 = qs.get(reducedfit__rotangle=90.0).flux_counts
320+
flux_90_err = qs.get(reducedfit__rotangle=90.0).flux_counts_err
319321

320-
flux_n45 = AperPhotResult.objects.get(reducedfit__in=polarimetry_group, astrosource=astrosource, pairs="O", aperpix=aperpix, reducedfit__rotangle=-45.0).flux_counts
321-
flux_n45_err = AperPhotResult.objects.get(reducedfit__in=polarimetry_group, astrosource=astrosource, pairs="O", aperpix=aperpix, reducedfit__rotangle=-45.0).flux_counts_err
322+
flux_n45 = qs.get(reducedfit__rotangle=-45.0).flux_counts
323+
flux_n45_err = qs.get(reducedfit__rotangle=-45.0).flux_counts_err
322324

323325
# from IOP3 polarimetry_osn() :
324326

@@ -340,34 +342,28 @@ def compute_relative_polarimetry(cls, polarimetry_group):
340342
dqc = math.sqrt(dqraw**2 + dqoff**2)
341343
duc = math.sqrt(duraw**2 + duoff**2)
342344

343-
q = qc*math.cos(2*Phi) - uc*math.sin(2*Phi)
344-
u = qc*math.sin(2*Phi) + uc*math.cos(2*Phi)
345+
qr = qc*math.cos(2*Phi) - uc*math.sin(2*Phi)
346+
ur = qc*math.sin(2*Phi) + uc*math.cos(2*Phi)
345347

346348
dqa = qc*math.cos(2*Phi) * math.sqrt((dqc/qc)**2+((2*dPhi*math.sin(2*Phi))/(math.cos(2*Phi)))**2)
347349
dqb = uc*math.sin(2*Phi) * math.sqrt((duc/uc)**2+((2*dPhi*math.cos(2*Phi))/(math.sin(2*Phi)))**2)
348350
dua = qc*math.sin(2*Phi) * math.sqrt((dqc/qc)**2+((2*dPhi*math.cos(2*Phi))/(math.sin(2*Phi)))**2)
349351
dub = uc*math.cos(2*Phi) * math.sqrt((duc/uc)**2+((2*dPhi*math.sin(2*Phi))/(math.cos(2*Phi)))**2)
350352

351-
dq = np.sqrt(dqa**2+dqb**2)
352-
du = np.sqrt(dua**2+dub**2)
353+
dqr = np.sqrt(dqa**2+dqb**2)
354+
dur = np.sqrt(dua**2+dub**2)
353355

354-
P = math.sqrt(q**2 + u**2)
355-
dP = P * (1/(q**2+u**2)) * math.sqrt((q*dq)**2+(u*du)**2)
356+
P = math.sqrt(qr**2 + ur**2)
357+
dP = P * (1/(qr**2+ur**2)) * math.sqrt((qr*dqr)**2+(ur*dur)**2)
356358

357359
Theta_0 = 0
358-
Theta = (1/2) * math.degrees(math.atan2(u,q) + Theta_0)
360+
Theta = (1/2) * math.degrees(math.atan2(ur,qr) + Theta_0)
359361
dTheta = (0.5 * 180.0 / math.pi) * dP/P
360362

361363
# compute also non-corrected values for computation of instrumental polarization
362364

363-
_Phi_nocorr = 0 # no rotation correction?
364-
_qc_nocorr = qraw # no offset correction
365-
_uc_nocorr = uraw # no offset correction
366-
_q_nocorr = _qc_nocorr*math.cos(2*_Phi_nocorr) - _uc_nocorr*math.sin(2*_Phi_nocorr)
367-
_u_nocorr = _qc_nocorr*math.sin(2*_Phi_nocorr) + _uc_nocorr*math.cos(2*_Phi_nocorr)
368-
_p_nocorr = math.sqrt(_q_nocorr**2 + _u_nocorr**2)
369-
_Theta_0_nocorr = 0
370-
_Theta_nocorr = (1/2) * math.degrees(math.atan2(_u_nocorr,_q_nocorr) + _Theta_0_nocorr)
365+
_p_nocorr = math.sqrt(qraw**2 + uraw**2)
366+
_Theta_nocorr = (1/2) * math.degrees(math.atan2(uraw,qraw))
371367
_x_px, _y_px = astrosource.coord.to_pixel(polarimetry_group[0].wcs)
372368

373369
# compute instrumental magnitude (same as for CAHA)
@@ -397,14 +393,25 @@ def compute_relative_polarimetry(cls, polarimetry_group):
397393

398394
# save the results
399395

400-
result = PhotoPolResult.create(reducedfits=polarimetry_group,
401-
astrosource=astrosource,
402-
reduction=REDUCTIONMETHODS.RELPOL,
403-
mag_inst=mag_inst, mag_inst_err=mag_inst_err, mag_zp=mag_zp, mag_zp_err=mag_zp_err,
404-
flux_counts=flux_mean, p=P, p_err=dP, chi=Theta, chi_err=dTheta,
405-
_x_px=_x_px, _y_px=_y_px, _q_nocorr=_q_nocorr, _u_nocorr=_u_nocorr, _p_nocorr=_p_nocorr, _chi_nocorr=_Theta_nocorr,
406-
aperpix=aperpix)
396+
result = PhotoPolResult.create(
397+
reducedfits=polarimetry_group,
398+
astrosource=astrosource,
399+
reduction=REDUCTIONMETHODS.RELPOL,
400+
mag_inst=mag_inst, mag_inst_err=mag_inst_err,
401+
mag_zp=mag_zp, mag_zp_err=mag_zp_err,
402+
flux_counts=flux_mean,
403+
p=P, p_err=dP,
404+
chi=Theta, chi_err=dTheta,
405+
aperpix=aperpix,
406+
aperas=aperpix*polarimetry_group[0].pixscale.to(u.arcsec/u.pix).value,
407+
fwhm=mean_fwhm*polarimetry_group[0].pixscale.to(u.arcsec/u.pix).value,
408+
_x_px=_x_px, _y_px=_y_px,
409+
_q_nocorr=qraw, _u_nocorr=uraw,
410+
_p_nocorr=_p_nocorr, _chi_nocorr=_Theta_nocorr,
411+
)
407412

413+
result.aperphotresults.set(qs, clear=True)
414+
408415
photopolresult_L.append(result)
409416

410417

0 commit comments

Comments
 (0)