The dataset is based on SKEMPI v2.0, atoms from the interaction interface (located at a distance of no more than 4.0 angstroms from the partner protein) were retained from the complex structures and saved in JSON in the following format:
[
{
"uid": "1ahw", # RCSB PDB ID
"interface_graph": {
"coords": ..., # atomic coordinates, N x 3
"atoms": ..., # atoms, N
"residues": ..., # aminoacids names, N
"chain_ids": ..., # chain identifiers, N
"is_receptor": ..., # 0 — atom in receptor, 1 — atom in ligand
},
"affinity": -12.0 # Free energy of binding
}
]The samples are located in the data folder.
Pyenv was used to create the environment because the default Poetry build did not allow for building a working environment. Python 3.10.13 was used for this project. The libraries required to run this project are listed in the requirements.txt file in the requirements folder.
After creating and activating the virtual environment, you need to train the model. Training is configured via
train.yaml.
To do this, you can use the following commands:
python -m scripts.train
This command will run training on the GraphNet model from modules. To run training on the more advanced InvariantGNN model, you need to add the --config_name flag with the
name of the configuration file (train_invariant):
python -m scripts.train --config_name train_invariant
You can also view the results in TensorBoard. It will look something like this:
There will also be many other graphs that you can customize.
After training the network, it needs to be tested. You can test both GraphNet and InvariantGNN.
Example of metrics output for the GraphNet model.
Example of metrics output for the InvariantGNN model.

The launch is similar to the training:
python -m scripts.inference
python -m scripts.inference --config_name train_invariant
To output the example, simply run the file interface_graph.ipynb in Jupyter Notebook
and run the chunks sequentially to display the structure.

Matvey Belyakov