Seurat常见操作

文件处理相关

## 读取RDS文件
PRO0 <- readRDS('../00.signleron/CD45+/public_c1613_rental.diff_PRO.rds')


## matrix转成10x格式
library(Seurat)
RAW1 <- read.table('24h_Drug_ctrl.txt.A549.matrix', sep = "\t",header= TRUE,row.names=1)
PRO1 <- CreateSeuratObject(counts = RAW1)
library(DropletUtils)
write10xCounts(x = PRO1@assays$RNA@counts, path = '10x_matrix')

# For output from CellRanger < 3.0:  barcodes.tsv, genes.tsv, and matrix.mtx
# For output from CellRanger >= 3.0: barcodes.tsv.gz, features.tsv.gz, and matrix.mtx.gz

## Seurat2 to Seurat higer
tmp <- readRDS('./GSE131984_SUM159_10X_JQ1-Pal-Tax.Rdata')
PRO <- CreateSeuratObject(counts = tmp@raw.data, project = "ms",  min.cells = 3, min.features = 200)

Seurat old object 转成 Seurat3
PRO1 <- UpdateSeuratObject(object = PRO1)

## Seurat对象输出10x数据
library(DropletUtils)
write10xCounts(x = PRO@assays$RNA@counts, path = '10x', version="3")


## Seurat对象输出h5ad格式
library(Seurat)
library(SeuratDisk)
PRO = UpdateSeuratObject(object = PRO)
SaveH5Seurat(PRO, filename = "c1613.neg.h5Seurat")
Convert("c1613.neg.h5Seurat", dest = "h5ad")

## 输出当前Idents值
Idents(PRO)

画图相关

## umap图
p5 <- DimPlot(PRO, reduction = "umap",label = TRUE,label.size=cell.label.size)+NoLegend()
p5

设置图片大小
options(repr.plot.width=14, repr.plot.height=6)

展示单个基因的情况
FeaturePlot(object = pbmc_small, features = 'PC_1')

通过函数将细胞重新分类
tcrs_cells <- c("P4")
check_in <- function(x) {
    if( x  %in% tcrs_cells){
        return("P4")
    }else{
        return("no P4")
    }
}
rds@meta.data$P4 = sapply(rds@meta.data$"Sample ID", check_in)

变量处理相关

## 修改identity
PRO <- SetIdent(PRO, value = PRO@meta.data$gene_clustering)
## 差异基因比较
diff_10 <- FindMarkers(rds0, ident.1 = 'sample1', ident.2 = 'sample2',verbose = FALSE)


## 修改某一列的名字
names(PRO@meta.data)[names(PRO@meta.data) == 'patient'] <- 'sampletype'
## switch目前的assay
DefaultAssay(object = PRO) <- "SCT"

## 根据其他列生成另外的列
PRO1@meta.data$sample <- sapply(strsplit(as.character(PRO1@meta.data$Cell.Barcode), '_'), "[", 2)
### 哈希替换
library(hash)
h <- hash( LETTERS, 1:26 )
cvt_atc <- function(x) {
    return(h[[x]])
}
tm$atc2=sapply(tm$atc,cvt_atc)

library(data.table)
df <- sampproj@meta.data
df <- setDT(df) %>% 
  .[grepl("1", s0), c("sample","sampletype") := .("Before NAC","Before NAC")] %>% 
  .[grepl("2", s0), c("sample","sampletype") := .("After NAC","After NAC")]

## index变成另外一列
pbmc@meta.data$Cell.Barcode <- rownames(pbmc@meta.data)

## ident增加样品名字
sampproj_cc <- RenameCells(sampproj_cc, add.cell.id = name[i])
RenameCells(
  object,
  add.cell.id = NULL,
  new.names = NULL,
  for.merge = FALSE,
  ...
)

## 批量聚类
pbmc <- FindClusters(pbmc, resolution=seq(0.1,0.4,by=0.02), verbose = FALSE,algorithm=1)

## 其他列变成index,和删掉它们

### Seurat4 转到 Seurat3
umap <- Embeddings(pro, reduction = "umap")
write.csv(umap, 'umap.csv')
umap <- read.csv('./umap.csv', head=TRUE)
rownames(umap) <- umap$X
umap <- umap[, -1]
PRO[["umap"]] <- CreateDimReducObject(embeddings = data.matrix(umap), key = "umap", assay = DefaultAssay(PRO))

### Seurat3提取矩阵数据
# Retrieve or set data in an expression matrix ('counts', 'data', and 'scale.data')
GetAssayData(object = pbmc, slot = "counts")
pbmc <- SetAssayData(object = pbmc, slot = "scale.data", new.data = new.data)
pbmc[["RNA"]]@data ## @counts是UMI @data是normalize后的

subset操作

# Subset Seurat object based on identity class, also see ?SubsetData
subset(x = pbmc, idents = "B cells")
subset(x = pbmc, idents = c("CD4 T cells", "CD8 T cells"), invert = TRUE)

# Subset on the expression level of a gene/feature
subset(x = pbmc, subset = MS4A1 > 3)

# Subset on a combination of criteria
subset(x = pbmc, subset = MS4A1 > 3 & PC1 > 5)
subset(x = pbmc, subset = MS4A1 > 3, idents = "B cells")

# Subset on a value in the object meta data
subset(x = pbmc, subset = orig.ident == "Replicate1")

# Downsample the number of cells per identity class
subset(x = pbmc, downsample = 100)

## 根据metadata的列提取Seurat对象数据
PRO@meta.data <- transform(PRO@meta.data, flag=Cell.Barcode %in% meta0$s0)
PRO2 <- subset(x = PRO, subset = flag == TRUE)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容