Skip to content

v2.8.0

Choose a tag to compare

@Nkzono99 Nkzono99 released this 09 Apr 08:56
· 112 commits to main since this release

What's New

リモート実行 (Dask Actor) — 実験的

HPC の計算ノードにデータ処理を委譲し、ローカルにはプロット画像や小さなスライスだけを返すリモート実行基盤を追加しました。

  • emout server start/stop/status CLI: ターミナルでサーバーを起動し、複数スクリプトから共有
  • 自動接続: ~/.emout/server.json があれば connect() 不要。コード変更なしでリモート実行
  • データ転送モード: 2D/1D スライスだけ転送し、ローカル matplotlib で描画。plt.axhline() 等の追記が自由
  • remote_figure() コンテキスト: plt.xlabel() 等も含めて全操作をサーバーで実行、PNG bytes だけ返る
  • backtrace 連携: 重い計算はサーバーで 1 回実行・メモリ保持。パラメータを変えて何度でも再レンダリング
  • InfiniBand IP 自動検出: カーネルの ARPHRD_INFINIBAND 定数で判定(インタフェース名に依存しない)
# サーバー起動後は、コードの書き方はローカルと全く同じ
data.phisp[-1, :, 100, :].plot()    # 自動的にリモート実行
plt.xlabel("x [m]")                 # ローカルで追記可能

with remote_figure():               # 全操作をサーバーで実行
    result.vxvz.plot(cmap="plasma")
    plt.title("速度分布")

Data2d ショートカットメソッド

  • data.cmap(): plot(mode='cm') と等価
  • data.contour(): plot(mode='cont') と等価
  • 既存の plot(mode=...) はそのまま動作(後方互換)

BoundaryCollection.plot()

  • data.boundaries.plot() で境界メッシュを単体で 3D 表示
  • フィールドなしで境界形状を確認したい場合に便利

コード品質改善(3 ラウンド Codex レビュー)

  • cbargs={} 等の mutable default argument を全廃
  • raise Exceptionraise ValueError + f-string メッセージに統一
  • except Exception → 具体的な例外型 (KeyError, ImportError 等) に絞り込み
  • type(x) == intisinstance(x, int) に修正
  • griddata_series.pyclose() ループバグを修正

壊れていたテストの修復

  • test_toml_converter.py: 削除 API のテストを除去、TomlData / load_toml のみに再構成
  • test_toml_integration.py: toml2inp 未インストール環境では skipif で安全にスキップ
  • --ignore フラグ不要に。pytest -q だけで全テストが走る

ドキュメント

  • README を 674 行 → 176 行にスリム化。詳細は guide ページへリンク
  • 境界メッシュガイド (boundaries.md / boundaries.ja.md) を新設
  • リモート実行ガイド (distributed.md / distributed.ja.md) を新設
  • 全 guide ページに Lang: [English] | [日本語] 切替を追加
  • CLAUDE.mdAGENTS.md を同一内容に統合
  • 後方互換ルール(DeprecationWarning shim 推奨)を §6 に明文化

テストベースライン

  • 177 passed (toml2inp 未インストール環境では 158 passed / 19 skipped)