Details
-
Type:
Improvement
-
Status: Won't Fix
-
Resolution: Done
-
Fix Version/s: None
-
Component/s: afw
-
Labels:
-
Story Points:2
-
Team:Alert Production
Description
We sometimes need to set the coord fields of a source catalog, e.g. when fitting a new WCS or when studying an `icSrc` catalog (whose Coord field is not set). It would be nice to have a central, easily found way to do this. Right now we have the following as a static method of `TanSipWcsTask`, which works fine but is in a poor location:
def updateSourceCoords(wcs, sourceList):
|
"""Update coords in a collection of sources, given a WCS
|
"""
|
if len(sourceList) < 1:
|
return
|
schema = sourceList[1].schema
|
srcCoordKey = afwTable.CoordKey(schema["coord"])
|
for src in sourceList:
|
src.set(srcCoordKey, wcs.pixelToSky(src.getCentroid()))
|
The other direction is also useful for reference catalogs, though from a practical standpoint the only user is probably `meas_astrom`. Even so, I suggest that this be made publicly available in the same way. Again, this is presently a static method of `FitTanSipWcsTask`:
def updateRefCentroids(wcs, refList):
|
"""Update centroids in a collection of reference objects, given a WCS
|
"""
|
if len(refList) < 1:
|
return
|
schema = refList[0].schema
|
coordKey = afwTable.CoordKey(schema["coord"])
|
centroidKey = afwTable.Point2DKey(schema["centroid"])
|
for refObj in refList:
|
refObj.set(centroidKey, wcs.skyToPixel(refObj.get(coordKey)))
|
I hope this can remain Python code, but admit that the extra speed of C++ might come in handy in some cases. In any case, once the function is in a central location we can implement it in C++ if we find the need.
Where do we stand with this old ticket? Is it still useful to keep around?