上次的视频中已花费大量时间讲解过单样本分析的基本流程,所以这节课的学习需要有上节课的基础,希望大家按顺序观看。此次的内容较简单、篇幅也较小,代码与视频请看下文,测试数据集与代码存于文末链接之中。由于测试数据比较特殊,并没有展示出去批次的精妙之处,留一个悬念给大家吧,可以用自己的数据集测试一下。
(B站同步播出,先看一遍视频再跟着代码一起操作,建议每个视频至少看三遍)
###########单纯的merge#################
library(Seurat)
library(multtest)
library(dplyr)
library(ggplot2)
library(patchwork)
##########准备用于拆分的数据集##########
#pbmc <- subset(pbmc, downsample = 50)
ifnb <- readRDS('pbmcrenamed.rds')
ifnb.list <- SplitObject(ifnb, split.by = "group")
C57 <- ifnb.list$C57
AS1 <- ifnb.list$AS1
######简单merge########
#不具有去批次效应功能
pbmc <- merge(C57, y = c(AS1), add.cell.ids = c("C57", "AS1"), project = "ALL")
pbmc
head(colnames(pbmc))
unique(sapply(X = strsplit(colnames(pbmc), split = "_"), FUN = "[", 1))
table(pbmc$orig.ident)
##############anchor###############
library(Seurat)
library(tidyverse)
### testA ----
myfunction1 <- function(testA.seu){
testA.seu <- NormalizeData(testA.seu, normalization.method = "LogNormalize", scale.factor = 10000)
testA.seu <- FindVariableFeatures(testA.seu, selection.method = "vst", nfeatures = 2000)
return(testA.seu)
}
C57 <- myfunction1(C57)
AS1 <- myfunction1(AS1)
### Integration ----
testAB.anchors <- FindIntegrationAnchors(object.list = list(C57,AS1), dims = 1:20)
testAB.integrated <- IntegrateData(anchorset = testAB.anchors, dims = 1:20)
#需要注意的是:上面的整合步骤相对于harmony整合方法,对于较大的数据集(几万个细胞)
#非常消耗内存和时间,大约9G的数据32G的内存就已经无法运行;
#当存在某一个Seurat对象细胞数很少(印象中200以下这样子),
#会报错,这时建议用第二种整合方法
DefaultAssay(testAB.integrated) <- "integrated"
# # Run the standard workflow for visualization and clustering
testAB.integrated <- ScaleData(testAB.integrated, features = rownames(testAB.integrated))
testAB.integrated <- RunPCA(testAB.integrated, npcs = 50, verbose = FALSE)
testAB.integrated <- FindNeighbors(testAB.integrated, dims = 1:30)
testAB.integrated <- FindClusters(testAB.integrated, resolution = 0.5)
testAB.integrated <- RunUMAP(testAB.integrated, dims = 1:30)
testAB.integrated <- RunTSNE(testAB.integrated, dims = 1:30)
p1<- DimPlot(testAB.integrated,label = T,split.by = 'group')#integrated
DefaultAssay(testAB.integrated) <- "RNA"
testAB.integrated <- ScaleData(testAB.integrated, features = rownames(testAB.integrated))
testAB.integrated <- RunPCA(testAB.integrated, npcs = 50, verbose = FALSE)
testAB.integrated <- FindNeighbors(testAB.integrated, dims = 1:30)
testAB.integrated <- FindClusters(testAB.integrated, resolution = 0.5)
testAB.integrated <- RunUMAP(testAB.integrated, dims = 1:30)
testAB.integrated <- RunTSNE(testAB.integrated, dims = 1:30)
p2 <- DimPlot(testAB.integrated,label = T,split.by = 'group')
p1|p2
###########harmony 速度快、内存少################
if(!require(harmony))devtools::install_github("immunogenomics/harmony")
test.seu <- pbmc
test.seu <- test.seu%>%
Seurat::NormalizeData() %>%
FindVariableFeatures(selection.method = "vst", nfeatures = 2000) %>%
ScaleData()
test.seu <- RunPCA(test.seu, npcs = 50, verbose = FALSE)
#####run 到PCA再进行harmony,相当于降维########
test.seu=test.seu %>% RunHarmony("group", plot_convergence = TRUE)
test.seu <- test.seu %>%
RunUMAP(reduction = "harmony", dims = 1:30) %>%
FindNeighbors(reduction = "harmony", dims = 1:30) %>%
FindClusters(resolution = 0.5) %>%
identity()
test.seu <- test.seu %>%
RunTSNE(reduction = "harmony", dims = 1:30)
p3 <- DimPlot(test.seu, reduction = "tsne", group.by = "group", pt.size=0.5)+theme(
axis.line = element_blank(),
axis.ticks = element_blank(),axis.text = element_blank()
)
p4 <- DimPlot(test.seu, reduction = "tsne", group.by = "ident", pt.size=0.5, label = TRUE,repel = TRUE)+theme(
axis.line = element_blank(),
axis.ticks = element_blank(),axis.text = element_blank()
)
p3|p4
本系列其他课程
手把手教你做单细胞测序数据分析(六)——组间差异分析及可视化
欢迎关注同名公众号~
Unity自动旋转动画1.开门需要门把手先动,门再动2.关门需要门先动,门把手再动3.中途播放过程中不可以再次进行操作觉得太复杂?查看我的文章开关门简易进阶版效果:如果这个门可以直接打开的话,就不需要放置"门把手"如果门把手还有钥匙需要旋转,那就可以把钥匙放在门把手的"门把手",理论上是可以无限套娃的可调整参数有:角度,反向,轴向,速度运行时点击Test进行测试自己写的代码比较垃圾,命名与结构比较拉,高手轻点喷,新手有类似的需求可以拿去做参考上代码usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;u
一、介绍一下vercelvercel是一个站点托管平台,提供CDN加速,同类的平台有Netlify和GithubPages,相比之下,vercel国内的访问速度更快,并且提供Production环境和development环境,对于项目开发非常的有用的,并且支持持续集成,一次push或者一次PR会自动化构建发布,发布在development环境,都会生成不一样的链接可供预览。但是vercel只是针对个人用户免费,teams是收费的首先vercel零配置部署,第二访问速度比github-page好很多,并且构建很快,还是免费使用的,对于部署个人前端项目路、接口服务非常方便vercel类似于git
ChatGPT是一款引人注目的产品,它的突破性功能在各个领域都创造了巨大的需求。仅在发布后的两个月内,就累计了超过1亿的用户。它最突出的功能是能够在几秒钟内完成各种文案创作,包括论文、歌曲、诗歌、睡前故事和散文等。与流行的观点相反,ChatGPT可以做的不仅仅是为你写一篇文章,更有用的是它如何帮助指导您的写作过程和写作方法。接下来手把手教你利用ChatGPT辅助完成写作的五种方法。1.使用ChatGPT生成论文的观点在开始写作之前,我们需要让ChatGPT帮我们充实想法,找到论文切入点。当老师布置论文时,通常会给予学生一个提示,让他们可以自由地表达和分析。这时,我们需要找到论文的角度和思路,然
UART串口这个东西,是嵌入式学习上避不开的,不仅在调试中经常用到,还有很多模块通过串口与SOC相连。这篇文章让你彻彻底底,搞明白串口程序的编写。没有基础的先看:嵌入式Linux学习系列全部文章:嵌入式Linux学习—从裸机到应用教程大全 目录1.UART串口1.1UART硬件连接1.2UART软件通信协议2.读手册,编程序2.1找对应引脚2.2设置GPIO为UART功能2.3设置UART(初始化)2.4编写发送接收函数3.完整代码和验证1.UART串口全称:通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter,简称UART)是一种串行异步收发
SpringCloudAlibaba全集文章目录:零、手把手教你搭建SpringCloudAlibaba项目一、手把手教你搭建SpringCloudAlibaba之生产者与消费者二、手把手教你搭建SpringCloudAlibaba之Nacos服务注册中心三、手把手教你搭建SpringCloudAlibaba之Nacos服务配置中心四、手把手教你搭建SpringCloudAlibaba之Nacos服务集群配置五、手把手教你搭建SpringCloudAlibaba之Nacos服务持久化配置六、手把手教你搭建SpringCloudAlibaba之Sentinel实现流量实时监控七、手把手教你搭
我已经设置了这个jsfiddle:http://jsfiddle.net/386er/dhzq6q6f/14/varmoveCell=function(direction){varcellToBeMoved=pickRandomCell();varcurrentX=cellToBeMoved.x.baseVal.value;varcurrentY=cellToBeMoved.y.baseVal.value;varchange=getPlusOrMinus()*(cellSize+1);varnewX=currentX+change;varnewY=currentY+change;var
现在智能电视的更换成本很高,更新的速度也非常之快,不少朋友会使用电视盒子来代替电视。因为小米盒子性价比高,配置很棒,资源又挺齐全的,大家都会比较优先选择入手。可很多使用了小米盒子的朋友发现,它并不能直接收看电视直播节目,小米电视盒子怎样看电视直播?要解决这个问题,其实很简单,看以下教程。1.小米电视盒子怎样看电视直播方法——下载美家市场①进入美家市场官网下载最新版本apk文件,并复制粘贴到u盘②打开“设置”→“账号安全”,将【安装未知来源的应用】和【米联安全】设置为允许;③将U盘插到小米盒子的USB接口上,会自动检测到新的USB设备,打开它;④没弹出U盘的可以打开应用程序下的“高清播放器”,切
我有一个接受回调函数的函数,我在其中将数据传回。可以将其转换为延迟对象以便更好地练习吗?这是我得到的:varchapters;vargetChapters=function(fnLoad){//CACHEDATAIFAPPLICABLEif(!chapters){//CALLJSONDATAVIAAJAX$.getJSON('/chapters.txt').done(function(json){//STOREDATAINLOCALSTORAGEchapters=Lawnchair(function(){this.save(json,function(data){//CALLCALLB
我想使用网络浏览器从麦克风获取实时音频,并通过网络套接字将其发送到Node.js服务器。我正在使用BinaryJS库将二进制数据发送到服务器。我在从麦克风获取音频样本时遇到问题。这是我所拥有的:window.AudioContext=window.AudioContext||window.webkitAudioContext;varcontext=newAudioContext();varaudio=document.querySelector('audio');navigator.webkitGetUserMedia({audio:true},function(micstream){
我正在尝试用html5制作一个网页,该网页将来自wav文件的示例数据存储在一个数组中。有没有办法用javascript获取样本数据?我正在使用文件输入来选择wav文件。在我已经添加的javascript中:document.getElementById('fileinput').addEventListener('change',readFile,false);但我不知道在readFile中做什么。编辑:我试图在ArrayBuffer中获取文件,将其传递给decodeAudioData方法并从中获取typedArraybuffer。这是我的代码:varopenFile=function