2. データを読み込む

可視化パイプラインでは、データソースは処理と可視化のためにデータをシステムに取り込みます。 Sphere ソース(paraviewSources メニューからアクセスできます)などのソースは、処理するデータセットをプログラムで作成します。別の種類のデータソースとして、リーダーがあります。ディスクファイルやその他のデータベースに書き込まれたデータを読み取り、ParaView に読み込んで処理することができます。ParaView には、一般的に使用される科学データ形式のいくつかを読み取ることができるリーダーが含まれています。また、新しいファイル形式や独自のファイル形式のサポートを追加するプラグインを作成することもできます。

ParaView には、いくつかのサンプルデータセットが用意されています。いくつかのタイプのデータファイルを含むアーカイブは、ダウンロードページ https://www.paraview.org/download のデータセクションからダウンロードできます。

2.1. paraview でデータファイルを開く

paraview でデータファイルを開くには、 Open File ダイアログを使用します。このダイアログは、 File > Open メニューから、または Main Controls ツールバーの OpenFileIcon ボタンを使用してアクセスできます。このダイアログを開くには、キーボードショートカット CTRL + O (または + O )を使用することもできます。

../_images/OpenFileDialog.png

図 2.1 データ(その他)ファイルを開くために使用される paraview での Open File ダイアログ

Open File ダイアログは、データ処理ノード上のファイルシステムを閲覧できます。このことは、リモート表示に ParaView を使用する場合に明らかになります。このダイアログボックスのUI要素には、現在のディレクトリへの移動 のようなものは、新しいディレクトリの作成|CTRL| + N (または + N ) 、ディレクトリ間の移動のための Alt + のように標準的なシステムショートカットで行うことが出来ますが、いくつか注意すべき点があります。

../_images/FavoritesButtonsFileDialog.png
  • Favorites (お気に入り)パネルには、ホームディレクトリやデスクトップなど、プラットフォーム固有の共通の場所が表示されます。お気に入りのディレクトリは、その上にあるボタンでカスタマイズすることができます。ボタンはそれぞれ、カレントディレクトリをお気に入りに追加、カレントディレクトリをお気に入りから削除、すべてのお気に入りをシステムのデフォルトにリセットします。お気に入りに登録するディレクトリを変更するには、右クリックのコンテキストメニューを使う方法もあります。メインリストの任意のディレクトリを右クリックすると、そのディレクトリをお気に入りに追加するためのオプションを含むメニューが表示されます。また、お気に入りリストの中のお気に入りを右クリックすると、削除するためのオプションが表示されます。

  • Recent Directories ペインには、最近使用したディレクトリがいくつか表示されます。

データセットを含むディレクトリを参照し、ファイルを選択して Ok をクリックするか、ファイルをダブルクリックして開きます。CTRL (または )キーを使用して、複数のファイルを選択することもできます。これにより、選択した各ファイルが個別に開きます

ファイルリストを右クリックすると、何を右クリックしたかに応じていくつかのオプションが表示されます。

../_images/ContextMenuFileDialog.png
  • Show Hidden Files は常に表示されており、チェックすることで隠しファイルや隠しディレクトリを表示することができます。

  • Open in file explorer も常に存在し、右クリックで選択されたディレクトリをシステムのファイルエクスプローラーで開くか、ファイルや何も選択されていない場合はカレントディレクトリを開きます。

  • ファイルやディレクトリを選択すると、Rename というオプションが追加されます。

  • フォルダを選択すると、Add to favorites オプションが追加され、選択したディレクトリが左側の Favorites ペインに追加されます。

  • 空のディレクトリを選択すると、 Delete empty directory というオプションが表示されます。

ファイルを開くと、paraview は選択されたファイルの拡張子に基づいて、そのファイルに適した種類の読み込みインスタンスを作成します。リーダーは、 1 章 で作成したソースに似た、単純に別のパイプラインモジュールになります。これ以降のワークフローは、1.4.2 章 で説明したものと同じになります。必要に応じてリーダーのプロパティを調整し、 Apply をクリックします。 paraview はファイルからデータを読み込み、ビューに表示します。

CTRL (または )キーを使用して複数のファイルを選択した場合、paraview は複数のリーダーモジュールを作成します。 Apply をクリックすると、すべてのリーダーが実行され、そのデータがビューに表示されます。

../_images/OpenFileGroupSelect.png
../_images/OpenFileMultiSelect.png

図 2.2 Open File ダイアログを使用して、一時的な一連のファイルを選択したり (top) 、複数のファイルを選択して個別に開くことができます(bottom)。

Did you know?

Apply ボタンを1回押して複数のリーダーに対する変更を受け付ける機能は、ソースやフィルタなど、ほかのパイプラインモジュールにも適用されます。一般に、パイプライン内の複数のモジュールのプロパティを変更し、 Apply をクリックすると、一度にすべての変更を受け入れることができます。この動作は、 Settings ダイアログで上書きできます。

2.1.1. 選択したファイル形式に応じたリーダー選択

../_images/FileDialogFilter.png

図 2.3 ファイルダイアログ "Files of type" で、表示するファイルをフィルタリングしたり、リーダーの選択方法を変更することができます。

ファイルを選択する際、"Files of type" フィールド (図 2.3) の現在のカテゴリによって、リーダーの選択方法が変わります。

  • "Supported Files" の値が選択されている場合、ファイルの種類に応じて1つのリーダーしか使用できない場合は、自動的に選択されます。複数のリーダーを使用できる場合は、どのリーダーを使用するかを選択するための "Open Data With..." ダイアログ(図 2.4)が表示されます。 "Set reader as default" ボタンをクリックすると、複数のリーダーで開くことができるファイルに、リーダーのパターンの1つがマッチしたときに、自動的にそのリーダーを使用することができます。デフォルトとして設定されたリーダーは、そのパターンにマッチしたファイルに対して自動的に使用されます。

../_images/OpenDataWithDialog.png

図 2.4 Open Data With... ダイアログが表示され、複数のリーダーが利用可能なファイルの場合、使用するリーダーを手動で選択することができます。

  • "All Files" が選択されている場合は、既存のすべてのリーダーで同じダイアログが表示されます。しかし、間違ったリーダーを選択した場合には、リーダーモジュールをインスタンス化したときか、 Apply ボタンを押した後にエラーメッセージが表示されます。どちらの場合でも、リーダーモジュールを削除して、もう一度ファイルを開いてみて、今度は別のリーダーを選ぶことができます。 "Set reader as default" をクリックすると、このリーダーに使用するカスタムパターンを設定するためのラインエディットが表示されます(図 2.5)。これは標準的なワイルドカードパターンであり、スペースで区切ることで複数のパターンを使用することができます。

../_images/DefineCustomPatternDialog.png

図 2.5 このリーダーをデフォルトで使用するために、設定に追加するパターンを定義する入力です。

  • 特定のリーダー(例えば "PNG Image Files")を選択すると、他のリーダーが利用可能な場合や、"Default Reader Details" で設定されたパターンに一致するファイルであっても、常にこのリーダーが自動的に使用されます。

paraview 内のエラーメッセージは Output Messages ウィンドウ(図 2.6)に表示されます。 View > Output Messages メニューからアクセスできます。 新しいエラーメッセージが出るたびに、paraview は自動的にこのウィンドウをポップオープンし、一番上に表示します。このウィンドウは、他のユーザインタフェース要素を覆い隠すことなく表示できるように、メインウィンドウにアタッチまたはドッキングできます。

../_images/OutputMessagesWindow.png

図 2.6 Output Messages ウィンドウは、アプリケーションによって発生したエラー、警告、その他のメッセージを表示するために使用されます。

デフォルトのリーダー設定は、「Edit」->「Settings」メニューの「Miscellaneous」タブ(図 2.7)で確認・変更することができます。

../_images/MiscellaneousSettings.png

図 2.7 リーダーのデフォルト設定

2.1.2. 時系列ファイルの処理

科学的シミュレーションで作成されたデータセットのほとんどは、時間的なもの(時系列データ)です。 ファイル形式によって、この情報がファイルに保存される方法が異なります。 複数のタイムステップを同じファイルに保存できるファイル形式もありますが、一連のファイルとして保存できるファイル形式もあります。

図 2.2 に示すように、Open File ダイアログでは、ファイル系列が自動的に検出され、グループ化された要素として表示されます。一連のファイルをロードするには、グループを選択し、 Ok をクリックします。連続した1つのファイルを通常のファイルとして開くこともできます。これを行うには、ファイルグループを開き、開くファイルを選択します。

paraview は、ファイル系列を示すために使用される一般的なファイル命名パターンのいくつかを自動的に検出します。 次のものがあります。:

fooN.vtk

fooN.vtk

Nfoo.vtk

foo.vtk.N

foo_N.vtk

foo.N.vtk

N.foo.vtk

foo.vtksN

ここで、foo は任意のファイル名、N は数字列(任意の数の先行ゼロを持つ)、vtk は任意の拡張子です。

2.1.3. 時間の取扱い

データセットをファイル形式または時間をネイティブサポートするファイル形式で開くと、paraview が自動的にアニメーションを設定して、VCR Controls ツールバー(図 2.8)の pqVcrPlay32 ボタンを使用してデータセット内の各タイムステップを再生できるようにします。 このアニメーションは変更または修正できます。 詳細については、 7 章 を参照してください。

../_images/VCRControlsToolbar.png

図 2.8 アニメーションを操作するための VCR Controls ツールバー

2.1.4. 以前に開いたファイルを再度開く

paraview は最後に開かれたファイル(またはファイルシリーズ)を記憶します。 単に File > Recent Files メニューを使うだけです。paraview は、拡張子が不明なファイルや、複数のリーダーを選択できる場合に選択したリーダータイプも記憶しています。

2.1.5. コマンドラインオプションを使用してファイルを開く

paraview には、起動時にデータセットを開くために使用できるコマンドラインオプションが用意されています。

> paraview --data=.../ParaViewData/Data/can.ex2

これは、can.ex2データファイルを Open File ダイアログから開くことと同じです。 同じ一連のフォローアップアクションが発生します。 例えば、paraview はファイルのリーダーを探し、その読み込みを作成し、Apply を押すのを待ちます。

一連のファイルを開くには、ファイル名シーケンスの数字を . で置き換えます。たとえば、 my0.vtk, my1.vtk ... myN.vtk という名前のファイル・シリーズを開くには、my..vtk と入力します。

> paraview --data=.../ParaViewData/Data/my..vtk

2.1.6. リーダーの一般的なプロパティ

ParaView では、ファイル形式ごとに異なるリーダーの実装が使用されます。 これらはそれぞれ、データの読み取り方法をカスタマイズするために使用できるさまざまなプロパティを備えており、ファイル形式自体の機能や特定のリーダーの実装によって大きく異なる可能性があります。 リーダーで一般的に利用可能なプロパティのいくつかを見てみましょう。

2.1.6.1. データ配列選択

../_images/ArraySelectionWidget.png

図 2.9 データファイルからロードする配列を選択するための配列選択ウィジェット

リーダーで最も一般的なプロパティの1つに、ロードするデータ配列(セル中心、点中心、またはその他(該当する場合))を選択できるプロパティがあります。多くの場合、可視化で使用することがわかっているデータ配列のみをロードすることで、メモリと処理時間が節約されます。これは、データ配列を読み込む必要がなく、パイプライン内のフィルタで処理する必要がないためです。

Did you know?

paraview のデフォルト動作を変更して、使用可能なすべてのデータ配列をロードするには、以下の Settings/Properties Panel Options/Advanced 下にある Load All Variables チェックボックスを選択します。

../_images/AdvancedSettings.png

ロードする配列を選択するためのユーザーインタフェースは、配列の名前のリストと、その配列をロードするかどうかを示すチェックボックスだけです(図 2.9)。このウィジェットでは、CellDataIconNodalDataIcon などのアイコンを使用して、配列がセル中心かポイント中心かを示すことがよくあります

最初に配列の選択を解除したが、可視化パイプラインを設定しているときに、そのデータ配列が必要であることがわかった場合は、リーダーの Properties ページにいつでも戻ることができます。そのためには、リーダーを Pipeline Browser でアクティブにしてから、配列の選択を変更します。ParaView は、リーダーに設定された処理パイプラインをこの新しいデータ配列で自動的に再実行します。

Common Errors

変更を有効にするには、配列の選択を変更した後に Apply (または Auto Apply )をクリックしてください。

データ配列のリストが非常に大きくなり、探している配列を見つけるのが面倒になることがあります。このような状況に対応するために、paraview はリストを検索するメカニズムを提供します。ウィジェット内をクリックして focus を取得します。次に CTRL + F (または + F )と入力して検索ウィジェットを取得します。検索するテキストを入力します。一致する行が強調表示されます(図 2.10)。

../_images/SearchInLists.png

図 2.10 paraview で大規模なリストを検索するには、CTRL + F を使用します。

Did you know?

配列選択ウィジェット内の項目を検索する機能は、paraview UI内の他のリストおよびツリーウィジェットにも適用されます。リスト、テーブル、またはツリー形式で多数のエントリを含むウィジェットを表示する場合は、必ず CTRL + F (または + F)を使用してください。

2.2. pvpython でデータファイルを開く

スクリプトインターフェイスを使用してデータファイルを開くために、ParaView には OpenDataFile 関数が用意されています。

>>> reader = OpenDataFile(".../ParaViewData/Data/can.ex2")
>>> if reader:
...   print("Success")
... else:
...   print("Failed")
...

OpenDataFile は、paraview のように、ファイル拡張子に基づいて適切なリーダーを決定しようとします。リーダーが決定されない場合、None が返されます。しかし、複数のリーダーがファイルを開くことができる場合、OpenDataFile は単に最初のリーダーを選択します。特定のリーダーを明示的に作成する場合は、他のソースやフィルタと同様に、常にその名前でリーダーを作成できます。

>>> reader = ExodusIIReader(FileName=".../ParaViewData/Data/can.ex2")

作成されたリーダーとそこで使用可能なプロパティに関する情報を調べるには、help 関数を使用します。

>>> reader = ExodusIIReader(FileName=".../ParaViewData/Data/can.ex2")
>>> help(reader)
Help on ExodusIIReader in module paraview.servermanager object:

class ExodusIIReader(ExodusIIReaderProxy)
 |  The Exodus reader loads
 |  Exodus II files and produces an unstructured grid output.
 |  The default file extensions are .g, .e, .ex2, .ex2v2,
 |  .exo, .gen, .exoII, .exii, .0, .00, .000, and .0000. The
 |  file format is described fully at:
 |  http://endo.sandia.gov/SEACAS/Documentation/exodusII.pdf.
 |  ...
 |
 |  -----------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  AnimateVibrations
 |      If this flag is on and HasModeShapes is also on, then
 |      this reader will report a continuous time range [0,1] and
 |      animate the displacements in a periodic sinusoid. If this
 |      flag is off and HasModeShapes is on, this reader ignores
 |      time. This flag has no effect if HasModeShapes is off.
 |
 |  ApplyDisplacements
 |      Geometric locations can include displacements. When this
 |      option is on, the nodal positions are 'displaced' by the
 |      standard exodus displacement vector. If displacements are
 |      turned 'off', the user can explicitly add them by applying
 |      a warp filter.
 |  ...

Did you know?

help 関数を使用すると、任意のソースまたはフィルタインスタンスで使用可能なプロパティに関する情報を取得できます。プロパティを一覧表示するだけでなく、それらがパイプラインモジュールに与える影響についての情報も提供します。help は関数でも使用できます。例えば:

>>> help(OpenDataFile)

Help on function OpenDataFile in module paraview.simple:

OpenDataFile(filename, \*\*extraArgs)
    Creates a reader to read the given file, if possible.
    This uses extension matching to determine the best reader
    possible. If a reader cannot be identified, then this
    returns None.

2.2.1. 時系列ファイルの処理

paraview とは異なり、pvpython はファイル系列を自動的に検出してロードしません。一連のファイル名を明示的にリストし、それを OpenDataFile コールに渡す必要があります。

# Create a list with the names of all the files in the file series in
# correct order.
>>> files = [".../Data/multicomb_0.vts",
             ".../Data/multicomb_1.vts",
             ".../Data/multicomb_2.vts"]
>>> reader = OpenDataFile(files)

2.2.2. 時間の取扱い

paraview と同様に、時系列または複数のタイムステップを持つファイルを開くと、pvpython は自動的にアニメーションを設定して、タイムステップを再生します。

>>> files = [".../Data/multicomb_0.vts",
             ".../Data/multicomb_1.vts",
             ".../Data/multicomb_2.vts"]
>>> reader = OpenDataFile(files)
>>> Show()
>>> Render()

# Get access to the animation scene.
>>> scene = GetAnimationScene()
# Now you use the API on the scene when doing things such as playing
# the animation, stepping through it, etc.

# This will simply play through the animation once and stop. Watch
# the rendered view after you hit `Enter.'
>>> scene.Play()

2.2.3. リーダーの一般的なプロパティ

2.2.3.1. データ配列選択

ポイントデータ配列、セルデータ配列、データブロックなど、ファイルから読み込む対象を制御できるリーダーのプロパティの場合、paraview2.1.6.1 章 に示すように選択ウィジェットを使用します。同様に、pvpython には、使用可能なオプションを判断して選択/選択解除できるAPIが用意されています。

このような選択を可能にするプロパティの名前は、リーダー自体によって異なります。よく分からない場合は、paraview のトレース機能(1.6.2 章)を使用してください。help (2.2 章)を使うこともできます。

ExodusIIReader には、ロードする点データ配列の選択に使用できる PointVariables プロパティがあります。これを例にしてみましょう。

# Open an ExodusII data file.
>>> reader = OpenDataFile(".../Data/can.ex2")

# Alternatively, you can explicitly create the reader instance as:
>>> reader = ExodusIIReader(FileName = ".../Data/can.ex2")

# To query/print the current status for `PointVariables' property,
# we do what we would have done for any other property:
>>> print(GetProperty("PointVariables"))
['DISPL', 'VEL', 'ACCL']

# An alternative way of doing the same is as follows:
>>> print(reader.PointVariables)
['DISPL', 'VEL', 'ACCL']

# To set the property, simply set it to list containing the names to
# enable, e.g., if we want to read only the 'DISPL' array, we do
# the following:
>>> SetProperties(PointVariables=['DISPL'])

# Or using the alternative way for doing the same:
>>> reader.PointVariables = ['DISPL']

# Now, the new value for PointVariables is:
>>> print(reader.PointVariables)
['DISPL']

# To determine the array available, use:
>>> print(reader.PointVariables.Available)
['DISPL', 'VEL', 'ACCL']
# These are the arrays available in the file.

PointVariables を変更すると、プロパティの値だけが変更されます。リーダーは、Render を呼び出すか、UpdatePipeline を使用して明示的にパイプラインを更新して、再実行が要求されるまで再実行しません。

>>> reader.PointVariables = ['DISPL', 'VEL', 'ACCL']

# Assuming that the reader is indeed the active source, let's update
# the pipeline:
>>> UpdatePipeline()

# Or you can use the following form if you're unsure of the active
# source or just do not want to worry about it.
>>> UpdatePipeline(proxy=reader)

# Print the list of point arrays read in.
>>> print(reader.PointData[:])
[Array: ACCL, Array: DISPL, Array: GlobalNodeId, Array: PedigreeNodeId, Array: VEL]

# Change the selection.
>>> reader.PointVariables = ['DISPL']

# Print the list of point arrays read in, nothing changes!
>>> print(reader.PointData[:])
[Array: ACCL, Array: DISPL, Array: GlobalNodeId, Array: PedigreeNodeId, Array: VEL]

# Update the pipeline.
>>> UpdatePipeline()

# Now the arrays read in has indeed changed as we expected.
>>> print(reader.PointData[:])
[Array: DISPL, Array: GlobalNodeId, Array: PedigreeNodeId]

reader.PointData APIについて詳細は 3.3 章 を参照してください。

2.3. ファイルの再読み込み

ParaViewは、シミュレーションですべてのデータが生成された後によく使用されますが、ParaViewを使用して、シミュレーションで書き出されているデータファイルを検査することも珍しくありません。このような場合、シミュレーションでは、既存のファイルを新しいタイムステップで修正するか、タイムステップごとに新しいファイルを作成します。このような場合は、ParaViewに変更を認識させるために refresh ParaViewを実行します。paraview では、Reload Files を使用して実行できます。 リーダーがアクティブな場合は、File > Reload Files メニューを使用して、リーダーに更新を要求できます。paraview は、図 2.11 に示すように、既存のファイルを再ロードするか、一連のファイルから新しいファイルを検索するかを選択するようプロンプトを表示します。Reload existing file(s) をクリックして、すでに開いているファイルを読み込むようにします。これは、シミュレーションで既存のファイルが変更された可能性がある場合に便利です。 Find new files を使用すると、ファイル系列内の新しいファイルが認識されます。

../_images/ReloadOptions.png

図 2.11 Reload Options ダイアログでは、リーダーの更新方法を選択できます。

paraview と同様に、pvpython では、ReloadFiles を使って既存のファイルを再ロードし、ExtendFilesSeries を使って一連のファイルの中から新しいファイルを探します。

# For file being modified in place per timestep
>>> reader = OpenDataFile(file)
...
>>> ReloadFiles(reader)

# For files being generated per timestep
>>> reader = OpenDataFile(file)
...
>>> ExtendFilesSeries(reader)