Please see <https://pages.github.umn.edu/MSI-RIS/Tutorials/sc_intro/> for the latest version of this tutorial document.
Introduction to Single Cell Genomics
Last Updated: 2026-09-08
Last Delivered: 2026-04-21
Check out the recording of this tutorial and other MSI tutorials on our YouTube channel:
https://www.youtube.com/@UofMMSI/videos
Contact MSI
Our staff can help you access the MSI’s high performance computing resources, design and analyze your experiments!
- For general MSI help (using the systems, how to log in, etc.) email help@msi.umn.edu
- For bioinformatics questions (experimental design, analysis contracts, etc.) email ribhelp@msi.umn.edu
0. Introduction
0.1 Goals
In this tutorial we will cover the following topics:
- Discuss single cell measurement technologies, including some guidelines for planning a successful single cell or single nucleus experiment
- Provide an brief overview of single cell/nucleus gene expression analysis steps
- Demonstrate how to use MSI’s resources for performing single-cell analysis in R and Python
- Discuss important analysis considerations
- Showcase possible analysis avenues for scRNA-seq/snRNA-seq annotated data and discuss other data types
Single Cell or Single Nucleus There are many similarities between single cell RNA-seq analysis (scRNA-seq) and single nuclei RNA-seq analysis (snRNA-seq). We will use the term “single cell” throughout this tutorial for simplicity. The majority of the workflow for scRNA-seq is also applicable to snRNA-seq, with some small but important differences for sample preparation and quality control. Details are provided in our Single Cell Experimental Design template
0.2 Brief Introduction to Single Cell Methods
Here we discuss how single cell/nucleus transcriptomes are measured to create a count data matrix containing the expression of each gene for each cell/nucleus.
0.3 Single Cell Experimental Design
In practice, analyzing single cell experiments requires extensive fine tuning depending on the characteristics of the biological system and research questions. MSI Bioinformatics analysts developed this Single Cell Experimental Design template to help you consider important aspects of sample preparation and sequencing.
Some key points from that document include:
- What organism are you studying? Probe-based technologies (ie. 10X Flex) are available only for a subset of organisms.
- Can you get samples at the same time? How are you going to arrange the labwork to avoid confounding factors?
- Morphology of cells: can you actually capture the cells inside a droplet? If not, consider single nuclei or combinatorial labeling approaches.
- Ease of dissociation/stickyness: can you isolate “single” cells? You might need protocol optimizations.
- How abundant are the cell types of interest in your tissue? If rare, you might need enrichment approaches like cell sorting before library preparation.
- Are you planning to do statistical analysis? Then we strongly recommend biological replication!
We created this table to compare the 3 current types of single cell kits that are used by researchers at UMN. You may find it helpful when you are planning your experiments:
Another important consideration in experimental design is minimizing batch effects. Here we provide an example of how a batch effect can be introduced:
Remember, you can always reach out to MSI RI Bioinformatics for a free of charge consultation to help you with planning your sequencing experiments.
1. Single Cell RNA-seq Analysis on MSI
Accessing MSI systems requires that you are either on the UMN campus
network (eduroam or Ethernet in a UMN building) or connected to the UMN VPN. Please see https://it.umn.edu/services-technologies/virtual-private-network-vpn
for information on connecting to the UMN VPN.
You will also be required to have DUO multi-factor authentication set up. Please see https://it.umn.edu/services-technologies/self-help-guides/duo-set-use-duo-security for information about enrolling your device in DUO.
In this section we will briefly explore how to access MSI resources and get started with your single cell analysis. Our main goals are:
- Get familiar with the Open on Demand (OOD) interface
- Learn how to request resources from our HPC systems using available interactive apps (Jupyter and RStudio)
- Wrangle the large counts matrix resulting from a single cell experiment into a format compatible with the main analysis packages (Scanpy and Seurat)
- Generate some common plots for cell populations and gene expression
The software and data needed for this exercise is preinstalled in our systems. We also have created code templates with the commands you will need, please download them to your computer using the following links:
1.1 Open On Demand: files, terminal, interactive apps
Open on Demand (OOD) is web-browser based interface that allows access to MSI resources. We can see the files stored in the system and access computing nodes through a terminal or through graphical user interfaces and interactive apps.
A particularly useful option is the up/download button in the Files tab. This let’s you transfer files between your personal computer and the HPC cluster. Let’s try uploading the code templates into your Home Directory.
1.2 Scanpy in Jupyter: Structure of Anndata objects
In this section we’ll cover how to connect to JupyterLabs through OOD, the interface and how to create your first anndata object, which you can then analyze with scanpy. For that I have preinstalled the software needed.
Installing Scanpy
Most certainly you’ll need to install software for your particular analysis. To do so, you could create an environment that contains all the packages. This is a little example with commands to create a conda environment that contains scanpy (and all its dependencies) and that is displayed in your JupyterLabs interface.
module load miniforge
today_date=$(date +%d%m%y)
code_path='/projects/standard/YOUR_GROUP/YOUR_USER/software' #choose a folder where you have writting permissions
conda create --copy -p $code_path/scanpy_${today_date} scanpy ipykernel
source activate $code_path/scanpy_${today_date}
python -m ipykernel install --user --name SOMETHING1 --display-name SOMETHING2 #You'll see SOMETHING2 in JupyterLabs
conda deactivate
For a more comprehensive guide on how to install and manage your own software check the Software Management tutorial on our YouTube channel!
Demo checklist:
- Session options - customizing
- JupyterLab interface - files and kernels
- Naming files, code/md chunks
- Import libraries
- Order of operations: click A/B, relocate
- Count matrix –> anndata structure
- Variables –> warnings
- Observations –> adding metadata
- Layers –> sparcity and dimentionality
- Save/load your work
- Tutorials and function reference
1.3 Seurat in RStudio: Structure of Seurat objects
In this section I’ll briefly show you how to connect to RStudio through OOD, the interface and how to create your first Seurat object. For that I have preinstalled the software needed.
Demo checklist:
- Session options - customizing
- RStudio interface - console, scripts, file navigation and environment variables
- .libPaths() - installation tips (permissions, dependencies)
- Count matrix - sparcity
- Seurat object - structure
- Metadata
- Slots
- Save/load your work
- Viz on a fully analyzed object
- Tutorials and built in functions
2: Analysis Considerations
Single cell experiments can be as varied as tissue types and biological questions, so we can’t give you a roadmap of how the analysis should be performed. Instead, this section aims to walk you through the main steps to go from a count matrix to annotated data.
3: Exploring Biological Questions
Once you have an annotated dataset you can begin to explore biological questions. This section provides a brief introduction to possible downstream analysis options for annotated single cell RNA-seq data and describes other data types.
4. Resources
We hope this tutorial facilitates your introduction to the world of single cell analysis, but there is so much more to explore! The links here point to useful information along the experiment and analysis journey:
Experimental design
- Planning: https://z.umn.edu/single_cell
Using MSI Resources
- Getting access: https://msi.umn.edu/getting-started/getting-started-and-access
- Batch jobs: https://msi.umn.edu/computing/slurm-job-submission-and-scheduling
- Interactive computing: https://msi.umn.edu/computing/interactive-hpc/open-ondemand
- Tutorials page: https://msi.umn.edu/getting-started/help/tutorials
- Youtube channel: https://www.youtube.com/@UofMMSI/videos
- Biological databases: https://msi.umn.edu/consulting-and-research/bioinformatics-guides/bioref
Single cell analysis
- Seurat package: https://satijalab.org/seurat/
- Scanpy package: https://scanpy.readthedocs.io/en/stable/index.html
- Azimuth reference atlas: https://azimuth.hubmapconsortium.org/
- CellTypist reference atlas: https://www.celltypist.org/
FEEDBACK CONTACT
Thank you for reading this document, we hope it helps your research! This tutorial was prepared by Natalia Calixto Mancipe, Marissa Macchietto, and Sarah Munro, in the Core Bioinformatics group at MSI. We’d love to hear your feedback, please email us at ribhelp@msi.umn.edu.
5. Supplementary Materials
5.1 Exercise: How to download single cell data from GEO
We will use the terminal in OOD to download some scRNA-seq data from GEO. I have selected a small dataset (GEO accession GSM8475184) of human peripheral blood mononuclear cells (PBMCs) from a graft rejection patient to demonstrate the commands. You can explore available datasets at https://www.ncbi.nlm.nih.gov/geo.
The following commands show how I create a folder in my /scratch.global/ space to store the data. When you try this, you’ll see your X500 in place of ‘calix015’.
calix015@ahl03 [~] % cd /scratch.global/$USER/
calix015@ahl03 [/scratch.global/calix015] % mkdir -p sc_tutorial/data/geo
calix015@ahl03 [/scratch.global/calix015] % cd sc_tutorial/data/geo
calix015@ahl03 [/scratch.global/calix015/sc_tutorial] % wget https://ftp.ncbi.nlm.nih.gov/geo/samples/GSM8475nnn/GSM8475184/suppl/GSM8475184_TS2_duringGF_raw_feature_bc_matrix.h5
# you'll see a progress bar, it should take just a few seconds
# Let's see the contents of the folder with the ls command:
calix015@ahl03 [/scratch.global/calix015/sc_tutorial] % ls
# you should see this file: GSM8475184_TS2_duringGF_raw_feature_bc_matrix.h5
Accessing single cell data from UMGC
If your laboratory works with the UMGC, your sequencing data will be delivered directly to your MSI storage space. You can find it in the appropriate folder /projects/standard/YOUR_GROUP/data_delivery/umgc/, where YOUR_GROUP is the MSI space name assigned to your lab. You can use the OOD file system to find it!
Glossary
This section describes the specialized terms that we use in this tutorial. Synonyms for some terms are also included.
Molecular Biology (Wet Bench) Terms
- (Sequencing) Adapter: Short nucleotide oligomers that are ligated to the 5′ and/or 3′ ends of a fragment in a sequencing library. These are non-biological, artificial sequences.
- Library: A collection of nucleic acid molecules that represents the sample organism that you wish to study. For RNAseq, it is usually a collection of cDNA (complementary DNA) sequences synthesized from RNA molecules.
- Library Preparation: The protocol that converts an extracted sample of nucleic acid into a sequencing library, read to run on the instrument. Various library preparation protocols exist, so it is important to know the details of the protocols your experiments are using. The details of the protocol do affect how your data should be handled.
- Sequencing Read: A string of nucleotide bases identified by the sequencing instrument. The nucleotide bases are derived from the sequence of the inserts of the sequencing library.
Bioinformatic Terms
- Depth: The number of times a particular nucleotide position has been seen in sequencing reads. Higher depth means the nucleotide has been read more times and thus typically has less uncertainty. Note that some people use “coverage” or “fold coverage” to refer to this definition of “depth.”
- Gene Annotation: (Noun) The assignment of regions of a reference genome to gene models. The assignments are stored in “annotation files” with formats such as GTF or GFF3. A gene annotation file must only be used with its accompanying reference genome file.
- Cell Annotation: process of identifying and labeling the biological classification of cells or clusters of cells.
- Mapping: A process by which short sequencing reads are compared to a reference genome to identify where they originated. This is the process that is used in inferring the relative abundance of transcripts in a RNA extraction. I distinguish mapping from alignment in that alignment is used to identify homologous sequences (rather than simply identifying a genomic position) and uses different algorithms from mapping. Some people use “mapping” and “alignment” interchangeably.
- Mapping Quality: A numerical value that describes the confidence with which the mapping position is known. Higher values indicate higher confidence. Each mapped read will have a mapping quality value associated with it.
- Normalization: A technique for adjusting the relative gene expression values across samples to account for variation in library size.
- (Raw) Counts Matrix: A matrix of integers describing the assignment of mapped reads to annotated gene models across multiple cells.
-
Reference Genome: A string of nucleotides that describes the genome of a given species. Sequencing reads are mapped against a reference genome, and gene expression is quantified using the accompanying gene annotation file.