Skip to main content

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, added and experimented with. Hence, API compatibility may break in the future.

Any feedback is welcomed!

Manuscript

See pre-print

Documentation

See readthedocs

Implementations

  • Convolutional
    • GCNConv (GCNConv)
    • GCN(E)Conv (GCNConv)
    • GINConv (GINConv)
    • GIN(E)Conv (GINConv)
    • GCNIIConv (GCNIIConv)
    • GraphSageConv (GraphSageConv)
  • Attentional
    • GATConv (GATConv)
    • GAT(E)Conv (GATConv)
    • GATv2Conv (GATv2Conv)
    • GAT(E)v2Conv (GATv2Conv)
    • GTConv (GTConv)
    • GT(E)Conv (GTConv)
    • GMMConv (GMMConv)
    • GatedGCNConv (GatedGCNConv)
    • GatedGCN(E)Conv (GatedGCNConv)
    • AttentiveFPConv (AttentiveFPConv)
  • Message-passing
    • MPNNConv (MPNNConv)
    • EdgeConv (EdgeConv)
  • Geometric
    • DTNNConv (DTNNConv)
    • GCFConv (GCFConv)

Installation

Install via pip:

pip install molgraph

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

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 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)
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.predict(x_train)

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

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

Uploaded Source

Built Distribution

molgraph-0.3.3-py3-none-any.whl (163.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for molgraph-0.3.3.tar.gz
Algorithm Hash digest
SHA256 69c2a17b005530af9c0d36a0508397442b428123a45eb369a49e187f735c1274
MD5 e9d4f2b479c474197071cd15d5300b0d
BLAKE2b-256 946791143060ab8c5b2ed898238551d560978319b4d70d04057a972b521ac697

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for molgraph-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d8a24bbb39d461501a747d29830efa68e68451ad59caad7061fc5ff6b35d8e57
MD5 9ebe5e773fe0335caee7daef5d6f4140
BLAKE2b-256 c266971bedaf3b651a3ee15bed7a4f8baf7e224a3046f15898ab01d094805c63

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