1. ParaView の紹介
1.1. はじめに
ParaView は、オープンソースのマルチプラットフォーム科学データ分析および可視化ツールで、非常に大規模なデータセットの分析と可視化を可能にします。ParaView は、デスクトップやその他のアプリケーションでシームレスに利用できる分散アーキテクチャを備えた、汎用的なエンドユーザーアプリケーションです。 スクリプト作成(Pythonの使用)、Web表示(ParaViewWeb経由)、またはin-situ解析(Catalystを使用)など、さまざまなアプリケーション用のツールとライブラリのコレクションを備えた、拡張可能なフレームワークです。
ParaView は、並列データ処理とレンダリングを活用して、非常に大規模なデータセットのインタラクティブな可視化を可能にします。また、タイル型ディスプレイやヘッドトラッキング機能とワンドコントロール機能を備えた没入型3Dディスプレイなどの大型ディスプレイもサポートしています。
ParaView は、Pythonを使用したスクリプトとバッチ処理もサポートしています。付属のPythonモジュールを使用すると、インタラクティブアプリケーションによって公開されているほぼすべての機能やその他多くの機能を実行できるスクリプトを作成できます。
ParaView はオープンソースです(BSDライセンス、商用ソフトウェアに対応)。成功したオープンソースプロジェクトと同様に、ParaView はアクティブなユーザーおよび開発者コミュニティによってサポートされています。ツールとドキュメントの改善に役立つコードとこのユーザー・マニュアルの両方への貢献をいつでも歓迎します。
Did you know?
ParaViewプロジェクトは、Kitware Inc.とLANLの共同プロジェクトとして2000年に開始され、当初の資金は米国エネルギー省のASCIビューズ・プログラムとの3年間の契約により提供されました。最初のパブリックリリースである ParaView 0.6は、2002年10月に発表されました。
ParaView とは独立して、Kitwareは2001年12月にWebベースの可視化システムの開発を開始しました。このプロジェクトは、 US ARL から PVEE になりました。 PVEE は、ParaView のクライアント/サーバアーキテクチャの開発に大きく貢献しました。PVEE は、ParaView をベースにした最新のWeb可視化ソリューションであるParaViewWebの前身です。
Kitwareはプロジェクト開始以来、サンディア国立研究所、LANL、ARL、その他さまざまな学術機関や政府機関と協力して開発を続けてきました。今日もプロジェクトは順調に進んでいます!
2005年9月、Kitware、Sandia National Labs、CSimSoftの3社は、ユーザー・インターフェースをより使いやすいものに書き直し、定量分析フレームワークを開発することに重点を置いた、ParaView 3.0の開発を開始しました。「ParaView 3.0」 は2007年5月に発売されました。
1.1.1. 本ガイドについて
このユーザーズマニュアルは、ParaView アプリケーションを使用するためのガイドとして設計されています。これは、一般的なデータ可視化技術を一般的に理解しているユーザーを対象としています。スクリプトを書くためには、Python言語の知識が必要です。Pythonに慣れていない場合は、インターネット上にいくつかのチュートリアルやガイドがあります。
Did You Know?
本ガイドでは、これらの Did you know? ボックスを定期的に使用して、手元の話題に関連する追加情報を提供します。
Common Errors
Common Errors ブロックは、議論のトピックを扱う際に遭遇する可能性のある一般的な問題や複雑さを強調するために使用されます。
本書は、2巻に分けられます。1 章 から 8 章 は、 ユーザーガイドとして、 ParaView を用いたデータ分析と可視化の様々な側面を取り上げています。 1 章 から 11 章 は、 ユーザーマニュアルの章であり、UIの様々なコンポーネントやスクリプトAPIの詳細が記載されています。
1.1.2. ヘルプの入手
このガイドでは、 ParaView で一般的に使用されている機能のほとんどをカバーしています。 ParaView の柔軟性の高い、パイプラインベースのアーキテクチャは、多くの可能性を開きます。 このガイドで説明されていない機能を探している場合は、Wikiページ (http://paraview.org/Wiki/ParaView) またはフォーラム (https://discourse.paraview.org/categories) 、特に |FAQ| と |Tips and Tricks| のカテゴリを参照してください。 また、関連する |Support| カテゴリーでお気軽にお問い合わせください。
1.1.3. ソフトウェアの入手
ParaView はオープンソースです。The ParaView Guideで議論されている全ての機能の完全なソースコードは、ParaView のウェブサイト http://www.paraview.org からダウンロードすることができます。主要なプラットフォーム用のバイナリも提供しています。Linux、Mac OS X、Windows用のバイナリも提供しています。公式リリースのソースファイルとバイナリを入手できるだけでなく、毎晩のビルドをダウンロードすることで、ParaViewの活発な開発をフォローすることができます。
ソースファイルを使用した ParaView の構築方法の詳細は、このガイドの範囲を超えています。詳細は、ParaView gitlab (https://gitlab.kitware.com/paraview/paraview/-/blob/master/Documentation/dev/build.md) を参照してください。
1.2. ParaView による可視化の基礎

図 1.1 可視化モデル:プロセスオブジェクトA、B、およびCの入力および/または出力1つ以上のデータオブジェクト。データオブジェクトは、データを表し、データへのアクセスを提供します。プロセスオブジェクトはデータを操作します。オブジェクトA、B、Cは、それぞれソース、フィルタ、マッパーオブジェクトです。 [SML96]
可視化とは、生データを画像やレンダリングに変換して、データのより良い認知的理解を得るプロセスです。ParaView は、可視化とデータ処理のためのバックボーンを提供するために、VTK、Visualization Toolkitを使用しています。
VTKモデルは、データフローパラダイムに基づいています。 このパラダイムでは、データはアルゴリズムとして知られるモジュールによって各ステップで変換されるシステムを通して進みます。 アルゴリズムは、データからのクリッピング、スライシング、またはコンターの生成などの一般的な操作や、または導出された物理量の計算などが可能です。 アルゴリズムには、データを取り込むための入力ポートと、出力を生成するための出力ポートがあります。 システムにデータを取り込むプロデューサーが必要です。 これらは、入力ポートを持ちませんが、1つ以上の出力ポートを持つ単純なアルゴリズムです。 これらは ソース (sources) と呼ばれます。 ファイルからデータを読み取るリーダーは、このようなソースの例です。さらに、データをグラフィックスプリミティブに変換して、コンピュータ画面上でレンダリングしたり、別のファイルのディスクに保存したりできるようにするアルゴリズムもあります。これらのアルゴリズムは シンク(sinks) と呼ばれ、1つ以上の入力ポートを持ちますが、出力ポートは持ちません。入力ポートと出力ポートを持つ中間アルゴリズムは、フィルタ(filters) と呼ばれます。ソース、フィルタ、シンクを組み合わせることで柔軟なインフラストラクチャを実現し、アルゴリズムを接続して任意の複雑なタスクを実行するだけで、複雑な処理パイプラインを作成できます。
VTKのプログラミングモデルの詳細については、[SML96] を参照してください。
このように可視化パイプラインを見る方法は、ParaView のワークフローの中核にあります。リーダー(ソース)を作成することで、データをシステムに取り込みます。次に、フィルタを適用して、情報(等値線)を抽出して結果をビューに表示するか、ライター、つまりシンクを使用してデータをディスクに保存します。
ParaView には、計算科学の世界で一般的に使用される多数のファイル形式のリーダーが含まれています。さまざまなフィールドのデータをさまざまな特性で効率的に表現するために、VTKは ParaView が使用する豊富なデータモデルを提供します。 データモデルは、単にメモリ内のデータを表現する方法と考えることができます。 さまざまなデータ型については、3.1 章 で詳しく説明します。リーダーは、ファイルに含まれる情報を表すのに適したデータ型を生成します。ParaView では、データ型に基づいてフィルタを作成および適用し、データを変換できます。データをビューに表示して、イメージやレンダリングを生成することもできます。フィルタにはいくつかのタイプがあり、それぞれが異なる操作と処理タイプを実行するのと同様に、3Dサーフェスビュー、2Dバービュー、2Dラインビュー、平行座標ビューなどを含むさまざまなタイプのレンダリングを生成するためのビューがいくつかあります。
Did You Know?
Visualization Toolkit (VTK) は、3Dコンピューターグラフィックス、モデリング、画像処理、ボリュームレンダリング、科学的可視化、情報可視化用のオープンソースの無償ソフトウェアシステムです。VTKには、3Dインタラクションウィジェット、2次元および3次元アノテーション、並列コンピューティングの補助サポートも含まれます。
VTKは基本的にC++ツールキットとして実装されており、ユーザーはさまざまなオブジェクトを1つのアプリケーションに結合してアプリケーションを構築する必要があります。このシステムは、Python、Java、TclへのC++コアの自動ラッピングもサポートしているため、これらのプログラミング言語を使用してVTKアプリケーションを作成することもできます。VTKは、商用アプリケーション、研究開発、および ParaView、VisIt、VisTrails、Slicer、MayaVi、OsiriXなどの多くの高度な可視化アプリケーションの基盤として、世界中で使用されています。
1.3. ParaView 実行ファイル
ParaView には、目的の異なる複数の実行ファイルが付属しています。
1.3.1. paraview
これは、メインの ParaView グラフィカルユーザーインターフェイス(GUI)です。ほとんどの場合、ParaView を参照するときには、このアプリケーションについて説明しています。QtベースのクロスプラットフォームUIで、ParaView コンピューティング機能にアクセスできます。このガイドの主要部分は、このアプリケーションの理解と使用方法に特化しています。
1.3.2. pvpython
pvpython
は、Pythonスクリプトを実行するPythonインタプリタです。これはスクリプトを実行するための paraview
に相当するものと考えることができます。
1.3.3. pvbatch
pvpython
と同様に、pvbatch
は ParaView のPythonスクリプトを実行するPythonインタプリタでもあります。1つの違いは、pvpython
は対話型スクリプトを実行するためのものですが、pvbatch
はバッチ処理用に設計されていることです。また、MPI機能を使用してコンピュータリソース上で実行する場合は、pvbatch
を並列で実行できます。これについては、6.10 章 で詳しく説明します。
1.3.4. pvserver
リモート可視化では、この実行可能ファイルはすべてのデータ処理を実行するサーバを表し、場合によってはレンダリングも実行します。 paraview
を、HPCリソース上でリモートで実行されている pvserver
に接続できます。これにより、あたかもデスクトップ上でローカルに処理しているかのように、デスクトップからHPCリソースの可視化と分析を構築および制御できます。
1.3.5. pvdataserver
と pvrenderserver
これらは、pvserver
が2つの実行可能ファイルに分割されたものと考えることができます。1つはデータ処理部 pvdataserver
用、もう1つはレンダリング部 pvrenderserver
用です。これらを別々のプロセスに分割すると、データ処理とレンダリングを、2つのタスクに適した適切な計算機能を持つ別々のノード・セットで実行できます。pvserver
と同様に、paraview
は pvdataserver
-pvrenderserver
ペアに接続してリモート表示できます。特に明記されていない限り、このガイドのリモート表示またはクライアント/サーバー表示の説明は、pvserver
と pvdataserver
-pvrenderserver
の両方の構成に適用されます。
1.4. paraview
入門
1.4.1. paraview
グラフィカルユーザーインターフェース
paraview
は、ParaView アプリケーションのグラフィカルなフロントエンドです。UIは、任意の複雑さでデータ処理のパイプラインを簡単に作成できるように設計されています。UIには、パイプラインを検査および修正したり、処理パイプラインに影響するパラメータを変更したり、さまざまなデータ選択および検査アクションを実行してデータを検査したり、レンダリングを生成したりするためのパネルが用意されています。このガイドの後半では、UIのさまざまな側面について説明します。
まず、UIのさまざまなコンポーネントを見てみましょう。paraview
を初めて実行すると、 図 1.2 のようなものが表示されます。UIは、メニュー、ドッキング可能なパネル、ツールバー、ビューポート (アプリケーションウィンドウの中央部分) で構成されています。

図 1.2 paraview
アプリケーションウインドウ
メニューには、ファイルを開いたり保存したりするためのオプション(File メニュー)、元に戻す/やり直しのためのオプション(Edit メニュー)、トグルパネルのためのオプション、およびツールバーを表示するためのオプション(View メニュー)など、デスクトップアプリケーションで一般的なオプションの標準セットが用意されています。さらに、メニューを使用して、さまざまなタイプのテストデータセットを生成するソース(Sources メニュー)や、データを処理するための新しいフィルタ(Filters メニュー)を作成できます。Tools メニューでは、プラグインやお気に入りの管理など、paraview
の一部の高度な機能にアクセスできます。
パネルを使用すると、アプリケーションの状態を確認できます。たとえば、設定済みの可視化パイプライン( Pipeline Browser
)、使用中のメモリ( Memory Inspector
)、処理モジュールのパラメータまたはプロパティ( Properties
パネル)を検査できます。いくつかのパネルでは、表示される値を変更することもできます。たとえば、 Properties
パネルには、処理モジュールのパラメータが表示されるだけでなく、パラメータを変更することもできます。 いくつかのパネルはコンテキストに依存します。たとえば、 Properties
パネルは、 Pipeline Browser
でアクティブなモジュールを変更すると、選択したモジュールのパラメータが表示されるように変更されます。
ツールバーは、一般的な機能にすばやくアクセスできるように設計されています。ツールバーのいくつかのアクションには、メニューやパネルなど、他の場所からアクセスできます。パネルと同様に、一部のツールバーボタンはコンテキスト依存であり、選択したモジュールまたはビューに基づいて有効または無効になります。
ビューポートまたは ParaView ウィンドウの中央部分は、ParaView がデータから生成された結果をレンダリングする領域です。データを表示または表示できるコンテナは、views と呼ばれます。複数の異なるタイプのビューを作成することができ、そのすべてがこのビューポート領域にレイアウトされます。デフォルトでは、ParaView で最もよく使用されるビューの1つである3Dビューが作成されます。
1.4.2. 可視化プロセスの理解
アプリケーションインターフェイスの使い方をよりよく理解するために、データソースを作成してフィルタを適用するという簡単な例を考えてみましょう。
1.4.3. ソースを作成する
ParaView の可視化プロセスは、データをアプリケーションに取り込むことから始まります。さまざまなファイルフォーマットからデータを読み取る方法については、2 章 を参照してください。ParaView では、アプリケーションにデータを取り込むためにファイルを読み取るだけでなく、サンプルデータセットを生成できるデータソースのコレクションも提供しています。これらは、Sources メニューの下にあります。ソースを作成するには、Source メニューの任意の項目をクリックします。
Did You Know?
ほとんどのプラットフォーム(Mac OS X以外)では、任意のメニューの項目の上にカーソルを移動すると、アプリケーションウィンドウの左下隅にあるステータスバーに、その項目の簡単な説明が表示されます。
たとえば、Sources > Sphere をクリックすると、 図 1.3 に示すように、球サーフェスを生成するプロデューサアルゴリズムが作成されます。

図 1.3 paraview
の可視化: Step 1
次の点に注意してください。:
パイプラインモジュールが、ハイライト表示されているメニュー項目から派生した名前で
Pipeline Browser
パネルに追加されます。Properties
パネルには、ハイライト表示されたアイテム(この例では、Sphere1
)のプロパティを示すテキストが表示されるほか、Center
、Radius
などのパラメータ用のウィジェットも表示されます。Properties
パネルで、Apply
ボタンが有効になり強調表示されます。3Dビューは影響を受けません。このビューには現在、新しいものが表示またはレンダリングされていないためです。
何が起こったのか詳しく見てみましょう。Sources > Sphere をクリックすると、 1.2 章 では、球状サーフェスメッシュを生成できるソースのインスタンスを作成しました--これが Pipeline Browser
に反映されます。 このインスタンスは名前を受け取ります。この名前は、UIの他のコンポーネントだけでなく、Sphere1
と Pipeline Browser
がソースのこのインスタンスを参照するために使用します。ソースやフィルタなどのパイプラインモジュールには、モジュールの動作に影響を与えるパラメータを変更できます。これを プロパティ と呼びます。Properties
パネルにはこれらのプロパティが表示され、変更できます。 システムへのデータ取り込みには時間がかかるため、paraview
を使用すると、モジュールを実行する前、または実際の処理を実行してデータを取り込む前にプロパティを変更できます。このため、 Apply
ボタンが強調表示され、アプリケーションを続行する前にプロパティを受け入れる必要があることが示されます。システムにデータが入力されていないため、表示するものはありません。したがって、3Dビューは影響を受けません。
ここでは、 Sphere1
の全てのプロパティのデフォルト値で問題ないとします。次に、 Apply
ボタンをクリックします。
ここでは、 Sphere1
の全てのプロパティのデフォルト値で問題ないとします。次に、 Apply
ボタンをクリックします。

図 1.4 paraview
の可視化: Step 2.
次のようになります( 図 1.4 )。:
Apply
ボタンは、以前の無効/ハイライトされていない状態に戻ります。球面は、3Dビューでレンダリングされます。
Properties
パネルのDisplay
セクションに、新しいパラメータまたはプロパティが表示されるようになりました。特定のツールバーが更新され、
Solid Color
やSurface
などのテキストが含まれたツールバーが有効になったことがわかります。
Apply
をクリックして、paraview
に Properties
パネルに表示されるプロパティを適用するよう指示しました。新しいソース(またはフィルタ)が最初に適用されると、可能であれば、paraview
はパイプラインモジュールが現在のビューで生成するデータを自動的に表示します。 この場合、球ソースはサーフェスメッシュを生成し、3Dビューに表示されます。
ビューでのデータの表示方法を制御できるプロパティが、Display
セクションの Properties
パネルに表示されるようになりました。サーフェスカラー、レンダリングのタイプや表現、シェーディングパラメータなどは、この新しく更新されたセクションの下に表示されます。表示プロパティの詳細については、4 章 を参照してください。
一般的に使用されるプロパティの一部は、ツールバーでも複製されます。これらのプロパティには、サーフェスに色を付けるデータ配列と表示タイプが含まれます。これらは、一部の表示プロパティをすばやく変更できるようにするツールバーの変更です。
1.4.4. プロパティを変更する
球形メッシュの Radius
やその Center
など、Properties
パネルの Properties
セクションの下にあるプロパティなど、球体ソースのプロパティを変更すると、Apply
ボタンが再度強調表示されます。すべてのプロパティの変更が完了したら、Apply
をクリックして変更を適用します。変更が適用されると、paraview
は要求に応じて球ソースを再実行して新しいメッシュを生成します。ビューが自動的に更新され、新しい結果がレンダリングされます。
Properties
パネル(Representation
または Opacity
を含む)の Display
セクションの下のプロパティなど、球ソースの表示プロパティを変更しても、Apply
ボタンは影響を受けず、変更がすぐに適用されてビューが更新されます。
この背後にある理論的根拠は、通常、ソース(またはフィルタ)の実行はレンダリングよりも計算量が多くなるということです。ソース(またはフィルタ)プロパティを変更すると、そのアルゴリズムが再実行されますが、表示プロパティを変更しても、ほとんどの場合、更新されたグラフィックス状態で新しいレンダリングが開始されるだけです。
Did You Know?
データサイズが小さいワークフローの場合は、パイプラインモジュールのプロパティが変更された後でも、Apply
ボタンが自動的に適用されると便利です。これは、Edit > Settings メニューからアクセスできるアプリケーション設定ダイアログから変更できます。設定名は Auto Apply
です。Auto Apply
の状態は、ツールバーから ボタンを使用して変更することもできます。
1.4.5. フィルタを適用する
データフローパラダイムによると、パイプラインを作成するには フィルタを使用してデータを変換します。新しいデータソースを作成できる Sources メニューと同様に、Filters メニューでは、ParaView で使用できる多数のフィルタにアクセスできます。このメニューの項目を確認すると、一部が有効になり、一部が無効になります。sphereソースによって生成されたデータタイプで動作するフィルタは有効ですが、その他は無効です。有効なフィルタのいずれかをクリックすると、そのフィルタタイプの新しいインスタンスを作成できます。
Did You Know?
特定のフィルタが現在のソースで動作しない理由を調べるには、次の手順を実行します。 Filters メニューの無効になっている項目の上にマウスを移動するだけです。LinuxおよびWindows(OS Xではない)の場合、ステータスバーにそのフィルタが使用できない理由が簡単に説明されます。

たとえば、Filters > Shrink をクリックすると、各メッシュセルを固定係数で縮小するフィルタが作成されます。前述のとおり、球体ソースを作成すると、新しく作成されたフィルタに新しい名前 Shrink1
が付けられ、Pipeline Browser
で強調表示されます。Properties
パネルも更新され、この新しいフィルタのプロパティが表示されます。Apply
ボタンが強調表示され、フィルタのプロパティを受け入れてフィルタを実行し、結果をレンダリングできるように要求されます。Pipeline Browser
で Sphere1
と Shrink1
をクリックすると、選択したパイプラインモジュールの状態を反映した Properties
パネルとツールバーが更新されます。これは、ParaView の重要な概念です。アクティブパイプラインモジュールには、アクティブソース (active source) という概念があります。
以前のように Apply
をクリックすると、縮小フィルタが実行され、結果のデータセットが生成されて3Dビューに表示されます。paraview
は自動的に Sphere1
の結果を非表示にして、ビューに表示されないようにします。そうしないと、2つのデータセットがオーバーラップします。これは、各パイプラインモジュールの横にある Pipeline Browser
内の 目玉 アイコンの状態の変化に反映されます。目玉をクリックすると、パイプラインモジュールの結果を表示または非表示にできます。
この単純なワークフローは、ParaView のすべてのデータ分析と可視化の基礎を形成します。このプロセスでは、ソースとフィルタを作成し、それらのパラメータを変更し、生成された結果を1つまたは複数のビューに表示します。このガイドの残りの部分では、さまざまな種類のフィルタと、ユーザーが実行できるデータ処理について説明します。また、さまざまな2Dおよび3Dの可視化結果を作成し、データを検査してドリルダウンを行うのに役立つさまざまなタイプのビューについても説明します。
Common Errors
初心者の方は、ソースやフィルタを作成した後やプロパティを変更した後に、 Apply
ボタンを押すのを忘れてしまうことがよくあります。これは、ParaView ワークフローを初めて使用する新規ユーザーにとって最も一般的な落とし穴の一つです。
1.5. pvpython
入門
本節では pvpython
について説明しますが、ここで説明する内容はすべて pvbatch
にも適用できます。並列処理について説明するまでは、2つの実行可能ファイルの唯一の違いは、pvpython
はコマンドを入力できる対話型シェルを提供するのに対し、pvbatch
はコマンドライン引数にPythonスクリプトが指定されていることを想定している点です。
1.5.1. pvpython
スクリプトインターフェイス
ParaView には、GUIを使用して実行できるタスクを実行するためのスクリプトを記述するためのスクリプトインターフェイスが用意されています。このスクリプトインターフェイスには、Pythonを介してアクセスできます。Pythonは、そのシンプルさと機能によって科学界で広く使用されているインタプリタ型プログラミング言語です。Pythonに関する実用的な知識があれば、高度な機能を持つスクリプトを作成するのに役立ちますが、ParaView スクリプティングについてのこのマニュアルのほとんどの説明は、Pythonに関する知識がなくても理解できるはずです。
ParaView は、さまざまな機能を公開する複数のPythonモジュールを含む paraview
パッケージを提供します。主なスクリプトインターフェイスは、simple
モジュールによって提供されます。
pvpython
を起動すると、ターミナルウィンドウに次のプロンプトが表示されます(プラットフォーム固有の違いがいくつかあります)。
Python 2.7.5 (default, Sep 2 2013, 05:24:04)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information
>>>
このプロンプトでコマンドを入力すると、ParaView がコマンドを実行します。ParaView スクリプトAPIを使用するには、最初に paraview
パッケージから simple
モジュールを次のようにインポートする必要があります。
>>> from paraview.simple import *
Common Errors
コマンドを実行するたびに、Enter
キーまたは Return
キーを押してください。どのPythonインタプリタも、Enter
がヒットするまでコマンドを実行しません。
モジュールが正しくロードされていれば、pvpython
は次のコマンドのプロンプトを表示します。
>>> from paraview.simple import *
>>>
これは、paraview
が起動されたときと同じ状態(今のところ無視できる違いがいくつかあります)と考えることができます。アプリケーションがデータを取り込み、処理を開始する準備ができました。
1.5.2. 可視化プロセスの理解
1.4.2 章 で行ったのと同じ使用事例を見て、ワークフローを理解してみましょう。
1.5.3. ソースを作成する
paraview
では、Sources メニューを使用してデータソースを作成しました。スクリプト環境では、これは単に作成するソースの名前を入力することに対応します。
>>> Sphere()
これにより、デフォルトのプロパティセットを持つ球ソースが作成されます。paraview
と同様に、新しいパイプラインモジュールが作成されるとすぐに アクティブソース になります。
ビューにアクティブソースを表示するには、次の操作を実行します。:
>>> Show()
>>> Render()
Show
を呼び出すと表示が準備され、Render
を呼び出すとレンダリングが実行されます。さらに、新しいウィンドウがポップアップし、結果が表示されます ( 図 1.5)。これは、UIで Apply
をクリックした後の状態に似ています。

図 1.5 Pythonコードの結果を表示するウィンドウ
1.5.4. プロパティを変更する
球ソースのプロパティを変更するには、SetProperties
関数を使用します。
# Set a single property on the active source.
>>> SetProperties(Radius=1.0)
# You can also set multiple properties.
>>> SetProperties(Center=[1, 0, 0], StartTheta=100)
Properties
パネルと同様に、SetProperties
はアクティブソースに影響します。アクティブソース上のプロパティの現在の値を照会するには、GetProperty
を使用します。
>>> radius = GetProperty("Radius")
>>> print(radius)
1.0
>>> center = GetProperty("Center")
>>> print(center)
[1.0, 0.0, 0.0]
SetProperties
関数と GetProperty
関数は、Properties
パネルの Properties
セクションと同じ関数を提供します--これらの関数を使用すると、アクティブソースのパイプラインモジュールプロパティを設定して内観することができます。 同様に、パネルの Display
セクションまたは表示プロパティには、SetDisplayProperties
関数と GetDisplayProperty
関数があります。
>>> SetDisplayProperties(Opacity=0.5)
>>> GetDisplayProperty("Opacity")
0.5
Common Errors
SetProperties
および SetDisplayProperties
関数のプロパティ名は二重引用符で囲まれていませんが、GetProperty
および GetDisplayProperty
メソッドのプロパティ名は二重引用符で囲まれています。
paraview
では、Apply
をクリックするか、表示プロパティを変更するたびに、UIによってビューが自動的に再レンダリングされます。スクリプト環境では、再レンダリングして更新された結果を確認するたびに、Render
関数を呼び出して手動で実行する必要があります。
.
1.5.5. フィルタを適用する
ソースの作成と同様に、フィルタを適用するには、名前でフィルタを作成するだけです。
# Create the `Shrink' filter and connect it to the active source
# which is the `Sphere' instance.
>>> Shrink()
# As soon as the Shrink filter is created, it will now become the new active
# source. All methods acting on active source now act on this filter instance
# and not the Sphere instance created earlier.
# Show the resulting data and render it.
>>> Show()
>>> Render()
上記のスクリプトを試してみると、期待したとおりの結果が得られないことがわかります。何らかの理由で、縮小されたセルは表示されません。paraview
では、applyをクリックした後に、新しく作成されたフィルタの入力データセットを自動的に隠すことができました。スクリプティングインターフェイスでは、このような操作はユーザーの責任です。球体ソースをビューから非表示にする必要があります。Show
のカウンター部分である Hide
メソッドを使うと、アクティブソースを隠すことができます。しかし、ここで問題が発生します。縮小フィルタを作成したときに、アクティブソースを縮小インスタンスに変更しました。幸い、これまで説明してきたすべての関数は、オプションの最初の引数を取ることができます。これは、操作するソースまたはフィルタのインスタンスです。 指定すると、アクティブソースの代わりにそのインスタンスが使用されます。 解決方法は次のとおりです。
# Get the input property for the active source, i.e. the input for the shrink.
>>> shrinksInput = GetProperty("Input")
# This is indeed the sphere instance we created earlier.
>>> print(shrinksInput)
<paraview.servermanager.Sphere object at 0x11d731e90>
# Hide the sphere instance explicitly.
>>> Hide(shrinksInput)
# Re-render the result.
>>> Render()
あるいは、GetActiveSource
関数や SetActiveSource
関数を使って、アクティブソースを取得/設定することもできます。
>>> shrinkInstance = GetActiveSource()
>>> print(shrinkInstance)
<paraview.servermanager.Shrink object at 0x11d731ed0>
# Get the input property for the active source, i.e. the input
# for the shrink.
>>> sphereInstance = GetProperty("Input")
# This is indeed the sphere instance we created earlier.
>>> print(sphereInstance)
<paraview.servermanager.Sphere object at 0x11d731e90>
# Change active source to sphere and hide it.
>>> SetActiveSource(sphereInstance)
>>> Hide()
# Now restore the active source back to the shrink instance.
>>> SetActiveSource(shrinkInstance)
# Re-render the result
>>> Render()
結果を 図 1.6 に示します。

図 1.6 縮小フィルタを適用した後のPythonコードの結果を示すウィンドウ
SetActiveSource
は、Pipeline Browser
で強調表示されているパイプラインモジュールを、別のモジュールをクリックして変更するのと同じ効果があります。
1.5.6. 代替方法
ここでは、Pythonやオブジェクト指向プログラミングに精通している人のために、前節で行ったのと同様のことを行う別の方法を示します。前節のアプローチを続けるのはまったく問題ありません。
>>> from paraview.simple import *
>>> sphereInstance = Sphere()
>>> sphereInstance.Radius = 1.0
>>> sphereInstance.Center[1] = 1.0
>>> print(sphereInstance.Center)
[0.0, 1.0, 0.0]
>>> sphereDisplay = Show(sphereInstance)
>>> view = Render()
>>> sphereDisplay.Opacity = 0.5
# Render function can take in an optional view argument, otherwise it
# will simply use the active view.
>>> Render(view)
>>> shrinkInstance = Shrink(Input=sphereInstance,
ShrinkFactor=1.0)
>>> print(shrinkInstance.ShrinkFactor)
1.0
>>> Hide(sphereInstance)
>>> shrinkDisplay = Show(shrinkInstance)
>>> Render()
1.5.7. パイプラインを更新する
paraview
の Properties
パネルでプロパティを変更すると、 Apply
をクリックするまでアルゴリズムが再実行されないことに気付きました。実際には、Apply
は、処理パイプラインの実行または更新を実際にトリガーしているものではありません。すると、Apply
によってパイプラインモジュールのパラメータが更新され、ビューがレンダリングされます。パイプラインモジュールの出力がビューに表示されている場合、またはその下流に接続されているフィルタの出力がビューに表示されている場合、ParaView はレンダリングされたデータが古いものであると判断し、パイプラインの再実行を要求します。これは、パイプラインモジュール(または下流のフィルタ)がビューに表示されない場合、ParaView にはパイプラインを再実行する理由がなく、パイプラインモジュールは更新されないことを意味します。後でこのモジュールをビューに表示すると、ParaView が自動的に更新され、パイプラインが実行されます。これはしばしば demand-driven pipeline execution(需要主導型パイプライン実行) と呼ばれます。これにより、不要なモジュールの実行を回避できます。
paraview
では、アプリケーションがパイプライン更新を自動的に管理するため、これに気付かなくても済みます。pvpython
でも、スクリプトがビューにレンダリングを生成している場合、Render
を呼び出すことを忘れない限り、これに気付くことはありません。ただし、変換されたデータセットを生成したり、データ特性を決定したりするためのスクリプトを記述することもできます。このような場合、ビューを作成することはないので、プロパティを何度変更しても、パイプラインの更新は表示されません。
したがって、UpdatePipeline
関数を使用する必要があります。 UpdatePipeline
は、アクティブソース(または、アクティブソースまでのみ。つまり、その下流にあるすべてのソースが更新されなくなるまで)に接続されているパイプラインを更新します。
>>> from paraview.simple import *
>>> sphere = Sphere()
# Print the bounds for the data produced by sphere.
>>> print(sphere.GetDataInformation().GetBounds())
(1e+299, -1e+299, 1e+299, -1e+299, 1e+299, -1e+299)
# The bounds are invalid -- no data has been produced yet.
# Update the pipeline explicitly on the active source.
>>> UpdatePipeline()
# Alternative way of doing the same but specifying the source
# to update explicitly.
>>> UpdatePipeline(proxy=sphere)
# Let's check the bounds again.
>>> sphere.GetDataInformation().GetBounds()
(-0.48746395111083984, 0.48746395111083984, -0.48746395111083984, 0.48746395111083984, -0.5, 0.5)
# If we call UpdatePipeline() again, this will have no effect since
# the pipeline hasn't been modified, so there's no need to re-execute.
>>> UpdatePipeline()
>>> sphere.GetDataInformation().GetBounds()
(-0.48746395111083984, 0.48746395111083984, -0.48746395111083984, 0.48746395111083984, -0.5, 0.5)
# Now let's change a property.
>>> sphere.Radius = 10
# The bounds won't change since the pipeline hasn't re-executed.
>>> sphere.GetDataInformation().GetBounds()
(-0.48746395111083984, 0.48746395111083984, -0.48746395111083984, 0.48746395111083984, -0.5, 0.5)
# Let's update and see:
>>> UpdatePipeline()
>>> sphere.GetDataInformation().GetBounds()
(-9.749279022216797, 9.749279022216797, -9.749279022216797, 9.749279022216797, -10.0, 10.0)
詳細は、3.3 章 の sphere.GetDataInformation
APIで見てみましょう。
時間データセット(temporal datasets)の場合、UpdatePipeline
には、パイプラインを更新しなければならない時間を表す時間引数が入ります。
# To update to time 10.0:
>>> UpdatePipeline(10.0)
# Alternative way of doing the same:
>>> UpdatePipeline(time=10.0)
# If not using the active source:
>>> UpdatePipeline(10.0, source)
>>> UpdatePipeline(time=10.0, proxy=source)
1.6. paraview
でのスクリプト記述
1.6.1. Python Shell
paraview
アプリケーションは内部シェルへのアクセスも提供します。このシェルでは、pvpython
とまったく同じようにPythonコマンドとスクリプトを入力できます。GUIでPythonシェルにアクセスするには、View > Python Shell メニューオプションを使用します。pvpython
と全く同じプロンプトでダイアログがポップアップします。前節のコマンドをこのシェルに入力してみてください。各コマンドを入力すると、各コマンドの実行後にユーザインタフェースが更新されます。たとえば、球のソースインスタンスを作成すると、Pipeline Browser
に表示されます。アクティブソースを変更すると、Pipeline Browser
とその他のUIコンポーネントが更新され、変更が反映されます。プロパティまたは表示プロパティを変更すると、Properties
パネルも更新され、変更が反映されます。

図 1.7 paraview
の Python Shell
は、スクリプトへのアクセスを提供します。
Did You Know?
paraview
の Python Shell
は、関数とインスタンスメソッドの自動補完をサポートします。何らかのコマンド( 図 1.7 に示すように)を部分的に入力した後、Tab
キーを押してみてください。
1.6.2. スクリプトのトレースアクション
このガイドでは、ParaView のPython APIの概要を説明します。ただし、GUIで実行できる特定のアクションやアクションのシーケンスを完了する方法を知りたい場合は、代わりにPythonスクリプトを使用します。これを実現するために、paraview
はPythonスクリプトとしてUIでのアクションのトレースをサポートしています。Tools > Start Trace をクリックしてトレースを開始します。paraview
は、すべてのアクション(少なくともスクリプト作成に関連するものは)を監視するモードに入ります。ソースやフィルタを作成したり、データファイルを開いたり、プロパティを変更して Apply
をクリックしたり、3Dシーンを操作したり、スクリーンショットを保存したりするたびに、アクションが監視されます。スクリプトを作成する一連のアクションが完了したら、Tools > Stop Trace をクリックします。paraview
は生成されたトレースを含むエディターウィンドウをポップアップ表示します。これは、実行したアクションに相当するPythonスクリプトです。これをバッチ処理に使用するスクリプトとして保存できるようになりました。