Giter Site home page Giter Site logo

grum's Introduction

Graph Generation with Diffusion Mixture

Official Code Repository for the paper Graph Generation with Diffusion Mixture (ICML 2024).

In this repository, we implement the Graph Diffusion Mixture (GruM).

Why GruM?

  • Previous diffusion models cannot accurately model the graph structures as they learn to denoise at each step without considering the topology of the graphs to be generated.

  • To fix such a myopic behavior of previous diffusion models, we propose a new graph generation framework that captures the graph structures by directly predicting the final graph of the diffusion process modeled by a mixture of endpoint-conditioned diffusion processes.

  • Our method significantly outperforms previous graph diffusion models on the generation of diverse real and synthetic graphs, as well as on 2D/3D molecule generation tasks.

Code structure

We provide two separate projects of GruM for three types of graph generation tasks:

  • General graph
  • 2D molecule
  • 3D molecule

Each projects consists of the following:

GruM_2D : Code for general graph generation / 2D molecule generation 
GruM_3D : Code for 3D molecule generation

We provide the details in README.md for each projects.

Dependencies

Create an environment with Python 3.9.15 and Pytorch 1.12.1. Use the following command to install the requirements:

pip install -r requirements.txt
conda install pyg -c pyg
conda install -c conda-forge graph-tool=2.45
conda install -c conda-forge rdkit=2022.03.2

Citation

If you found the provided code with our paper useful in your work, we kindly request that you cite our work.

@article{jo2024GruM,
  author    = {Jaehyeong Jo and
               Dongki Kim and
               Sung Ju Hwang},
  title     = {Graph Generation with Diffusion Mixture},
  journal   = {arXiv:2302.03596},
  year      = {2024},
  url       = {https://arxiv.org/abs/2302.03596}
}

grum's People

Contributors

harryjo97 avatar dongkikim95 avatar

Stargazers

Jaehong Yoon avatar Mattia Rigon  avatar Xinjie Shen avatar Daeun Lee avatar Jinheon Baek avatar  avatar  avatar Zhuzhu Wei avatar Xinyang Liu avatar Juntong Shi avatar CONGHAO WANG avatar  avatar

Watchers

Kostas Georgiou avatar  avatar

Forkers

byun-jinyoung

grum's Issues

A question about EMA using in sampler.py

I found there Is a difference about EMA between Sampler and Sampler_mol function in sampler.py
There isn't a row self.ema.copy_to(self.model.parameters()) in def Sampler_mol(object), but def Sampler(object) does.
Does this mean that there is no need for EMA while sampling molecules?

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.