本文整理匯總了Python中rmgpy.molecule.graph.Graph._sortCyclicVertices方法的典型用法代碼示例。如果您正苦於以下問題:Python Graph._sortCyclicVertices方法的具體用法?Python Graph._sortCyclicVertices怎麽用?Python Graph._sortCyclicVertices使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類rmgpy.molecule.graph.Graph
的用法示例。
在下文中一共展示了Graph._sortCyclicVertices方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: TestGraph
# 需要導入模塊: from rmgpy.molecule.graph import Graph [as 別名]
# 或者: from rmgpy.molecule.graph.Graph import _sortCyclicVertices [as 別名]
#.........這裏部分代碼省略.........
def test_getLargestRing(self):
"""
Test that the Graph.getPolycyclicRings() method returns only polycyclic rings.
"""
vertices = [Vertex() for i in range(27)]
bonds = [
(0,1),
(1,2),
(2,3),
(3,4),
(4,5),
(5,6),
(6,7),
(9,10),
(10,11),
(11,12),
(12,13),
(13,14),
(14,15),
(12,16),
(10,17),
(17,18),
(18,19),
(9,20),
(20,21),
(6,22),
(22,23),
(22,8),
(8,4),
(23,3),
(23,24),
(24,25),
(25,1)
]
edges = []
for bond in bonds:
edges.append(Edge(vertices[bond[0]], vertices[bond[1]]))
graph = Graph()
for vertex in vertices: graph.addVertex(vertex)
for edge in edges: graph.addEdge(edge)
graph.updateConnectivityValues()
rings = graph.getPolycyclicRings()
self.assertEqual(len(rings), 1)
#ensure the last ring doesn't include vertex 8, since it isn't in the
#longest ring. Try two different items since one might contain the vertex 8
long_ring = graph.getLargestRing(rings[0][0])
long_ring2 = graph.getLargestRing(rings[0][1])
if len(long_ring) > len(long_ring2):
longest_ring = long_ring
else:
longest_ring = long_ring2
self.assertEqual(len(longest_ring), len(rings[0]) - 1)
def testSortCyclicVertices(self):
"""Test that _sortCyclicVertices works properly for a valid input."""
edge = Edge(self.graph.vertices[0], self.graph.vertices[5])
self.graph.addEdge(edge) # To create a cycle
# Sort the vertices
original = list(self.graph.vertices)
ordered = self.graph._sortCyclicVertices(original)
# Check that we didn't lose any vertices
self.assertEqual(len(self.graph.vertices), len(ordered), 'Sorting changed the number of vertices.')
# Check that the order is different
self.assertNotEqual(self.graph.vertices, ordered, 'Sorting did not change the order of vertices.')
# Check that subsequent vertices are connected
for i in range(5):
self.assertTrue(self.graph.hasEdge(ordered[i], ordered[i - 1]))
def testSortCyclicVerticesInvalid(self):
"""Test that _sortCyclicVertices raises an error for an invalid input."""
edge = Edge(self.graph.vertices[0], self.graph.vertices[4])
self.graph.addEdge(edge) # To create a cycle
original = list(self.graph.vertices)
with self.assertRaisesRegexp(RuntimeError, 'do not comprise a single cycle'):
self.graph._sortCyclicVertices(original)
def testSortCyclicVerticesNoncyclic(self):
"""Test that _sortCyclicVertices raises an error for a noncyclic input."""
original = list(self.graph.vertices)
with self.assertRaisesRegexp(RuntimeError, 'do not comprise a single cycle'):
self.graph._sortCyclicVertices(original)
def testSortCyclicVerticesUnconnected(self):
"""Test that _sortCyclicVertices raises an error for an unconnected input."""
self.graph.addVertex(Vertex())
original = list(self.graph.vertices)
with self.assertRaisesRegexp(RuntimeError, 'not all vertices are connected'):
self.graph._sortCyclicVertices(original)