Skip to main content

Emses output manager

Project description

Lang: 日本語 | English

emout

PyPI version Python Docs CodeQL License: MIT

EMSES シミュレーション出力の解析・可視化 Python ライブラリ

emout は:

  • .h5 グリッド出力 + plasma.inp / plasma.toml を 1 行で読み込む Facade
  • データ次元から自動で最適なビューを選ぶ 1D / 2D / 3D プロット
  • !!key dx=...,to_c=... を解析して生成する EMSES ⇄ SI 単位変換器(30+ の物理量に対応)
  • EMSES の finbound 境界を Python オブジェクトとして扱える境界 API


インストール

pip install emout

# 3D 可視化(PyVista)を使う場合
pip install "emout[pyvista]"

クイックスタート

import emout

data = emout.Emout("output_dir")

# 最終ステップの電位を xz 平面(y=ny/2)でプロット — これだけで SI 単位付きカラーマップ
data.phisp[-1, :, data.inp.ny // 2, :].plot()

変数名は EMSES のファイル名から自動解決されます:

data.phisp          # 電位 (GridDataSeries — 時系列)
data.nd1p           # 種1 数密度
data.j1x            # 種1 電流密度 x成分
data.j1xy           # j1x + j1y 自動結合 → 2D ベクトル
data.j1xyz          # 3D ベクトル
data.icur, data.pbody  # テキスト出力 (pandas DataFrame)

スライスの軸順序は (t, z, y, x) です。


機能ガイド

各機能の詳しい使い方はユーザーガイドを参照してください。

機能 できること ガイド
プロット plot() / cmap() / contour() で 1D/2D プロット → プロット
アニメーション gifplot() で GIF/HTML 生成、複数パネルレイアウト → アニメーション
パラメータ data.inp.nx, data.toml.species[0].wp → パラメータ
単位変換 data.unit.v.reverse(1.0), data.phisp[-1].val_si → 単位変換
境界メッシュ data.boundaries.mesh(), plot_surfaces へのオーバーレイ → 境界メッシュ
3D (PyVista) plot3d(mode="box"/"stream"/"quiver") → クイックスタート
リモート実行 Dask Actor で計算ノードに処理を委譲、ローカルは画像だけ → リモート実行

代表的な使い方

プロット

data.phisp[-1, 100, :, :].plot()                       # 2D カラーマップ
data.phisp[-1, 100, :, :].contour()                     # 等高線
data.nd1p[-1, 100, :, :].plot(norm="log", vmin=1e-3)    # 対数スケール
data.j1xy[-1, 100, :, :].plot()                          # ストリームライン
data.phisp[-1, :, 32, 32].plot()                         # 1D プロファイル

アニメーション

data.phisp[:, 100, :, :].gifplot()                                  # Jupyter インライン
data.phisp[:, 100, :, :].gifplot(action="save", filename="out.gif") # GIF 保存

単位変換

data.unit.v.trans(1.0)       # SI → EMSES
data.phisp[-1].val_si        # 全 3D 配列を SI [V] で取得

境界メッシュ

data.boundaries[0].mesh()                   # 個別境界の MeshSurface3D
data.phisp[-1].plot_surfaces(               # フィールド上にオーバーレイ
    ax=ax, surfaces=data.boundaries,
)

粒子データ

p4 = data.p4                               # 種4
p4.vx[0].val_si.to_series().hist(bins=200)  # 速度分布
追加出力の結合 / 入出力パスの分離
# 継続出力の結合
data = emout.Emout("output_dir", ad="auto")

# 入力ファイルと出力ディレクトリを分離
data = emout.Emout(input_path="/path/to/plasma.toml", output_directory="output_dir")

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

HPC の計算ノードにデータ処理を委譲し、ログインノードにはプロット画像だけを返します。 コードの書き方はローカル実行と全く同じで、サーバーが起動していれば自動的にリモートになります。

# ターミナルでサーバーを起動(1 回だけ)
emout server start --partition gr20001a --memory 60G
# スクリプト / Jupyter — サーバーがあれば自動リモート、なければローカル
data.phisp[-1, :, 100, :].plot()    # 2D スライスだけ転送
plt.xlabel("x [m]")                 # ローカル matplotlib で追記可能

# 全操作をサーバーで実行(ローカルにはPNG画像のみ)
from emout.distributed import remote_figure

with remote_figure():
    data.phisp[-1, :, 100, :].plot()
    plt.axhline(y=50, color="red")
    plt.title("カスタムタイトル")

backtrace の重い計算もサーバーで実行し、可視化パラメータだけ変えて何度でも再描画できます。 → リモート実行ガイド

実験的機能(ポアソン方程式 / バックトレース)
# ポアソン方程式
from emout.utils import poisson
phi = poisson(rho, dx=dx, btypes=btypes, epsilon_0=cn.epsilon_0)

# バックトレース(要 vdist-solver-fortran)
result = data.backtrace.get_probabilities(x, y, z, vx, vy, vz, ispec=0)
result.vxvz.plot()

コントリビュート

バグ報告・機能提案・PR を歓迎します。

  • バグ / 質問: GitHub Issues に再現手順を添えて投稿してください
  • PR: main から作業ブランチを切り、pytest -q がグリーンの状態で送ってください
  • ドキュメント: README.md(日本語)と README.en.md(英語)は対応する形で維持されています。片方を更新したらもう片方にも反映してください

開発環境のセットアップやディレクトリ構成は AGENTS.md にまとまっています。


ライセンス

MIT License

リンク

Project details


Release history Release notifications | RSS feed

This version

2.8.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emout-2.8.0.tar.gz (139.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

emout-2.8.0-py3-none-any.whl (156.5 kB view details)

Uploaded Python 3

File details

Details for the file emout-2.8.0.tar.gz.

File metadata

  • Download URL: emout-2.8.0.tar.gz
  • Upload date:
  • Size: 139.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for emout-2.8.0.tar.gz
Algorithm Hash digest
SHA256 925a63f5a28b8105e5f5cc96cc3f7dcfb434c27278da5b274bcafdfec8d17f14
MD5 db32a5ec42ee01c0c4d3d33fd8046c2c
BLAKE2b-256 0d55629c05a8d8ad5a4277c941711a7d2a3ea343fc9e4ecaaa6a3dfec9bdc457

See more details on using hashes here.

File details

Details for the file emout-2.8.0-py3-none-any.whl.

File metadata

  • Download URL: emout-2.8.0-py3-none-any.whl
  • Upload date:
  • Size: 156.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for emout-2.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2a50b1b081af4646283794026521bd8bcddd4a0157442a9e70f64d06f8fd4396
MD5 bbf2f9d8f09713dad827adfbbae3fe56
BLAKE2b-256 fc8eaebfd01f91d3ef0500ece58b2d5a849ff966d17dd0932d86c16b560c9522

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page