{"id":20469013,"url":"https://github.com/pfnet-research/graph-nvp","last_synced_at":"2025-10-13T01:41:09.222Z","repository":{"id":36286771,"uuid":"197098778","full_name":"pfnet-research/graph-nvp","owner":"pfnet-research","description":"GraphNVP: An Invertible Flow Model for Generating Molecular Graphs","archived":false,"fork":false,"pushed_at":"2022-06-21T22:21:04.000Z","size":318,"stargazers_count":92,"open_issues_count":3,"forks_count":18,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-13T10:40:36.701Z","etag":null,"topics":["chainer","chemistry","deep-learning","generative-model","graph-convolutional-networks","invertible-neural-networks","neural-network","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pfnet-research.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-16T01:34:22.000Z","updated_at":"2024-12-19T10:19:46.000Z","dependencies_parsed_at":"2022-09-18T05:20:14.023Z","dependency_job_id":null,"html_url":"https://github.com/pfnet-research/graph-nvp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pfnet-research/graph-nvp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgraph-nvp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgraph-nvp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgraph-nvp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgraph-nvp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pfnet-research","download_url":"https://codeload.github.com/pfnet-research/graph-nvp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pfnet-research%2Fgraph-nvp/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264816576,"owners_count":23668220,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chainer","chemistry","deep-learning","generative-model","graph-convolutional-networks","invertible-neural-networks","neural-network","python"],"created_at":"2024-11-15T14:07:37.534Z","updated_at":"2025-10-13T01:41:04.169Z","avatar_url":"https://github.com/pfnet-research.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GraphNVP: An Invertible Flow Model for Generating Molecular Graphs\n\n\u003cp float=\"left\" align=\"middle\"\u003e\n  \u003cimg src=\"https://github.com/pfnet-research/graph-nvp/blob/master/assets/fig_interpolation.png\" width=\"800\" /\u003e \n\u003c/p\u003e\n\nThe paper is available on arXiv, [https://arxiv.org/abs/1905.11600](https://arxiv.org/abs/1905.11600).\n\n## Citation\nIf you find our work useful in your research, please consider citing:\n\n```\n@article{kaushalya2019graphnvp,\n  title={GraphNVP: An Invertible Flow Model for Generating Molecular Graphs},\n  author={Kaushalya, Madhawa and Katushiko,  Ishiguro and Kosuke, Nakago and Motoki, Abe},\n  journal={arXiv preprint arXiv:1905.11600},\n  year={2019}\n}\n```\n\n\n## Dependencies\n1. Python 3.6+\n1. Chainer\u003c=5.2.0 (Note: code may not work with chainer\u003e=6.0.0)\n1. cupy\u003c=5.2.0 (Note: please install the same version with chainer)\n1. chainer-chemistry==0.5.0\n1. rdkit (release 2017.09.3.0) [Check [chainer-chemistry](https://github.com/pfnet-research/chainer-chemistry) for more information]\n1. CUDA-Aware MPI (Only for running on multiple GPUS using ChainerMN. Check [ChainerMN installation guide](https://docs.chainer.org/en/stable/chainermn/installation/guide.html) for more information.)\n\nExample instllation\n\n```\nconda install -c rdkit rdkit==2017.09.3.0\npip install -r requirements.txt\n# please modify XX into your system's CUDA version\n# pip install cupy-cudaXX==5.2.0\npip install cupy-cuda100==5.2.0\n# When you want to use ChainerMN (Multi-GPU training)\npip install mpi4py\n```\n\nTested datasets\n* QM 9\n* Zinc 250k\n\n## Pre-trained models\n\nPre-trained model files are uploaded. Please download and place them to `models` directory.\n\n - https://drive.google.com/drive/folders/1bYpPT8jcy3PePBh8_Pp9vGUraBwOVN38\n\n## How to run code\n\n### Dataset preparation\n\n```bash\ncd data\n# Download and preprocess QM9 dataset\npython download_data.py --data_name=qm9\n# Download and preprocess ZINC-250k dataset\npython download_data.py --data_name=zinc250k\n```\nWe use the same train / validation split used by Kusner et al. ([Grammar VAE](https://github.com/mkusner/grammarVAE))\n\n### Training\n\n- QM9\n```bash\npython train_model.py -f qm9_relgcn_kekulized_ggnp.npz -b 256 -x 200 --gpu 0 --num_node_masks 9 --num_channel_masks 9 \\\n  --num_node_coupling 36 --num_channel_coupling 27 --num_atom_types 4 --apply_batch_norm True --node_mask_size 15 \\\n  --debug True --additive_transformations --save_dir=results/qm9 --learn_dist yes\n```\n\n- Zinc250k\n```bash\npython train_model.py -f zinc250k_relgcn_kekulized_ggnp.npz --data_name=zinc250k --num_atoms=38 -b 128 -x 200 --gpu 0 \\\n  --num_node_masks 38 --num_channel_masks 38 --num_node_coupling 38 --num_channel_coupling 38 --num_atom_types 9 \\\n  --apply_batch_norm True --node_mask_size 15 --debug True --additive_transformations \\\n  --save_dir=results/zinc250k --learn_dist yes\n```\n\nFor _multi-GPU training_ please check `scripts/train_qm9_chainermn.sh` and `scripts/train_zinc250k_chainermn.sh`.\n\n### Evaluation (Generating molecules with a trained model)\n\nA pre-trained model along with hyperparameters is available.\nPlease refer \"Pre-trained models\" section.\n\n- QM9\n\nExecuting the bash script `generate.sh` will generate molecules.\n\n```bash\npython generate.py -snapshot graph-nvp-final.npz \\\n--gpu -1 \\\n--data_name qm9 \\\n--data_dir data \\\n--hyperparams-path graphnvp-params.json \\\n--batch-size 1000 \\\n--model_dir models/qm9 \\\n--temperature 0.8 \\\n--delta 0.05 \\\n--n_experiments 1\n```\n\n\n- Zinc250k\n\n```bash\npython generate.py -snapshot graph-nvp-final-new.npz \\\n--gpu -1 \\\n--data_name zinc250k \\\n--data_dir data \\\n--hyperparams-path graph-nvp-new-params.json \\\n--batch-size 1000 \\\n--model_dir models/zinc-250k \\\n--temperature 0.75 \\\n--delta 0.05 \\\n--n_experiments 1 \\\n--molecule_file zinc250k_relgcn_kekulized_ggnp.npz\n```\n\n## Property optimization\n\n\u003cp float=\"left\" align=\"middle\"\u003e\n  \u003cimg src=\"https://github.com/pfnet-research/graph-nvp/blob/master/assets/fig_optimization.png\" width=\"600\" /\u003e \n\u003c/p\u003e\n\n - QM9 example\n\n```bash\npython optimize_property.py -snapshot graph-nvp-final.npz \\\n --hyperparams_path graphnvp-params.json \\\n --batch_size 1000 \\\n --model_dir models/qm9 \\\n --data_dir data \\\n --molecule_file qm9_relgcn_kekulized_ggnp.npz \\\n --temperature 1.0 \\\n --delta 0.5 \\\n --img_format png \\\n --property_name qed \\\n --property_model qed_model.pkl \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfnet-research%2Fgraph-nvp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpfnet-research%2Fgraph-nvp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpfnet-research%2Fgraph-nvp/lists"}