custom_model

astropy.modeling.custom_model(*args, fit_deriv=None, **kwargs)[ソース]

ユーザが定義した関数からモデルを作成する.モデルの入力とパラメータは関数のパラメータから推定される.

関数としても、装飾符としても使用されてもよい。この2つの用法の例については、以下を参照されたい。

注釈

すべてのモデルパラメータは,モデル関数にデフォルト値を持つキーワードパラメータとして定義しなければならない.使用 None このパラメータがデフォルト値を有することを望まない場合は、デフォルトパラメータ値とします。

パラメータ
func機能

モデルの関数を定義する.N個の位置パラメータを受け取るべきです N モデルの次元(モデル中の引数数)と任意の数のキーワードパラメータ(パラメータ)である.これは、モデルの値(通常は配列であるが、スカラー入力のスカラーであってもよい)を返さなければならない。これは evaluate 方法です。

fit_deriv関数、オプション

モデルのヤコビ導関数の関数を定義する.つまり…。 パラメータ モデルの一部ですこれは同じパラメータ署名を持つべきです func しかしながら、シーケンスの各要素は、対応するパラメータに対する微分係数であるシーケンスに戻るべきである。これは fit_deriv() 方法です。

実例.

正弦波モデル関数をカスタム1 Dモデルとして定義する:

>>> from astropy.modeling.models import custom_model
>>> import numpy as np
>>> def sine_model(x, amplitude=1., frequency=1.):
...     return amplitude * np.sin(2 * np.pi * frequency * x)
>>> def sine_deriv(x, amplitude=1., frequency=1.):
...     return 2 * np.pi * amplitude * np.cos(2 * np.pi * frequency * x)
>>> SineModel = custom_model(sine_model, fit_deriv=sine_deriv)

カスタムモデルのインスタンスを作成し、評価する:

>>> model = SineModel()
>>> model(0.25)
1.0

このモデル例は現在,通常の星体モデルのように用いることができる.

次の例は、2 D Moffat関数モデルを示し、文書文字列のサポートも示している(この例は、派生関数を含むこともできるが、簡単のため省略している):

>>> @custom_model
... def Moffat2D(x, y, amplitude=1.0, x_0=0.0, y_0=0.0, gamma=1.0,
...            alpha=1.0):
...     """Two dimensional Moffat function."""
...     rr_gg = ((x - x_0) ** 2 + (y - y_0) ** 2) / gamma ** 2
...     return amplitude * (1 + rr_gg) ** (-alpha)
...
>>> print(Moffat2D.__doc__)
Two dimensional Moffat function.
>>> model = Moffat2D()
>>> model(1, 1)  
0.3333333333333333