From the article entitled Deep GONet: Self-explainable deep neural network based on Gene Ontology for phenotype prediction from gene expression data (submitted to APBC 2021) by Mohamed Ben Hamdoune, Victoria Bourgeais, Blaise Hanczar and Farida Zehraoui.
Deep GONet is a self-explainable neural network integrating the Gene Ontology into its hierarchical architecture.
The code is implemented in Python using the Tensorflow framework v1.12 (see requirements.txt for more details)
The full dataset can be downloaded on ArrayExpress database under the id E-MTAB-3732. Here, you can find the pre-processed training and test sets:
Additional files for NN architecture can be downloaded : filesforNNarch
Deep GONet was achieved with the
To replicate it, the command line flag type_training needs to be set to LGO (default value) and the command line flag alpha to
There exists 3 functions (flag processing): one is dedicated to the training of the model (train), another one to the evaluation of the model on the test set (evaluate), and the last one to the prediction of the outcomes of the samples from the test set (predict).
python DeepGONet.py --type_training="LGO" --alpha=1e-2 --EPOCHS=600 --is_training=True --display_step=10 --save=True --processing="train"python DeepGONet.py --type_training="LGO" --alpha=1e-2 --EPOCHS=600 --is_training=False --restore=True --processing="evaluate"python DeepGONet.py --type_training="LGO" --alpha=1e-2 --EPOCHS=600 --is_training=False --restore=True --processing="predict"The outcomes are saved into a numpy array.
All the details about the command line flags can be provided by the following command:
python DeepGONet.py --helpFor most of the flags, the default values can be employed. log_dir and save_dir can be modified to your own repositories. Only the flags in the command lines displayed have to be adjusted to achieve the desired objective.
It is possible to compare the model with L2, L1 regularization instead of LGO.
python DeepGONet.py --type_training="L2" --alpha=1e-2 --EPOCHS=600 --is_training=True --display_step=10 --save=True --processing="train"python DeepGONet.py --type_training="L1" --alpha=1e-2 --EPOCHS=600 --is_training=True --display_step=10 --save=True --processing="train"Without regularization:
python DeepGONet.py --alpha=0 --EPOCHS=100 --is_training=True --display_step=5 --save=True --processing="train"Please see the notebook entitled Interpretation_tool.ipynb to perform the biological interpretation of the results.