
This advanced programming course introduces the Galaxy bioinformatics platform for no-code/low-code workflows, and provides deep hands-on training in machine learning applied to biological data — from classical methods (Random Forest, SVM) to deep learning for genomic sequence analysis. Students develop ML literacy grounded in biological application and critical evaluation of model outputs.
1. Build, share, and publish reproducible bioinformatics workflows using Galaxy.
2. Apply supervised ML (classification and regression) to omics datasets using scikit-learn.
3. Implement dimensionality reduction (PCA, t-SNE, UMAP) for high-dimensional biological data.
4. Build convolutional neural networks for DNA sequence classification using TensorFlow/Keras.
5. Apply SHAP values to interpret ML model predictions in a biologically meaningful way.
• Galaxy architecture: histories, datasets, tools, workflows, collections; Galaxy Training Network (GTN) tutorials.
• Building workflows: workflow editor, tool parameters, workflow inputs/outputs, testing and publishing.
• Galaxy for RNA-seq: Import → FastQC → Trimmomatic → HISAT2 → featureCounts → DESeq2 — full pipeline in Galaxy.
• Galaxy for metagenomics: 16S pipeline in Galaxy; data libraries and shared histories.
• Supervised ML: random forest for cancer subtype classification from gene expression; SVM for protein function prediction; model selection and hyperparameter tuning (GridSearchCV).
• Handling biological data: class imbalance (SMOTE, class weighting); high-dimensionality (feature selection, regularisation); batch effects.
• Dimensionality reduction: PCA for variance decomposition, t-SNE for single-cell visualisation, UMAP for large-scale omics embedding.
• Model evaluation: ROC-AUC, precision-recall, calibration curves, nested cross-validation for unbiased performance estimation.
• Neural network fundamentals: perceptron, activation functions, backpropagation, optimisers (Adam, SGD), regularisation (dropout, L2).
• CNN for DNA sequences: one-hot encoding of sequences, convolutional layers for motif detection, pooling, dense layers for classification.
• Recurrent networks (LSTM) for sequential biological data: splice site prediction, protein secondary structure prediction.
• Transfer learning: using pre-trained language models (DNABert, ESM2 for proteins) for downstream tasks.
• SHAP for interpretability: TreeSHAP for tree models; DeepSHAP for neural networks; feature importance in biological context.
# CNN for DNA splice site prediction
import tensorflow as tf
from tensorflow import keras
import numpy as np
def one_hot_encode(seq):
"""One-hot encode DNA: A=[1,0,0,0], C=[0,1,0,0], G=[0,0,1,0], T=[0,0,0,1]"""
mapping = {"A":[1,0,0,0],"C":[0,1,0,0],"G":[0,0,1,0],"T":[0,0,0,1],"N":[0,0,0,0]}
return np.array([mapping.get(c,[0,0,0,0]) for c in seq.upper()])
# Load sequences and labels
X = np.array([one_hot_encode(s) for s in sequences]) # (n_seqs, seq_len, 4)
y = np.array(labels) # 1=splice site, 0=background
# Build CNN model
model = keras.Sequential([
keras.layers.Conv1D(32, kernel_size=12, activation="relu", input_shape=(200,4)),
keras.layers.MaxPooling1D(2),
keras.layers.Conv1D(64, kernel_size=8, activation="relu"),
keras.layers.GlobalMaxPooling1D(),
keras.layers.Dense(64, activation="relu"),
keras.layers.Dropout(0.4),
keras.layers.Dense(1, activation="sigmoid")
])
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["AUC"])
history = model.fit(X_train, y_train, epochs=20, batch_size=64, validation_split=0.2)