文件处理相关
## 读取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)