![]() |
| サイトマップ | |
|
データの可視化と分析を通じて得られる潜在的価値を真の意味で引き出すことは、あらゆる科学者やエンジニアにとって最も重要な課題です。Tecplot 360 の Python API 「PyTecplot」には、自動化に関するパワフルな機能が備わっていますが、Jupyter Notebook と組み合わせて使うことによって、この可能性をワンランクアップさせることができます。この記事では、Jupyter Notebook を PyTecplot スクリプトの開発に役立てる3つの方法を紹介します。PyTecplot に熟練したユーザーであるか初心者であるかは問いません。2つのツールを組み合わせることで、お持ちのデータの可視化と分析がより一層パワフルなものになります!
Jupyter Notebook は、PyTecplot スクリプトの開発やデバッグに最もふさわしい選択肢のひとつです!Notebook は「セル」ベースのアーキテクチャで設計されており、開発者は、スニペットを利用してコードを個別に実行したり、その結果をリアルタイムに確認することができます。以下に示すのは、簡単な PyTecplot コードを Jupyter Notebook のセルに記述したスニペットです:
from os import path import tecplot as tp tp.session.connect() tp.new_layout() datafile = path.join( tp.session.tecplot_examples_directory(), "OneraM6wing", "OneraM6_SU2_RANS.plt" ) dataset = tp.data.load_tecplot(datafile)
Connecting to Tecplot 360 TecUtil Server on: tcp://localhost:7600 Connection established.
このセルの上部は、「接続 (connected)」モードで実行します。つまり、Tecplot 360 の GUI に接続して、Tecplot 360 のインストールディレクトリにあるサンプルデータセット Onera wing を開きます。Tecplot 360 側で PyTecplot Connections を有効にしておくと (Scripting > PyTecplot Connections... > Accept Connections)、コードの実行にともなって Tecplot 360 のプロットがリアルタイムに更新されます。翼の表面をあらわすこのデータは、デフォルトで以下のようにプロットされます:
繰り返しの多いコーディング作業も Jupyter Notebook のこうした双方向性によって円滑に進めることができます。プロトタイプの作成から反復サイクルの実施がよりいっそう促進されるわけです。Tecplot 360 との接続が確立しているあいだは、作成した PyTecplot コードのインプットに対する視覚的なフィードバックが即座に得られることも大きなメリットです。
なお、視覚的なフィードバックを即座に取得できるのは Tecplot 360 の GUI との接続だけが唯一の手段ではありません。ipython を使用することで、Jupyter Notebook 内でプロットを視覚化することも可能です。
tp.extension.ipython.show(tp.active_frame(), 800)
PyTecplot を Jupyter Notebook で活用する事例につきましては、この video の ~10:20 をご覧ください。
出力結果、中間変数、データ構造を Jupyter Notebook を使ってステップ毎に視覚化することで、開発者は自身で作成した PyTecplot コードの内部的な動作について貴重な洞察を得ることが可能となり、エラーの特定やパフォーマンスの最適化を容易に行うことができます。さらに、ひとつのドキュメント内でコードとリッチテキスト、可視化、コメントを混在させることがことができるため(具体例はこちらをご覧ください)、開発者自身で思考プロセスを文書化し、作業内容を容易に再検討・共有することができます。PyTecplot Jupyter Notebooks に関するその他のサンプルにつきましては、GitHub の Tecplot Jupyter Notebooks フォルダをご覧ください。
Jupyter Notebook を "client-server" セットアップで実行すると、リモートサーバーに配備されたパワフルなリソースやデータを、お使いのローカルマシンのブラウザを通じて手軽に活用できるようになります。この機能は、とりわけ、大規模なデータセットを取り扱う場合や、必要な演算処理がローカルハードウェアの性能を超えるような場合に役立ちます。可視化、分析、その他の演算処理はリモートサーバーのリソースを介してすべて行われます。なお、視覚的に得られる計算結果は静止画像のみである点に注意してください。
client-server 接続をセットアップする際は、セキュリティが重要である点に注意してください。お使いのデータやサーバーを保護するために、使用する接続環境がセキュアなものであることを確認し、認証メカニズムの使用を検討してください。
リモートサーバーのセットアップに関する詳細は下記のリンク先をご覧ください:
Jupyter Notebook では、各種 Python パッケージと統合することで様々な用途の環境が提供されます。例えば ipywidget を使えば、インタラクティブで動的な Notebook を作成できます。ipywidgets は、Jupyter Notebooks の中にインタラクティブなウィジェットを直接追加できるライブラリです。これを使うことで、高度なユーザーインターフェースを通じてデータの探索や可視化を動的に行うことができるようになります。例えば、Onera wing データセットを読み込むところまで進みましたが、ipywidgets モジュールの interact 関数をインポートすることによって、プロットの等値面をアクティブにして、その translucency (半透明度) を設定するといった処理を続行することができます。
from ipywidgets import widgets, interact from tecplot.constant import * plot = tp.active_frame().plot() plot.show_isosurfaces = True iso = plot.isosurface(0) iso.effects.use_translucency = True iso.effects.surface_translucency = 50
以下のセルでは、等値面の変数グループを設定する関数をセットアップし、Jupyter Notebook にプロットのイメージを描画する処理を記述します。その後、インタラクティブなスライダーを作成する interact() を使用して、等値面変数の値を動的に更新できるようにします:
def set_iso_value(Mach): plot.contour(0).variable = dataset.variable("Mach") iso.isosurface_selection = IsoSurfaceSelection.OneSpecificValue iso.isosurface_values = Mach tp.extension.ipython.show(tp.active_frame(), 800) interact( set_iso_value, Mach=(dataset.variable("Mach").min(), dataset.variable("Mach").max(), 0.1), ) # NOTE: If the slider widget doesn't show up below, restart Jupyter Notebooks after running # this command on the command line: # # > jupyter nbextension enable --py widgetsnbextension # # or you can install the ipywidgets module to Python using: # # > pip install ipywidgets # # You may also need to install pillow: # > pip install pillow
interactive(children=(FloatSlider(value=0.7000000000000001, description='Mach', max=1.575580001), Output()), _…
<function __main__.set_iso_value(Mach)>
ここにある Jupyter Notebook をダウンロードして、スライダーの操作を実際にお試しください!上記セルのコードを実行したときのサンプル動画を以下に示します:
Jupyter Notebook に ipywidget やその他の Python ライブラリを統合することで、ユーザーの関心の赴くままにデータを探索したり、各種パラメーターを操作できるインタラクティブな Notebook を作成できるようになります。ユーザーはこうした動的な視覚化とインタラクティブなコントロールを通じて、新たな発見を導き出すことができるようになります。
Pytecplot と Jupyter Notebooks を組み合わせれば、PyTecplot によるスクリプト開発を促進する共生関係が生まれます。Jupyter Notebook は、PyTecplot スクリプトの開発やデバッグを支援するとともに、リモート経由でのリソースへのアクセスやデータの可視化、ipywidget 等のパッケージを使ったインタラクティブなスクリプト作成に役立ちます。 早速、今日お試しください!
Tips:
> "/Applications/Tecplot 360 EX 2023 R1/bin/tec360-env" -- jupyter notebook