一些单细胞转录组R包的对象

对象应该是很重要的,至少是在R语言里面

ExpressionSet

Bioconductor的ExpressionSet是基石,多次讲解过,GEO数据库在R里面下载的就是这个对象。

通常不需要自己从头创建。

而单细胞转录组本质上也是转录组,即表达量矩阵的分析,所以后面的R包的对象,其实或多或少借鉴了这个Bioconductor的ExpressionSet对象。

CellDataSet

来自于monocle这个R包,使用其提供的 newCellDataSet() 函数即可创建,创建后的对象组成成分如下

  • 表达矩阵:rows as features (usually genes) and columns as cells

  • 使用 featureData and phenoData 函数可以获取基因和样本信息

  • 其中 expressionFamily指定表达矩阵的归一化形式

归一化形式通常是3种

  • tobit() FPKM, TPM

  • negbinomial.size() UMIs, Transcript counts from experiments with spike-ins or relative2abs(), raw read counts

  • gaussianff() log-transformed FPKM/TPMs, Ct values from single-cell qPCR

先介绍一下monocle需要的用来构建 CellDataSet 对象的三个数据集

  • 表达量矩阵exprs:数值矩阵 行名是基因, 列名是细胞编号.

  • 细胞的表型信息phenoData: 第一列是细胞编号,其他列是细胞的相关信息

  • 基因注释featureData: 第一列是基因编号, 其他列是基因对应的信息

并且这三个数据集要满足如下要求:

表达量矩阵必须

  • 保证它的列数等于phenoData的行数

  • 保证它的行数等于featureData的行数

而且

  • phenoData的行名需要和表达矩阵的列名匹配

  • featureData和表达矩阵的行名要匹配

  • featureData至少要有一列"gene_short_name", 就是基因的symbol

准备Monocle对象需要的phenotype data 和 feature data 以及表达矩阵,从 scRNAseq 这个R包里面提取这三种数据。

library(scRNAseq)
## ----- Load Example Data -----
data(fluidigm)
# Set assay to RSEM estimated counts
assay(fluidigm)  <-  assays(fluidigm)$rsem_counts
ct <- floor(assays(fluidigm)$rsem_counts)
ct[1:4,1:4] 
sample_ann <- as.data.frame(colData(fluidigm))

gene_ann <- data.frame(
  gene_short_name = row.names(ct), 
  row.names = row.names(ct)
)

pd <- new("AnnotatedDataFrame",
          data=sample_ann)
fd <- new("AnnotatedDataFrame",
          data=gene_ann)

sc_cds <- newCellDataSet(
  ct, 
  phenoData = pd,
  featureData =fd,
  expressionFamily = negbinomial.size(),
  lowerDetectionLimit=1)
sc_cds

这样就完成了CellDataSet对象的从头构建,它是后续分析的基石。

SingleCellExperiment

同样的也是那些信息:Different quantifications (e.g., counts, CPMs, log-expression) can be stored simultaneously in the assays slot. Row and column metadata can be attached using rowData and colData, respectively.

主要是scater包采用,也是可以从头构建。

创建代码如下:

library(scRNAseq)
## ----- Load Example Data -----
data(fluidigm)
# Set assay to RSEM estimated counts
assay(fluidigm)  <- assays(fluidigm)$rsem_counts
ct <- floor(assays(fluidigm)$rsem_counts)
ct[1:4,1:4]
table(rowSums(ct)==0)
# 这里使用原始表达矩阵,所以有很多基因在所有细胞均无表达量,即表现为没有被检测到,这样的基因是需要过滤掉的。

pheno_data <- as.data.frame(colData(fluidigm))
## 这里需要把Pollen的表达矩阵做成我们的 scater 要求的对象
#data("sc_example_counts")
#data("sc_example_cell_info") 
# 你也可以尝试该R包自带的数据集。
# 参考 https://bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/vignette-intro.R
sce <- SingleCellExperiment(
    assays = list(counts = ct), 
    colData = pheno_data
    )
sce


后面所有的分析都是基于 sce 这个变量 ,是一个 SingleCellExperiment 对象,被很多单细胞R包采用。

seurat 对象

主要是seurat包采用该对象,个人觉得并不是很方便,并不是上面的SingleCellExperiment 对象。

library(scRNAseq)
## ----- Load Example Data -----
data(fluidigm)
# Set assay to RSEM estimated counts
assay(fluidigm) <- assays(fluidigm)$rsem_counts
ct <- floor(assays(fluidigm)$rsem_counts)
ct[1:4,1:4]
names(metadata(fluidigm))
meta <- as.data.frame(colData(fluidigm))
counts <- ct
identical(rownames(meta),colnames(counts))
Pollen <- CreateSeuratObject(raw.data = counts, 
                             meta.data =meta,
                             min.cells = 3, 
                             min.genes = 200, 
                             project = "Pollen")
Pollen

并不一定要对象

有些单细胞转录组R包,就没有封装为特殊的对象,而是简单的list即可,比如M3Drop这个单细胞转录组R包:

library(scRNAseq)
## ----- Load Example Data -----
data(fluidigm) 
ct <- floor(assays(fluidigm)$rsem_counts)
ct[1:4,1:4] 
sample_ann <- as.data.frame(colData(fluidigm))
counts=ct
library(M3Drop) 
Normalized_data <- M3DropCleanData(counts, 
                                   labels = sample_ann$Biological_Condition , 
                                   is.counts=TRUE, min_detected_genes=2000)
dim(Normalized_data$data)
length(Normalized_data$labels)
class(Normalized_data)
str(Normalized_data)

那你需要对象吗

你觉得对象重要吗,需要嘛?

(0)

相关推荐

  • 单细胞RNA

    一.单细胞single cell RNA-seq简介 1.Bulk RNA-seq(大量RNA-seq) Measures the average expression level for each ...

  • 不仅仅是新的单细胞相关R包层出不穷,旧的R包也会更新用法

    两年前我们介绍的用米氏方程解决单细胞转录组dropout现象的文章提出的那个算法,被包装到了R包,是:M3Drop  , 文章最开始 2017年发表在biorxiv,是:Modelling dropo ...

  • 单细胞转录组3大R包之scater

    scater 这个R包很强大,是McCarthy et al. 2017 发表的,包含的功能有: Automated computation of QC metrics Transcript quan ...

  • 单细胞转录组3大R包之Seurat

    牛津大学的Rahul Satija等开发的Seurat,最早公布在Nature biotechnology, 2015,文章是: Spatial reconstruction of single-ce ...

  • 单细胞转录组3大R包之monocle2

    主要是针对单细胞转录组测序数据开发的,用来找不同细胞类型或者不同细胞状态的差异表达基因.分析起始是表达矩阵,作者推荐用比较老旧的Tophat+Cufflinks流程,或者RSEM, eXpress,S ...

  • 在Ubuntu下安装单细胞3大R包

    查看Ubuntu系统以及R版本 cat /etc/issue 通常来说,很多R包的安装对R版本是有要求的,比如BiocManager需要 R (≥ 3.5.0),但是并不需要最新版R语言. R到3.5 ...

  • 多个单细胞转录组样本的数据整合之CCA-Seurat包

    单细胞水平的研究是仅次于NGS的一次生物信息学领域的革命,同样的随随便便发CNS的黄金时期也过去了,现在想发高分文章,拿多个病人的多个样本进行单细胞转录组测序是非常正常的,比如下面的: 发表在 Nat ...

  • 学习使用各种单细胞R包来处理数据

    号外:中秋节广州3天入门课程报名马上截止:(中秋节一起来学习!)全国巡讲第16站-广州(生信入门课加量不加价) 单细胞R包如过江之卿,这里只考讲解5个R包,分别是: scater,monocle,Se ...

  • TCGA(转录组)差异分析三大R包及其结果对比

    最近我们最优秀的R语言讲师小洁也开启了TCGA知识库打卡之旅,分享一下她其中一个学习成果,TCGA(转录组)差异分析三大R包及其结果对比. 如果你跟着她的教程学会了相关分析,可以尝试完成一个学徒作业: ...

  • 使用scran包的cyclone函数进行单细胞转录组的细胞周期状态推断

    多次在CNS文章里面看到:Gene sets reflecting five phases of the HeLa cell cycle (G1/S, S, G2/M, M and M/G1) wer ...