LSSTApplications
20.0.0
LSSTDataManagementBasePackage
|
A C++ and Python shim around a subset of Starlink AST a library for handling world coordinate systems in astronomy.
For detailed documentation of AST see http://starlink.eao.hawaii.edu/devdocs/sun211.htx/sun211.html.
The focus of astshim is on support for spatial mappings for use by LSST. Thus few of AST's functions that support time, spectra and tables have yet been wrapped. The python wrapper uses pybind11.
FrameDict
which is a FrameSet
that can reference frames by domain name.Mapping::applyForward
and Mapping::applyInverse
methods transform single points or lists of points. These replace AST's astTran<X>
functions and no invert
flag is supported. There are three versions of each method:Object.getClassName
returns "SeriesMap" or "ParallelMap" for all compound maps.astDecompose
:std::invalid_argument
before calling AST code.std::runtime_error
.set
, set<X>
and get<X>
are hidden; instead each class has explicit accessors for its attributes, such as Object::getID. Mappings are mostly immutable, so they have getters, but no setters beyond a few generic setters from Object. SlaMap and TimeMap both violate immutability by having add
methods; if this is a problem we can replace the add
methods with constructor arguments. Frames are mutable, so all frame-specific attributes have setters as well as getters.astAnnul
, astBegin
, astClone
, astDelete
, astEnd
, and astExport
.AST__BAD
replaced with nan
.getClass()
because the latter sounds like a class, not a string, and Python doesn't allow class
as a property name.astAddFrame(AST__ALLFRAMES, map, frame)
function, because the AST function does two very different things.astGetFitsCI
and astSetFitsCI
), because that data type is not supported by standard C++.get<X>
and put<X>
work with both scalars and vectors (implementing astMapGet0<X>
, astMapGet1<X>
, astMapPut0<X>
and astMapPut1<X>
).append
and replace
are used to alter values in existing entries (implementing astMapPutElem...<X>
).Many portions of AST have not yet been wrapped. Here are some highlights:
astRebin<X>
, astRebinSeq<X>
and astResample<X>
astDBSPecFrame
astFluxFrame
astRegion
, astRemoveRegions
and other region supportastPlot
and other plotting supportastSpecFluxFrame
astStcsChan
astTable
and other table supportisInstance(Object const & obj)
static methods on all classes.The Python interface could present a more dict-like view of KeyMap and FitsChan, as pyast does.