FAQ — Common Workshop Issues
The questions that come up every workshop. If yours isn’t here, ask on the workshop’s chat channel (see About) and we’ll add it.
Setup & installs
BiocManager::install() is taking forever / hanging on a single package
The most common cause is a slow Bioconductor mirror. Pick a closer one:
chooseBioCmirror() # interactive; pick a US mirror if you're in the US
options(BioC_mirror = "https://bioconductor.org")Then re-run BiocManager::install().
Mac: “compilation failed” / clang errors during install
You’re missing the Xcode command-line tools. In a terminal:
xcode-select --installRe-launch RStudio after it finishes. If you also see gfortran not found, install gfortran for macOS and retry.
Windows / WSL: R can’t see the project files
Don’t keep your project on the Windows side (/mnt/c/Users/...) and run R from WSL — file I/O is dramatically slower and case-sensitivity differs. Either:
- Run R + RStudio inside WSL (recommended for advanced users), with the project under
~/, or - Run RStudio for Windows with the project on the Windows side.
Pick one and stick with it.
“RStudio can’t find my newly installed packages”
Almost always a stale R session. Restart R: Session → Restart R (or Ctrl/Cmd + Shift + F10). If a package was installed from a different R version, run:
.libPaths() # which library is being used?
installed.packages()[, "Package"] # what's actually installed there?If the version doesn’t match, point RStudio at the correct R install: Tools → Global Options → General → R version.
Seurat install fails with a Matrix / SeuratObject version mismatch
Reinstall the trio together, in this order:
install.packages(c("Matrix", "SeuratObject", "Seurat"))Then restart R.
Datasets
Read10X() says “Barcode file missing” or “matrix file missing”
You almost certainly pointed at the wrong directory. The argument should be the folder containing barcodes.tsv.gz, features.tsv.gz, and matrix.mtx.gz, not any of those files. Run:
list.files("data/filtered_feature_bc_matrix")You should see exactly those three filenames.
I ran the tutorial but no figures / tables / .rds files appeared
They were almost certainly created — just not where you were looking. The tutorials expect a project folder with a scripts/ subfolder (where you put the downloaded .qmd files) — see Datasets → Expected directory layout and the downloadable README on the Materials page. Run each .qmd from scripts/; on first run it creates data/ and output/ModN/ as siblings of scripts/ (at the project root), and prints the exact location:
This module writes its figures & tables to: /Users/you/my_scrnaseq_project/output/Mod1
If you can’t find your files:
- Check
getwd()— it should be yourscripts/folder. The code writes to../dataand../output(one level up), so the files land at the project root. In RStudio, “Run Current Chunk” uses the folder the.qmdis in; a straysetwd()or the Tools ▸ Global Options ▸ R Markdown ▸ “Evaluate chunks in directory” setting can change it. - Keep all the tutorial
.qmdfiles together inscripts/. Tutorial 01 writes../data/ifnb_preprocessed.rdsand Tutorial 02 reads it from the same projectdata/; if the files are scattered across folders the hand-off breaks withcannot open the connection. - Nothing runs on Render with
eval: false— the chunks are tagged#| eval: false, so rendering the document shows the code without executing it. To actually produce files, run the chunks interactively (▶ / Ctrl-Cmd-Enter) or flipeval: true.
Running the analysis
Old results keep coming back / a fix doesn’t take effect (“stale” output)
These tutorials do not use knitr/Quarto chunk caching, so this is almost always one of two kinds of staleness:
- In memory — R keeps every object you’ve made for the whole session, so a later chunk can use an old object after you’ve edited an earlier one.
- On disk — each tutorial reads the
.rdsits predecessor saved intodata/; if you change an earlier tutorial but don’t re-run it, the next one loads the olddata/*.rds.
To get a clean run:
- Restart R to empty the session: Session ▸ Restart R (
Ctrl/Cmd + Shift + F10), then re-run top-to-bottom — Run ▸ Restart R and Run All Chunks does both. (rm(list = ls())clears variables but not loaded packages; prefer Restart R.) - Stop RStudio reloading old objects: Tools ▸ Global Options ▸ General — uncheck “Restore .RData into workspace at startup” and set “Save workspace to .RData on exit” to Never.
- Re-run any earlier tutorial you changed so it overwrites its
data/*.rds. To force a full clean rebuild, deletedata/and start again from Tutorial 01 (run from yourscripts/folder):unlink("../data", recursive = TRUE).ifnbre-downloads from its package cache, so you only regenerate the intermediates. - To clear only the stale plots/tables shown under chunks in the editor (display only, not computation): the Run/gear menu has “Clear All Output”.
My UMAP doesn’t match the slide / handout exactly
Expected. UMAP and clustering both depend on a random seed. The cluster identities and overall topology should match; rotation/reflection of the embedding will not. To reproduce exactly, set:
set.seed(2026)
seu <- RunUMAP(seu, dims = 1:30, seed.use = 2026)
seu <- FindClusters(seu, random.seed = 2026)FindMarkers is slow
Install presto (it’s in the install script). Seurat will detect it automatically and use a much faster Wilcoxon implementation.
I get warnings about future / parallelization
Most are safe to ignore. To silence and pick a sensible default, add at the top of your script:
options(future.globals.maxSize = 8 * 1024^3) # 8 GB
future::plan("multicore", workers = 4) # or "multisession" on Windows“Cannot allocate vector of size XX Gb”
You’ve run out of RAM. Options, in increasing order of effort:
- Restart R and only load the objects you need.
- Subset cells (
subset(seu, downsample = 5000)for an exploration session). - Use sparse-matrix operations (
Seuratdoes by default; check that you haven’t accidentally turned the assay into a dense matrix). - Move to Talapas: a
--mem=64Ginteractive job is plenty for most tutorials.
Talapas / HPC
“Permission denied (publickey, password)”
You either typed the password wrong, or your account isn’t active yet. Reset at https://duckid.uoregon.edu/ and verify you can log in to a UO web service first. Email RACS if it persists.
Duo prompt never arrives
Make sure the Duo Mobile app is open and your phone has data/Wi-Fi. If pushes don’t work, type 2 instead of 1 at the Duo prompt to get a phone-call code, or 3 for a passcode.
srun says “Invalid account or account/partition combination”
You forgot --account=<myPIRG> or your SLURM_ACCOUNT env-var isn’t set. See the SLURM Basics tutorial §2.
My job is PD (pending) forever
Run squeue -j <jobid> --start — the REASON column tells you why. Common ones:
Resources— you asked for more than the cluster currently has free; let earlier jobs drain.Priority— normal queueing; you’ll run when it’s your turn.ReqNodeNotAvail, Reserved for maintenance— your wall time runs into a maintenance window. Shorten--timeor add--time-min.
scratch/ looks empty after a few months
/scratch/<PIRG>/ purges files not accessed in 90 days. Move important outputs to /projects/<PIRG>/ or to LSRS for long-term storage. RACS does not back up Talapas.
Workshop logistics
Where do I download the tutorials?
Materials page → Download the tutorials. Each link is a raw .qmd file you open in RStudio.
Can I work in Python / scanpy instead of R / Seurat?
Yes — the lectures are framework-agnostic, and most tutorials include a Python equivalent in a panel-tabset block. The tutorials assume Seurat by default, but a working scanpy equivalent that produces the same output is perfectly fine.
I don’t have a Talapas account — can I still attend?
Yes. Everything except the SLURM Basics tutorial runs on a laptop. Talapas is recommended for the integration / large-dataset stretch goals but isn’t required.
Are recordings available?
See About for the recording policy and link.