From the article entitled **Deep GONet: Self-explainable deep neural network using Gene Ontology for phenotype prediction from gene expression data** (submitted to ECCB'20)
---
## Description
Deep GONet is a self-explainable neural network integrating the Gene Ontology into its hierarchical architecture.
## Get started
The code is implemented in Python using the [Tensorflow](https://www.tensorflow.org/) framework v1.12 (see [requirements.txt](https://forge.ibisc.univ-evry.fr/vbourgeais/DeepGONet/blob/master/requirements.txt) for more details)
### Dataset
The full dataset can be downloaded on ArrayExpress database under the id [E-MTAB-3732](https://www.ebi.ac.uk/arrayexpress/experiments/E-MTAB-3732/). Here, you can find the pre-processed training and test sets:
Deep GONet was achieved with the $L_{GO}$ regularization and the hyperparameter $\alpha=1e^{-2}$.
To replicate it, the command line flag *type_training* needs to be set to LGO (default value) and the command line flag *alpha* to $1e^{-2}$ (default value).
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*).
All the details about the command line flags can be provided by the following command:
```bash
python DeepGONet.py --help
```
For 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.
### Comparison with classical fully-connected network using L2 or L1 regularization terms
It is possible to compare the model with L2,L1 regularization instead of LGO.