生物信息学习的正确姿势

NGS系列文章包括NGS基础、在线绘图、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程)、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step))、批次效应处理等内容。

哈佛大学单细胞课程|笔记汇总 (一)

哈佛大学单细胞课程|笔记汇总 (二)

听哈佛大神讲怎么做单细胞转录组GSEA分析

(三)Single-cell RNA-seq: Quality control set-up

在生成count矩阵后,我们需要对其进行QC分析,并将其导入R进行后续分析:

探索示例集

该数据集来自Kang et al, 2017(https://www.nature.com/articles/nbt.4042)的文章,是八名狼疮患者的PBMC(`Peripheral Blood Mononuclear Cells`)数据,将其分为对照组和干扰素beta处理(刺激)组。

Image credit: Kang et al, 2017(https://www.nature.com/articles/nbt.4042)

Raw data

研究团队发现GEO (GSE96583:https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE96583)提供的矩阵缺少线粒体的reads,因此从SRA (SRP102802:https://www-ncbi-nlm-nih-gov.ezp-prod1.hul.harvard.edu/sra?term=SRP102802)下载BAM文件,然后转化为FASTQ文件,并使用`Cell Ranger`(https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/what-is-cell-ranger)获得count矩阵。

NOTE:  The counts for this dataset is also freely available from 10X Genomics and is used as part of the Seurat tutorial(https://satijalab.org/seurat/v3.0/immune_alignment.html).(我说我咋这么眼熟。。。)

Metadata

样品属性相关信息也叫metadata。关于以上数据的metadata如下:

  • 使用10X Genomics版本2化学试剂制备文库;

  • 样品使用Illumina NextSeq 500测序;

  • 将来自八名狼疮患者的PBMC样本分别分成两等份:

    • 一份用100 U/mL重组IFN-β激活PBMC,处理时间为6小时。

    • 另一份样品未经处理。

    • 6小时后,将不同条件的8个样品一起收集起来(受激细胞和对照细胞)。

  • 分别鉴定了1213812167个细胞(去除doublets后)作为对照样品和刺激后的合并样品。

  • 由于样品是PBMC,因此我们期望有免疫细胞,例如:

    • B cells

    • T cells

    • NK cells

    • monocytes

    • macrophages

    • possibly megakaryocytes

It is recommended that you have some expectation regarding the cell types you expect to see in a dataset prior to performing the QC. This will inform you if you have any cell types with low complexity (lots of transcripts from a few genes) or cells with higher levels of mitochondrial expression. This will enable us to account for these biological factors during the analysis workflow.

上述细胞类型都不预估有低复杂度 (少部分基因表达大部分转录本)或高线粒体含量。

设置R环境

为了更好的管理数据,使得整个项目具有组织性,先创建一个项目叫“single_cell_rnaseq”,然后构建以下目录:

single_cell_rnaseq/
├── data
├── results
└── figures

下载数据

  • Control sample (https://www.dropbox.com/sh/73drh0ipmzfcrb3/AADMlKXCr5QGoaQN13-GeKSa?dl=1)

  • Stimulated sample (https://www.dropbox.com/sh/cii4j356moc08w5/AAC2c3jfvh2hHWPmEaVsZKRva?dl=1)

解压数据后新建一个R脚本,命名为“quality_control.R”,并且保证整个的工作目录看起来像这样:

加载R包

library(SingleCellExperiment)
library(Seurat)
library(tidyverse)
library(Matrix)
library(scales)
library(cowplot)
library(RCurl)

加载count矩阵

一共有3个文件,分别为:cell IDsgene IDsmatrix of counts(每个细胞的每个基因)。

  • barcodes.tsv:这是一个文本文件,其中包含该样品存在的所有细胞条形码。条形码以矩阵文件中显示的数据顺序列出(这些是列名)。

  • features.tsv:这是一个文本文件,其中包含定量基因的标识符。标识符的来源可能会有所不同,具体取决于定量过程中使用的参考(即EnsemblNCBIUCSC),大多数情况下这些都是官方gene symbol。这些基因的顺序与矩阵文件中各行的顺序相对应(这些是行名)。

  • matrix.mtx:注意该矩阵中有许多zero values

有两种方法可以进行矩阵读入,分别为readMM()Read10X()

  1. readMM(): This function is from the Matrix package and will turn our standard matrix into a sparse matrix. The features.tsv file and barcodes.tsv must first be individually loaded into R and then they are combined. For specific code and instructions on how to do this please see our additional material(https://github.com/hbctraining/scRNA-seq/blob/master/lessons/readMM_loadData.md).

  2. Read10X(): This function is from the Seurat package and will use the Cell Ranger output directory as input. In this way individual files do not need to be loaded in, instead the function will load and combine them into a sparse matrix for you. We will be using this function to load in our data!

Reading in a single sample (read10X())

我们通常使用Read10X()。原因就要从头说起了,一般在软件Cell Ranger处理10X数据后会生成一个outs目录,在outs文件夹中有这样几个文件:

  • web_summary.html: 包括许多QC指标,预估细胞数,比对率等;

  • BAM alignment files:用于可视化比对的reads和重新创建FASTQ文件;

  • filtered_feature_bc_matrix: 经过Cell Ranger过滤后构建矩阵所需要的所有文件;

  • raw_feature_bc_matrix: 未过滤的可以用于构建矩阵的文件;

如果你有一个单个样本的话,可以直接构建a Seurat object(https://github.com/satijalab/seurat/wiki/Seurat):

# How to read in 10X data for a single sample (output is a sparse matrix)
ctrl_counts <- Read10X(data.dir = "data/ctrl_raw_feature_bc_matrix")# Turn count matrix into a Seurat object (output is a Seurat object)
ctrl <- CreateSeuratObject(counts = ctrl_counts,min.features = 100)

NOTE: The min.features argument specifies the minimum number of genes that need to be detected per cell. This argument will filter out poor quality cells that likely just have random barcodes encapsulated without any cell present. Usually, cells with less than 100 genes detected are not considered for analysis.

在使用Read10X()函数读取数据时,Seurat会为每个细胞自动创建metadata,存储在meta.data slot

The Seurat object is a custom list-like object that has well-defined spaces to store specific information/data. You can find more information about the slots in the Seurat object at this link:https://github.com/satijalab/seurat/wiki/Seurat.

# Explore the metadata
head(ctrl@meta.data)

metadata 的每一列代表什么呢?

  • orig.ident: 细胞聚类的cluster,含有样本的身份信息(已知的情况下);

  • nCount_RNA: 每个细胞的UMI数目;

  • nFeature_RNA: 检测到的每个细胞中的genes数目。

使用for循环对多个数据进行读入

# Create each individual Seurat object for every sample
for (file in c("ctrl_raw_feature_bc_matrix", "stim_raw_feature_bc_matrix")){seurat_data <- Read10X(data.dir = paste0("data/", file))seurat_obj <- CreateSeuratObject(counts = seurat_data,min.features = 100,project = file)assign(file, seurat_obj)
}

于是分别形成了ctrl_raw_feature_bc_matrixstim_raw_feature_bc_matrix两个seurat对象,使用merge函数对不同数据进行合并:

# Create a merged Seurat object
merged_seurat <- merge(x = ctrl_raw_feature_bc_matrix,y = stim_raw_feature_bc_matrix,add.cell.id = c("ctrl", "stim"))

因为相同的细胞ID可以用于不同的样本,所以我们使用add.cell.id参数为每个细胞ID添加特定于样本的前缀。如果我们查看合并对象的metadata,我们应该能够在行名中看到前缀:

# Check that the merged object has the appropriate sample-specific prefixes
head(merged_seurat@meta.data)
tail(merged_seurat@meta.data)

往期精品(点击图片直达文字对应教程)

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

哈佛大学单细胞课程|笔记汇总 (三)相关推荐

  1. 哈佛大学单细胞课程|笔记汇总(1-9)

    哈佛大学单细胞课程|笔记汇总 为什么做单细胞? 如何得到单细胞原始数据并转换成分析需要的矩阵格式 质控前的数据准备 质控 归一化和主成分分析 聚类分析与可视化 marker识别与注释 单细胞转录组测序 ...

  2. 哈佛大学单细胞课程|笔记汇总 (六)

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.在线绘图.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞 ...

  3. 哈佛大学单细胞课程|笔记汇总 (五)

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.在线绘图.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞 ...

  4. 哈佛大学单细胞课程|笔记汇总 (二)

    生物信息学习的正确姿势 NGS系列文章包括NGS基础.转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这).ChIP-seq分析 (ChIP-seq基本分析流程).单细胞测序分析  ...

  5. 哈佛大学单细胞课程|笔记汇总 (八)

    哈佛大学单细胞课程|笔记汇总 (七) 哈佛大学刘小乐教授讲授的计算生物学和生物信息学导论 (2020 视频+资料) (八)Single-cell RNA-seq clustering analysis ...

  6. 哈佛大学单细胞课程|笔记汇总 (七)

    哈佛大学单细胞课程|笔记汇总 (六) 哈佛大学单细胞课程|笔记汇总 (五) (七)Single-cell RNA-seq clustering analysis-- graph-based clust ...

  7. 哈佛大学单细胞课程|笔记汇总 (九)

    哈佛大学单细胞课程|笔记汇总 (七) 哈佛大学单细胞课程|笔记汇总 (八) (九)Single-cell RNA-seq marker identification 对于上面提到的3个问题,我们可以使 ...

  8. EDA实验课课程笔记(三)——TCL脚本语言的学习1

    本文参考资料为<Tcl语言教程>,感谢作者的分享,这里仅仅作为简单常用语法的入门,若有需要后期对本文进行添加补充. EDA实验课课程笔记(三)--TCL脚本语言的学习 前言(TCL综述) ...

  9. 神经网络与深度学习笔记汇总三

    神经网络与深度学习笔记汇总三 往期回顾 将之前掘金写的学习笔记所遇困难搬到这里,方便查看复习 遇到问题: 异常值处理 学习内容 1..drop() 返回的是一个新对象,原对象不会被改变. 2.遇到问题 ...

最新文章

  1. maxcompute 2.0复杂数据类型之struct
  2. SAP Business ByDesign云计算ERP软件
  3. cxf环境搭建与第一个项目
  4. OkHttp上传Json嵌套对象
  5. COPAN为政府机构提供低成本、高效节能的数字归档方案
  6. 用 Java 开发自己的 Kubernetes 控制器,想试试吗?
  7. 2012-11-6 2个月小结
  8. 量化交易软件 python_我用Python做了个量化交易工具!
  9. 电视盒子内存测试软件,电视盒子内存太小怎么办?当贝市场一招扩充内存
  10. 印刷五大要素:原稿、印版、油墨、承印物、印刷机械
  11. ftp常用命令(windows cmd中使用示例)
  12. 疫情下企业面临的关键网络安全建设,去繁从简,保住核心安全
  13. 上岸重庆邮电大学软件工程学院学硕总结
  14. 软件测试笔记——3.多种多样的测试类型
  15. 翻译管理协作翻译平台-crowdin
  16. 斗鱼直播Android开发二面被刷,赶紧收藏!
  17. cURL – PUT请求示例
  18. strtotime 用法
  19. ←机器人工程或机器人方向毕业设计汇总篇→↓2022↑
  20. 嵌入式系统下Microwindows的实现

热门文章

  1. 征文通知:第三届(2016)科学数据大会——科学数据与创新发展
  2. vue 使用axios
  3. zookeeper伪集群部署
  4. 初识python: 字符编码转换
  5. 续集---网络管理常用命令
  6. UIActivityViewController实现系统原生分享
  7. Java朝花夕拾の实现Comparable接口
  8. 实践 Ubuntu 10.10/11.04 关闭双显卡问题
  9. 从编程语言排行来看:C/C++一直占有前三之位,为何C++不会消亡?
  10. 数据行业工作3年,我靠这7个能力,成为领导青睐的高级数据分析师