Source code for asdf_astropy.converters.coordinates.spectral_coord
from asdf.extension import Converter
from asdf.tags.core.ndarray import NDArrayType
[docs]
class SpectralCoordConverter(Converter):
tags = ("tag:astropy.org:astropy/coordinates/spectralcoord-*",)
types = ("astropy.coordinates.spectral_coordinate.SpectralCoord",)
[docs]
def to_yaml_tree(self, obj, tag, ctx):
node = {
"value": obj.value,
"unit": obj.unit,
}
if obj.observer is not None:
node["observer"] = obj.observer
if obj.target is not None:
node["target"] = obj.target
return node
[docs]
def from_yaml_tree(self, node, tag, ctx):
from astropy.coordinates.spectral_coordinate import SpectralCoord
value = node["value"]
if isinstance(value, NDArrayType):
# TODO: Why doesn't NDArrayType work? This needs some research
# and documentation. See similar note in QuantityConverter.
value = value._make_array()
return SpectralCoord(
value,
unit=node["unit"],
observer=node.get("observer"),
target=node.get("target"),
)