當前位置: 首頁>>代碼示例>>Python>>正文


Python Graph._sortCyclicVertices方法代碼示例

本文整理匯總了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)
開發者ID:ReactionMechanismGenerator,項目名稱:RMG-Py,代碼行數:104,代碼來源:graphTest.py


注:本文中的rmgpy.molecule.graph.Graph._sortCyclicVertices方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。