RNAflow User Manual
This manual guides you through every step of an RNA-seq analysis — from installing the app to interpreting your final results. Each section explains what is happening, what good results look like, and how to fix common problems.
Installation
Step 1 — Download RNAflow
Go to rnaflow.bioinfocodex.com and download the version for your operating system.
| Platform | File to download | Notes |
|---|---|---|
| macOS Apple Silicon (M1/M2/M3) | RNAflow-*-arm64.dmg | Most Macs since 2020 |
| macOS Intel | RNAflow-*.dmg | Macs before 2020 |
| Windows 10/11 | RNAflow-Setup-*.exe | Recommended installer |
| Linux (Ubuntu/Debian) | rnaflow_*_amd64.deb | Ubuntu 20.04+ |
| Linux (universal) | RNAflow-*.AppImage | Any Linux distribution |
Step 2 — Install on macOS
- Open the downloaded
.dmgfile - Drag RNAflow.app into your Applications folder
- Double-click RNAflow in Applications to launch it
xattr -cr ~/Downloads/RNAflow*.dmgThen open the DMG again and drag to Applications. Or after dragging:
xattr -cr /Applications/RNAflow.appAlternatively, right-click the app → Open → click Open in the popup dialog.
Step 3 — Install Miniforge (Conda)
RNAflow uses Conda to install bioinformatics tools. Miniforge is the recommended Conda distribution — it is lighter and faster than Anaconda.
- Go to github.com/conda-forge/miniforge/releases
- Download the installer for your system
- Run the installer and follow the prompts
- Restart your Terminal after installation
conda --version # Expected output: conda 24.x.x or similar
Step 4 — Create the rnaseq environment
RNAflow expects a Conda environment named rnaseq. Create it before running the pipeline:
conda create -n rnaseq python=3.10 -y conda activate rnaseq
First Launch
When you open RNAflow, the app starts a small local server in the background — this allows the "Run" buttons to execute commands on your machine. You will see a green connection indicator in the top-right of the sidebar when the server is ready (usually within 2–3 seconds).
Interface Overview
Step ✓ — System Check
This step checks that Conda, Python, and the rnaseq environment exist and are accessible. It also checks for conflicting software that could cause problems later.
# Good output ✓ conda found at /opt/miniforge3/bin/conda ✓ rnaseq environment exists ✓ Python 3.10.12 in rnaseq ✓ No conflicting base packages detected
Step ⚙ — Configure Project
Fill in the configuration panel before starting the pipeline. These settings control which genome, annotation, and tools are used throughout all subsequent steps.
| Setting | Description | Examples |
|---|---|---|
| Organism | The species you are studying | human, mouse, yeast, fly |
| Base folder | Where all project files will be saved | /home/user/my_rnaseq |
| Sequencing type | Single-end or paired-end reads | PE (most modern datasets) |
| Strandedness | Library strand specificity | Check kit protocol — usually "reverse" |
| Aligner | Tool for aligning reads to the genome | STAR (recommended) or HISAT2 |
infer_experiment.py from RSeQC after alignment (Step 6) and it will tell you.Step 1 — Install Tools
This step installs STAR, HISAT2, Salmon, FastQC, Trimmomatic, MultiQC, featureCounts, and other tools. It only needs to run once — Conda caches packages so reinstalling is fast.
STAR — splice-aware aligner (fast, accurate) HISAT2 — alternative aligner (lower memory) Salmon — quasi-mapping quantifier FastQC — per-read quality metrics Trimmomatic — adapter and quality trimming MultiQC — aggregate QC report featureCounts — gene-level read counting samtools — BAM file manipulation bedtools — genomic interval operations
Step 2 — Download Data
You need three things: a reference genome (FASTA), a gene annotation file (GTF), and your raw sequencing reads (FASTQ). RNAflow generates the commands to download all of these from Ensembl, NCBI, or SRA.
| File type | Source | Typical size |
|---|---|---|
| Genome FASTA | Ensembl / NCBI | 700 MB – 3 GB |
| Gene annotation GTF | Ensembl / NCBI | 50 – 200 MB |
| FASTQ reads (per sample) | SRA / ENA / your sequencer | 1 – 20 GB |
SRR12345678) and the fasterq-dump command. RNAflow generates this command for you — just enter your accession numbers.Step 3 — Quality Control
FastQC generates a per-sample quality report. MultiQC then combines all reports into a single HTML file. Always check this before trimming — it tells you which adapters are present and whether quality drops at the 3' end.
Step 4 — Trimming
Trimming improves alignment quality by removing adapter contamination and poor-quality bases from the ends of reads. RNAflow uses Trimmomatic (standard) or fastp (faster, with HTML report).
| Parameter | Meaning | Default |
|---|---|---|
LEADING | Remove bases below this quality from start | 3 |
TRAILING | Remove bases below this quality from end | 3 |
SLIDINGWINDOW | Trim when window average falls below threshold | 4:15 |
MINLEN | Discard reads shorter than this after trimming | 36 |
After trimming you should retain ≥ 90% of reads. If you are losing more than 20% of reads, check that you selected the correct adapter sequences.
Step 5 — Genome Index
Before alignment, the genome FASTA must be indexed. This is done once and reused for all samples. STAR indexing requires 30–50 GB of RAM for human/mouse genomes. For smaller organisms (yeast, fly), 8 GB is sufficient.
Yeast / Fly / Worm: 8 GB RAM sufficient
If your machine has less RAM, use HISAT2 instead — it builds a smaller index using only 8 GB for human.
Step 6 — Alignment
STAR aligns reads to the genome, accounting for splicing. Each sample produces a sorted, indexed BAM file. RNAflow runs all samples sequentially and streams STAR's output live in the terminal.
See Understanding Results → Alignment Stats for full interpretation.
Step 7 — Gene Counting
featureCounts counts how many aligned reads overlap each gene in the annotation GTF. The output is a tab-delimited count matrix with genes as rows and samples as columns — this is the input for DESeq2.
GeneID sample1 sample2 sample3 sample4 ENSG00000000003 1234 1089 2341 1876 ENSG00000000005 456 398 821 701 ENSG00000000419 8901 9234 17543 16230
-s 0 (unstranded), -s 1 (forward), or -s 2 (reverse).Step 9 — DESeq2 Differential Expression
DESeq2 is an R package that uses a negative binomial model to identify genes that are significantly different between conditions. RNAflow generates the complete R script — you just click Run and the results appear in your project folder.
DESeq2 normalises for library size differences, estimates dispersion, and tests each gene for differential expression. The output is a table of genes with their log2 fold change, p-value, and adjusted p-value (padj).
| Column | Meaning | Threshold for significance |
|---|---|---|
baseMean | Average normalised count across all samples | — (higher = more reliable) |
log2FoldChange | Fold change in log2 scale (positive = up in treatment) | |LFC| > 1 |
pvalue | Raw statistical p-value | — (use padj instead) |
padj | P-value adjusted for multiple testing (Benjamini-Hochberg) | < 0.05 (typical) |
Step 10 — Plots & Results
After DESeq2, RNAflow generates publication-ready figures automatically. See the full interpretation guide in the Understanding Results section below.
Advanced Steps — Multi-factor Design & GSEA
Multi-factor Design
Use when your experiment has more than one variable — for example, treatment AND time point, or treatment AND batch. The DESeq2 design formula becomes ~ batch + condition to control for the additional variable.
Batch Correction
If samples were sequenced in different batches, technical variation can mask biological signal. RNAflow supports:
- ComBat-seq — corrects raw counts directly (recommended for DESeq2)
- limma::removeBatchEffect — corrects normalised values for PCA/heatmaps
- SVA — estimates hidden batch effects automatically when batch is unknown
GSEA & Pathway Analysis
After finding differentially expressed genes, pathway analysis tells you which biological processes are changed. RNAflow supports:
- ORA (Over-Representation Analysis) — tests if your DE gene list is enriched in specific GO terms or KEGG pathways
- GSEA (Gene Set Enrichment Analysis) — uses the full ranked gene list, more sensitive than ORA
- Databases — GO (Biological Process, Molecular Function, Cellular Component), KEGG, Reactome
Understanding Results: FastQC Report
FastQC generates a report with multiple modules. Each module is marked with a ✅ (pass), ⚠️ (warn), or ❌ (fail). Warnings and fails are not always a problem — some are expected for RNA-seq data.
| FastQC Module | Pass ✅ | Warn/Fail — normal for RNA-seq? |
|---|---|---|
| Per Base Sequence Quality | Q > 28 across most positions | Slight drop at 3' end is normal |
| Per Sequence Quality | Peak at Q30+ | Low peak = poor run |
| Per Base Sequence Content | ~25% each A, T, G, C | ⚠️ Warning is normal for RNA-seq — first ~10 bp are biased |
| Sequence Duplication | <50% duplicated | ⚠️ Warning common in RNA-seq — highly expressed genes duplicate more |
| Overrepresented Sequences | No hits | ❌ Fail = adapter contamination → trim before alignment |
| Adapter Content | Near zero | ❌ Fail = adapter present → trimming required |
Understanding Results: Alignment Statistics
After STAR alignment, check Log.final.out for each sample. This file tells you how many reads aligned and where.
| Metric | Good value | Problem if… |
|---|---|---|
| Uniquely mapped reads % | ≥ 85% | < 70% — wrong genome? wrong organism? |
| Multi-mapped reads % | < 10% | > 20% — repetitive transcriptome, short reads |
| Unmapped: too short % | < 5% | > 20% — trimming too aggressive, or wrong genome |
| Unmapped: other % | < 2% | > 10% — contamination, wrong organism |
2. Wrong organism — verify your sample came from the organism you expect
3. rRNA contamination — ribosomal RNA wasn't depleted; many reads map to rDNA loci
4. Over-trimming — reads too short after trimming to align uniquely
Understanding Results: Count Matrix
The count matrix from featureCounts should show a reasonable distribution across samples. Check the "Assigned" percentage in featureCounts output — this should be >60% for strand-specific libraries and >50% for unstranded.
-s value:-s 0 = unstranded-s 1 = stranded (forward)-s 2 = reverse stranded (most common)The correct setting will jump assignment to >60%.
Understanding Results: PCA Plot
Principal Component Analysis (PCA) shows how similar your samples are to each other. Each dot is one sample. Samples of the same condition should cluster together.
| What you see | What it means |
|---|---|
| Conditions cluster separately | Strong biological signal — your experiment worked |
| Replicates cluster tightly | Low technical variation — high quality data |
| One replicate far from its group | Possible outlier — investigate that sample (check QC, alignment stats) |
| All samples mix together | No separation — biological effect is subtle or absent |
| Samples cluster by sequencing date not condition | Batch effect — use batch correction before DESeq2 |
Understanding Results: Volcano Plot
A volcano plot shows all genes with their fold change (x-axis) and statistical significance (y-axis). Significant DEGs are in the upper left (down-regulated) and upper right (up-regulated) corners.
| Region | Colour | Meaning |
|---|---|---|
| Upper right (high LFC, low padj) | Red | Significantly up-regulated in treatment |
| Upper left (low LFC, low padj) | Blue | Significantly down-regulated in treatment |
| Centre / bottom | Grey | Not significant — no strong evidence of change |
| Right but low on y-axis | Any | High fold change but not significant — too few replicates or high variability |
Understanding Results: Heatmap
The heatmap shows normalised expression of the top differentially expressed genes across all samples. Each column is a sample, each row is a gene. Samples are clustered hierarchically — similar expression profiles group together.
Understanding Results: GSEA & Pathway Analysis
GSEA tests whether a defined set of genes (e.g., a GO term or KEGG pathway) is enriched at the top or bottom of your ranked gene list.
| Term | Definition |
|---|---|
| NES (Normalized Enrichment Score) | Positive NES = pathway genes tend to be up-regulated. Negative NES = down-regulated. |
| pvalue / p.adjust | Statistical significance. Use p.adjust < 0.05 as threshold. |
| qvalue | Alternative FDR estimate. < 0.2 is commonly used for GSEA. |
| setSize | Number of genes in the pathway. Very small (<5) or very large (>500) sets are less reliable. |
Troubleshooting: Installation Issues
xattr -cr /Applications/RNAflow.appThen launch RNAflow normally.
1. Close and reopen the app
2. In the menu bar: View → Reload (Cmd+R on Mac, Ctrl+R on Windows)
3. Check that you have not moved the app after extracting it from the ZIP
Troubleshooting: Conda Problems
1. Restart your Terminal after installing Miniforge
2. Run
~/miniforge3/bin/conda init zsh (macOS) or ~/miniforge3/bin/conda init bash (Linux)3. Restart Terminal again
4. Run the system check again
conda create -n rnaseq python=3.10 -yThen re-run the system check.
conda install -n base -c conda-forge mamba -yThen RNAflow will use mamba automatically for faster installs.
Troubleshooting: Alignment Errors
conda activate rnaseq && STAR --versionThen re-run Step 5 (Genome Index) to regenerate the index.
1. Wrong genome: confirm FASTA and GTF are from the same organism and build
2. rRNA contamination: check if FastQC shows rRNA sequences in overrepresented sequences
3. Very short reads (<30 bp): adjust
--outFilterScoreMinOverLread in STAR settings4. Wrong read format: single-end vs paired-end mismatch — check your FASTQ files
1. Step 5 (Genome Index) completed successfully
2. The genome index path in your config matches where the index was built
3. You have read permissions on the genome folder
Troubleshooting: R / DESeq2 Errors
if (!require("BiocManager")) install.packages("BiocManager")BiocManager::install("DESeq2")This needs to be done once. RNAflow provides this command in the DESeq2 step.
1. Wrong strandedness in featureCounts — most reads were not assigned
2. Too few replicates — DESeq2 needs at least 2 per condition (3+ recommended)
3. Sample mislabeling — check your sample metadata matches your count matrix columns
Troubleshooting: macOS-Specific Issues
conda activate baseOr install Python via Homebrew:
brew install pythonThen restart RNAflow.
1. Open the app menu → Server → Server Status to see if it is running
2. Try Server → Start Local Server manually
3. If Python is missing, install it as above
4. In Copy mode (without the server), you can still use all commands — just paste them in your own Terminal
1. Use HISAT2 instead — change the aligner in Step ⚙ Configure. HISAT2 only needs 8 GB.
2. Or reduce STAR memory by adding
--genomeSAindexNbases 11 for smaller genomes (yeast etc.)
RNAflow Manual · © 2025 BioInfoCodex · bioinfocodex.com