本文整理匯總了Python中rmgpy.molecule.graph.Graph.isIsomorphic方法的典型用法代碼示例。如果您正苦於以下問題:Python Graph.isIsomorphic方法的具體用法?Python Graph.isIsomorphic怎麽用?Python Graph.isIsomorphic使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類rmgpy.molecule.graph.Graph
的用法示例。
在下文中一共展示了Graph.isIsomorphic方法的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: test_isomorphism
# 需要導入模塊: from rmgpy.molecule.graph import Graph [as 別名]
# 或者: from rmgpy.molecule.graph.Graph import isIsomorphic [as 別名]
def test_isomorphism(self):
"""
Check the graph isomorphism functions.
"""
vertices1 = [Vertex() for i in range(6)]
edges1 = [
Edge(vertices1[0], vertices1[1]),
Edge(vertices1[1], vertices1[2]),
Edge(vertices1[2], vertices1[3]),
Edge(vertices1[3], vertices1[4]),
Edge(vertices1[4], vertices1[5]),
]
vertices2 = [Vertex() for i in range(6)]
edges2 = [
Edge(vertices2[0], vertices2[1]),
Edge(vertices2[1], vertices2[2]),
Edge(vertices2[2], vertices2[3]),
Edge(vertices2[3], vertices2[4]),
Edge(vertices2[4], vertices2[5]),
]
graph1 = Graph()
for vertex in vertices1: graph1.addVertex(vertex)
for edge in edges1: graph1.addEdge(edge)
graph2 = Graph()
for vertex in vertices2: graph2.addVertex(vertex)
for edge in edges2: graph2.addEdge(edge)
self.assertTrue(graph1.isIsomorphic(graph2))
self.assertTrue(graph1.isSubgraphIsomorphic(graph2))
self.assertTrue(graph2.isIsomorphic(graph1))
self.assertTrue(graph2.isSubgraphIsomorphic(graph1))
示例2: test_copyAndMap
# 需要導入模塊: from rmgpy.molecule.graph import Graph [as 別名]
# 或者: from rmgpy.molecule.graph.Graph import isIsomorphic [as 別名]
def test_copyAndMap(self):
"""
Test the returned dictionary points toward equivaalent vertices and edges
"""
vertices = [Vertex() for i in range(6)]
edges = [
Edge(vertices[0], vertices[1]),
Edge(vertices[1], vertices[2]),
Edge(vertices[2], vertices[3]),
Edge(vertices[3], vertices[4]),
Edge(vertices[4], vertices[5]),
]
graph = Graph()
for vertex in vertices: graph.addVertex(vertex)
for edge in edges: graph.addEdge(edge)
graphDict = graph.copyAndMap()
graph2 = Graph(vertices = graphDict.values())
for vertex in graph.vertices:
self.assertTrue(graph2.hasVertex(graphDict[vertex]))
for v1 in graph.vertices:
for v2 in v1.edges:
self.assertTrue(graph2.hasEdge(graphDict[v1], graphDict[v2]))
self.assertTrue(graph2.hasEdge(graphDict[v2], graphDict[v1]))
self.assertTrue(graph2.isIsomorphic(graph))
self.assertTrue(graph.isIsomorphic(graph2))
示例3: test_pickle
# 需要導入模塊: from rmgpy.molecule.graph import Graph [as 別名]
# 或者: from rmgpy.molecule.graph.Graph import isIsomorphic [as 別名]
def test_pickle(self):
"""
Test that a Graph object can be successfully pickled and unpickled
with no loss of information.
"""
vertices = [Vertex() for i in range(6)]
edges = [
Edge(vertices[0], vertices[1]),
Edge(vertices[1], vertices[2]),
Edge(vertices[2], vertices[3]),
Edge(vertices[3], vertices[4]),
Edge(vertices[4], vertices[5]),
]
graph0 = Graph()
for vertex in vertices: graph0.addVertex(vertex)
for edge in edges: graph0.addEdge(edge)
graph0.updateConnectivityValues()
import cPickle
graph = cPickle.loads(cPickle.dumps(graph0))
self.assertEqual(len(graph0.vertices), len(graph.vertices))
for v1, v2 in zip(graph0.vertices, graph.vertices):
self.assertEqual(v1.connectivity1, v2.connectivity1)
self.assertEqual(v1.connectivity2, v2.connectivity2)
self.assertEqual(v1.connectivity3, v2.connectivity3)
self.assertEqual(v1.sortingLabel, v2.sortingLabel)
self.assertEqual(len(v1.edges), len(v2.edges))
self.assertTrue(graph0.isIsomorphic(graph))
self.assertTrue(graph.isIsomorphic(graph0))
示例4: test_copy
# 需要導入模塊: from rmgpy.molecule.graph import Graph [as 別名]
# 或者: from rmgpy.molecule.graph.Graph import isIsomorphic [as 別名]
def test_copy(self):
"""
Test the graph copy function to ensure a complete copy of the graph is
made while preserving vertices and edges.
"""
vertices = [Vertex() for i in range(6)]
edges = [
Edge(vertices[0], vertices[1]),
Edge(vertices[1], vertices[2]),
Edge(vertices[2], vertices[3]),
Edge(vertices[3], vertices[4]),
Edge(vertices[4], vertices[5]),
]
graph = Graph()
for vertex in vertices: graph.addVertex(vertex)
for edge in edges: graph.addEdge(edge)
graph2 = graph.copy()
for vertex in graph.vertices:
self.assertTrue(graph2.hasVertex(vertex))
for v1 in graph.vertices:
for v2 in v1.edges:
self.assertTrue(graph2.hasEdge(v1, v2))
self.assertTrue(graph2.hasEdge(v2, v1))
self.assertTrue(graph2.isIsomorphic(graph))
self.assertTrue(graph.isIsomorphic(graph2))
示例5: test_isomorphism_disconnected
# 需要導入模塊: from rmgpy.molecule.graph import Graph [as 別名]
# 或者: from rmgpy.molecule.graph.Graph import isIsomorphic [as 別名]
def test_isomorphism_disconnected(self):
"""
Check the graph isomorphism for broken graphs.
This tries to match graphs with a missing bond,
eg. [ 0-1-2-3-4 5 ] should match [ 0-1-2-3-4 5 ]
"""
vertices1 = [Vertex() for i in range(6)]
edges1 = [
Edge(vertices1[0], vertices1[1]),
Edge(vertices1[1], vertices1[2]),
Edge(vertices1[2], vertices1[3]),
Edge(vertices1[3], vertices1[4]),
#Edge(vertices1[4], vertices1[5]),
]
vertices2 = [Vertex() for i in range(6)]
edges2 = [
Edge(vertices2[0], vertices2[1]),
Edge(vertices2[1], vertices2[2]),
Edge(vertices2[2], vertices2[3]),
Edge(vertices2[3], vertices2[4]),
#Edge(vertices2[4], vertices2[5]),
]
graph1 = Graph()
for vertex in vertices1: graph1.addVertex(vertex)
for edge in edges1: graph1.addEdge(edge)
graph2 = Graph()
for vertex in vertices2: graph2.addVertex(vertex)
for edge in edges2: graph2.addEdge(edge)
self.assertTrue(graph1.isIsomorphic(graph2))
self.assertTrue(graph1.isSubgraphIsomorphic(graph2))
self.assertTrue(graph2.isIsomorphic(graph1))
self.assertTrue(graph2.isSubgraphIsomorphic(graph1))
self.assertTrue(len(graph1.findSubgraphIsomorphisms(graph2)) > 0)
示例6: test_subgraphIsomorphism
# 需要導入模塊: from rmgpy.molecule.graph import Graph [as 別名]
# 或者: from rmgpy.molecule.graph.Graph import isIsomorphic [as 別名]
def test_subgraphIsomorphism(self):
"""
Check the subgraph isomorphism functions.
"""
vertices1 = [Vertex() for i in range(6)]
edges1 = [
Edge(vertices1[0], vertices1[1]),
Edge(vertices1[1], vertices1[2]),
Edge(vertices1[2], vertices1[3]),
Edge(vertices1[3], vertices1[4]),
Edge(vertices1[4], vertices1[5]),
]
vertices2 = [Vertex() for i in range(2)]
edges2 = [Edge(vertices2[0], vertices2[1])]
graph1 = Graph()
for vertex in vertices1:
graph1.addVertex(vertex)
for edge in edges1:
graph1.addEdge(edge)
graph2 = Graph()
for vertex in vertices2:
graph2.addVertex(vertex)
for edge in edges2:
graph2.addEdge(edge)
self.assertFalse(graph1.isIsomorphic(graph2))
self.assertFalse(graph2.isIsomorphic(graph1))
self.assertTrue(graph1.isSubgraphIsomorphic(graph2))
mapList = graph1.findSubgraphIsomorphisms(graph2)
self.assertTrue(len(mapList) == 10)
for mapping in mapList:
self.assertTrue(graph1.isMappingValid(graph2, mapping))
self.assertTrue(graph1.isMappingValid(graph2, mapping))