Splatter

单细胞数据模拟(1)

Posted by CHY on June 15, 2020

目前单细胞数据模拟软件主要有Splatter、powsimR、SymSim。本节主要介绍常用的Splatter软件。

单细胞数据模拟

# Splatter: 模拟单细胞RNA测序数据

# 安装加载Splatter
BiocManager::install('splatter')
library('splatter')
browseVignettes("splatter")

# 存在一个数据集,但是还需要根据这个数据集进行模拟(在实际中也可以不设置参考数据集,通过设定参数获得想要的模拟结果)
# 分为两步:第一步根据数据生成参数,第二步根据参数模拟数据
library(scater)
data("sc_example_counts")
# Estimate parameters from example data
params <- splatEstimate(sc_example_counts)
# Simulate data using estimated parameters
sim <- splatSimulate(params)

# Splat的所有参数都存储在SplatParams对象中
params <- newSplatParams()
params # 其中参数可以估计也可以不被估计
# 查看特定参数的取值
getParam(params,"nGenes")
# 给参数赋予新的值
params <- setParam(params,"nGenes",5000)
getParam(params,"nGenes")
# Set multiple parameters at once (using a list)同时设定多个参数
params <- setParams(params, update = list(nGenes = 8000, mean.rate = 0.5))
# Extract multiple parameters as a list
getParams(params, c("nGenes", "mean.rate", "mean.shape"))
# 在运行newSplatParams时设定参数
params <- newSplatParams(lib.loc = 12, lib.scale = 0.6)
getParams(params, c("lib.loc", "lib.scale"))

# 参数同样可以根据数据预估
params <- splatEstimate(sc_example_counts)

# 生成模拟数据(同时还可以调整参数)
# 生成的数据为SingleCellExperiment对象数据
sim <- splatSimulate(params.nGenes = 1000)
counts(sim)[1:5,1:5] # 查看count信息
head(rowData(sim)) # 基因信息
head(colData(sim)) # 细胞信息
names(assays(sim))
assays(sim)$CellMeans[1:5, 1:5]

# 同时模拟多种类型数据--便捷函数splatSimulate()
# 主要针对两个参数group.prob 和 groups
params <- setParam(params,"batchCells",10000)
sim.groups <- splatSimulate(params,group.prob = c(0.01,0.5,0.3,0.1,0.09), method = "groups",
                            verbose = FALSE)
sim.groups <- normalize(sim.groups)
plotPCA(sim.groups,colour_by = "Group")

# 模拟拟时分析类数据,一种细胞类型转为另一种细胞类型--便捷函数splatSimulatePaths()
sim.paths <- splatSimulate(method = "paths", verbose = FALSE)
sim.paths <- normalize(sim.paths)
plotPCA(sim.paths, colour_by = "Step")

# 批次效应数据产生
sim.batches <- splatSimulate(batchCells = c(50, 50), verbose = FALSE)
sim.batches <- normalize(sim.batches)
plotPCA(sim.batches, colour_by = "Batch")

# 查看更多的其他类型的数据模拟功能
listSims()
# The PhenoPath simulation produces a pseudotime trajectory with different types of genes.

# TPM/FPKM格式
sim <- simpleSimulate(verbose = FALSE)
sim <- addGeneLengths(sim)
head(rowData(sim))
tpm(sim) <- calculateTPM(sim, rowData(sim)$Length)
tpm(sim)[1:5, 1:5]

splatter使用参数说明

Global 参数

nGenes : Number of genes 基因数量 nCells : Number of cells 细胞数量 seed : 随机数种子

Batch 参数

nBatches : Number of batches批次数量 batchCells : 每个批次对应的细胞数 batch.facLoc和batch.facScale : 数值越大,批次效应越明显

Mean 参数

mean.shape和mean.rate : 控制分布情况,建议根据真实数据来获取

Library size 参数

这些参数主要是控制每个细胞期望的counts数 lib.loc 和 lib.scale : 控制细胞文库大小,lib.loc值越大,每个细胞的文库越大;lib.scale值越大,每个细胞的文库变化越大。 lib.norm : 设定文库默认分布为对数正态分布,当值为True时,为正态分布。

Expression outlier 参数

out.prob : 值越高,outlier gene越多 out.facLoc 和 out.facScale : nGroups : 需要模拟的细胞类型数 group.prob : 提供各个细胞类型的比例 de.prob : 值约大,差异基因数越多 de.downProb : 控制差异基因中下调的比例 de.facLoc 和 de.facScale : 值越大,差异越大

Path 参数

path.from : Path起始位置 path.nSteps : 值越大,细胞越连贯 path.skew : 对细胞分析进行微调 path.nonlinearProb : 控制基因的非线性表达 path.sigmaFac : 控制Brownian的极端程度