Online RNA-seq analysis: what browser tools can do with your data, and what you should run yourself
Use a web platform for everything downstream of a counts matrix, and run the FASTQ-to-counts step yourself. The browser tools (iDEP, ExpressAnalyst, RaNA-seq, START) are competent at normalization, differential expression, PCA, and enrichment, and they save you a day of plotting code. None of them should be the thing that decides how your reads were quantified, because that decision determines every number downstream, and because uploading 30 GB of human FASTQ to a public server is a choice you make once and cannot take back. Quantification with Salmon takes about ten minutes per sample on a laptop. Do that part locally, then take the matrix to the browser.
The split, concretely
Upstream (yours): FASTQ → QC → transcript quantification → gene-level counts matrix. Deterministic, version-pinnable, cheap to run, and the place where all the biology-specific judgment calls live.
Downstream (browser is fine): filtering, normalization, DESeq2/limma, PCA, heatmaps, GSEA/ORA, interactive gene lookup. These are fast, mostly standard, and easy to sanity-check by eye.
ExpressAnalyst is the one we reach for when the reference annotation is awkward, because it carries gene ID mapping and functional annotation for hundreds of species rather than the handful most tools support 1. For single-cell matrices, ASAP covers filtering, normalization, clustering, and marker detection in a browser session without you standing up a Seurat environment 2. iDEP is the fastest path from a counts CSV to a PCA plot and a k-means heatmap.
The pipeline we’d run
Assume paired-end, poly-A selected, 30M read pairs per sample, delivered as sample_R1.fastq.gz / sample_R2.fastq.gz, roughly 2–3 GB per file.
1. QC the raw reads.
fastqc -t 8 sample_R1.fastq.gz sample_R2.fastq.gz
multiqc .
Read the per-base quality, the adapter content, the duplication estimate, and the overrepresented sequences table. That last one is where you find out you sequenced hemoglobin.
2. Quantify with Salmon against a decoy-aware index.
Build the index once from the GENCODE transcript FASTA plus the primary assembly genome as decoys:
grep "^>" GRCh38.primary_assembly.genome.fa | cut -d " " -f 1 | sed 's/>//g' > decoys.txt
cat gencode.v44.transcripts.fa.gz GRCh38.primary_assembly.genome.fa.gz > gentrome.fa.gz
salmon index -t gentrome.fa.gz -d decoys.txt -p 12 -i salmon_idx -k 31 --gencode
Plan for about 16 GB of RAM during indexing. Then quantify:
salmon quant -i salmon_idx -l A \
-1 sample_R1.fastq.gz -2 sample_R2.fastq.gz \
-p 12 --validateMappings --seqBias --gcBias \
--numBootstraps 30 -o quants/sample
--gcBias matters more than people expect on library preps with variable fragment GC. --numBootstraps 30 gives you inferential replicates, which you need if you ever want to use sleuth or swish to separate technical from biological variance. Check the mapping rate in quants/sample/logs/salmon_quant.log. For a clean poly-A human library we expect 75–90%. Below 60%, something is wrong: wrong species, wrong index, heavy rRNA, or a contaminated sample.
If you prefer alignment to the genome (you want to look at splice junctions, novel transcripts, or allele-specific expression), use STAR with a two-pass run and featureCounts, and accept the cost: roughly 32 GB RAM for the human index and 10× the wall time. For most personal use, transcript quantification is the right default.
3. Collapse to gene level in R.
library(tximport); library(readr)
tx2gene <- read_csv("tx2gene_gencode_v44.csv")
txi <- tximport(files, type = "salmon", tx2gene = tx2gene,
countsFromAbundance = "lengthScaledTPM")
write.csv(round(txi$counts), "gene_counts.csv")
lengthScaledTPM gives you counts that carry the transcript-length correction, which is what you want feeding DESeq2 or limma-voom. That CSV is what you upload to iDEP or ExpressAnalyst.
4. Then use the browser. Upload gene_counts.csv plus a metadata table. Let the platform run DESeq2 with your design, generate the PCA, and run enrichment. Download the result tables. Record the tool version and the date, because these sites update and your numbers will move.
Failure modes that invalidate the result
Globin in whole blood. If your RNA came from whole blood without globin depletion, HBB, HBA1, and HBA2 will consume a majority of your reads and crush the effective depth for everything else. You will see it immediately in FastQC overrepresented sequences and in the TPM ranking. Either the prep used a depletion kit or it did not, and no amount of downstream normalization recovers the lost sensitivity.
rRNA. Poly-A selection usually leaves under 5% rRNA. Ribo-depleted libraries run higher. If rRNA is over 20%, treat the effective depth as much lower than the nominal read count.
Degraded RNA. Low RIN shows up as 3’ coverage bias and shortened effective transcript lengths. Salmon’s effective length correction partially compensates. It does not compensate for a sample that sat at room temperature.
Gene ID version mismatch. ENSG00000141510.17 and ENSG00000141510 do not join. Strip versions once, at the tximport step, and be consistent. Half of all “my gene disappeared” bugs are this.
Batch. If samples were prepped or sequenced on different days, the first principal component is often the batch, not the biology. Include batch in the model (~ batch + condition) rather than removing it from the matrix and then testing on the corrected values.
The n=1 problem
If you have one RNA-seq run of yourself, you cannot do differential expression. DESeq2 needs replicates to estimate dispersion, and a single sample gives you a point with no error bar. What a single run is good for: checking which transcripts are present at all, looking at specific pathways in absolute TPM terms, confirming that a variant from your WGS is expressed, and establishing a baseline.
The useful version is longitudinal. Sample yourself at several time points under the same prep and the same pipeline version, and your own earlier samples become the control. Within-person variance is much smaller than between-person variance, so a two-fold shift in one gene against your own baseline means more than the same shift against a population reference. Public compendia can serve as an external reference when you need one, and curated per-source compendia have been built exactly for that purpose in other systems 3.
One boundary: expression data does not diagnose anything. An unusual TPM value is a measurement, and interpreting it in the context of symptoms, history, or medication is a clinician’s job. Bring the tables to a physician rather than acting on them.
Where the browser tools genuinely win
Enrichment. Running GSEA correctly against current MSigDB collections, with the right ranking statistic and the right background gene set, is more fiddly than it looks, and the hosted tools have the annotation databases maintained for you 1. Also interactive exploration: clicking a point on a volcano plot and getting the gene’s expression across samples is worth more than another static PDF.
Where they lose: no FASTQ ingestion at reasonable scale, upload size caps in the tens of megabytes, no version pinning, and human sequence data leaving your control. For a personal profile, that last one is the deciding argument.
Questions people also ask
How much does it cost to analyze an RNA-seq dataset? Compute for bulk RNA-seq is close to free: Salmon quantification of a 30M-pair human sample is roughly 10 minutes on 12 cores, so a dozen samples is a couple of dollars of spot instance time plus storage. The hosted web tools are free. The cost is your time, mostly in QC and in getting the annotation joins right.
Why is single-cell sequencing so expensive? You pay for the partitioning chemistry and for depth across thousands of cells at once. Droplet microfluitics dropped the per-cell cost by orders of magnitude relative to plate-based methods, which is why the field moved to it 4. Multi-omic single-cell assays that measure RNA alongside protein or chromatin add reagent and sequencing cost per cell on top of that 5.
How do I read RNA sequencing data? Start with the gene-level TPM table sorted descending. The top of a tissue’s list should be genes you can name for that tissue. Then check a housekeeping set (ACTB, GAPDH, RPL13A) for plausible magnitudes, then look at your genes of interest. Counts are for statistics, TPMs are for reading.
What are good courses for this? The Griffith Lab’s rnabio.org material is the most practical end-to-end walkthrough of the command-line workflow. Pair it with the Bioconductor RNA-seq workflow vignette and the DESeq2 vignette, which are the actual documentation for the tools you will use.
Can an AI agent do the analysis for me? It can write the pipeline and interpret result tables well. Automated annotation and labeling of single-cell data with language-model agents is an active research direction 6, and integration across modalities remains the hard part 7. Verify the mapping rates and the design matrix yourself.
Oak builds longitudinal molecular profiles of individuals: whole-genome sequencing, RNA sequencing, proteomics, blood biomarkers, and continuous glucose data, integrated into one model of you. Build your profile.
Footnotes
-
Peng Liu, Jessica Ewald, Zhiqiang Pang, et al. ExpressAnalyst: A unified platform for RNA-sequencing analysis in non-model species. Nature Communications, 2023. https://doi.org/10.1038/s41467-023-38785-y ↩ ↩2
-
Vincent Gardeux, Fabrice P.A. David, Adrian Shajkofci, et al. ASAP: a web-based platform for the analysis and interactive visualization of single-cell RNA-seq data. Bioinformatics, 2017. https://doi.org/10.1093/bioinformatics/btx337 ↩
-
Ankita Singh, Helene Faustrup Kildegaard, Mikael Rørdam Andersen. An Online Compendium of CHO RNA‐Seq Data Allows Identification of CHO Cell Line‐Specific Transcriptomic Signatures. Biotechnology Journal, 2018. https://doi.org/10.1002/biot.201800070 ↩
-
Sanjay M. Prakadan, Alex K. Shalek, David A. Weitz. Scaling by shrinking: empowering single-cell ‘omics’ with microfluidic devices. Nature Reviews Genetics, 2017. https://doi.org/10.1038/nrg.2017.15 ↩
-
Alev Baysoy, Zhiliang Bai, Rahul Satija, et al. The technological landscape and applications of single-cell multi-omics. Nature Reviews Molecular Cell Biology, 2023. https://doi.org/10.1038/s41580-023-00615-w ↩
-
Saleem Al Dajani, Abel Sanchez, John R. Williams. DeepSeq: high-throughput single-cell RNA sequencing data labeling via web search-augmented agentic generative AI foundation models. Machine Learning Health, 2026. https://doi.org/10.1088/3049-477x/ae8550 ↩
-
Anjun Ma, Adam McDermaid, Jennifer Xu, et al. Integrative Methods and Practical Challenges for Single-Cell Multi-omics. Trends in biotechnology, 2020. https://doi.org/10.1016/j.tibtech.2020.02.013 ↩