Trying Deep Learning-Based GO Term Annotation
TL;DR
Deep learning has achieved remarkable results in natural language processing. For predicting protein function through GO Term annotation from amino acid sequences, homology searches such as BLAST have traditionally been the dominant approach. Recently, several tools have begun performing function prediction using deep learning. In this post, we try out DeepGOPlus. It appears to be CNN-based.
Maxat Kulmanov, Robert Hoehndorf, DeepGOPlus: improved protein function prediction from sequence, Bioinformatics, Volume 36, Issue 2, 15 January 2020, Pages 422--429, https://doi.org/10.1093/bioinformatics/btz595
A website is also available, allowing you to easily try it out on the web. However, the website only supports analyzing 10 proteins at a time, so running a genome-wide analysis through it would be quite tedious.
Therefore, in this post we will use the model and Docker image provided by the authors to perform predictions. (github)
Preparing the Prerequisites
A Dockerfile is available on GitHub, so we can copy and use it. Based on the README, it does not appear to be hosted on Docker Hub. Inside, it installs deepgoplus via pip and also installs Diamond, which is used internally.
Build the image.
Download the model.
Since the goal here is simply to get it running, we will use the Arabidopsis thaliana FASTA file.
Running the Tool
The required arguments are --data-root to specify the directory containing the model and other data, and --in-file for the FASTA file. We also specify the output filename and a threshold, which represents a confidence-like score. We set it to 0.3, matching the value used on the website.