Seurat -- variable features select

news2024/11/25 4:52:37

brief

  • seurat提供的教学里面包含了Standard pre-processing workflow,workflow包括QC,normalization,scale data ,detection of highly variable features。
  • 其中 normalization就有蛮多方法的,seurat自己就提供了两种,一种是"LogNormalization",另一种是目前正在大力推荐的"SCTransform",而且每一种方法参数众多,我觉得有必要对其进行仔细的探究,所以需要分开学习和记录。
  • 还有 detection of highly variable features以及scale data,也是方法和参数众多,我觉得有必要对其进行仔细的探究,所以需要分开学习和记录
  • 概要图以及系列博文可以参见链接。

这里主要记录了 FindVariableFeatures的学习过程。

实例

library(dplyr)
library(Seurat)
library(patchwork)
library(sctransform)

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)

pbmc[["percent.mt"]] <- PercentageFeatureSet(pbmc, pattern = "^MT-")

# Visualize QC metrics as a violin plot
VlnPlot(pbmc, features = c("nFeature_RNA", "nCount_RNA", "percent.mt"), ncol = 3)
# FeatureScatter is typically used to visualize feature-feature relationships, but can be used
# for anything calculated by the object, i.e. columns in object metadata, PC scores etc.
plot1 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "percent.mt")
plot2 <- FeatureScatter(pbmc, feature1 = "nCount_RNA", feature2 = "nFeature_RNA")
plot1 + plot2

pbmc <- subset(pbmc, subset = nFeature_RNA > 200 & nFeature_RNA < 2500 & percent.mt < 5)

上面完成了Seurat对象的构建与QC.

==============================================================================================

下面开始进行normalization,然后开始 FindVariableFeatures

  • normalization
pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize", scale.factor = 10000)
pbmc <- SCTransform(pbmc, vst.flavor = "v2", verbose = FALSE,variable.features.n = 2000)

str(pbmc)
# 此处我们直接把两种normalization方法都进运行了
# LogNormalize把数据放在了 assays$RNA@data
# SCTransform把数据放在了 assays$SCT@data,同时assays$SCT@counts与assays$RNA@counts也有区别
# SCTransform运行过程中已经做好了 FindVariableFeatures --> ScaleData ,分别放在了assays$SCT@scale.data /assays$SCT@var.features 
  • FindVariableFeatures
# 因为上面把两种normalization方法都进运行了,有两个data,所以需要指定assay = "RNA" / assay = "SCT"
pbmc <- FindVariableFeatures(pbmc,assay = "RNA" ,selection.method = "vst", nfeatures = 2000)
# Identification of highly variable features (feature selection)
# 这里得到的feature会在下面的pca降维种默认使用

# Identify the 10 most highly variable genes
head(VariableFeatures(pbmc,assay = "RNA"), 10)
head(VariableFeatures(pbmc,assay = "SCT"), 10)

在这里插入图片描述
这里你可以看到前十的高变基因就有差异了。
看到下面一个数据就更值得思考了。

在这里插入图片描述

  • seurat提供的可视化方法
# plot variable features with and without labels
plot1 <- VariableFeaturePlot(pbmc,assay = "RNA")
plot2 <- LabelPoints(plot = plot1, points = top10, repel = TRUE)
plot1 + plot2
# plot variable features with and without labels
plot1 <- VariableFeaturePlot(pbmc,assay = "RNA")
plot2 <- VariableFeaturePlot(pbmc,assay = "SCT")
plot1 + plot2

在这里插入图片描述
然后variable 选择有几种方法,我试了一下不同方法在默认设置下的结果:

x <- intersect(VariableFeatures(pbmc_vst),VariableFeatures(pbmc_disp))
length(x)
length(VariableFeatures(pbmc_mvp))
x <- intersect(VariableFeatures(pbmc_vst),VariableFeatures(pbmc_mvp))
length(x)
x <- intersect(VariableFeatures(pbmc_disp),VariableFeatures(pbmc_mvp))
length(x)

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

后续很多分析是基于variable features进行的,不同的normalization 流程和 feature selectiion对后续分析的具体影响暂时我还没搞清楚。

但是你可以看到normalization 流程的不同会影响 feature selectiion ⇒ feature selectiion 的方法不同会导致highly variable features不同 ⇒ highly variable features不同你的RunPCA and cluster以及annotation 都会有些区别。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/460166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenGL入门教程之 坐标系统

原文文章 原文链接  本文仅对有代码的地方做讨论。 投影矩阵 创建一个正射投影矩阵 glm::ortho(0.0f, 800.0f, 0.0f, 600.0f, 0.1f, 100.0f);第一二个参数指定了平截头体的左右坐标&#xff0c;第三四个参数指定了平截头体的底部和上部&#xff0c;第五六个参数指定了近平面…

idea基于docker插件部署docker服务

IDEA开发完项目&#xff0c;直接部署至docker上镜像运行&#xff0c;接下来开始体验吧 注意&#xff1a;假定您的项目开发完了&#xff0c;假定你准备好了docker服务哈 没安装docker的来抄作业&#xff08;docker的安装&#xff09; 我的docker所在宿主机的内网ip&#xff1a;1…

银行卡识别OCR:解放金融业务处理效率的黑科技

引言 随着移动支付和电子商务的快速发展&#xff0c;人们越来越依赖银行卡进行交易。而银行卡信息的识别和处理也变得越来越重要。传统的手动输入银行卡信息方式效率低下且容易出错&#xff0c;而采用银行卡识别OCR 技术可以实现快速自动识别银行卡信息&#xff0c;极大地提高…

git把一个分支上的某次修改同步到另一个分支上,并解决git cherry-pick 冲突

背景 我们在工作中经常会碰到好几个同事共同在一个分支上开发&#xff0c;一个项目同时会有好几个分支&#xff0c;我们在feature上开发的功能时&#xff0c;有可能某个需求需要提前发布&#xff0c;这个时候我们已经在feature A上开发完成&#xff0c;但是需要在master上发布…

解锁阿迪达斯营销姿势,分析阿迪达斯成功背后的营销策略

阿迪达斯品牌在1920年创立于德国的运动品牌制造商——著名企业家阿道夫达斯勒&#xff0c;并且当年就开始生产该品牌的鞋类。如今&#xff0c;阿迪达斯已经象征着运动时尚的潮流品牌&#xff0c;在世界的舞台上大放异彩。因此阿迪达斯的营销策略一直备受关注&#xff0c;今天我…

乌合之众再次上演,打工人将被AI一键淘汰?

ChatGPT&#xff0c;是一场以硅谷为圆心&#xff0c;辐射至全球的人工智能竞赛&#xff0c;人们关于人工智能的担忧与思考从未停歇。一起来看看这篇文章&#xff0c;了解一下——大浪来袭&#xff0c;要怎么做才能保证自己不会溺水&#xff1f; 上个月底&#xff0c;千余名科技…

盛元广通病原微生物保藏信息管理系统

目前现状 微生物菌种是宝贵的生物资源&#xff0c;对微生物学研究和微生物资源开发与利用具有非常重要的价值。所以菌种的分类及保藏非常重要。当前&#xff0c;大部分实验室仍采用传统人工方式来管理和保藏病原微生物样本信息&#xff0c;不仅效率低下&#xff0c;且耗费大量人…

回溯/DFS算法专题

回溯/DFS算法专题 框架篇全排列问题N 皇后问题如果只需要一个合法答案&#xff0c;怎么办&#xff1f; 排列组合问题子集&#xff08;元素无重不可复选&#xff09;LeetCode 78. 子集解题思路代码实现 组合&#xff08;元素无重不可复选&#xff09;LeetCode 77. 组合解题思路代…

迅为iTOP-i.MX6ULL开发板I2C驱动程序实现 I2C通信

在第 67.1 章节学习 i2c 的时候&#xff0c;我们是在应用层操作设备节点对 i2c 设备进行读写的&#xff0c;那么如果我们在 驱动里面对 i2c 设备进行读写要怎么办呢&#xff1f;本章节我们将来学习。 我们复制第 67.3 章节的代码&#xff0c;在此基础上进行修改。我们在应用里…

gis几种常用插值介绍

反距离权重法&#xff08;距离加权法&#xff09;简称IDW&#xff1a; 这个方法的原理简单来说就是插值点距离已知点的距离越远受影响的程度越低&#xff0c;下图中的黄点为已知点&#xff0c;红点为插值点&#xff0c;那这个距离是如何控制的&#xff1f; 反距离权重法主要依…

基于SGM431的电路设计问题分析

本案例中,采用SGM431芯片设计了一个过压保护电路。 这个电路初次设计,有很多的问题,下面逐一分析 1.当输入24V,测得Vref=1.59V。Vout为1.15V;,mos管关断 2。经过多次测量发现,临界值在10V到10.5之间; 当输入10.5V时,测量Vref=1.69V。vout=1.15V;mos管关断 当输入1…

存储过程批量修改数据库中部分表中的ip信息

一、背景 项目中涉及到环境迁移&#xff0c;迁移过程中&#xff0c;原来的数据库&#xff08;oracle&#xff09;中应用ip和数据库ip地址均未变更&#xff0c;每次都是手动修改&#xff0c;想通过存储过程快捷执行 二、修改目标&#xff1a; 把相关几个表格的ip地址变更为其…

flink日志实时采集写入Kafka/ElasticSearch

目录 背景注意点自定义Appenderlog4j配置文件启动脚本实现效果 背景 由于公司想要基于flink的日志做实时预警功能&#xff0c;故需要实时接入&#xff0c;并刷入es进行分析。 注意点 日志接入必须异步&#xff0c;不能影响服务性能 kafka集群宕机&#xff0c;依旧能够提交f…

我们公司的面试,有点不一样!

我们公司的面试&#xff0c;有点不一样&#xff01; 朋友们周末愉快&#xff0c;我是鱼皮。因为我很屑&#xff0c;所以大家也可以叫我屑老板。 自从我发了自己创业的文章和视频后&#xff0c;收到了很多小伙伴们的祝福&#xff0c;真心非常感谢&#xff01; 不得不说&#…

如何写出CPU友好的代码,百倍提升性能?

作者&#xff1a;王再军 不管是什么样的数据&#xff0c;投其所好&#xff0c;才能够优化代码性能。本文将用一个实际用例为大家分享如何通过用心组织的代码来提升性能。 一、出现性能差别的代码 CPU友好的代码与我们平时的那些CRUD操作可能没什么关系。但是用心组织的代码其实…

开源模型ModelScope的初探使用

泛AI开发者的一站式模型服务产品平台 阿里继续沿用它的平台思维&#xff0c;搞了这个ModelScope训练模型平台&#xff0c;一边开源一部分模型&#xff0c;一边在阿里云上卖自己的付费版&#xff0c;套路依旧没变&#xff0c;不过对AI相关模型感兴趣的同学&#xff0c;想做业务…

202303最新各大厂大数据核心面试题

1、 字节、阿里、拼多多、中移杭研、海亮等:Hive做过哪些实际优化?必须结合实际项目来谈,结合我实际离线数仓里做的优化? 本人回答: 1.小文件的优化(解决方法是combineHiveinput、merge、jvm重用等) 2.数据倾斜的优化:

Flutter 小技巧之横竖列表的自适应大小布局支持

今天这个主题看着是不是有点抽象&#xff1f;又是列表嵌套&#xff1f;之前不是分享过《 ListView 和 PageView 的各种花式嵌套》了么&#xff1f;那这次的自适应大小布局支持有什么不同&#xff1f; 算是某些奇特的场景下才会需要。 首先我们看下面这段代码&#xff0c;基本逻…

android studio EditText用法

1.自定义文本框 选中状态&#xff1a; <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"><!--指定形状内部颜色--><solid android:color"#ffffff"&g…

机器学习在生态、环境经济学中的实践技术应用及论文写作

近年来&#xff0c;人工智能领域已经取得突破性进展&#xff0c;对经济社会各个领域都产生了重大影响&#xff0c;结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一&#xff0c;目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据&#xf…