Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

package to manipulate graphs

Project description

graphpy

This is a package for the manipulation of graphs made for a class of graphs in the Brazilian university 'Universidade Tecnologica Federal do Paraná'

Installation

pip install graphpython

Complete Documentation

Graph

to use this class, the main element is Graph class. With this class, you will be able to fill the graph with vertex and edges and do all the necessary operations

  • Graph([directed]): create a graph
    • directed: Defaults to False. tells if the graph is directed or not

Code example

# Create a new graph
from graphpy.graph import Graph

gp = Graph()
# add a new vertex
gp.add_vertex('vertex1')

# to get the create vertex, you can use the [] operator
vertex1 = gp['vertex1']

Vertex operations

The base of all graph is the vertex, to create a new vertex you got to use the follow functions

  • gp.add_vertex(name, [value]): create a new vertex and insert to the graph

    • name: Unique identification to the vertex inside the graph
    • value: optional value to the vertex
  • gp.get_vertex(name) or gp[name]: return the vertex from the graph

    • name: Unique identification to the vertex inside the graph
  • gp.get_all_vertex(): get a list with all vertex from the graph

  • gp.adjacents_vertex(vtx): get all adjacent vertex from one vertex

    • vtx: vertex you want to know the adjacent
  • gp.remove_vertex(vertex_to_remove): Remove a vertex and all the connections he have

    • vertex_to_remove: vertex you want to remove

Code example

from graphpy.graph import Graph

gp = Graph()
gp.add_vertex('01')
gp.remove_vertex(gp['01'])

Search in the graph

The main class has a search method and to use, you need to pass a by params an strategy to make the search.

Implement a new search strategy

In the class has two class strategies already implemented:

  • BFSstrategy
  • DFSstrategy
from graphpy.graph import Graph
from graphpy.BFSstrategy import BFSstrategy

graph = Graph()
graph.search(BFSstrategy(INITIAL_VERTEX))

To extend all the search types you can create a new strategy extending the SearchStrategy class from search_strategy.

from graphpy.search_strategy import SearchStrategy


class DFSstrategy(SearchStrategy):
    def __init__(self):

        self.__predecessors = {}
        self.__firstSee = {}
        self.__close = {}
        self.__time = 0

    def __dfs_visit(self, vertex):
        self.__time = self.__time + 1
        self.__firstSee[vertex] = self.__time
        vertex.set_color(1)

        for adjacent in self.get_adjacent_list()[vertex]:
            if adjacent.get_color() == 0:
                self.__predecessors[adjacent] = vertex
                self.__dfs_visit(adjacent)
        vertex.set_color(2)
        self.__time += 1
        self.__close[vertex] = self.__time

    def search(self):
        # colors:
        #   white: not visited
        #   grey: in the queue
        #   black: nothing more to do
        for key in self.get_adjacent_list():
            # set color for all vertices to white
            key.set_color(0)
            self.__predecessors[key] = None
        self.__time = 0
        for key in self.get_adjacent_list():
            if key.get_color() == 0:
                self.__dfs_visit(key)

        return self.__firstSee, self.__close, self.__predecessors

Project details


Release history Release notifications

This version
History Node

0.83

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
graphpython-0.83-py3-none-any.whl (8.3 kB) Copy SHA256 hash SHA256 Wheel py3
graphpython-0.83.tar.gz (6.4 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page