小洁老师的小班课——单细胞专题Day1
单细胞专题-Day1
第一件事当然是装包啦~
(图片来源网络,侵删)
需要安装的R包:
cran包:'tidyverse','msigdbr', 'patchwork','SeuratObject','Seurat'
Bioconductor包: 'sva', 'monocle', 'GOplot','GSVA','plotmo','regplot','scRNAseq','BiocStyle','celldex','SingleR','BiocParallel'
装包超实用小函数:require 对于加载成功的包,返回逻辑值T,未装的包返回F,用于装包时代码的分情况讨论。
单细胞数据库
- GEO
- Single Cell Portal
- Human Cell Atlas
- Single Cell Expression Atlas
- UCSC
不同类型文件的读取方法:https://mp.weixin.qq.com/s/W7szy-Kg6G1N1ENHNRjGiw 需要时查询即可。
多样本数据整理
跟着小洁老师,不用再手动整理文件夹!代码操作yyds!!
- 解压:
untar("GSE231920_RAW.tar",exdir = "GSE231920_RAW")#解包 library(stringr) fs = paste0("GSE231920_RAW/",dir("GSE231920_RAW/")) fs#查看每个样本的数据文件
- 从文件名中提取样本名
samples = dir("GSE231920_RAW/") %>% str_split_i(pattern = "_",i = 2) %>% unique();samples
不同样本需要修改代码,该例子为分割GSM7306054_sample1_barcodes.tsv.gz这一文件名
dir()列出工作目录下文件
- 为每个样本创建单独文件夹
##定义一个函数,创建01_data及下面的样本文件夹,s为样本名字 ctr = function(s){ ns = paste0("01_data/",s) if(!file.exists(ns))dir.create(ns,recursive = T) } ##使用lapply函数批量创建文件夹,ctr为刚创建的函数,samples为样本名的向量 lapply(samples,ctr)
- 每个样本的三个文件分别复制到文件夹
lapply(fs, function(s){ #s = fs[1] for(i in 1:length(samples)){ #i = 1 if(str_detect(s,samples[[i]])){ file.copy(s,paste0("01_data/",samples[[i]])) } } })
- 更改所有文件名,使其符合读取要求
on = paste0("01_data/",dir("01_data/",recursive = T));on nn = str_remove(on,"GSM\d+_sample\d_");nn file.rename(on,nn)
d是正则表达式中的任意数字,可以借鉴AI的写法
批量读取
rm(list = ls()) library(Seurat) rdaf = "sce.all.Rdata" ##该步骤存在文件即跳过,节省时间 if(!file.exists(rdaf)){ f = dir("01_data/") ##这里写整理好数据的文件夹 scelist = list() #创建空的列表,下面的for循环每执行一次,scelist里面就会多一个元素。 for(i in 1:length(f)){ pda % RunHarmony("orig.ident") %>% ##harmony去批次方法 FindNeighbors(dims = 1:15, reduction = "harmony") %>% FindClusters(resolution = 0.5) %>% RunUMAP(dims = 1:15,reduction = "harmony") %>% RunTSNE(dims = 1:15,reduction = "harmony") save(sce.all,file = f) } load(f) ElbowPlot(sce.all) #肘形图用来选择主成分数量 p1 = DimPlot(sce.all, reduction = "umap",label = T,pt.size = 0.5)+ NoLegend();p1 ##查看umap图 DimPlot(sce.all, reduction = "umap",pt.size = 0.5,group.by = "orig.ident") ##按样本着色
- 降维聚类分群中,FindClusteres函数的resolution可以调整,数值越大,分群越细,一般在0.3-1.2之间。
细胞类型注释
##手动注释 #FindAllmarkers函数 library(dplyr) f = "markers.Rdata" if(!file.exists(f)){ markers
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。