EPFL Machine Learning Course, Autumn 2022 - Class Project 1
Team members: Lubor Budaj, Matthew Dupraz, Anton Hosgood
This repository contains the code produced during this project. The aim of the project is to create a model that can classify a protein as either soluble or insoluble based only on its FASTA sequence.
Simply run the script src/run.py
to run a given model on the dataset. Hyperparameters and models can be configured in src/config.py
.
-
data/
- datasets containing FASTA sequences and labels denoting solubility -
src/
- source code used in our pipeline
The rest of the root directory contains notebooks holding analyses and other work carried out.
src/config.py
- (default) configuration of the models and trainingsrc/data.py
- methods for loading and encoding datasrc/models.py
- defines general architectures of the models usedsrc/scores.py
- methods for evaluating model performancesrc/train.py
- helper methods for trainingsrc/run.py
- main script for training
A good part of our work is found in the numerous Hupyter notebooks in the root directory:
Data_Expl.ipynb
- contains the initial phases of our exploratory data analysis, as well as our attempts at regression analysis, which ended up giving us better results than the deep learning modelsModel#_Eval.ipynb
- evaluating performance of model # with given set of parameters by taking the average over several runsEmbed_Visualisation.ipynb
- visualising the embedding of residues into 2D space that is obtained as a result of training model 3CNN_Visualisation.ipynb
- visualising the output of the first layer of the CNN on random test sequencesRegr_Analysis.ipynb
- contains an attempt at regression analysis by applying PCA to the one-hot representation of the FASTA sequence
We use Python 3.9.12
and PyTorch
to build our deep learning models. Several other libraries are used including NumPy
, pandas
, scikit-learn
.
Matplotlib
and seaborn
are used for visualisation purposes.