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