コード例 #1
0
 def __init__(self):
     self.dbu = db_manager.DatabaseUtility()
     self.employee_data = self.dbu.get_eid()
     self.employees = self.get_employees()
     self.comm_matrix = [[0 for i in range(len(self.employee_data))]
                         for j in range(len(self.employee_data))]
     self.g = nx.Graph()
コード例 #2
0
def closeness(adj_table):
    dbu = db_manager.DatabaseUtility()
    employee_data = dbu.get_eid()

    nnodes = len(adj_table)
    metric_closeness = [0] * nnodes

    for node in range(nnodes):
        shortest_path_sum = 0
        pred = bfs(adj_table, node)

        for edge in range(nnodes):
            shortest_path_sum += get_shortest_path(pred, edge)

        label = employee_data[node][1] + ' ' + employee_data[node][2]
        # Prevent division by zero error
        if shortest_path_sum > 0:
            metric_closeness[node] = (label, (count_nodes(adj_table) - 1) /
                                      shortest_path_sum, node)
        else:
            metric_closeness[node] = (label, 0, node)

    metric_closeness.sort(key=lambda x: x[1], reverse=True)

    return metric_closeness
コード例 #3
0
def betweenness(adj_table):
    try:
        metric_betweenness = load("betweenness.npy")
        return metric_betweenness
    except:
        dbu = db_manager.DatabaseUtility()
        employee_data = dbu.get_eid()

        nnodes = len(adj_table)
        graph = [set() for _ in range(nnodes)]

        for i in range(nnodes):
            for j in range(len(adj_table[i])):
                graph[i].add(adj_table[i][j])

        metric_betweennness = [0] * nnodes

        for i in range(nnodes):
            for j in range(nnodes):
                if i != j:
                    paths = bfs_paths(graph, i, j)

                    counter = [0] * nnodes
                    for row in paths:
                        for k in range(nnodes):
                            if k != i and k != j and k in row:
                                counter[k] += 1

                    for node in range(nnodes):
                        # Prevent division by zero
                        if len(paths) > 0:
                            metric_betweennness[node] += counter[node] / len(
                                paths)

        for node in range(len(metric_betweennness)):
            label = employee_data[node][1] + ' ' + employee_data[node][2]
            metric_betweennness[node] = (label, metric_betweennness[node] /
                                         ((count_nodes(adj_table) - 1) *
                                          (count_nodes(adj_table) - 2)), node)

        metric_betweennness.sort(key=lambda x: x[1], reverse=True)

        save("betweenness", metric_betweennness)

        return metric_betweennness
コード例 #4
0
def eigenvector(p_matrix, a, epsilon):
    dbu = db_manager.DatabaseUtility()
    employee_data = dbu.get_eid()

    q = p_matrix
    p = AxP(a, p_matrix)
    l = norm(p)
    p = PxL(p, 1 / l)

    while norm(PminusQ(p, q)) > epsilon:
        q = p
        p = AxP(a, p)
        l = norm(p)
        p = PxL(p, 1 / l)

    for node in range(len(p)):
        label = employee_data[node][1] + ' ' + employee_data[node][2]
        p[node] = (label, p[node], node)

    p.sort(key=lambda x: x[1], reverse=True)

    return p
コード例 #5
0
 def __init__(self):
     QtWidgets.QMainWindow.__init__(self)
     self.dbu = db_manager.DatabaseUtility()
     self.graph = network.SocialNetwork()
コード例 #6
0
 def __init__(self, database, table_name):
     QDialog.__init__(self)
     self.dbu = db_manager.DatabaseUtility(database, table_name)
     self.setupUi(self)