PyDGN

PyDGN: a Python Library for Flexible and Reproducible Research on Deep Learning for Graphs - Published in JOSS (2023)

https://github.com/diningphil/pydgn

Science Score: 98.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 6 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: sciencedirect.com, joss.theoj.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software

Keywords

deep-graph-networks deep-learning-for-graphs evaluation-framework

Keywords from Contributors

mesh

Scientific Fields

Engineering Computer Science - 40% confidence
Last synced: 4 months ago · JSON representation ·

Repository

A research library for automating experiments on Deep Graph Networks

Basic Info
  • Host: GitHub
  • Owner: diningphil
  • License: bsd-3-clause
  • Language: Python
  • Default Branch: main
  • Homepage: https://pydgn.readthedocs.io
  • Size: 10.7 MB
Statistics
  • Stars: 223
  • Watchers: 5
  • Forks: 13
  • Open Issues: 0
  • Releases: 48
Topics
deep-graph-networks deep-learning-for-graphs evaluation-framework
Created almost 6 years ago · Last pushed 5 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

PyDGN: a research library for Deep Graph Networks

License Documentation Status Python Package Downloads Code style: black Interrogate Coverage DOI

Documentation

❗❗ 2025 Update: PyDGN is now considered legacy; users are encouraged to switch to MLWiz❗❗

This is a Python library to easily experiment with Deep Graph Networks (DGNs). It provides automatic management of data splitting, loading and common experimental settings. It also handles both model selection and risk assessment procedures, by trying many different configurations in parallel (CPU or GPU).

Citing this work

If you used this library for your project, please consider citing us:

@article{pydgn,
  author = {Errica, Federico and Bacciu, Davide and Micheli, Alessio},
  doi = {10.21105/joss.05713},
  journal = {Journal of Open Source Software},
  month = oct,
  number = {90},
  pages = {5713},
  title = {{PyDGN: a Python Library for Flexible and Reproducible Research on Deep Learning for Graphs}},
  url = {https://joss.theoj.org/papers/10.21105/joss.05713},
  volume = {8},
  year = {2023}
}

Installation:

Automated tests passing on Windows, Linux, and MacOS. Requires at least Python 3.8. Simply run

pip install pydgn

Quickstart:

Build dataset and data splits

pydgn-dataset --config-file examples/DATA_CONFIGS/config_NCI1.yml

Train

pydgn-train  --config-file examples/MODEL_CONFIGS/config_SupToyDGN.yml 

And we are up and running!

To debug your code you can add --debug to the command above, but the "GUI" will be disabled.

To stop the computation, use CTRL-C to send a SIGINT signal, and consider using the command ray stop to stop all Ray processes. Warning: ray stop stops all ray processes you have launched, including those of other experiments in progress, if any.

Using the Trained Models

It's very easy to load the model from the experiments (see also the Tutorial):

from pydgn.evaluation.util import *

config = retrieve_best_configuration('RESULTS/supervised_grid_search_toy_NCI1/MODEL_ASSESSMENT/OUTER_FOLD_1/MODEL_SELECTION/')
splits_filepath = 'examples/DATA_SPLITS/CHEMICAL/NCI1/NCI1_outer10_inner1.splits'
device = 'cpu'

# instantiate dataset
dataset = instantiate_dataset_from_config(config)

# instantiate model
model = instantiate_model_from_config(config, dataset, config_type="supervised_config")

# load model's checkpoint, assuming the best configuration has been loaded
checkpoint_location = 'RESULTS/supervised_grid_search_toy_NCI1/MODEL_ASSESSMENT/OUTER_FOLD_1/final_run1/best_checkpoint.pth'
load_checkpoint(checkpoint_location, model, device=device)

# you can now call the forward method of your model
y, embeddings = model(dataset[0])

Projects using PyDGN

Data Splits

We provide the data splits taken from

Errica Federico, Podda Marco, Bacciu Davide, Micheli Alessio: A Fair Comparison of Graph Neural Networks for Graph Classification. 8th International Conference on Learning Representations (ICLR 2020). Code

in the examples/DATA_SPLITS folder.

License:

PyDGN >= 1.0.0 is BSD 3-Clause licensed, as written in the LICENSE file.

Owner

  • Name: Federico Errica
  • Login: diningphil
  • Kind: user
  • Location: Heidelberg, DE
  • Company: NEC Laboratories Europe GmbH

Teaching Machines @ NLE

JOSS Publication

PyDGN: a Python Library for Flexible and Reproducible Research on Deep Learning for Graphs
Published
October 01, 2023
Volume 8, Issue 90, Page 5713
Authors
Federico Errica ORCID
NEC Laboratories Europe, Germany
Davide Bacciu ORCID
University of Pisa, Italy
Alessio Micheli ORCID
University of Pisa, Italy
Editor
Arfon Smith ORCID
Tags
Machine Learning Graph Networks Deep Learning for Graphs

Citation (CITATION.cff)

cff-version: "1.2.0"
authors:
- family-names: Errica
  given-names: Federico
  orcid: "https://orcid.org/0000-0001-5181-2904"
- family-names: Bacciu
  given-names: Davide
  orcid: "https://orcid.org/0000-0001-5213-2468"
- family-names: Micheli
  given-names: Alessio
  orcid: "https://orcid.org/0000-0001-5764-5238"
contact:
- family-names: Errica
  given-names: Federico
  orcid: "https://orcid.org/0000-0001-5181-2904"
doi: 10.5281/zenodo.8396373
message: If you use this software, please cite our article in the
  Journal of Open Source Software.
preferred-citation:
  authors:
  - family-names: Errica
    given-names: Federico
    orcid: "https://orcid.org/0000-0001-5181-2904"
  - family-names: Bacciu
    given-names: Davide
    orcid: "https://orcid.org/0000-0001-5213-2468"
  - family-names: Micheli
    given-names: Alessio
    orcid: "https://orcid.org/0000-0001-5764-5238"
  date-published: 2023-10-01
  doi: 10.21105/joss.05713
  issn: 2475-9066
  issue: 90
  journal: Journal of Open Source Software
  publisher:
    name: Open Journals
  start: 5713
  title: "PyDGN: a Python Library for Flexible and Reproducible Research
    on Deep Learning for Graphs"
  type: article
  url: "https://joss.theoj.org/papers/10.21105/joss.05713"
  volume: 8
title: "PyDGN: a Python Library for Flexible and Reproducible Research
  on Deep Learning for Graphs"

GitHub Events

Total
  • Watch event: 7
  • Pull request event: 1
Last Year
  • Watch event: 7
  • Pull request event: 1

Committers

Last synced: 5 months ago

All Time
  • Total Commits: 376
  • Total Committers: 5
  • Avg Commits per committer: 75.2
  • Development Distribution Score (DDS): 0.106
Past Year
  • Commits: 6
  • Committers: 1
  • Avg Commits per committer: 6.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Federico Errica f****a@p****m 336
Federico Errica f****a@p****m 20
Federico Errica f****a@p****t 9
Saurav Maheshkar s****r@g****m 6
dependabot[bot] 4****] 5
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 14
  • Total pull requests: 73
  • Average time to close issues: about 1 month
  • Average time to close pull requests: about 15 hours
  • Total issue authors: 2
  • Total pull request authors: 3
  • Average comments per issue: 1.21
  • Average comments per pull request: 0.08
  • Merged pull requests: 70
  • Bot issues: 0
  • Bot pull requests: 7
Past Year
  • Issues: 0
  • Pull requests: 7
  • Average time to close issues: N/A
  • Average time to close pull requests: 19 minutes
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 7
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • diningphil (15)
  • jwtxwd (1)
Pull Request Authors
  • diningphil (69)
  • dependabot[bot] (7)
  • SauravMaheshkar (1)
Top Labels
Issue Labels
bug (4)
Pull Request Labels
dependencies (7)

Dependencies

docs/requirements.txt pypi
  • PyYAML ==5.4
  • aioredis ==1.3.1
  • gpustat ==0.6.0
  • matplotlib ==3.3.4
  • networkx ==2.3
  • ogb ==1.3.3
  • ray ==1.5.2
  • readthedocs-sphinx-search ==0.1.1
  • requests ==2.22.0
  • seaborn ==0.9.0
  • sphinx ==4.4.0
  • sphinx_rtd_theme ==1.0.0
  • tensorboard ==2.1.1
  • torch ==1.10.2
  • torch-cluster *
  • torch-geometric ==2.0.3
  • torch-scatter *
  • torch-sparse *
  • torch-spline-conv *
  • tqdm ==4.47.0
setup.py pypi
  • PyYAML *
  • aioredis *
  • gpustat *
  • matplotlib *
  • networkx *
  • ogb *
  • ray *
  • requests *
  • seaborn *
  • tensorboard *
  • torch *
  • torch-geometric *
  • torch-geometric-temporal *
  • tqdm *
.github/workflows/interrogate-docstring.yaml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • ad-m/github-push-action master composite
  • diningphil/python-interrogate-check main composite
.github/workflows/python-publish.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • pypa/gh-action-pypi-publish 27b31702a0e7fc50959f5ad993c78deac1bdfc29 composite
.github/workflows/python-test-and-coverage.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
  • ad-m/github-push-action master composite
.github/requirements.txt pypi
  • PyYAML ==5.4
  • click <=8.0.4
  • gpustat ==1.0.0
  • ogb ==1.3.5
  • protobuf ==3.20.3
  • ray ==2.1.0
  • requests ==2.22.0
  • tensorboard ==2.11.0
  • torch ==1.13.0
  • tqdm ==4.47.0
  • wandb ==0.12.15
.github/requirements_torch_geometric.txt pypi
  • torch-cluster ==1.6.0
  • torch-geometric ==2.1.0.post1
  • torch-geometric-temporal >=0.52.0
  • torch-scatter ==2.1.0
  • torch-sparse ==0.6.15
  • torch-spline-conv ==1.2.1