File: C:/Users/fred/anaconda3/Lib/site-packages/astropy/modeling/tests/test_units_mapping.py
# Licensed under a 3-clause BSD style license - see LICENSE.rst
import numpy as np
import pytest
from astropy import units as u
from astropy.modeling.core import Model, fix_inputs
from astropy.modeling.models import Polynomial1D
class _ExampleModel(Model):
n_inputs = 1
n_outputs = 1
def __init__(self):
self._input_units = {"x": u.m}
self._return_units = {"y": u.m / u.s}
super().__init__()
def evaluate(self, input):
return input / u.Quantity(1, u.s)
def _models_with_units():
m1 = _ExampleModel() & _ExampleModel()
m2 = _ExampleModel() + _ExampleModel()
p = Polynomial1D(1)
p._input_units = {"x": u.m / u.s}
p._return_units = {"y": u.m / u.s}
m3 = _ExampleModel() | p
m4 = fix_inputs(m1, {"x0": 1})
m5 = fix_inputs(m1, {0: 1})
models = [m1, m2, m3, m4, m5]
input_units = [
{"x0": u.Unit("m"), "x1": u.Unit("m")},
{"x": u.Unit("m")},
{"x": u.Unit("m")},
{"x1": u.Unit("m")},
{"x1": u.Unit("m")},
]
return_units = [
{"y0": u.Unit("m / s"), "y1": u.Unit("m / s")},
{"y": u.Unit("m / s")},
{"y": u.Unit("m / s")},
{"y0": u.Unit("m / s"), "y1": u.Unit("m / s")},
{"y0": u.Unit("m / s"), "y1": u.Unit("m / s")},
]
return np.array([models, input_units, return_units], dtype=object).T
@pytest.mark.parametrize(("model", "input_units", "return_units"), _models_with_units())
def test_input_units(model, input_units, return_units):
"""Test input_units on various compound models."""
assert model.input_units == input_units
assert model.return_units == return_units