Skip to main content

Graph Neural Networks for Molecular Machine Learning

Project description

MolGraph

Graph Neural Networks with TensorFlow and Keras. Focused on Molecular Machine Learning.

molgraph

Highlights

Build a Graph Neural Network with Keras' Sequential API:

from molgraph import GraphTensor
from molgraph import layers
from tensorflow import keras

model = keras.Sequential([
    layers.GINConv(units=32),
    layers.GINConv(units=32),
    layers.Readout(),
    keras.layers.Dense(units=1),
])
output = model(
    GraphTensor(node_feature=[[4.], [2.]], edge_src=[0], edge_dst=[1])
)

Paper

See arXiv

Documentation

See readthedocs

Implementations

  • Graph tensor (GraphTensor)
    • A composite tensor holding graph data.
    • Has a ragged state (multiple graphs) and a non-ragged state (single disjoint graph).
    • Can conveniently go between both states (merge(), separate()).
    • Can propagate node states (features) based on edges (propagate()).
    • Can add, update and remove graph data (update(), remove()).
    • Compatible with TensorFlow's APIs (including Keras). For instance, graph data (encoded as a GraphTensor) can now seamlessly be used with keras.Sequential, keras.Functional, tf.data.Dataset, and tf.saved_model APIs.
  • Layers
  • Models
    • Although model building is easy with MolGraph, there are some built-in GNN models:
      • GIN
      • MPNN
      • DMPNN
    • And models for improved interpretability of GNNs:
      • SaliencyMapping
      • IntegratedSaliencyMapping
      • SmoothGradSaliencyMapping
      • GradientActivationMapping (Recommended)

Requirements/dependencies

  • Python (version ~= 3.10)
    • TensorFlow (version ~= 2.15.0)
    • RDKit (version ~= 2022.3.5)
    • Pandas (version ~= 1.0.3)
    • IPython (version ~= 8.12.0)

MolGraph should work with the more recent TensorFlow and RDKit versions. If not, try installing earlier versions of TensorFlow and RDKit.

Installation

For GPU users:

pip install molgraph[gpu]

For CPU users:

pip install molgraph

Now run your first program with MolGraph:

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.Featurizer([
    chemistry.features.Symbol(),
    chemistry.features.Hybridization(),
    # ...
])

bond_encoder = chemistry.Featurizer([
    chemistry.features.BondType(),
    # ...
])

encoder = chemistry.MolecularGraphEncoder(atom_encoder, bond_encoder)

# Obtain graphs 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([
    layers.GATConv(units=32, name='gat_conv_1'),
    layers.GATConv(units=32, 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)
scores = 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(x_train.separate())

Changelog

For a detailed list of changes, see the CHANGELOG.md.

Project details


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.6.5.tar.gz (110.5 kB view details)

Uploaded Source

Built Distribution

molgraph-0.6.5-py3-none-any.whl (197.6 kB view details)

Uploaded Python 3

File details

Details for the file molgraph-0.6.5.tar.gz.

File metadata

  • Download URL: molgraph-0.6.5.tar.gz
  • Upload date:
  • Size: 110.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for molgraph-0.6.5.tar.gz
Algorithm Hash digest
SHA256 9096a60e87528c98c15ac05ee8ae5a8763bd1cc12604360f6323746245283eab
MD5 4eb025301cd2b120de31fa1825154e21
BLAKE2b-256 6398d0955d28e9e05f29b3a5c0c8270ef08929c61dfb65f939873c79c7bda3d1

See more details on using hashes here.

File details

Details for the file molgraph-0.6.5-py3-none-any.whl.

File metadata

  • Download URL: molgraph-0.6.5-py3-none-any.whl
  • Upload date:
  • Size: 197.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for molgraph-0.6.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f35dcc2ea30c43be63246bc2f6f4891b30cebb125066e72de7cf5a5ef8ef732f
MD5 51b17c46d64d79affb3d8ee7bb2f702c
BLAKE2b-256 da23e521768e871977dc58e52a7d1e70648110962580e0fe3cc06043bd2af1b1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page