Seurat -- ScaleData学习

2023-10-08 07:40
文章标签 学习 seurat scaledata

本文主要是介绍Seurat -- ScaleData学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

brief

seurat提供了一个教学,其中global scale normalization之后又对数据进行了scale。
默认是对上一步 selected highly variable features进行scale。

  • 概要图以及系列博文可以参见链接。

在这里插入图片描述

如果是 SCTransform则不需要手动运行这一步。

  • 下面是就是教程提供的流程:
library(dplyr)
library(Seurat)
library(patchwork)
library(sctransform)
library(ggplot2)rm(list=ls())
# 使用read10X读取output of the cellranger pipeline from 10X,包括barcodes,genes,matrix.mtx三个文件
pbmc.data <- Read10X(data.dir = "D:/djs/pbmc3k_filtered_gene_bc_matrices/filtered_gene_bc_matrices/hg19")
# 使用 CreateSeuratObject函数构造seurat对象
pbmc <- CreateSeuratObject(counts = pbmc.data, project = "pbmc3k",min.cells = 3, min.features = 200,names.delim = "-",names.field = 1)# 计算 a percentage of cell reads originating from the mitochondrial genes
pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")
# 计算 complexity of the RNA species
pbmc@meta.data$log10GenesPerUMI <- log10(pbmc$nFeature_RNA) / log10(pbmc$nCount_RNA)pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)
pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)
pbmc <- FindVariableFeatures(pbmc,assay = "RNA" ,selection.method = "vst", nfeatures = 2000)all.genes <- rownames(pbmc)
pbmc <- ScaleData(pbmc, features = all.genes,assay = "RNA")pbmc <- RunPCA(pbmc)
  • 这里是该函数具体的参数以及意义:
    在这里插入图片描述
    • features
      Vector of features names to scale/center. Default is variable features.

    • vars.to.regress
      Variables to regress out (previously latent.vars in RegressOut). For example, nUMI, or percent.mito.

    • split.by
      Name of variable in object metadata or a vector or factor defining grouping of cells. See argument f in split for more details

    • model.use
      Use a linear model or generalized linear model (poisson, negative binomial) for the regression. Options are ‘linear’ (default), ‘poisson’, and ‘negbinom’

    • use.umi
      Regress on UMI count data. Default is FALSE for linear modeling, but automatically set to TRUE if model.use is ‘negbinom’ or ‘poisson’

    • do.scale
      Whether to scale the data.

    • do.center
      Whether to center the data.

    • scale.max
      Max value to return for scaled data. The default is 10. Setting this can help reduce the effects of features that are only expressed in a very small number of cells. If regressing out latent variables and using a non-linear model, the default is 50.

    • block.size
      Default size for number of features to scale at in a single computation. Increasing block.size may speed up calculations but at an additional memory cost.

    • min.cells.to.block
      If object contains fewer than this number of cells, don’t block for scaling calculations.

    • verbose
      Displays a progress bar for scaling procedure

    • assay
      Name of Assay to scale

这个函数和 基础函数scale()的结果一样吗?

没区别
可能是调用代码不一样~~

t(pbmc@assays$RNA@scale.data[1:3,1:6])scale(t(as.array(pbmc@assays$RNA@data)),center = T,scale = T)[1:6,1:3]

在这里插入图片描述
在这里插入图片描述

为什么要scale?

一个gene 的表达量在不同细胞中的分布可以认为是正态分布,当你将这个gene的表达量中心化以及标准化成为标准正态分布后(z-score),不同gene的表达量分布就在同一个尺度上了,方便比较。

高表达的gene在下游的分析中和低表达gene在下游分析中权重也就一致了,不然高表达的gene在下游的分析中比如PCA就会占据主导地位,而细胞间的变异需要同时考虑gene的表达量以及gene的特异性表达,特异性表达的基因表达量通常不高。

ScaleData()后的数据存放和后续应用

  • scale标准化的数据储存在"RNA" assay的 seurat_obj[[‘RNA’]]@scale.data中

  • 我们也注意到seurat_obj[[‘RNA’]]@data全是非负数,而且是针对基因矩阵的所有基因;而seurat_obj[[‘RNA’]]@scale.data则有正负数,默认情况,只针对高可变基因进行scale标准化;

  • 那么,我们在seurat下游分析中,什么情况使用data,什么时候使用scale.data:

    • 下游分析中的PCA线性降维聚类,umap、tsne聚类均是应用高可变基因的scale.data进行后续分析的;

    • 在基因可视化分析中,FeaturePlot、FeatureScatter、VlnPlot、DotPlot等函数默认slot =“data”,只有DoHeatmap()默认使用slot = “scale.data”,多个基因跨细胞比较;

    • FindAllMarkers()找差异基因是默认slot =“data”,它是针对所有基因找差异基因,而不是高可变基因集

多个数据集整合应该怎样调用ScaleData()

  • 这里的多个数据集只包括scRNA-seq数据集。

  • 如果仅仅是数据集之间的merge(需要做简单的QC验证没有批次效应),那应该使用 RNA assays下面的data进行 scale。当然你也可以在运行ScaleData时加入split.by区分数据集以分别进行scale(没验证过会出现什么问题)。

  • 如果数据集之间进行了integrated运算,那应该使用integrated assays下面的data进行 scale

这篇关于Seurat -- ScaleData学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/163757

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件