当前位置: 首页>>代码示例>>Python>>正文


Python DictGraph.setVertex方法代码示例

本文整理汇总了Python中apgl.graph.DictGraph.DictGraph.setVertex方法的典型用法代码示例。如果您正苦于以下问题:Python DictGraph.setVertex方法的具体用法?Python DictGraph.setVertex怎么用?Python DictGraph.setVertex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在apgl.graph.DictGraph.DictGraph的用法示例。


在下文中一共展示了DictGraph.setVertex方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: testGetVertex

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testGetVertex(self):
        dictGraph = DictGraph(True)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)
        dictGraph.setVertex(5, 12)

        self.assertEquals(dictGraph.getVertex(1), None)
        self.assertEquals(dictGraph.getVertex(2), None)
        self.assertEquals(dictGraph.getVertex(3), None)
        self.assertEquals(dictGraph.getVertex(5), 12)

        self.assertRaises(ValueError, dictGraph.getVertex, 4)

        #Directed graphs
        dictGraph = DictGraph(False)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)
        dictGraph.setVertex(5, 12)

        self.assertEquals(dictGraph.getVertex(1), None)
        self.assertEquals(dictGraph.getVertex(2), None)
        self.assertEquals(dictGraph.getVertex(3), None)
        self.assertEquals(dictGraph.getVertex(5), 12)

        self.assertRaises(ValueError, dictGraph.getVertex, 4)
开发者ID:charanpald,项目名称:APGL,代码行数:27,代码来源:DictGraphTest.py

示例2: testGetAllVertexIds

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testGetAllVertexIds(self):
        dictGraph = DictGraph(True)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)
        dictGraph.setVertex(5, 12)

        self.assertEquals(dictGraph.getAllVertexIds(), [1, 2, 3, 5])
开发者ID:charanpald,项目名称:APGL,代码行数:9,代码来源:DictGraphTest.py

示例3: testGetNeighbours

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testGetNeighbours(self):
        dictGraph = DictGraph(True)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)
        dictGraph.addEdge(1, 4, 1)
        dictGraph.addEdge(3, 4, 1)
        dictGraph.addEdge(2, 2, 1)
        dictGraph.setVertex(5, 12)

        self.assertEquals(dictGraph.neighbours(1), [2, 3, 4])
        self.assertEquals(dictGraph.neighbours(3), [1, 4])
        self.assertEquals(dictGraph.neighbours(2), [1, 2])
        self.assertEquals(dictGraph.neighbours(5), [])

        #Directed graphs
        dictGraph = DictGraph(False)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)
        dictGraph.addEdge(1, 4, 1)
        dictGraph.addEdge(3, 4, 1)
        dictGraph.addEdge(2, 2, 1)
        dictGraph.setVertex(5, 12)

        self.assertEquals(dictGraph.neighbours(1), [2,3,4])
        self.assertEquals(dictGraph.neighbours(3), [4])
        self.assertEquals(dictGraph.neighbours(2), [2])
        self.assertEquals(dictGraph.neighbours(5), [])
开发者ID:charanpald,项目名称:APGL,代码行数:29,代码来源:DictGraphTest.py

示例4: testDegreeSequence

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
 def testDegreeSequence(self): 
     graph = DictGraph() 
     graph.setVertex("a", 10)
     graph["b", "c"] = 1
     graph["b", "d"] = 1
     graph["d", "e"] = 1
     graph["e", "e"] = 1
             
     nptst.assert_array_equal(graph.degreeSequence(), [0, 1, 2, 3, 2])
开发者ID:malcolmreynolds,项目名称:APGL,代码行数:11,代码来源:DictGraphTest.py

示例5: testGetItem

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testGetItem(self):
        graph = DictGraph()
        graph.addEdge(1, 1, 0.1)
        graph.addEdge(1, 3, 0.5)
        graph.addEdge(2, 4, 1)
        graph.addEdge(2, 3, 2)
        graph.setVertex(0, "abc")

        self.assertEquals(graph[1,1], 0.1)
        self.assertEquals(graph[1,3], 0.5)
开发者ID:charanpald,项目名称:APGL,代码行数:12,代码来源:DictGraphTest.py

示例6: testAddVertex

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testAddVertex(self):
        dictGraph = DictGraph(True)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)
        dictGraph.setVertex(5, 12)

        self.assertEquals(dictGraph.getVertex(5), 12)

        dictGraph.setVertex(5, 22)
        self.assertEquals(dictGraph.getVertex(5), 22)

        dictGraph.addEdge(5, 11, 18)
        self.assertEquals(dictGraph.getVertex(5), 22)
开发者ID:charanpald,项目名称:APGL,代码行数:15,代码来源:DictGraphTest.py

示例7: testDijkstrasAlgorithm

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testDijkstrasAlgorithm(self):
        graph = DictGraph()

        graph.addEdge(0, 1, 1)
        graph.addEdge(1, 2, 1)
        graph.addEdge(1, 3, 1)
        graph.addEdge(2, 4, 1)
        graph.setVertex(4, 1)

        self.assertTrue((graph.dijkstrasAlgorithm(0) == numpy.array([0, 1, 2, 2, 3])).all())
        self.assertTrue((graph.dijkstrasAlgorithm(1) == numpy.array([1, 0, 1, 1, 2])).all())
        self.assertTrue((graph.dijkstrasAlgorithm(2) == numpy.array([2, 1, 0, 2, 1])).all())
        self.assertTrue((graph.dijkstrasAlgorithm(3) == numpy.array([2, 1, 2, 0, 3])).all())
        self.assertTrue((graph.dijkstrasAlgorithm(4) == numpy.array([3, 2, 1, 3, 0])).all())

        
        #Test a graph which has an isolated node
        graph = DictGraph()
        graph.setVertex(5, 1)

        graph.addEdge(0, 1, 1)
        graph.addEdge(1, 2, 1)
        graph.addEdge(1, 3, 1)

        self.assertTrue((graph.dijkstrasAlgorithm(0) == numpy.array([0, 1, 2, 2, numpy.inf])).all())

        #Test a graph in a ring
        graph = DictGraph()

        graph.addEdge(0, 1, 1)
        graph.addEdge(1, 2, 1)
        graph.addEdge(2, 3, 1)
        graph.addEdge(3, 4, 1)
        graph.addEdge(4, 0, 1)

        self.assertTrue((graph.dijkstrasAlgorithm(0) == numpy.array([0, 1, 2, 2, 1])).all())
        
        #Try case in which vertex ids are not numbers 
        graph = DictGraph()

        graph.addEdge("a", "b", 1)
        graph.addEdge("b", "c", 1)
        graph.addEdge("b", "d", 1)
        graph.addEdge("c", "e", 1)

        inds = Util.argsort(graph.getAllVertexIds())
        self.assertTrue((graph.dijkstrasAlgorithm("a")[inds] == numpy.array([0, 1, 2, 2, 3])).all())
        self.assertTrue((graph.dijkstrasAlgorithm("b")[inds] == numpy.array([1, 0, 1, 1, 2])).all())
        self.assertTrue((graph.dijkstrasAlgorithm("c")[inds] == numpy.array([2, 1, 0, 2, 1])).all())
        self.assertTrue((graph.dijkstrasAlgorithm("d")[inds] == numpy.array([2, 1, 2, 0, 3])).all())
        self.assertTrue((graph.dijkstrasAlgorithm("e")[inds] == numpy.array([3, 2, 1, 3, 0])).all())
开发者ID:charanpald,项目名称:APGL,代码行数:53,代码来源:DictGraphTest.py

示例8: testDegreeSequence

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
 def testDegreeSequence(self): 
     graph = DictGraph() 
     graph.setVertex("a", 10)
     graph["b", "c"] = 1
     graph["b", "d"] = 1
     graph["d", "e"] = 1
     graph["e", "e"] = 1
             
     degreeDict = {}
     degreeDict2 = {"a": 0, "b": 2, "c": 1, "d": 2, "e": 3}
     
     for i, id in enumerate(graph.getAllVertexIds()): 
         degreeDict[id] = graph.degreeSequence()[i]
         
     self.assertEquals(degreeDict, degreeDict2)
开发者ID:charanpald,项目名称:APGL,代码行数:17,代码来源:DictGraphTest.py

示例9: testAdjacencyList

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testAdjacencyList(self): 
        graph = DictGraph()
        graph.addEdge("a", "b", 1)
        graph.addEdge("b", "c", 1)
        graph.addEdge("b", "d", 1)
        graph.addEdge("c", "e", 1)
        graph.setVertex("f", 1)
 
        neighbourIndices, neighbourWeights = graph.adjacencyList()   
 
        vertexIds = graph.getAllVertexIds()

        for i in range(len(neighbourIndices)): 
            for k, j in enumerate(neighbourIndices[i]): 
                self.assertTrue(graph.edgeExists(vertexIds[i], vertexIds[j]))  
                self.assertEquals(graph[vertexIds[i], vertexIds[j]], neighbourWeights[i][k])
开发者ID:charanpald,项目名称:APGL,代码行数:18,代码来源:DictGraphTest.py

示例10: testWriteToFile

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testWriteToFile(self):
        graph = DictGraph()

        numVertices = 5
        numFeatures = 3

        V = numpy.random.rand(numVertices, numFeatures)

        for i in range(0, numVertices):
            graph.setVertex(i, V[i, :])

        fileName = PathDefaults.getOutputDir() + "test/vertices"
        verterWriter = CsvVertexWriter()
        verterWriter.writeToFile(fileName, graph)

        logging.debug(V)
开发者ID:charanpald,项目名称:APGL,代码行数:18,代码来源:CsvVertexWriterTest.py

示例11: testSubgraph

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testSubgraph(self):
        graph = DictGraph()

        graph.addEdge(0, 1)
        graph.addEdge(0, 2)
        graph.addEdge(0, 3)
        graph.addEdge(1, 2)
        graph.addEdge(2, 3)
        graph.setVertex(0, "abc")
        graph.setVertex(3, "cde")

        self.assertEquals(graph.getNumEdges(), 5)

        subgraph = graph.subgraph([0, 1, 2])
        self.assertEquals(subgraph.getNumVertices(), 3)
        self.assertEquals(subgraph.getNumEdges(), 3)
        self.assertEquals(subgraph.isUndirected(), True)
        self.assertEquals(subgraph.getEdge(0, 1), 1)
        self.assertEquals(subgraph.getEdge(0, 2), 1)
        self.assertEquals(subgraph.getEdge(1, 2), 1)
        self.assertEquals(subgraph.getVertex(0), "abc")

        #Check the original graph is fine
        self.assertEquals(graph.getNumVertices(), 4)
        self.assertEquals(graph.getNumEdges(), 5)
        self.assertEquals(graph.getVertex(0), "abc")
        self.assertEquals(graph.getVertex(3), "cde")

        #Now a quick test for directed graphs
        graph = DictGraph(False)

        graph.addEdge(0, 1)
        graph.addEdge(0, 2)
        graph.addEdge(0, 3)
        graph.addEdge(1, 2)
        graph.addEdge(2, 3)

        subgraph = graph.subgraph([0, 1, 2])
        self.assertEquals(subgraph.getNumEdges(), 3)
        self.assertEquals(subgraph.isUndirected(), False)
        self.assertEquals(subgraph.getEdge(0, 1), 1)
        self.assertEquals(subgraph.getEdge(0, 2), 1)
        self.assertEquals(subgraph.getEdge(1, 2), 1)
开发者ID:charanpald,项目名称:APGL,代码行数:45,代码来源:DictGraphTest.py

示例12: testDensity

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testDensity(self):
        numVertices = 10 
        graph = DictGraph(True)
        for i in range(numVertices):
            graph.setVertex(i, 0)

        graph.addEdge(0, 1)
        self.assertEquals(graph.density(), float(1)/45)

        graph.addEdge(0, 2)
        self.assertEquals(graph.density(), float(2)/45)

        graph = DictGraph(False)
        for i in range(numVertices):
            graph.setVertex(i, 0)
        graph.addEdge(0, 1)
        self.assertEquals(graph.density(), float(1)/90)

        graph.addEdge(0, 2)
        self.assertEquals(graph.density(), float(2)/90)

        #Test a graph with 1 vertex
        graph = DictGraph(True)
        graph.setVertex(0, 12)

        self.assertEquals(graph.density(), 0)

        graph.addEdge(0, 0)
        self.assertEquals(graph.density(), 1)
开发者ID:charanpald,项目名称:APGL,代码行数:31,代码来源:DictGraphTest.py

示例13: testGetAllEdges

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def testGetAllEdges(self):
        dictGraph = DictGraph(True)
        dictGraph.setVertex(5, 12)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)

        edges = dictGraph.getAllEdges()

        self.assertEquals(len(edges), 2)
        self.assertTrue((1,2) in edges)
        self.assertTrue((1,3) in edges)

        dictGraph = DictGraph(False)
        dictGraph.setVertex(5, 12)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(2, 1, 12)
        dictGraph.addEdge(1, 3, 18)

        edges = dictGraph.getAllEdges()

        self.assertEquals(len(edges), 3)
        self.assertTrue((1,2) in edges)
        self.assertTrue((2,1) in edges)
        self.assertTrue((1,3) in edges)
开发者ID:charanpald,项目名称:APGL,代码行数:26,代码来源:DictGraphTest.py

示例14: __init__

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
    def __init__(self, minGraphSize=500, maxGraphSize=None, dayStep=30):
        
        dataDir = PathDefaults.getDataDir() + "cluster/"
        edgesFilename = dataDir + "Cit-HepTh.txt"
        dateFilename = dataDir + "Cit-HepTh-dates.txt"

        #Note the IDs are integers but can start with zero so we prefix "1" to each ID 
        edges = []
        file = open(edgesFilename, 'r')
        file.readline()
        file.readline()
        file.readline()
        file.readline()

        for line in file:
            (vertex1, sep, vertex2) = line.partition("\t")
            vertex1 = vertex1.strip()
            vertex2 = vertex2.strip()
            edges.append([vertex1, vertex2])
            
            #if vertex1 == vertex2: 
            #    print(vertex1)

        file.close()

        logging.info("Loaded edge file " + str(edgesFilename) + " with " + str(len(edges)) + " edges")

        #Keep an edge graph 
        graph = DictGraph(False)
        graph.addEdges(edges)
        logging.info("Created directed citation graph with " + str(graph.getNumEdges()) + " edges and " + str(graph.getNumVertices()) + " vertices")

        #Read in the dates articles appear in a dict which used the year and month
        #as the key and the value is a list of vertex ids. For each month we include
        #all papers uploaded that month and those directed cited by those uploads. 
        startDate = datetime.date(1990, 1, 1)

        file = open(dateFilename, 'r')
        file.readline()
        numLines = 0 
        subgraphIds = []

        for line in file:
            (id, sep, date) = line.partition("\t")
            id = id.strip()
            date = date.strip()
            

            inputDate = datetime.datetime.strptime(date.strip(), "%Y-%m-%d")
            inputDate = inputDate.date()

            if graph.vertexExists(id):
                tDelta = inputDate - startDate
                            
                graph.vertices[id] = tDelta.days 
                subgraphIds.append(id)
                
                #If a paper cites another, it must have been written before 
                #the citing paper - enforce this rule. 
                for neighbour in graph.neighbours(id): 
                    if graph.getVertex(neighbour) == None: 
                        graph.setVertex(neighbour, tDelta.days) 
                        subgraphIds.append(neighbour)
                    elif tDelta.days < graph.getVertex(neighbour): 
                        graph.setVertex(neighbour, tDelta.days) 
                        
            numLines += 1 
            
        file.close()
        
        subgraphIds = set(subgraphIds)
        graph = graph.subgraph(list(subgraphIds))
        logging.debug(graph)
        logging.info("Loaded date file " + str(dateFilename) + " with " + str(len(subgraphIds)) + " dates and " + str(numLines) + " lines")

        W = graph.getSparseWeightMatrix()
        W = W + W.T
        
        vList = VertexList(W.shape[0], 1)
        vList.setVertices(numpy.array([graph.getVertices(graph.getAllVertexIds())]).T)
        
        #Note: we have 16 self edges and some two-way citations so this graph has fewer edges than the directed one 
        self.graph = SparseGraph(vList, W=W)
        logging.debug(self.graph)
        
        #Now pick the max component 
        components = self.graph.findConnectedComponents()
        self.graph = self.graph.subgraph(components[0])
        
        logging.debug("Largest component graph: " + str(self.graph))
        
        self.minGraphSize = minGraphSize
        self.maxGraphSize = maxGraphSize 
        self.dayStep = dayStep 
开发者ID:charanpald,项目名称:wallhack,代码行数:96,代码来源:CitationIterGenerator.py

示例15: DictGraphTest

# 需要导入模块: from apgl.graph.DictGraph import DictGraph [as 别名]
# 或者: from apgl.graph.DictGraph.DictGraph import setVertex [as 别名]
class DictGraphTest(unittest.TestCase):
    def setUp(self):
        self.graph = DictGraph()
        self.graph.addEdge(0, 1, 1)
        self.graph.addEdge(1, 3, 1)
        self.graph.addEdge(0, 2, 2)
        self.graph.addEdge(2, 3, 5)
        self.graph.addEdge(0, 4, 1)
        self.graph.addEdge(3, 4, 1)
        self.graph.setVertex(5, None)
        
        self.graph2 = DictGraph(False)
        self.graph2.addEdge(0, 1, 1)
        self.graph2.addEdge(1, 3, 1)
        self.graph2.addEdge(0, 2, 2)
        self.graph2.addEdge(2, 3, 5)
        self.graph2.addEdge(0, 4, 1)
        self.graph2.addEdge(3, 4, 1)
        self.graph2.setVertex(5, 1)

    def testInit(self):
        dictGraph = DictGraph()

    def testAddEdge(self):
        dictGraph = DictGraph()
        dictGraph.addEdge("A", "B", [1,2,3])
        dictGraph.addEdge("A", "C", "HelloThere")
        dictGraph.addEdge(12, 8, [1,2,3, 12])

        self.assertEquals(dictGraph.getEdge("A", "B"), [1,2,3])
        self.assertEquals(dictGraph.getEdge("B", "A"), [1,2,3])
        self.assertEquals(dictGraph.getEdge("A", "C"), "HelloThere")
        self.assertEquals(dictGraph.getEdge("C", "A"), "HelloThere")
        self.assertEquals(dictGraph.getEdge(12, 8), [1,2,3, 12])
        self.assertEquals(dictGraph.getEdge(8, 12), [1,2,3, 12])

        dictGraph.addEdge(2, 8)

        dictGraph = DictGraph(False)
        dictGraph.addEdge("A", "B", [1,2,3])
        dictGraph.addEdge("A", "C", "HelloThere")
        dictGraph.addEdge(12, 8, [1,2,3, 12])

        self.assertEquals(dictGraph.getEdge("A", "B"), [1,2,3])
        self.assertEquals(dictGraph.getEdge("B", "A"), None)
        self.assertEquals(dictGraph.getEdge("A", "C"), "HelloThere")
        self.assertEquals(dictGraph.getEdge("C", "A"), None)
        self.assertEquals(dictGraph.getEdge(12, 8), [1,2,3, 12])
        self.assertEquals(dictGraph.getEdge(8, 12), None)

        dictGraph.addEdge(2, 8)

        #Test directed graphs 

    def testRemoveEdge(self):
        dictGraph = DictGraph()
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)
        dictGraph.addEdge(3, 4, 1)

        self.assertEquals(dictGraph.getEdge(1, 2), 12)
        self.assertEquals(dictGraph.getEdge(1, 3), 18)
        self.assertEquals(dictGraph.getEdge(3, 4), 1)

        dictGraph.removeEdge(1, 3)

        self.assertEquals(dictGraph.getEdge(1, 3), None)
        self.assertEquals(dictGraph.getEdge(1, 2), 12)
        self.assertEquals(dictGraph.getEdge(3, 4), 1)

        #Some tests on directed graphs
        dictGraph = DictGraph(False)
        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(2, 1, 12)

        dictGraph.removeEdge(1, 2)
        self.assertEquals(dictGraph.getEdge(1, 2), None)
        self.assertEquals(dictGraph.getEdge(2, 1), 12)

    def testIsUndirected(self):
        dictGraph = DictGraph(True)
        self.assertEquals(dictGraph.isUndirected(), True)

        dictGraph = DictGraph(False)
        self.assertEquals(dictGraph.isUndirected(), False)

    def testGetNumEdges(self):
        dictGraph = DictGraph(True)
        self.assertEquals(dictGraph.getNumEdges(), 0)

        dictGraph.addEdge(1, 2, 12)
        dictGraph.addEdge(1, 3, 18)
        dictGraph.addEdge(3, 4, 1)
        self.assertEquals(dictGraph.getNumEdges(), 3)

        dictGraph.addEdge(3, 4, 1)
        self.assertEquals(dictGraph.getNumEdges(), 3)

        dictGraph.addEdge(3, 5, 1)
        self.assertEquals(dictGraph.getNumEdges(), 4)
#.........这里部分代码省略.........
开发者ID:charanpald,项目名称:APGL,代码行数:103,代码来源:DictGraphTest.py


注:本文中的apgl.graph.DictGraph.DictGraph.setVertex方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。