GW Python エコシステムにおける GWexpy の位置付け#
GWexpy は GWpy の上に構築された拡張ライブラリです。GWpy プロジェクトの公式構成要素ではなく、探索・パラメータ推定・検出器運用のパイプラインでもありません。このページでは、GWexpy が重力波 Python スタックのどの層を担い、周辺パッケージとどう関係し、どの領域を意図的に他のツールへ委ねているかを説明します。
「このオブジェクトを他のライブラリへどう変換するか」が知りたい場合は Interop / 変換ガイド を参照してください。「どのファイル形式を読めるか」が知りたい場合は ファイル I/O 対応形式ガイド を参照してください。このページはスコープと位置付けについてのものであり、API の選択方法ではありません。
このページの読み方#
以下の各プロジェクトは 5 つの分類のいずれかに置かれています。分類は GWexpy との関係を表すもので、相手プロジェクトの品質や成熟度を表すものではありません。表内の並び順は主題別であり、利用統計に基づく順位付けではありません。
分類 |
意味 |
|---|---|
基盤 |
GWexpy がその上に構築され、オブジェクトモデルを拡張している |
補完 |
隣接する課題を解決しており、GWexpy と重複せずに併用できる |
参考 |
コードを流用せず、API 設計やデータ意味論を参考にしている |
連携候補 |
変換または reader/writer による橋渡しが計画中、あるいは検討に値する |
対象外 |
そのプロジェクトに意図的に委ねており、GWexpy は置き換えを目指さない |
重力波 Python スタックの層構造#
層 |
主にその層を担うパッケージ |
|---|---|
標準的な GW データオブジェクトと基盤 API |
GWpy |
行列・マルチチャンネル・実験向けの解析コンテナ |
GWexpy |
信号処理と制御系 |
spicypy |
HDF5 でのデータ準備・アーカイブ・ML 向けデータセット |
GWDama |
detector characterization、サマリーページ、veto ワークフロー |
gwdetchar, gwsumm, gwvet, hveto |
トリガー生成、探索、パラメータ推定 |
pyomicron, PyCBC, bilby, pygwb, pycWB |
データ探索とアクセス |
gwosc, gwdatafind |
干渉計のシミュレーションと設計 |
Finesse, pygwinc, Differometor |
GWexpy は GWpy の 1 つ上、ワークフロー・パイプライン系パッケージの 1 つ下の層に位置します。ワークフロー自体を統括するのではなく、それらが利用できるコンテナ・I/O・解析プリミティブを提供します。
GWpy・GWexpy・spicypy・GWDama の比較#
この 4 つを並べて比較するのは、最も混同されやすい組み合わせだからです。4 つとも Python であり、4 つとも重力波の時系列データを扱い、そのうち 3 つが GWpy と関係しています。
GWpy |
GWexpy |
spicypy |
GWDama |
|
|---|---|---|---|---|
一言でいうと |
GW 検出器データ解析の基盤ライブラリ |
実験データ・マルチチャンネル解析向けの GWpy 互換拡張 |
GWpy に信号処理・制御系の手法を加えたもの |
HDF5 を中心とするデータマネージャ兼データ準備パッケージ |
主な層 |
基盤 API と標準コンテナ |
解析コンテナ、ワークフロープリミティブ、interop |
信号・スペクトル・制御の手法 |
データ取得・保存・準備 |
中心となるデータ構造 |
|
|
GWpy の series オブジェクトに信号処理・制御の手法を追加したもの |
|
設計方針 |
GW 検出器データのための標準的な Python インターフェース |
GWpy のオブジェクトモデルを保ちつつ、行列・バッチ・I/O・実験ワークフローを追加する |
GWpy オブジェクトと python-control 的ワークフローを橋渡しする |
raw データと処理済みデータを属性付きの HDF5 グループへ整理する |
永続化 |
標準的な GW データ形式を読む |
多形式の I/O と interop。単一の正準バックエンドを持たない |
I/O は副次的で、信号処理・制御の例が中心 |
HDF5 が正準形式 |
GWexpy から見た関係 |
基盤 |
— |
補完的であり、API 設計の参考対象 |
部分的に重複しつつ、参考対象かつ連携候補 |
ライセンス |
GPL-3.0 |
MIT |
Apache-2.0 |
MIT |
各プロジェクトとの関係#
プロジェクト |
分類 |
理由 |
|---|---|---|
基盤 |
GWexpy はそのコンテナを継承・拡張しており、GWpy 自体からも読める状態を保つことを目指している |
|
補完、参考 |
同じく GWpy 拡張だが、コンテナや I/O ではなく信号処理と制御系が中心。LPSD、Daniell's method、huddle test の API は設計上の参考になる |
|
参考、連携候補 |
マルチチャンネル I/O と前処理で GWexpy と重なるが、スコープはデータ準備と HDF5 アーカイブ。階層グループと属性の規約は参考になり、その HDF5 プロダクトを読むのは妥当な橋渡しである |
|
対象外 |
運用寄りの detector characterization とレポート生成のワークフロー。GWexpy はこれらが利用できる解析プリミティブを提供するが、オペレータ向けワークフローの再現は目指さない |
|
対象外、連携候補 |
トリガー生成と HTCondor による統括は対象外。生成されたトリガーテーブルの読み書きは対象外ではない |
|
対象外、連携候補 |
探索・推定のパイプライン。GWexpy はこれらが生成・消費するデータプロダクトと接続し、PyCBC および LAL の series 変換は既に提供している |
|
補完 |
データ探索とアクセス。GWexpy が包むのではなく、GWpy 経由およびサンプルの中で使う |
|
参考 |
コマンドライン型の PEM カップリング関数生成ツール。カップリングプロダクトのスキーマと測定ステータスフラグはドメイン上の参考になるが、コードは一切流用しない。下記のライセンス注記を参照 |
|
Finesse, pygwinc, Differometor |
補完、連携候補 |
干渉計のシミュレーション・設計ツール。GWexpy はシミュレータを再実装するのではなく、その周波数領域の出力を自身のコンテナへ変換する |
GWexpy の特徴#
設計上 GWpy 互換。新しいコンテナは可能な限り GWpy オブジェクトとして読める状態を保つため、書き換えなしに両者の間でコードを移動できます。
行列ネイティブな解析。
TimeSeriesMatrix・FrequencySeriesMatrix・SpectrogramMatrixは、マルチチャンネルデータを辞書に対するループではなく第一級の形状として扱います。型付きの解析結果。カップリング・応答・フィッティングのワークフローは、素の配列やその場しのぎの辞書ではなく専用の結果オブジェクトを返します。
単一の正準バックエンドを持たない広い I/O。HDF5・NetCDF4・Zarr・GWF・DTT XML・ndscope HDF5、および計測器固有のロガー形式はいずれも対応経路であり、どれか一つを正準の保存形式として特別扱いしません。
汎用の source→target カップリング。カップリングと射影は特定の検出器の命名規約ではなく、source と target という言葉で表現されます。
ライブラリ優先かつ Notebook 向き。公開されるのは Python のオブジェクトと関数であり、コマンドラインインターフェースは主たる成果物ではなく薄い補助層です。
GWexpy が意図的に行わないこと#
これらを core の外に置くことで、コンテナ・I/O・interop の各層を汎用に保てます。GWexpy は次のものを提供することを目指しません。
検出器やサイトに固有の運用パイプライン
オペレータ向けの HTML レポートやサマリーページ
HTCondor やサイト全体のジョブ統括
veto の生成や探索パイプライン
トリガージェネレータ
特定の検出器のチャンネル規約を名前に固定した API
これらが必要なワークフローでは、解析プリミティブに GWexpy を使い、その周囲のワークフローには専用ツールを使うのが想定される形です。
相互運用の状況#
変換 API の正となるカタログは Interop / 変換ガイド、読み書き形式の正となる一覧は ファイル I/O 対応形式ガイド です。以下の表は、エコシステム単位での橋渡しが現時点でどこまで存在するかだけを記録しています。
状況 |
プロジェクト |
|---|---|
実装済み |
GWpy, LALSuite, PyCBC, Finesse, pygwinc, PySpice, ObsPy, python-control, SimPEG, MTH5, scikit-rf, ROOT, ndscope HDF5, DTT / DiagGUI XML、および interop ガイドに掲載されたその他の対象 |
計画中 |
GWDama の HDF5 プロダクト、Differometor の設計・感度出力 |
ドキュメントのみ |
spicypy, gwdetchar, gwsumm, gwvet, hveto, pyomicron, pemcoupling |
「ドキュメントのみ」とは、関係をここで説明するだけで変換 API を計画していないという意味です。これらのツールが GWpy オブジェクトを扱う場面では、GWpy が既に共通語であり、アダプタは不要です。
第三者コードとライセンス#
GWexpy は上記のいくつかのプロジェクトから設計上のアイデア、プロダクトの意味論、API の規約を取り入れていますが、コードは複製しません。ライセンスはパッケージの classifier や README のバッジではなく、そのプロジェクト自身のリポジトリにある LICENSE ファイルを読んで確認します。LICENSE ファイルを同梱していないプロジェクトは all rights reserved とみなし、一切流用しません。
プロジェクトごとの方針は、リポジトリ内の docs/developers/LICENSES_THIRD_PARTY.md にコントリビュータ向けとして記録されています。