pax_global_header 0000666 0000000 0000000 00000000064 14714516510 0014516 g ustar 00root root 0000000 0000000 52 comment=a0ec05bbb4da7d845caf81b10022b9455ec66363
pyrgg-1.6/ 0000775 0000000 0000000 00000000000 14714516510 0012514 5 ustar 00root root 0000000 0000000 pyrgg-1.6/.coveragerc 0000664 0000000 0000000 00000000253 14714516510 0014635 0 ustar 00root root 0000000 0000000 [run]
branch = True
omit =
*/pyrgg/__main__.py
*/pyrgg/__init__.py
[report]
# Regexes for lines to exclude from consideration
exclude_lines =
pragma: no cover
pyrgg-1.6/.github/ 0000775 0000000 0000000 00000000000 14714516510 0014054 5 ustar 00root root 0000000 0000000 pyrgg-1.6/.github/CODE_OF_CONDUCT.md 0000664 0000000 0000000 00000006423 14714516510 0016660 0 ustar 00root root 0000000 0000000 # Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at info@pyrgg.site. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
pyrgg-1.6/.github/CONTRIBUTING.md 0000664 0000000 0000000 00000001310 14714516510 0016300 0 ustar 00root root 0000000 0000000 # Contribution
Changes and improvements are more than welcome! ❤️ Feel free to fork and open a pull request.
Please consider the following :
1. Fork it!
2. Create your feature branch (under `dev` branch)
3. Add your functions/methods to proper files
4. Add standard `docstring` to your functions/methods
5. Add tests for your functions/methods (`doctest` testcases in `test` folder)
6. Pass all CI tests
7. Update `References` section in `README.md` (`MLA` format)
8. Update `CHANGELOG.md`
- Describe changes under `[Unreleased]` section
9. Update `AUTHORS.md`
- Add your name under `# Other Contributors #` section
10. Submit a pull request into `dev` (please complete the pull request template) pyrgg-1.6/.github/FUNDING.yml 0000664 0000000 0000000 00000000052 14714516510 0015666 0 ustar 00root root 0000000 0000000 custom: https://www.pyrgg.site/donate.html pyrgg-1.6/.github/ISSUE_TEMPLATE/ 0000775 0000000 0000000 00000000000 14714516510 0016237 5 ustar 00root root 0000000 0000000 pyrgg-1.6/.github/ISSUE_TEMPLATE/bug_report.yml 0000664 0000000 0000000 00000005417 14714516510 0021141 0 ustar 00root root 0000000 0000000 name: Bug Report
description: File a bug report
title: "[Bug]: "
body:
- type: markdown
attributes:
value: |
Thanks for your time to fill out this bug report!
- type: input
id: contact
attributes:
label: Contact details
description: How can we get in touch with you if we need more info?
placeholder: ex. email@example.com
validations:
required: false
- type: textarea
id: what-happened
attributes:
label: What happened?
description: Provide a clear and concise description of what the bug is.
placeholder: >
Tell us a description of the bug.
validations:
required: true
- type: textarea
id: step-to-reproduce
attributes:
label: Steps to reproduce
description: Provide details of how to reproduce the bug.
placeholder: >
ex. 1. Go to '...'
validations:
required: true
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: What did you expect to happen?
placeholder: >
ex. I expected '...' to happen
validations:
required: true
- type: textarea
id: actual-behavior
attributes:
label: Actual behavior
description: What did actually happen?
placeholder: >
ex. Instead '...' happened
validations:
required: true
- type: dropdown
id: operating-system
attributes:
label: Operating system
description: Which operating system are you using?
options:
- Windows
- macOS
- Linux
default: 0
validations:
required: true
- type: dropdown
id: python-version
attributes:
label: Python version
description: Which version of Python are you using?
options:
- Python 3.13
- Python 3.12
- Python 3.11
- Python 3.10
- Python 3.9
- Python 3.8
- Python 3.7
- Python 3.6
- Python 3.5
default: 1
validations:
required: true
- type: dropdown
id: Pyrgg-version
attributes:
label: PyRGG version
description: Which version of PyRGG are you using?
options:
- PyRGG 1.6
- PyRGG 1.5
- PyRGG 1.4
- PyRGG 1.3
- PyRGG 1.2
- PyRGG 1.1
- PyRGG 1.0
- PyRGG 0.9
- PyRGG 0.8
- PyRGG 0.7
- PyRGG 0.6
- PyRGG 0.5
- PyRGG 0.4
- PyRGG 0.3
- PyRGG 0.2
- PyRGG 0.1
default: 0
validations:
required: true
- type: textarea
id: logs
attributes:
label: Relevant log output
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
render: shell
pyrgg-1.6/.github/ISSUE_TEMPLATE/config.yml 0000664 0000000 0000000 00000000264 14714516510 0020231 0 ustar 00root root 0000000 0000000 blank_issues_enabled: false
contact_links:
- name: Discord
url: https://discord.com/invite/dfYAWVMaCW
about: Ask questions and discuss with other PyRGG community members
pyrgg-1.6/.github/ISSUE_TEMPLATE/feature_request.yml 0000664 0000000 0000000 00000001707 14714516510 0022172 0 ustar 00root root 0000000 0000000 name: Feature Request
description: Suggest a feature for this project
title: "[Feature]: "
body:
- type: textarea
id: description
attributes:
label: Describe the feature you want to add
placeholder: >
I'd like to be able to [...]
validations:
required: true
- type: textarea
id: possible-solution
attributes:
label: Describe your proposed solution
placeholder: >
I think this could be done by [...]
validations:
required: false
- type: textarea
id: alternatives
attributes:
label: Describe alternatives you've considered, if relevant
placeholder: >
Another way to do this would be [...]
validations:
required: false
- type: textarea
id: additional-context
attributes:
label: Additional context
placeholder: >
Add any other context or screenshots about the feature request here.
validations:
required: false
pyrgg-1.6/.github/PULL_REQUEST_TEMPLATE.md 0000664 0000000 0000000 00000000160 14714516510 0017652 0 ustar 00root root 0000000 0000000 #### Reference Issues/PRs
#### What does this implement/fix? Explain your changes.
#### Any other comments?
pyrgg-1.6/.github/dependabot.yml 0000664 0000000 0000000 00000000245 14714516510 0016705 0 ustar 00root root 0000000 0000000 version: 2
updates:
- package-ecosystem: pip
directory: "/"
schedule:
interval: weekly
time: "01:30"
open-pull-requests-limit: 10
target-branch: dev
pyrgg-1.6/.github/workflows/ 0000775 0000000 0000000 00000000000 14714516510 0016111 5 ustar 00root root 0000000 0000000 pyrgg-1.6/.github/workflows/publish_conda.yaml 0000664 0000000 0000000 00000000672 14714516510 0021614 0 ustar 00root root 0000000 0000000 name: publish_conda
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- '*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: publish-to-conda
uses: sepandhaghighi/conda-package-publish-action@v1.2
with:
subDir: 'otherfile'
AnacondaToken: ${{ secrets.ANACONDA_TOKEN }}
pyrgg-1.6/.github/workflows/publish_pypi.yml 0000664 0000000 0000000 00000001755 14714516510 0021353 0 ustar 00root root 0000000 0000000 # This workflow will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
name: Upload Python Package
on:
push:
# Sequence of patterns matched against refs/tags
tags:
- '*' # Push events to matching v*, i.e. v1.0, v20.15.10
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v1
with:
python-version: '3.x'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install setuptools wheel twine
- name: Build and publish
env:
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
run: |
python setup.py sdist bdist_wheel
twine upload dist/*.tar.gz
twine upload dist/*.whl
pyrgg-1.6/.github/workflows/test.yml 0000664 0000000 0000000 00000004460 14714516510 0017617 0 ustar 00root root 0000000 0000000 # This workflow will install Python dependencies, run tests with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: CI
on:
push:
branches:
- master
- dev
pull_request:
branches:
- master
- dev
env:
TEST_PYTHON_VERSION: 3.9
TEST_OS: 'ubuntu-20.04'
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, windows-2022, macOS-13]
python-version: [3.6, 3.7, 3.8, 3.9, 3.10.0, 3.11.0, 3.12.0, 3.13.0]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Installation
run: |
python -m pip install --upgrade pip
pip install .
- name: First test
run: |
pyrgg test
pyrgg --version
- name: Test requirements Installation
run: |
python otherfile/requirements-splitter.py
pip install --upgrade --upgrade-strategy=only-if-needed -r test-requirements.txt
- name: Test with pytest
run: |
python -m pytest test --cov=pyrgg --cov-report=term
- name: Version check
run: |
python otherfile/version_check.py
if: matrix.python-version == env.TEST_PYTHON_VERSION
- name: Other tests
run: |
python -m vulture pyrgg/ otherfile/ setup.py --min-confidence 65 --exclude=__init__.py --sort-by-size
python -m bandit -r pyrgg -s B311,B403
python -m pydocstyle -v --match-dir=pyrgg
if: matrix.python-version == env.TEST_PYTHON_VERSION
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
fail_ci_if_error: false
if: matrix.python-version == env.TEST_PYTHON_VERSION && matrix.os == env.TEST_OS
- name: cProfile - PyRGG Engine
run: |
python -m cProfile -s cumtime otherfile/profiles/pyrgg_profile.py
- name: cProfile - Erdos Reyni Gilbert Engine
run: |
python -m cProfile -s cumtime otherfile/profiles/erg_profile.py
- name: cProfile - Erdos Reyni Engine
run: |
python -m cProfile -s cumtime otherfile/profiles/er_profile.py
pyrgg-1.6/.gitignore 0000664 0000000 0000000 00000002410 14714516510 0014501 0 ustar 00root root 0000000 0000000 # Created by .ignore support plugin (hsz.mobi)
### Python template
# Byte-compiled / optimized / DLL files
node_modules/
datasets/
__pycache__/
*.py[cod]
*$py.class
*.gr
*.json
*.csv
*.wel
*.lp
*.p
*.dl
*.tgf
# C extensions
*.so
# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover
.hypothesis/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# dotenv
.env
# virtualenv
.venv/
venv/
ENV/
# Spyder project settings
.spyderproject
# Rope project settings
.ropeproject
### Example user template template
### Example user template
# IntelliJ project files
.idea
*.iml
out
gen
pyrgg-1.6/AUTHORS.md 0000664 0000000 0000000 00000000613 14714516510 0014163 0 ustar 00root root 0000000 0000000 # Core Developers
----------
- Sepand Haghighi - Open Science Laboratory ([Github](https://github.com/sepandhaghighi))
- Sadra Sabouri - Open Science Laboratory ([Github](https://github.com/sadrasabouri))
# Other Contributors
----------
- [@zhmbshr](https://github.com/zhmbshr) **
- [@ivanovmg](https://github.com/ivanovmg)
- [@ahmadsalimi](https://github.com/ahmadsalimi)
** Graphic designer pyrgg-1.6/CHANGELOG.md 0000664 0000000 0000000 00000015247 14714516510 0014336 0 ustar 00root root 0000000 0000000 # Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [1.6] - 2024-11-13
### Added
- `pyrgg.engines.erdos_reyni` module
- `save_log` function
### Changed
- PyPI badge in `README.md` updated
- `logger` function format for `erdos_reyni_gilbert` changed
- GitHub actions are limited to the `dev` and `master` branches
- `README.md` modified
- `build_exe.bat` modified
- `Python 3.13` added to `test.yml`
## [1.5] - 2024-09-16
### Added
- `feature_request.yml` template
- `config.yml` for issue template
- `pyrgg.engines` package
- `pyrgg.engines.pyrgg` module
- `pyrgg.engines.erdos_reyni_gilbert` module
- `Erdős-Rényi-Gilbert` generation model
- Generation engine menu
- `handle_string` function
- `handle_pos_int` function
- `handle_output_format` function
- `handle_engine` function
- `SECURITY.md`
### Changed
- Metadata in files modified
- `Python 3.5` support dropped
- Bug report template modified
- Cprofile tests separated in files for engines
- `README.md` modified
- `Python 3.12` added to `test.yml`
- Menu options bug fixed
- Test system modified
- `engine` parameter added to `logger` function
- `MENU_ITEMS1` parameter changed to `MENU_ITEMS`
- `MENU_ITEMS2` parameter changed to `PYRGG_ENGINE_PARAMS`
- `_update_using_first_menu` function changed to `_update_using_menu`
- `_update_using_second_menu` function changed to `_update_with_engine_params`
- `ITEM_CONVERTORS` renamed to `ITEM_HANDLERS`
- Website domain changed to [https://www.pyrgg.site](https://www.pyrgg.site)
### Removed
- `dimacs_init` function
## [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](https://asciinema.org) 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](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
[Unreleased]: https://github.com/sepandhaghighi/pyrgg/compare/v1.6...dev
[1.6]: https://github.com/sepandhaghighi/pyrgg/compare/v1.5...v1.6
[1.5]: https://github.com/sepandhaghighi/pyrgg/compare/v1.4...v1.5
[1.4]: https://github.com/sepandhaghighi/pyrgg/compare/v1.3...v1.4
[1.3]: https://github.com/sepandhaghighi/pyrgg/compare/v1.2...v1.3
[1.2]: https://github.com/sepandhaghighi/pyrgg/compare/v1.1...v1.2
[1.1]: https://github.com/sepandhaghighi/pyrgg/compare/v1.0...v1.1
[1.0]: https://github.com/sepandhaghighi/pyrgg/compare/v0.9...v1.0
[0.9]: https://github.com/sepandhaghighi/pyrgg/compare/v0.8...v0.9
[0.8]: https://github.com/sepandhaghighi/pyrgg/compare/v0.7...v0.8
[0.7]: https://github.com/sepandhaghighi/pyrgg/compare/v0.6...v0.7
[0.6]: https://github.com/sepandhaghighi/pyrgg/compare/v0.5...v0.6
[0.5]: https://github.com/sepandhaghighi/pyrgg/compare/v0.4...v0.5
[0.4]: https://github.com/sepandhaghighi/pyrgg/compare/v0.3...v0.4
[0.3]: https://github.com/sepandhaghighi/pyrgg/compare/v0.2...v0.3
[0.2]: https://github.com/sepandhaghighi/pyrgg/compare/v0.1...v0.2
[0.1]: https://github.com/sepandhaghighi/pyrgg/compare/1e238cd...v0.1
pyrgg-1.6/LICENSE 0000664 0000000 0000000 00000002122 14714516510 0013516 0 ustar 00root root 0000000 0000000 MIT License
Copyright (c) 2017 Sepand Haghighi
Copyright (c) 2021 Sadra Sabouri
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
pyrgg-1.6/MANIFEST.in 0000664 0000000 0000000 00000000256 14714516510 0014255 0 ustar 00root root 0000000 0000000 include LICENSE
include *.md
include *.spec
include *.txt
include *.yml
include *.ini
recursive-include paper *.bib
recursive-include paper *.md
recursive-include paper *.pdf pyrgg-1.6/PYRGG.spec 0000664 0000000 0000000 00000001457 14714516510 0014267 0 ustar 00root root 0000000 0000000 # -*- mode: python -*-
block_cipher = None
pyrgg_version = "1.6"
a = Analysis(['pyrgg/__main__.py'],
pathex=['pyrgg'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='PYRGG-'+pyrgg_version,
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
icon='otherfile/icon.ico',
version="otherfile/Version.rc",
console=True )
pyrgg-1.6/README.md 0000664 0000000 0000000 00000045527 14714516510 0014010 0 ustar 00root root 0000000 0000000
PyRGG: Python Random Graph Generator
## Overview
PyRGG is a user-friendly synthetic random graph generator that is written in Python and supports multiple graph file formats, such as DIMACS-Graph files. It can generate graphs of various sizes and is specifically designed to create input files for a wide range of graph-based research applications, including testing, benchmarking, and performance analysis of graph processing frameworks. PyRGG is aimed at computer scientists who are studying graph algorithms and graph processing frameworks.
Open Hub |
 |
PyPI Counter |
 |
Github Stars |
 |
Branch |
master |
dev |
CI |
 |
 |
## Installation
### PyPI
- Check [Python Packaging User Guide](https://packaging.python.org/installing/)
- `pip install pyrgg==1.6`
### Source Code
- Download [Version 1.6](https://github.com/sepandhaghighi/pyrgg/archive/v1.6.zip) or [Latest Source ](https://github.com/sepandhaghighi/pyrgg/archive/dev.zip)
- `pip install .`
### Conda
- Check [Conda Managing Package](https://conda.io)
- `conda install -c sepandhaghighi pyrgg`
### Exe Version
⚠️ Only Windows
⚠️ For PyRGG targeting Windows < 10, the user needs to take special care to include the Visual C++ run-time `.dlls`(for more information visit [here](https://pyinstaller.org/en/v3.3.1/usage.html#windows))
- Download [Exe-Version 1.6](https://github.com/sepandhaghighi/pyrgg/releases/download/v1.6/PYRGG-1.6.exe)
- Run `PYRGG-1.6.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` (Linux)
- Run `pyrgg` or `python -m pyrgg` (or run `PYRGG.exe`)
- Enter data
## Engines
### PyRGG
Parameter |
Description |
Vertices Number |
The total number of vertices in the graph |
Min Edge Number |
The minimum number of edges connected to each vertex |
Max Edge Number |
The maximum number of edges connected to each vertex |
Weighted / Unweighted |
Specifies whether the graph is weighted or unweighted |
Min Weight |
The minimum weight of the edges (if weighted) |
Max Weight |
The maximum weight of the edges (if weighted) |
Signed / Unsigned |
Specifies whether the edge weights are signed or unsigned |
Directed / Undirected |
Specifies whether the graph is directed or undirected |
Self Loop / No Self Loop |
Specifies whether self-loop is allowed or not |
Simple / Multigraph |
Specifies whether the graph is a simple graph or a multigraph |
### Erdős–Rényi-Gilbert
Parameter |
Description |
Vertices Number |
The total number of vertices in the graph |
Probability |
The probability for edge creation between any two vertices |
Directed / Undirected |
Specifies whether the graph is directed or undirected |
### Erdős–Rényi
Parameter |
Description |
Vertices Number |
The total number of vertices in the graph |
Edge Number |
The total number of edges in the graph |
Directed / Undirected |
Specifies whether the graph is directed or undirected |
## Supported Formats
### DIMACS
```
p sp
a
.
.
.
a
```
* [Document](http://www.diag.uniroma1.it/challenge9/format.shtml)
* [Sample 1](https://www.dropbox.com/s/i80tnwuuv4iyqet/100.gr.gz?dl=0) (100 Vertices , 3KB)
* [Sample 2](https://www.dropbox.com/s/lqk42pwu7o4xauv/1000.gr.gz?dl=0) (1000 Vertices , 13KB)
* [Sample 3](https://www.dropbox.com/s/93dp8cjs6lnu83u/1000000.gr.gz?dl=0) (1000000 Vertices , 7MB)
* [Sample 4](https://www.dropbox.com/s/rrxdc4wt0ldonfk/5000000.gr.gz?dl=0) (5000000 Vertices , 37MB)
### CSV
```
,,
.
.
.
,,
```
* [Document](https://en.wikipedia.org/wiki/Comma-separated_values)
* [Sample 1](https://www.dropbox.com/s/dmld0eadftnatr5/100.csv?dl=0) (100 Vertices , 3KB)
* [Sample 2](https://www.dropbox.com/s/juxah4nwamzdegr/1000.csv?dl=0) (1000 Vertices , 51KB)
### TSV
```
.
.
.
```
* [Document](https://en.wikipedia.org/wiki/Tab-separated_values)
* [Sample 1](https://www.dropbox.com/s/j3zgs4kx2paxe75/100.tsv?dl=0) (100 Vertices , 29KB)
* [Sample 2](https://www.dropbox.com/s/ykagmjgwlpim6dq/1000.tsv?dl=0) (1000 Vertices , 420KB)
### 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
}
]
}
}
```
* [Document](https://en.wikipedia.org/wiki/JSON)
* [Sample 1](https://www.dropbox.com/s/yvevoyb8559nytb/100.json?dl=0) (100 Vertices , 26KB)
* [Sample 2](https://www.dropbox.com/s/f6kljlch7p2rfhy/1000.json?dl=0) (1000 Vertices , 494KB)
### 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
```
* [Document](https://en.wikipedia.org/wiki/YAML)
* [Sample 1](https://www.dropbox.com/s/9seljohtoqjzjzy/30.yaml?dl=0) (30 Vertices , 6KB)
* [Sample 2](https://www.dropbox.com/s/wtfh38rgmn29npi/100.yaml?dl=0) (100 Vertices , 35KB)
### Weighted Edge List
```
.
.
.
```
* [Document](http://www.cs.cmu.edu/~pbbs/benchmarks/graphIO.html)
* [Sample 1](https://www.dropbox.com/s/moie1xb2wj90y33/100.wel?dl=0) (100 Vertices , 5KB)
* [Sample 2](https://www.dropbox.com/s/h6pohl60okhdnt7/1000.wel?dl=0) (1000 Vertices , 192KB)
### ASP
```
node(1).
.
.
.
node(n).
edge(head_1,tail_1,weight_1).
.
.
.
edge(head_n,tail_n,weight_n).
```
* [Document](https://www.mat.unical.it/aspcomp2013/MaximalClique)
* [Sample 1](https://www.dropbox.com/s/4bufa1m4uamv48z/100.lp?dl=0) (100 Vertices , 7KB)
* [Sample 2](https://www.dropbox.com/s/w79fh1qva64namw/1000.lp?dl=0) (1000 Vertices , 76KB)
### Trivial Graph Format
```
1
.
.
.
n
#
1 2 weight_1
.
.
.
n k weight_n
```
* [Document](https://en.wikipedia.org/wiki/Trivial_Graph_Format)
* [Sample 1](https://www.dropbox.com/s/tehb6f3gz2o5v9c/100.tgf?dl=0) (100 Vertices , 4KB)
* [Sample 2](https://www.dropbox.com/s/9mjeq4w973189cc/1000.tgf?dl=0) (1000 Vertices , 61KB)
### UCINET DL Format
```
dl
format=edgelist1
n=
data:
1 2 weight_1
.
.
.
n k weight_n
```
* [Document](https://sites.google.com/site/ucinetsoftware/home)
* [Sample 1](https://www.dropbox.com/s/82wrl86uowwjud2/100.dl?dl=0) (100 Vertices , 8KB)
* [Sample 2](https://www.dropbox.com/s/kbzbsy47uvfqdsi/1000.dl?dl=0) (1000 Vertices , 729KB)
### Matrix Market
```
%%MatrixMarket matrix coordinate real general
.
.
.
```
* [Document](https://math.nist.gov/MatrixMarket/formats.html)
* [Sample 1](https://www.dropbox.com/s/ztw3vg0roups82q/100.mtx?dl=0) (100 Vertices , 59KB)
* [Sample 2](https://www.dropbox.com/s/skjjvbbzrpvryl4/1000.mtx?dl=0) (1000 Vertices , 1.8MB)
### Graph Line
```
: : ... :
: : ... :
.
.
.
: : ... :
```
* [Sample 1](https://www.dropbox.com/s/obmmb5nw1lca9z3/100.gl?dl=0) (100 Vertices , 17KB)
* [Sample 2](https://www.dropbox.com/s/intufsbudnmfv8m/1000.gl?dl=0) (1000 Vertices , 2.4MB)
### 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](https://www.dropbox.com/s/7dqox0f8e1f859s/100.gdf?dl=0) (100 Vertices , 21KB)
* [Sample 2](https://www.dropbox.com/s/xabjzpp0p5sr4b9/1000.gdf?dl=0) (1000 Vertices , 690KB)
### 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
]
]
```
* [Document](https://en.wikipedia.org/wiki/Graph_Modelling_Language)
* [Sample 1](https://www.dropbox.com/s/g9uvywn1fwt9aq7/100.gml?dl=0) (100 Vertices , 120KB)
* [Sample 2](https://www.dropbox.com/s/5gt5udezy56mlz9/1000.gml?dl=0) (1000 Vertices , 2.4MB)
### GEXF
```
PyRGG
File Name
...
...
```
* [Document](https://github.com/gephi/gexf/wiki/Basic-Concepts#network-topology)
* [Sample 1](https://www.dropbox.com/s/kgx8xl9j0dpk4us/100.gexf?dl=0) (100 Vertices , 63KB)
* [Sample 2](https://www.dropbox.com/s/7a380kf35buvusr/1000.gexf?dl=0) (1000 Vertices , 6.4MB)
### Graphviz
```
graph example
{
node1 -- node2 [weight=W1];
node3 -- node4 [weight=W2];
node1 -- node3 [weight=W3];
.
.
.
}
```
* [Document](https://graphviz.org/doc/info/lang.html)
* [Sample 1](https://www.dropbox.com/s/ukev1hi4kguomri/100.gv?dl=0) (100 Vertices , 11KB)
* [Sample 2](https://www.dropbox.com/s/vpvvliz96mdea1p/1000.gv?dl=0) (1000 Vertices , 106KB)
* [Online Visualization](https://dreampuf.github.io/GraphvizOnline/)
### Pickle
⚠️ Binary format
* [Document](https://docs.python.org/3.10/library/pickle.html)
* [Sample 1](https://www.dropbox.com/s/4s8zt9i13z39gts/100.p?dl=0) (100 Vertices , 12KB)
* [Sample 2](https://www.dropbox.com/s/fzurqu5au0p1b54/1000.p?dl=0) (1000 Vertices , 340KB)
## Issues & Bug Reports
Just fill an issue and describe it. We'll check it ASAP!
or send an email to [info@pyrgg.site](mailto:info@pyrgg.site "info@pyrgg.site").
You can also join our discord server
## Citing
If you use PyRGG in your research, please cite the [JOSS paper](http://joss.theoj.org/papers/da33f691984d9a35f66ff93a391bbc26 "PyRGG 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.
14- Gilbert, Edgar N. "Random graphs." The Annals of Mathematical Statistics 30.4 (1959): 1141-1144.
15- Erdős, Paul, and Alfréd Rényi. "On the strength of connectedness of a random graph." Acta Mathematica Hungarica 12.1 (1961): 261-267.
## Show Your Support
Star This Repo
Give a ⭐️ if this project helped you!
Donate to Our Project
If you do like our project and we hope that you do, can you please support us? Our project is not and is never going to be working for profit. We need the money just so we can continue doing what we do ;-) .
pyrgg-1.6/SECURITY.md 0000664 0000000 0000000 00000000750 14714516510 0014307 0 ustar 00root root 0000000 0000000 # Security Policy
## Supported Versions
| Version | Supported |
| ------------- | ------------------ |
| 1.6 | :white_check_mark: |
| < 1.6 | :x: |
## Reporting a Vulnerability
Please report security vulnerabilities by email to [info@pyrgg.site](mailto:info@pyrgg.site "info@pyrgg.site").
If the security vulnerability is accepted, a dedicated bugfix release will be issued as soon as possible (depending on the complexity of the fix). pyrgg-1.6/autopep8.bat 0000664 0000000 0000000 00000000616 14714516510 0014754 0 ustar 00root root 0000000 0000000 python -m autopep8 pyrgg --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose
python -m autopep8 setup.py --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose
python -m autopep8 otherfile/version_check.py --recursive --aggressive --aggressive --in-place --pep8-passes 2000 --max-line-length 120 --verbose pyrgg-1.6/build_exe.bat 0000664 0000000 0000000 00000000421 14714516510 0015141 0 ustar 00root root 0000000 0000000 @echo off
FOR /F "tokens=* USEBACKQ" %%F IN (`python --version`) DO (
SET py_version_str=%%F
)
SET py_version=%py_version_str:~7%
echo Your Python Version : %py_version%
echo Recommended Python Version : ^>= 3.6
echo -----
echo -----
python -m PyInstaller PYRGG.spec
pause pyrgg-1.6/codecov.yml 0000664 0000000 0000000 00000000307 14714516510 0014661 0 ustar 00root root 0000000 0000000 codecov:
require_ci_to_pass: yes
coverage:
precision: 2
round: up
range: "70...100"
status:
patch:
default:
enabled: no
project:
default:
threshold: 1%
pyrgg-1.6/dev-requirements.txt 0000664 0000000 0000000 00000000255 14714516510 0016556 0 ustar 00root root 0000000 0000000 art==6.3
pyyaml==6.0.2
scipy>=1.2.0
networkx>=2.1
pydot>=1.2.4
pytest>=4.3.1
pytest-cov>=2.6.1
setuptools>=40.8.0
vulture>=1.0
bandit>=1.5.1
pydocstyle>=3.0.0
flake8>=3.5.0
pyrgg-1.6/otherfile/ 0000775 0000000 0000000 00000000000 14714516510 0014475 5 ustar 00root root 0000000 0000000 pyrgg-1.6/otherfile/RELEASE.md 0000664 0000000 0000000 00000003134 14714516510 0016100 0 ustar 00root root 0000000 0000000 # PyRGG Release Instructions
**Last Update: 2024-10-06**
1. Create the `release` branch under `dev`
2. Update all version tags
1. `setup.py`
2. `README.md`
3. `SECURITY.md`
4. `PYRGG.spec`
5. `otherfile/version_check.py`
6. `otherfile/meta.yaml`
7. `otherfile/Version.rc`
8. `pyrgg/params.py`
3. Update `CHANGELOG.md`
1. Add a new header under `Unreleased` section (Example: `## [0.1] - 2022-08-17`)
2. Add a new compare link to the end of the file (Example: `[0.2]: https://github.com/sepandhaghighi/pyrgg/compare/v0.1...v0.2`)
3. Update `dev` compare link (Example: `[Unreleased]: https://github.com/sepandhaghighi/pyrgg/compare/v0.2...dev`)
4. Update `.github/ISSUE_TEMPLATE/bug_report.yml`
1. Add new version tag to `PyRGG version` dropbox options
5. Create a PR from `release` to `dev`
1. Title: `Version x.x` (Example: `Version 0.1`)
2. Tag all related issues
3. Labels: `release`
4. Set milestone
5. Wait for all CI pass
6. Need review (**1** reviewer)
7. Squash and merge
8. Delete `release` branch
6. Merge `dev` branch into `master`
1. Checkout to `master`
2. `git merge dev`
3. `git push origin master`
4. Wait for all CI pass
7. Build EXE file
1. Run `build_exe.bat` (Use `Python >= 3.6`)
8. Create a new release
1. Target branch: `master`
2. Tag: `vx.x` (Example: `v0.1`)
3. Title: `Version x.x` (Example: `Version 0.1`)
4. Copy changelogs
5. Tag all related issues
6. Upload EXE file
9. Bump!!
10. Close this version issues
11. Close milestone
12. Update website
1. `git checkout gh-pages`
2. Update all version tags
1. `index.html`
3. Update size of files
1. `index.html` pyrgg-1.6/otherfile/Version.rc 0000664 0000000 0000000 00000001460 14714516510 0016451 0 ustar 00root root 0000000 0000000 VSVersionInfo(
ffi=FixedFileInfo(
filevers=(1, 6, 0, 0),
prodvers=(1, 6, 0, 0),
mask=0x3f,
flags=0x0,
OS=0x40004,
fileType=0x1,
subtype=0x0,
date=(0, 0)
),
kids=[
StringFileInfo(
[
StringTable(
u'040904B0',
[StringStruct(u'CompanyName', u'PyRGG Development Team'),
StringStruct(u'FileDescription', u'PYRGG.exe'),
StringStruct(u'FileVersion', u'1.6.0.0'),
StringStruct(u'InternalName', u'PYRGG.exe'),
StringStruct(u'LegalCopyright', u'Copyright (c) 2024 PyRGG Development Team'),
StringStruct(u'OriginalFilename', u'PYRGG.exe'),
StringStruct(u'ProductName', u'PyRGG'),
StringStruct(u'ProductVersion', u'1, 6, 0, 0')])
]),
VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
]
) pyrgg-1.6/otherfile/donate-button.png 0000664 0000000 0000000 00000017772 14714516510 0020004 0 ustar 00root root 0000000 0000000 PNG
IHDR n pHYs ~ PLTEGpL 000...333333000000000333,,,***&&&
"""(((000"""(((...&&&,,,&&&((( """&&&,,,,,,"""***&&& 333000...&&&(((666,,,$$$坝***:::<<<ٳ888Տ"""LLL>>>̅ RRRfffHHHVVVZZZFFF݇XXXᱱ^^^é@@@JJJPPPDDDBBBpppbbbttt\\\~~~NNN```rrrTTTjjjvvvnnn|||xxxzzzlllA 5tRNS 3Uwf"Dfݻݪw̪"3̈D3DDfDDfU3ẅ vIDATx["GƓ6y&3y'Wٟ$.}kdߑeUtdPE$0¸FG_Uu6'R]S꣏xo~ym9=x-qgy5h=k||Ɲq\?/}ˈGx1R<+~!o(s,{62a;}aρmI^W+H\-W=T_ݘlWxoP@*y`qq!3v%z<֗7JħXބA^<~nq528
lá!LrZK}&>~Q&®L Dǘg<