InferCNV
# 第一个文件count矩阵
dfcount = as.data.frame(sce@assays$RNA@counts)
# 第二个文件样本信息矩阵
groupinfo= data.frame(cellId = colnames(dfcount))
identical(groupinfo[,1],sce@meta.data$cell_id)
groupinfo$cellType = sce@meta.data$cell_annotion # 记录细胞分组信息
# 第三文件
library(AnnoProbe)
geneInfor=annoGene(rownames(dfcount),"SYMBOL",'human')
geneInfor=geneInfor[with(geneInfor, order(chr, start)),c(1,4:6)]
geneInfor=geneInfor[!duplicated(geneInfor[,1]),]
## 这里可以去除性染色体
# 也可以把染色体排序方式改变
dfcount =dfcount [rownames(dfcount ) %in% geneInfor[,1],]
dfcount =dfcount [match( geneInfor[,1], rownames(dfcount) ),]
# 输出
expFile='./processfile/23479_samples_expFile.txt'
write.table(dfcount ,file = expFile,sep = '\t',quote = F)
groupFiles='./processfile/23479_samples_groupFiles.txt'
write.table(groupinfo,file = groupFiles,sep = '\t',quote = F,col.names = F,row.names = F)
geneFile='./processfile/23479_samples_geneFile.txt'
write.table(geneInfor,file = geneFile,sep = '\t',quote = F,col.names = F,row.names = F)
# 标准运行流程
rm(list=ls())
options(stringsAsFactors = F)
library(Seurat)
library(ggplot2)
library(infercnv)
expFile='./processfile/23479_samples_expFile.txt'
groupFiles='./processfile/23479_samples_groupFiles.txt'
geneFile='./processfile/23479_samples_geneFile.txt'
library(infercnv)
gc()
infercnv_obj = CreateInfercnvObject(raw_counts_matrix=expFile,
annotations_file=groupFiles,
delim="\t",
gene_order_file= geneFile,
ref_group_names=c('Normal')) # 如果有正常细胞的话,把正常细胞的分组填进去
# Run infer CNV
infercnv_all = infercnv::run(infercnv_obj,
cutoff=1, # use 1 for smart-seq, 0.1 for 10x-genomics
out_dir= "./processfile/23479_samples_inferCNV", # dir is auto-created for storing outputs
cluster_by_groups=T, # cluster
num_threads=32,
denoise=F,
HMM=F)
# denose和HMM选上的话运行时间会非常久
# 修改图片样式
library(RColorBrewer)
infercnv::plot_cnv(infercnv_obj, #上两步得到的infercnv对象
plot_chr_scale = T, #画染色体全长,默认只画出(分析用到的)基因
output_filename = "better_plot",output_format = "pdf", #保存为pdf文件
custom_color_pal = color.palette(c("#8DD3C7","white","#BC80BD"), c(2, 2))) #改颜色
CopyKat
sce = raw
library(copykat)
exp.rawdata = sce@assays$RNA@counts
start = Sys.time()
print(start)
copykat.test <- copykat(rawmat=exp.rawdata,
id.type="S",
cell.line="no",
ngene.chr=5,
win.size=25,
KS.cut=0.15,
sam.name="TNBC1",
distance="euclidean",
n.cores=16)
finish= Sys.time()
pred.test <- data.frame(copykat.test$prediction)
sce = AddMetaData(sce,metadata = pred.test,col.name = 'pred.test')
save(pred.test,sce, file='processfile/copykat.Rdata')