15.5.2 グラフの簡略化およびコピー
simplify()
メソッドをコールすることにより、グラフの簡略化されたバージョンを作成できます。
PgxGraph simplify(Collection<VertexProperty<?, ?>> vertexProps, Collection<EdgeProperty<?>> edgeProps, MultiEdges multiEdges, SelfEdges selfEdges, TrivialVertices trivialVertices, Mode mode, String newGraphName)
simplify(self, vertex_properties=True, edge_properties=True, keep_multi_edges=False, keep_self_edges=False, keep_trivial_vertices=False, in_place=False, name=None)
最初の2つの引数(vertexProps
およびedgeProps
)では、新しく作成される、簡略化されたグラフ・インスタンスにコピーするプロパティをリストします。PGXには、コンビニエンス定数VertexProperty.ALL
、EdgeProperty.ALL
とVertexProperty.NONE
、EdgeProperty.NONE
が用意されており、それぞれ、すべてのプロパティを格納するか、いずれのプロパティも格納しないことを指定できます。
次の3つの引数では、グラフを簡略化するために実行する操作を決定します。
multiEdges
:MultiEdges.REMOVE_MULTI_EDGES
の場合、出力頂点と入力頂点の間の複数のエッジを除去します(つまり、2つの頂点間に最大1つのエッジを残します)。MultiEdges.KEEP_MULTI_EDGES
は、それらを保持することを示します。デフォルトでは、PGXはマルチエッジから1つのエッジをピックし、そのプロパティを使用します。簡略化中にエッジ・プロパティをさらに細かく制御する方法は、高度なマルチエッジ処理を参照してください。selfEdges
:SelfEdges.REMOVE_SELF_EDGES
の場合、出力と入力が同じ頂点であるすべてのエッジを除去します。SelfEdges.KEEP_MULTI_EDGES
は、それらを保持することを示します。trivialVertices
:TrivialVertices.REMOVE_TRIVIAL_VERTICES
の場合、入力エッジも出力エッジも持たないすべての頂点を除去します。TrivialVertices.KEEP_TRIVIAL_VERTICES
は、それらを保持することを示します。
mode
引数は、Mode.MUTATE_IN_PLACE
に設定されている場合、新しいインスタンスを作成しないで、指定されたグラフ・インスタンスで変更が直接発生するようにリクエストします。Mode.CREATE_COPY
に設定されている場合、このメソッドは、newGraphName
の新しい名前で新しいグラフ・インスタンスを作成します。newGraphName
が省略された(またはnull
である)場合、PGXは一意のグラフ名を生成します。
このメソッドの戻り値は、簡略化されたPgxGraph
インスタンスです。
Mode.MUTATE_IN_PLACE
オプションを適用できるのは、グラフが可変としてマークされている場合のみです。PGXにロードされると、すべてのグラフがデフォルトで不変になります。PgxGraph
を可変にするには、次のいずれかの方法を使用して、クライアントで最初にグラフのプライベート・コピーを作成する必要があります。
PgxGraph clone() PgxGraph clone(String newGraphName) PgxGraph clone(Collection<VertexProperty<?, ?>> vertexProps, Collection<EdgeProperty<?>> edgeProps, String newGraphName)
clone(self, vertex_properties=True, edge_properties=True, name=None)
simplify()
と同様に、ユーザーは、vertexProps
およびedgeProps
を使用して、コピーするグラフのオプションのプロパティを指定できます。プロパティを指定しない場合は、元のグラフのプロパティがすべて、新しいグラフ・インスタンスにコピーされます。ユーザーは、newGraphName
を使用して、新しく作成されるグラフ・インスタンスの名前を指定できます。
親トピック: グラフ変更とサブグラフ