ScalarField
継承: FieldBase, Array4D, AxisApiMixin, StatisticalMethodsMixin, GwpyArray
明示的なドメインメタデータを持つ4次元スカラー場クラスです。軸構造は常に (axis0, x, y, z) を保持し、スライスしても軸は削除されず長さ1のまま残ります。時間/周波数と位置/波数のドメインを軸ごとに保持し、FFT操作後もドメインと単位の整合性を検証します。
特徴
明示的なドメイン保持:
axis0_domain ∈ {time, frequency}と空間軸のspace_domain ∈ {real, k}を明示的に保持。物理整合性を保つスライス: インデクシング操作を行っても4次元構造が維持され、軸メタデータが欠落しません。
単位とドメインの検証: コンストラクタおよび FFT 操作後にドメインと単位の整合性を自動検証。
信号処理機能: PSD、コヒーレンス、相互相関などの解析機能を内蔵。
主要メソッド
FFT 操作
正規化や符号の定義などの数学的詳細は、FFTの仕様とコンベンション を参照してください。
fft_time(nfft=None)
時間軸の FFT を実行し、ドメインを frequency に更新。GWpy TimeSeries.fft() と同じ正規化(rfft/nfft + 非DC/非Nyquistの倍増)を適用。
ifft_time(nout=None)
fft_time の逆操作。axis0_domain='time' に戻し、保存された _axis0_offset を用いて時間軸を正確に復元。
fft_space(axes=None, n=None)
空間軸に対して符号付き両側 FFT を実行。ドメインを real → k に、軸名を x → kx などに更新。波数は \(k = 2\pi/\lambda\) として計算。
ifft_space(axes=None, n=None)
k ドメインの空間軸を実空間に戻し、real ドメインを復元。
信号処理(インスタンスメソッド)
filter(*args, **kwargs)
時間軸(axis 0)に対してデジタルフィルタを適用します。gwpy.signal.filter_design で設計したフィルタを受け取ります。デフォルトでは位相歪みを防ぐため filtfilt を使用します。
resample(rate, **kwargs)
フィールドを時間軸方向にリサンプリングします。内部的に scipy.signal.resample を使用し、すべての軸メタデータと単位を保持します。
信号処理解析 (High-level API)
以下の関数が gwexpy.fields から利用可能です:
compute_psd(field, point_or_region, ...): 指定した空間点または領域での Welch PSD 推定。coherence_map(field, ref_point, ...): 基準点と断面内の各点とのコヒーレンスマップ。compute_xcorr(field, point_a, point_b, ...): 2点間の相互相関関数。time_delay_map(field, ref_point, ...): 相関に基づく推定遅延マップの作成。
デモデータ生成
make_demo_scalar_field(...): 汎用的な4Dデモフィールドの生成。make_propagating_gaussian(...): 伝播するガウス波パケットのシミュレーション。make_sinusoidal_wave(...): 平面波のシミュレーション。
スライス操作
ScalarField は、インデクシング操作を行っても常に4次元構造を維持します。これはNumPy配列やGWpyの標準的な挙動とは異なります。
詳細は [スライス操作ガイド] を参照してください。
コレクション
複数の ScalarField を扱う場合は gwexpy.fields.FieldList / FieldDict を利用してください。