pyrgg 1.4

Last updated:

0 purchases

pyrgg 1.4 Image
pyrgg 1.4 Images
Add to Cart

Description:

pyrgg 1.4

PyRGG: Python Random Graph Generator



















Table of Contents

Overview
Installation
Usage
Supported Formats
Example of Usage
Similar Works
Issues & Bug Reports
Contribution
References
Citing
Authors
License
Show Your Support
Todo
Changelog
Code of Conduct

Overview
Pyrgg is an easy-to-use synthetic random graph generator written in Python which supports various graph file formats including DIMACS .gr files.
Pyrgg has the ability to generate graphs of different sizes and is designed to provide input files for broad range of graph-based research applications, including but not limited to testing, benchmarking and performance-analysis of graph processing frameworks.
Pyrgg target audiences are computer scientists who study graph algorithms and graph processing frameworks.


Open Hub



PyPI Counter



Github Stars





Branch
master
dev


CI






Code Quality





Installation
PyPI

Check Python Packaging User Guide
pip install pyrgg==1.4 (Need root access)

Source Code

Download Version 1.4 or Latest Source
pip install . (Need root access)

Conda

Check Conda Managing Package
conda install -c sepandhaghighi pyrgg (Need root access)

Exe Version (Only Windows)

Download Exe-Version 1.4
Run PYRGG-1.4.exe

System Requirements
Pyrgg will likely run on a modern dual core PC. Typical configuration is:

Dual Core CPU (2.0 Ghz+)
4GB of RAM

Note that it may run on lower end equipment though good performance is not guaranteed.
Usage

Open CMD (Windows) or Terminal (UNIX)
Run pyrgg or python -m pyrgg (or run PYRGG.exe)
Enter data




Supported Formats


DIMACS(.gr)
p sp <number of vertices> <number of edges>
a <head_1> <tail_1> <weight_1>

.
.
.

a <head_n> <tail_n> <weight_n>


Sample 1 (100 Vertices , 3KB)
Sample 2 (1000 Vertices , 13KB)
Sample 3 (1000000 Vertices , 7MB)
Sample 4 (5000000 Vertices , 37MB)



CSV(.csv)
<head_1>,<tail_1>,<weight_1>

.
.
.

<head_n>,<tail_n>,<weight_n>


Sample 1 (100 Vertices , 3KB)
Sample 2 (1000 Vertices , 51KB)



TSV(.tsv)
<head_1> <tail_1> <weight_1>

.
.
.

<head_n> <tail_n> <weight_n>


Sample 1 (100 Vertices , 29KB)
Sample 2 (1000 Vertices , 420KB)



JSON(.json)
{
"properties": {
"directed": true,
"signed": true,
"multigraph": true,
"weighted": true,
"self_loop": true
},
"graph": {
"nodes":[
{
"id": 1
},

.
.
.

{
"id": n
}
],
"edges":[
{
"source": head_1,
"target": tail_1,
"weight": weight_1
},

.
.
.

{
"source": head_n,
"target": tail_n,
"weight": weight_n
}
]
}
}


Sample 1 (100 Vertices , 26KB)
Sample 2 (1000 Vertices , 494KB)



YAML(.yaml)
graph:
edges:
- source: head_1
target: tail_1
weight: weight_1

.
.
.

- source: head_n
target: tail_n
weight: weight_n

nodes:
- id: 1

.
.
.

- id: n
properties:
directed: true
multigraph: true
self_loop: true
signed: true
weighted: true



Sample 1 (30 Vertices , 6KB)
Sample 2 (100 Vertices , 35KB)



Weighted Edge List(.wel)
<head_1> <tail_1> <weight_1>

.
.
.

<head_n> <tail_n> <weight_n>


Sample 1 (100 Vertices , 5KB)
Sample 2 (1000 Vertices , 192KB)



ASP(.lp)
node(1).
.
.
.
node(n).
edge(head_1,tail_1,weight_1).
.
.
.
edge(head_n,tail_n,weight_n).


Sample 1 (100 Vertices , 7KB)
Sample 2 (1000 Vertices , 76KB)



Trivial Graph Format(.tgf)
1
.
.
.
n
#
1 2 weight_1
.
.
.
n k weight_n


Sample 1 (100 Vertices , 4KB)
Sample 2 (1000 Vertices , 61KB)



UCINET DL Format(.dl)
dl
format=edgelist1
n=<number of vertices>
data:
1 2 weight_1
.
.
.
n k weight_n


Sample 1 (100 Vertices , 8KB)
Sample 2 (1000 Vertices , 729KB)



Matrix Market(.mtx)
%%MatrixMarket matrix coordinate real general
<number of vertices> <number of vertices> <number of edges>
<head_1> <tail_1> <weight_1>
.
.
.
<head_n> <tail_n> <weight_n>


Sample 1 (100 Vertices , 59KB)
Sample 2 (1000 Vertices , 1.8MB)



Graph Line(.gl)
<head_1> <tail_1>:<weight_1> <tail_2>:<weight_2> ... <tail_n>:<weight_n>
<head_2> <tail_1>:<weight_1> <tail_2>:<weight_2> ... <tail_n>:<weight_n>
.
.
.
<head_n> <tail_1>:<weight_1> <tail_2>:<weight_2> ... <tail_n>:<weight_n>


Sample 1 (100 Vertices , 17KB)
Sample 2 (1000 Vertices , 2.4MB)



GDF(.gdf)
nodedef>name VARCHAR,label VARCHAR
node_1,node_1_label
node_2,node_2_label
.
.
.
node_n,node_n_label
edgedef>node1 VARCHAR,node2 VARCHAR, weight DOUBLE
node_1,node_2,weight_1
node_1,node_3,weight_2
.
.
.
node_n,node_2,weight_n


Sample 1 (100 Vertices , 21KB)
Sample 2 (1000 Vertices , 690KB)



GML(.gml)
graph
[
multigraph 0
directed 0
node
[
id 1
label "Node 1"
]
node
[
id 2
label "Node 2"
]
.
.
.
node
[
id n
label "Node n"
]
edge
[
source 1
target 2
value W1
]
edge
[
source 2
target 4
value W2
]
.
.
.
edge
[
source n
target r
value Wn
]
]


Sample 1 (100 Vertices , 120KB)
Sample 2 (1000 Vertices , 2.4MB)



GEXF(.gexf)
<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2">
<meta lastmodifieddate="2009-03-20">
<creator>PyRGG</creator>
<description>File Name</description>
</meta>
<graph defaultedgetype="directed">
<nodes>
<node id="1" label="Node 1" />
<node id="2" label="Node 2" />
...
</nodes>
<edges>
<edge id="1" source="1" target="2" weight="400" />
...
</edges>
</graph>
</gexf>


Sample 1 (100 Vertices , 63KB)
Sample 2 (1000 Vertices , 6.4MB)



Graphviz(.gv)
graph example
{
node1 -- node2 [weight=W1];
node3 -- node4 [weight=W2];
node1 -- node3 [weight=W3];
.
.
.
}


Sample 1 (100 Vertices , 11KB)
Sample 2 (1000 Vertices , 106KB)
Online Visualization



Pickle(.p) (Binary Format)

Sample 1 (100 Vertices , 12KB)
Sample 2 (1000 Vertices , 340KB)



Example of Usage

Generate synthetic data for graph processing frameworks (some of them mentioned here) performance-analysis

Medusa
Totem
Frog
CuSha


Generate synthetic data for graph benchmark suite like GAP

Similar Works

Random Modular Network Generator Generates random graphs with tunable strength of community structure
randomGraph very simple random graph generator in MATLAB
Graph1 Random Graph Generator with Max capacity paths (C++)

Issues & Bug Reports
Just fill an issue and describe it. We'll check it ASAP!
or send an email to [email protected].
You can also join our discord server



Citing
If you use pyrgg in your research, please cite the JOSS paper ;-)
@article{Haghighi2017,
doi = {10.21105/joss.00331},
url = {https://doi.org/10.21105/joss.00331},
year = {2017},
month = {sep},
publisher = {The Open Journal},
volume = {2},
number = {17},
author = {Sepand Haghighi},
title = {Pyrgg: Python Random Graph Generator},
journal = {The Journal of Open Source Software}
}



JOSS



Zenodo



References
1- 9th DIMACS Implementation Challenge - Shortest Paths
2- Problem Based Benchmark Suite
3- MaximalClique - ASP Competition 2013
4- Pitas, Ioannis, ed. Graph-based social media analysis. Vol. 39. CRC Press, 2016.
5- Roughan, Matthew, and Jonathan Tuke. "The hitchhikers guide to sharing graph data." 2015 3rd International Conference on Future Internet of Things and Cloud. IEEE, 2015.
6- Borgatti, Stephen P., Martin G. Everett, and Linton C. Freeman. "Ucinet for Windows: Software for social network analysis." Harvard, MA: analytic technologies 6 (2002).
7- Matrix Market: File Formats
8- Social Network Visualizer
9- Adar, Eytan. "GUESS: a language and interface for graph exploration." Proceedings of the SIGCHI conference on Human Factors in computing systems. 2006.
10- Skiena, Steven S. The algorithm design manual. Springer International Publishing, 2020.
11- Chakrabarti, Deepayan, Yiping Zhan, and Christos Faloutsos. "R-MAT: A recursive model for graph mining." Proceedings of the 2004 SIAM International Conference on Data Mining. Society for Industrial and Applied Mathematics, 2004.
12- Zhong, Jianlong, and Bingsheng He. "An overview of medusa: simplified graph processing on gpus." ACM SIGPLAN Notices 47.8 (2012): 283-284.
13- Ellson, John, et al. "Graphviz and dynagraph—static and dynamic graph drawing tools." Graph drawing software. Springer, Berlin, Heidelberg, 2004. 127-148.

Logo designed by Zahra Mobasher

Show Your Support
Star This Repo
Give a ⭐️ if this project helped you!
Donate to Our Project
Bitcoin
1KtNLEEeUbTEK9PdN6Ya3ZAKXaqoKUuxCy
Ethereum
0xcD4Db18B6664A9662123D4307B074aE968535388
Litecoin
Ldnz5gMcEeV8BAdsyf8FstWDC6uyYR6pgZ
Doge
DDUnKpFQbBqLpFVZ9DfuVysBdr249HxVDh
Tron
TCZxzPZLcJHr2qR3uPUB1tXB6L3FDSSAx7
Ripple
rN7ZuRG7HDGHR5nof8nu5LrsbmSB61V1qq
Binance Coin
bnb1zglwcf0ac3d0s2f6ck5kgwvcru4tlctt4p5qef
Tether
0xcD4Db18B6664A9662123D4307B074aE968535388
Dash
Xd3Yn2qZJ7VE8nbKw2fS98aLxR5M6WUU3s
Stellar
GALPOLPISRHIYHLQER2TLJRGUSZH52RYDK6C3HIU4PSMNAV65Q36EGNL
Zilliqa
zil1knmz8zj88cf0exr2ry7nav9elehxfcgqu3c5e5
Coffeete



Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.
Unreleased
1.4 - 2023-07-06
Added

check_for_config function
load_config function
save_config function

Changed

README.md modified
Logo changed
codecov removed from dev-requirements.txt
Test system modified
Error messages updated

1.3 - 2022-11-30
Added

Graphviz(DOT) format

Changed

asciinema instruction video updated
Test system modified
README.md modified
Python 3.11 added to test.yml
CLI mode updated
dev-requirements.txt updated
To-do list moved to TODO.md

1.2 - 2022-09-07
Added

Anaconda workflow
Discord badge

Changed

Menu optimized
Docstrings modified
branch_gen function modified
edge_gen function modified
precision and min_edge parameters added to branch_gen function
random_edge parameter removed from branch_gen function
Test system modified
AUTHORS.md updated
License updated
README.md modified
Python 3.10 added to test.yml

Removed

sign_gen function
random_edge_limits function

1.1 - 2021-06-09
Added

requirements-splitter.py
is_weighted function
_write_properties_to_json function
PYRGG_TEST_MODE parameter

Changed

Test system modified
JSON, YAML and Pickle formats value changed from string to number
properties section added to JSON, YAML and Pickle formats
_write_to_json function renamed to _write_data_to_json
logger function modified
time_convert function modified
branch_gen function modified
References updated

1.0 - 2021-01-11
Added

Number of files option

Changed

All flags type changed to bool
Menu optimized
The logger function enhanced.
Time format in the logger changed to %Y-%m-%d %H:%M:%S
dl_maker function modified
tgf_maker function modified
gdf_maker function modified
run function modified

0.9 - 2020-10-07
Added

GEXF format
Float weight support
tox.ini

Changed

Menu optimized
pyrgg.py renamed to graph_gen.py
Other functions moved to functions.py
Test system modified
params.py refactored
graph_gen.py refactored
functions.py refactored
weight_str_to_number function renamed to convert_str_to_number
branch_gen function bugs fixed
input_filter function bug fixed
gl_maker function bug fixed
CONTRIBUTING.md updated
AUTHORS.md updated

Removed

print_test function
left_justify function
justify function
zero_insert function

0.8 - 2020-08-19
Added

GDF format
GML format

Changed

CLI snapshots updated
AUTHORS.md updated

0.7 - 2020-08-07
Added

Graph Line format

Changed

Menu optimized

0.6 - 2020-07-24
Added

Matrix Market format

Changed

json_maker function optimized
dl_maker function optimized
tgf_maker function optimized
lp_maker function optimized

0.5 - 2020-07-01
Added

TSV format
Multigraph control

Changed

branch_gen function modified
Website changed to https://www.pyrgg.ir

0.4 - 2020-06-17
Added

Self loop control
Github action

Changed

appveyor.yml updated

0.3 - 2019-11-29
Added

__version__ variable
CHANGELOG.md
dev-requirements.txt
requirements.txt
CODE_OF_CONDUCT.md
ISSUE_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
CONTRIBUTING.md
version_check.py
pyrgg_profile.py
Unweighted graph
Undirected graph
Exe version

Changed

Test system modified
README.md modified
Docstrings modified
get_input function modified
edge_gen function modified
Parameters moved to params.py

0.2 - 2017-09-20
Added

CSV format
YAML format
Weighted edge list format (WEL)
ASP format
Trivial graph format (TGF)
UCINET DL format
Pickle format

0.1 - 2017-08-19
Added

DIMACS format
JSON format
README

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.