小洁老师的小班课——单细胞专题Day1

30秒前 908阅读

单细胞专题-Day1

第一件事当然是装包啦~

小洁老师的小班课——单细胞专题Day1
(图片来源网络,侵删)

需要安装的R包:

cran包:'tidyverse','msigdbr', 'patchwork','SeuratObject','Seurat'

Bioconductor包: 'sva', 'monocle', 'GOplot','GSVA','plotmo','regplot','scRNAseq','BiocStyle','celldex','SingleR','BiocParallel'

装包超实用小函数:require 对于加载成功的包,返回逻辑值T,未装的包返回F,用于装包时代码的分情况讨论。

单细胞数据库
  1. GEO
  2. Single Cell Portal
  3. Human Cell Atlas
  4. Single Cell Expression Atlas
  5. UCSC

不同类型文件的读取方法:https://mp.weixin.qq.com/s/W7szy-Kg6G1N1ENHNRjGiw 需要时查询即可。

多样本数据整理

跟着小洁老师,不用再手动整理文件夹!代码操作yyds!!

  1. 解压:
untar("GSE231920_RAW.tar",exdir = "GSE231920_RAW")#解包
library(stringr)
fs = paste0("GSE231920_RAW/",dir("GSE231920_RAW/"))
fs#查看每个样本的数据文件
  1. 从文件名中提取样本名
samples = dir("GSE231920_RAW/") %>% str_split_i(pattern = "_",i = 2) %>% unique();samples

不同样本需要修改代码,该例子为分割GSM7306054_sample1_barcodes.tsv.gz这一文件名

dir()列出工作目录下文件

  1. 为每个样本创建单独文件夹
##定义一个函数,创建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)
  1. 每个样本的三个文件分别复制到文件夹
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]]))
    }
  }
})
  1. 更改所有文件名,使其符合读取要求
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 
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]