# BiGraph   [comment]: <> ( )

[comment]: <> ( )

[comment]: <> ( )

[comment]: <> ( )

[comment]: <> ( )

[comment]: <> ( )

[comment]: <> ( ) BiGraph is a Python package for Link prediction in bipartite networks.

• Bug reports: https://github.com/bi-graph/bigraph/issues

Node based similarities and Katz has been implemented. you can find algorithms in bigraph module. Algorithms implemented so far:

 Number Algorithm 1 `jaccard` 2 `adamic adar` 3 `common neighbors` 4 ` preferential attachment` 5 `katz similarity`

## Installation

`\$ pip install bigraph`

## Simple example

Predicting new links in a randomly generated graph using `Adamic-Adar` algorithm:

``````from bigraph.predict import aa_predict
from bigraph.preprocessing import import_files, make_graph

"""
:return: A dictionary containing predicted links
"""

df, df_nodes = import_files()
print(df)
print(f"Graph Nodes: ", df_nodes)
G = make_graph(df)
print(G)
predicted = aa_predict(G)  # Here we have called Adamic Adar method from bigraph module
return predicted

# Executing the function

if __name__ == '__main__':
``````

Evaluating `Adamic-Adar` algorithm.
You can try other provided prediction algorithms by replacing the "aa" argument.

``````from bigraph.evaluation.evaluation import evaluate
from bigraph.preprocessing import import_files, make_graph

"""
:return: A dictionary containing the evaluation results
"""
df, df_nodes = import_files()
G = make_graph(df)
results = evaluate(G, k=10,
# methods using evaluation module. Methods are 'jc', 'aa', 'pa', 'cn'
return results

# Executing the function
if __name__ == '__main__':
``````

## Call for Contributions

The Bigraph project welcomes your expertise and enthusiasm!

Ways to contribute to Bigraph:

• Writing code
• Review pull requests
• Develop tutorials, presentations, and other educational materials
• Translate documentation and readme contents

## Issues

If you happened to encounter any issue in the codes, please report it here. A better way is to fork the repository on Github and/or create a pull request.

### Metrics

Metrics that are calculated during evaluation:

 Number Evaluattion metrics 1 `Precision` 2 `AUC` 3 `ROC` 4 `returns fpr*` 5 `returns tpr*`
• For further usages and calculating different metrics

### Dataset format

Your dataset should be in the following format (Exclude the 'Row' column):

 Row left_side right_side Weight* 1 `u0` `v1` 1 2 `u2` `v1` 1 3 `u1` `v2` 1 4 `u3` `v3` 1 5 `u4` `v3` 2
• Note that running
``````from bigraph.preprocessing import import_files
df, df_nodes = import_files()``````
will create a sample graph for you and will place it in the `inputs` directory.
• Although the weight has not been involved in current version, but, the format will be the same.

### More examples

Predicting new links in a randomly generated graph using following algorithms:

• `Preferential attachment`
• `Jaccard similarity`
• `Common neighbours`
``````from bigraph.predict import pa_predict, jc_predict, cn_predict
from bigraph.preprocessing import import_files, make_graph

def main():
"""
:return:
"""
df, df_nodes = import_files()
G = make_graph(df)
pa_predict(G)  # Preferential attachment
jc_predict(G)  # Jaccard coefficient
cn_predict(G)  # Common neighbors

# Executing the function
if __name__ == '__main__':
main()
``````

### References

 Number Reference Year 1 `Yang, Y., Lichtenwalter, R.N. & Chawla, N.V. Evaluating link prediction methods. Knowl Inf Syst 45, 751782 (2015).` https://doi.org/10.1007/s10115-014-0789-0 2015 2 `Liben-nowell, David & Kleinberg, Jon. (2003). The Link Prediction Problem for Social Networks. Journal of the American Society for Information Science and Technology.`https://doi.org/58.10.1002/asi.20591 2003 2 `...` ...

### Future work

• [x] Modulate the functions
• [ ] Add more algorithms
• [ ] Run on CUDA cores
• [ ] Make it faster using vectorization etc.
• [ ] Add more preprocessors
• [ ] Add dataset, graph, and dataframe manipulations
• [ ] Unify and reconstruct the architecture and eliminate redundancy

### Notes

• ```It can export the graph in .json and .gexf format for further usages. For instance: Gephi etc.```

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Python (795,156
Machine Learning (36,477
Deep Learning (35,955
Graph (24,408
Graph Algorithms (980
Graph Neural Networks (685
Deep Learning Algorithms (122