fix WCS computation, cdelt should not be sorted
This commit is contained in:
@@ -16,7 +16,7 @@ from astropy.io import fits
|
|||||||
from astropy.wcs import WCS
|
from astropy.wcs import WCS
|
||||||
|
|
||||||
from .convex_hull import clean_ROI
|
from .convex_hull import clean_ROI
|
||||||
from .utils import wcs_PA
|
from .utils import wcs_PA, princ_angle
|
||||||
|
|
||||||
|
|
||||||
def get_obs_data(infiles, data_folder="", compute_flux=False):
|
def get_obs_data(infiles, data_folder="", compute_flux=False):
|
||||||
@@ -72,13 +72,13 @@ def get_obs_data(infiles, data_folder="", compute_flux=False):
|
|||||||
for key in keys:
|
for key in keys:
|
||||||
header.remove(key, ignore_missing=True)
|
header.remove(key, ignore_missing=True)
|
||||||
new_cdelt = np.linalg.eigvals(wcs.wcs.cd)
|
new_cdelt = np.linalg.eigvals(wcs.wcs.cd)
|
||||||
new_cdelt.sort()
|
# new_cdelt.sort()
|
||||||
new_wcs.wcs.pc = wcs.wcs.cd.dot(np.diag(1.0 / new_cdelt))
|
new_wcs.wcs.pc = wcs.wcs.cd.dot(np.diag(1.0 / new_cdelt))
|
||||||
new_wcs.wcs.cdelt = new_cdelt
|
new_wcs.wcs.cdelt = new_cdelt
|
||||||
for key, val in new_wcs.to_header().items():
|
for key, val in new_wcs.to_header().items():
|
||||||
header[key] = val
|
header[key] = val
|
||||||
try:
|
try:
|
||||||
_ = header["ORIENTAT"]
|
header["ORIENTAT"] = princ_angle(float(header["ORIENTAT"]))
|
||||||
except KeyError:
|
except KeyError:
|
||||||
header["ORIENTAT"] = wcs_PA(new_wcs.wcs.pc[1, 0], np.diag(new_wcs.wcs.pc).mean())
|
header["ORIENTAT"] = wcs_PA(new_wcs.wcs.pc[1, 0], np.diag(new_wcs.wcs.pc).mean())
|
||||||
|
|
||||||
|
|||||||
@@ -177,4 +177,4 @@ def wcs_PA(PC21, PC22):
|
|||||||
orient = np.arccos(PC22) * 180.0 / np.pi
|
orient = np.arccos(PC22) * 180.0 / np.pi
|
||||||
elif (abs(PC21) < abs(PC22)) and (PC22 < 0):
|
elif (abs(PC21) < abs(PC22)) and (PC22 < 0):
|
||||||
orient = -np.arccos(PC22) * 180.0 / np.pi
|
orient = -np.arccos(PC22) * 180.0 / np.pi
|
||||||
return orient
|
return princ_angle(orient)
|
||||||
|
|||||||
Reference in New Issue
Block a user