Python (PGX)インタプリタ
Python (PGX)パラグラフは%python-pgx
で始まり、使用可能なPyPGX APIを使用できます。
PyPGX APIの詳細は、「Python APIリファレンス」を参照してください。
ヒント:
ノートブックの段落の下部にカーソルを置き、
Python段落を使用する場合、PGXの対話を容易にするために、次の変数が組み込まれています:
-
session
: ユーザーにバインドされているPgxSession
オブジェクト。 現在メモリーにロードされているすべてのグラフには、session
オブジェクトを介してアクセスできます。 セッションは、使用されていない時間が経過するとタイムアウトになることに注意してください。 ノートブックに再度ログインすると、新しいセッションが作成されます。そのため、基礎となるセッションIDが常に同じとはかぎりません。 -
instance
: PGXサーバーを指すServerInstance
。 -
visual_query
: PGQL問合せを可視化可能な出力に変換するためのヘルパー・オブジェクト。 -
analyst
: PageRankやBetweenness Centralityなど、すべての組込みグラフ・アナリティクスへのアクセスを提供するヘルパー・オブジェクト。
次のインポートは、すべてのPython (PGX)段落でデフォルトで使用できます:
import pypgx
また、Python (PGX)インタプリタは、次のPythonライブラリをサポートしています。 ただし、これらのモジュールをPython (PGX)段落で使用するには、これらのモジュールをインポートする必要があります。
NumPy
scikit-learn
oracledb
Matplotlib
pandas
SciPy
requests
openpyxl
次に、組込みアルゴリズムを実行してグラフ内の三角形の数をカウントするPython (PGX)段落の例を示します:
%python-pgx
# Reference in-memory graphs by name
graph = session.get_graph("FIRST_GRAPH")
# Running an algorithm to determine the number of triangles in a graph
analyst.count_triangles(graph, True)
Python段落内に新しいヘルパー・クラス/関数を定義することもできます。 たとえば:
%python-pgx
import math
# Define helper classes/functions
class Functions:
def haversine (lat1, lon1, lat2, lon2):
delta_lon = (lon2 - lon1) * math.pi/180
delta_lat = (lat2 - lat1) * math.pi/180
a = math.pow(math.sin(delta_lat/2),2) + math.cos(lat1 * math.pi/180) * math.cos(lat2 * math.pi / 180) * math.pow(math.sin(delta_lon / 2), 2)
c = 2 * math.asin(math.sqrt(a))
r = 6371 # Radius of the Earth in kilometers. Use 3956 for miles
return c * r
Functions.haversine(30.26, 97.74, 48.13, 11.58)
内部的には、Python (PGX)インタプリタは、Java (PGX)インタプリタと同じPGXセッションで動作します。 そのため、Java (PGX)段落で計算された分析結果は、後続のPython (PGX)段落で問い合せることができます。
次の例は、Java (PGX)パラグラフで計算されたPageRank値を示しています。 その後、グラフのpagerank
プロパティは、後続のPython (PGX)段落で問い合せられます。
%java-pgx
var g = session.getGraph("MY_FIRST_GRAPH")
session.createAnalyst().pagerank(g)
%python-pgx
session.execute_pgql("SELECT x.pagerank FROM MATCH (x) ON MY_FIRST_GRAPH").print()