AGU 2018

PVGeoは2018年のAGUセッション A Tour of Open-Source Software Packages for the Geosciences の一部でした

私たちは、ポスターやライトニングトークを共有する最良の方法は、人々が立ち寄ることができ、視覚化されたものと対話することができ、コードをダウンロードしてそれを自分たちで行うことができる、動的なウェブページのであると考えました。

ポスター

何よりもまずポスターです:

../_images/agu-poster.png

ライトニング・トーク

このページのこのセクションは、2018AGUセッション中の5分間のライトニング・トークのために開発されました。

ビジュアル化への移行

通常、視覚化ルーチンの3D/4Dアスペクトは、処理コードおよびソフトウェアから分離されています。多くの場合、研究者は作業データを他の形式に変換し、データファイルの静的コピーを作成する必要があります。データを静的に変換すると、特に大規模なプロジェクトでは、作業ディレクトリが乱雑になり、古いデータファイルの管理が困難になります。これを緩和するために,視覚化が研究者のためのルーチンの一部であると同時に,後処理分析と発見の伝達のためのツールとなるように,処理を視覚化に動的にリンクするためのツールとしてPVGeoを提示した。

../_images/dynamic-link.png

PVGeoとは何ですか?

  • 3D/4Dジオビジュアライゼーションのためのコアの Python パッケージ。

  • 説得力のある 統合視覚化 を作成します。

  • VTK 上に構築されたスケーラブルでメンテナンスの行き届いた視覚化ライブラリ。

  • ParaViewVTK.js 、および Virtual Reality にジオビジュアライゼーションを拡張します。

  • オープンソース: GitHub に貢献

../_images/expansion-diagram.png

PVGeoの資源

ParaViewのPVGeo

PVGeoは、ParaView内で直接使用するために構築されており、ParaViewの強力なグラフィカル・ユーザー・インターフェースを活用できるPythonベースのプラグイン用のParaViewの新機能を利用しています。

ParaView内でPVGeoがどのように見えるのかをさらに学ぶために、 例ページについて のビデオや、 Vimeoアカウント に投稿されている例を通してその他のビデオをチェックしてください。

PythonのPVGeo

PVGeoは、オペレーティング・システム間でPython3で動作するように構築されています。アクティブな環境にPVGeoと pyvista をインストールすると、ワークフローでPVGeoを直接使用して解析、データ統合、視覚化を行うことができます。

import PVGeo
import pyvista

Python環境でPVGeoを使用する方法の詳細については, 例ページについて の擬似コードを調べてください

相互運用性

ソースコードに飛び込み、新しいアルゴリズムを追加したり、新しいスイート全体を追加したりすることで、簡単にPVGeoを拡張することができます。あるいは、PVGeoを利用するライブラリに隣接してインストールされるプラグインファイルを作成することもできます。

例えば、ライブラリに素晴らしいファイルIOコードがあるとします。あるいは、パラメータファイルに処理ルーチンを事前定義できます; 次に、PVGeoの多数の基本クラスの1つを拡張して入力データ/パラメータファイルを解析するファイル読み込みアルゴリズムを作成します、自分の作品のためにライブラリを活用します、その結果はParaViewに送信され、即座に視覚化されます。

新しいリーダーアルゴリズムを作成し、 discretize 用に作成した .py ファイルに配置します。

# Import PVGeo for all its awesome super classes
from PVGeo import InterfacedBaseReader
from PVGeo import _helpers
# Import the library you wish to leverage
import discretize

@smproxy.reader(name="DiscretizeMeshReader",
       label='PVGeo: Discretize Mesh Reader',
       extensions='json',
       file_description='Serialized Discretize Meshes')
class DiscretizeMeshReader(InterfacedBaseReader):
    """A general reader for all ``discretize`` mesh objects saved to the
    ``.json`` serialized format"""
    def __init__(self, **kwargs):
        InterfacedBaseReader.__init__(self, **kwargs)

    #### Methods that will talk to the external library ####

    @staticmethod
    def _read_file(filename):
        """Reads a mesh object from the serialized format"""
        return discretize.MeshIO.load_mesh(filename)

    @staticmethod
    def _get_vtk_object(obj):
        """Returns the mesh's proper VTK data object"""
        return obj.to_vtk()

    #### Setters and Getters for the GUI ####

    @smproperty.xml(_helpers.getFileReaderXml('json', readerDescription='Serialized Discretize Meshes'))
    def AddFileName(self, fname):
        """This enables users to select File->Open... in ParaView"""
        InterfacedBaseReader.AddFileName(self, fname)

    @smproperty.doublevector(name="TimeDelta", default_values=1.0, panel_visibility="advanced")
    def set_time_delta(self, dt):
        """Allows the user to speed up/slow down the time interval if reading a time series of data"""
        InterfacedBaseReader.set_time_delta(self, dt)

    @smproperty.doublevector(name="TimestepValues", information_only="1", si_class="vtkSITimeStepsProperty")
    def get_timestep_values(self):
        """This is critical for registering the timesteps (if you want them)"""
        return InterfacedBaseReader.get_timestep_values(self)

PVGeoをインストールする

PVGeoを試してみたい?PVGeoをインストールする最も簡単な方法は、pipを使用してPyPIからインストールすることです。

> pip install PVGeo

あなたは スタートアップガイド に従うべきです

持ち帰ってほしいこと

  • PVGeoのSlack に参加する
    • Slackのワークスペースは、地理視覚化のためにParaViewを使っている人なら誰でも利用できる。

  • ParaViewをVRにネイティブ拡張(動的リンク)

  • VTKとParaViewは非常にスケーラブル

  • PVGeoはPythonベースでオープンソース

PVGeo経由でParaViewで実行できる操作の例を次に示します。この例では、インタラクティブで共有可能なバージョンを使用しています。

../_images/integrated-scene.png