Skip to content

Multilayer PageRank algorithm presented in Bravo and Óskarsdóttir (2020) and Óskarsdóttir and Bravo (2021).

License

Notifications You must be signed in to change notification settings

Banking-Analytics-Lab/mulp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mulp

This repository/package includes a python script that implements the Multilayer PageRank algorithm presented in Bravo and Óskarsdóttir (2020) and Óskarsdóttir and Bravo (2021, ArXiV , Publisher).

Installation

pip install mulp

Input instructions

There are three primary input files:

  • Individual layer files (.ncol)
  • Common Nodes file (csv)
  • Personal Node file (csv)

Each layer in the multilayer network requires its own .ncol file with the appropriate ncol file format.

Example ncol layer file (.ncol):

CommonNodeA SpecificNodeA
CommonNodeB SpecificNodeA
CommonNodeC SpecificNodeB
CommonNodeD SpecificNodeC

The inter-layer connections are only allowed between common nodes as to follow the structure layed out by Óskarsdóttir & Bravo (2021):

Example input file(.csv):

CommonNode1
CommonNode2
CommonNode3

To construct the personal matrix one must specify the influence (or personal) nodes in the following format (example input .csv file):

InfluentialNode1
InfluentialNode2
InfluentialNode3

Usage

Multilayer Network Initialization

To create a Multilayer Network the following arguments are available:

layer_files (list): list of layer files

common_nodes_file (str): csv file to common nodes

personal_file (str): file to create personal matrix

bidirectional (bool, optional): wheter edges are biderectional or not. Defaults to False.

sparse (bool, optional): use sparse or dense matrix. Defaults to True.

from mulp import MultiLayerRanker
ranker = MultiLayerRanker(layer_files=['products.ncol','districts.ncol'],
                           common_nodes_file= './common.csv',
                           personal_file= './personal.csv' ,
                           bidirectional=True,
                           sparse = True)

The test directory on the project Github includes some other examples for non-directional or non-sparse matrices.

Ranking

The rank method of the MultiLayerRanker class runs the MultiLayer Personalized PageRank Algorithm. One can choose to run different experiments with varying alphas by specifying it in the method call:

alpha (int,optional): PageRank exploration parameter, defaults to .85

eigs = ranker.pageRank(alpha = .85)

This method returns the leading eigenvector corresponding to each node's rank.

Output Formatting

The formattedRanks method allows getting the rankings with appropriate node labels in a dictionary format: x

eigs (ndarray): corresponding eigenvector to format

ranker.formattedRanks(eigs)

The adjDF method allows getting a personal or adjacency matrix with corresponding labels as a dataframe:

matrix (ndarray) : an adj matrix or personal matrix to transform

f (str,optional): Optional, if true, writes the df to an output csv

#for persoanl matrix
personalDF = ranker.toDf(ranker.personal)
#for adj matrix
adjDf = ranker.toDf(ranker.matrix)

mulp Average Daily Downloads

About

Multilayer PageRank algorithm presented in Bravo and Óskarsdóttir (2020) and Óskarsdóttir and Bravo (2021).

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 70.2%
  • Jupyter Notebook 29.8%