Source code for asdf_astropy.converters.transform.tabular
from .core import TransformConverterBase
__all__ = ["TabularConverter"]
[docs]
class TabularConverter(TransformConverterBase):
"""
ASDF support for serializing tabular models.
"""
tags = ("tag:stsci.edu:asdf/transform/tabular-*",)
types = (
"astropy.modeling.tabular.Tabular1D",
"astropy.modeling.tabular.Tabular2D",
)
[docs]
def to_yaml_tree_transform(self, model, tag, ctx):
node = {}
if model.fill_value is not None:
node["fill_value"] = model.fill_value
node["lookup_table"] = model.lookup_table
node["points"] = list(model.points)
node["method"] = str(model.method)
node["bounds_error"] = model.bounds_error
return node
[docs]
def from_yaml_tree_transform(self, node, tag, ctx):
from astropy.modeling import tabular
lookup_table = node.pop("lookup_table")
dim = lookup_table.ndim
fill_value = node.pop("fill_value", None)
if dim == 1:
points = (node["points"][0],)
model = tabular.Tabular1D(
points=points,
lookup_table=lookup_table,
method=node["method"],
bounds_error=node["bounds_error"],
fill_value=fill_value,
)
elif dim == 2: # noqa: PLR2004
points = tuple(node["points"])
model = tabular.Tabular2D(
points=points,
lookup_table=lookup_table,
method=node["method"],
bounds_error=node["bounds_error"],
fill_value=fill_value,
)
else:
msg = "tabular models with ndim > 2 are not supported "
raise NotImplementedError(msg)
return model