Implementations of graph neural networks for molecular machine learning
Project description
MolGraph: Graph Neural Networks for Molecular Machine Learning
This is an early release; things are still being updated and added. Hence, API compatibility may break in the future.
Any feedback is welcomed!
Manuscript
See pre-print
Documentation
See readthedocs
Installation
Install via pip:
pip install git+https://github.com/akensert/molgraph.git
Install via docker:
git clone https://github.com/akensert/molgraph.git cd molgraph/docker docker build -t molgraph-tf[-gpu][-jupyter]/molgraph:0.0 molgraph-tf[-gpu][-jupyter]/ docker run -it [-p 8888:8888] molgraph-tf[-gpu][-jupyter]/molgraph:0.0
Requirements/dependencies
- Python (version ~= 3.8.10)
- TensorFlow (version ~= 2.7.0)
- RDKit (version ~= 2022.3.3)
- NumPy (version ~= 1.21.2)
- Pandas (version ~= 1.0.3)
Tested with
- Ubuntu 20.04 - Python 3.8.10
- MacOS Monterey (12.3.1) - Python 3.10.3
Minimalistic implementation
A complete GNN implementation for small molecular graphs in about 30 lines of code:
from tensorflow import keras
from molgraph import chemistry
from molgraph import layers
from molgraph import models
# Obtain dataset, specifically ESOL
qm7 = chemistry.datasets.get('esol')
# Define molecular graph encoder
atom_encoder = chemistry.AtomFeaturizer([
chemistry.features.Symbol(),
chemistry.features.Hybridization(),
# ...
])
bond_encoder = chemistry.BondFeaturizer([
chemistry.features.BondType(),
# ...
])
encoder = chemistry.MolecularGraphEncoder(atom_encoder, bond_encoder)
# Obtain features and associated labels
x_train = encoder(qm7['train']['x'])
y_train = qm7['train']['y']
x_test = encoder(qm7['test']['x'])
y_test = qm7['test']['y']
# Build model via Keras API
gnn_model = keras.Sequential([
keras.layers.Input(type_spec=x_train.spec),
layers.GATConv(name='gat_conv_1'),
layers.GATConv(name='gat_conv_2'),
layers.Readout(),
keras.layers.Dense(units=1024, activation='relu'),
keras.layers.Dense(units=y_train.shape[-1])
])
# Compile, fit and evaluate
gnn_model.compile(optimizer='adam', loss='mae')
gnn_model.fit(x_train, y_train, epochs=50)
gnn_model.evaluate(x_test, y_test)
# Compute gradient activation maps
gam_model = models.GradientActivationMapping(
model=gnn_model, layer_names=['gat_conv_1', 'gat_conv_2'])
maps = gam_model.predict(x_train)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
molgraph-0.0.1.tar.gz
(80.2 kB
view details)
Built Distribution
molgraph-0.0.1-py3-none-any.whl
(126.1 kB
view details)
File details
Details for the file molgraph-0.0.1.tar.gz
.
File metadata
- Download URL: molgraph-0.0.1.tar.gz
- Upload date:
- Size: 80.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1cb0eb2b9670987840a86858ea6849cb368a7e12665d720df7e725991652d07 |
|
MD5 | 5201dae80da1f93dc66f0036345e93fd |
|
BLAKE2b-256 | b843bc4ec2640d176f1ad16821e3c1d580233798a22c462ef8d684734b05e468 |
File details
Details for the file molgraph-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: molgraph-0.0.1-py3-none-any.whl
- Upload date:
- Size: 126.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | daedb70690029a2f7e4afa56f0231d9e9fc0767af240a82c5f931559dc861ce0 |
|
MD5 | fb3f6d907c22dcd69a29e845c1867cce |
|
BLAKE2b-256 | ec1b1998af904b3c034f761e8c5047f4098aa01a6e05259e45738bd33f094f21 |