(单细胞-SingleCell)单细胞标准流程(简化版)

seurat流程

#定义函数
norm_range = function(x){
  ids = summary(x)
  iqr = 1.5*(ids[5] - ids[2])
  print(ids)
  print(paste0('norm_range:',ids[2]-iqr,'-',ids[5]+iqr))
}


# 1.构建对象
min.cells = 0 # min.cells 某一个基因至少在多少个基因中表达
min.features = 0 # min.features 某个细胞至少表达多少个基因
sce = CreateSeuratObject(counts = raw.data,metadata = metadata,min.cells =min.cells,min.features =min.features)
sce = AddMetaData(object = sce,metadata = metadata)  
sce = AddMetaData(object = sce, percent.ercc, col.name = "percent.ercc") 
# 2.数据清洗
# 用数据框的筛选形式可以对sce进行基因和样本筛选
### QC_filter all cells
erccs = grep('^ERCC-', x= rownames(sce),value = T) # value = T 获取名字
rp = grep("^RP[SL][[:digit:]]", x= rownames(sce),value = T) # value = T 获取名字
mt = grep('^MT-', x= rownames(sce),value = T) # value = T 获取名字) 
pHB = grep('^HBA|^HBB', x= rownames(sce),value = T) # value = T 获取名字) # 红细胞marker
ncRNA = grep("^[A-Z][A-Z][0-9]*\\.[0-9]", x= rownames(sce),value = T)
LOC = grep('(^LOC|LINC)[1-9]*', x= rownames(sce),value = T) # value = T 获取名字) 

sce[["percent.ercc"]]  = PercentageFeatureSet(sce, pattern = "^ERCC-")
sce[["percent.rp"]]  = PercentageFeatureSet(sce, pattern = "^RP[SL][[:digit:]]")
sce[["percent.mt"]]  = PercentageFeatureSet(sce, pattern = "^MT-")
sce[["percent.hb"]]  = PercentageFeatureSet(sce,  pattern = "^HBA|^HBB")
sce[["percent.ncRNA"]]  = PercentageFeatureSet(sce, pattern =("^[A-Z][A-Z][0-9]*\\.[0-9]")
sce[["percent.LOC"]]  = PercentageFeatureSet(sce, pattern = "(^LOC|LINC)[1-9]*")

norm_range(sce@meta.data$nCount_RNA)
norm_range(sce@meta.data$nFeature_RNA)
norm_range(sce@meta.data$percent.mt)
norm_range(sce@meta.data$percent.hb)
norm_range(sce@meta.data$percent.ncRNA)
norm_range(sce@meta.data$percent.LOC)
# 3. 筛选
sce = subset(x=sce, subset = nCount_RNA > 50000 & nFeature_RNA > 500)

### genes filter
ids = c(erccs,LOC,mt,ncRNA,rp) %>% unique
sce = sce[-which(rownames(sce) %in% ids),]
sce

#####################################################################################################################
# seurat 流程
# 1.log
sce = NormalizeData(object = sce,normalization.method =  "LogNormalize",  scale.factor = 1e6)
# 2.高变基因
sce = FindVariableFeatures(object = sce,selection.method = "vst", nfeatures = 2000)
# 3.标准化
sce = ScaleData(object = sce)
# 4. PCA
sce = RunPCA(object = sce, do.print = FALSE)
# 5.构建图
sce= FindNeighbors(sce, dims = 1:20)
# 6. 聚类
sce = FindClusters(sce, resolution = 0.5) 
# 7.tsne
sce=RunTSNE(sce,dims.use = 1:20)  ##tsne降维

#####################################################################################################################
sce.2 <- SCTransform(sce, method = "glmGamPoi", vars.to.regress = "percent.mt", verbose = FALSE)
# 4. PCA
sce.2 = RunPCA(object = sce.2, do.print = FALSE)
# 5.构建图
sce.2= FindNeighbors(sce.2, dims = 1:20)
# 6. 聚类
sce.2 = FindClusters(sce.2, resolution = 0.5) 
# 7.tsne
sce.2=RunTSNE(sce.2,dims.use = 1:20)  ##tsne降维
my Dimplot
ids.group  = 'CellType' # 注释后的label信息 ,改为cell_type,这里可以设置成自己的分组
ids.title = 'Number of CT-26: 9,181'
umap = sce@reductions$umap@cell.embeddings %>%  #获取坐标信息
  as.data.frame() %>% 
  cbind(cell_type = sce[[ids.group]]) 
cell_type_med <- umap %>%
  group_by(cell_type) %>%
  summarise(
    UMAP_1 = median(UMAP_1),
    UMAP_2 = median(UMAP_2)
  )
DimPlot(sce, group.by =ids.group)+
  scale_color_npg(alpha=0.7) + ggtitle(ids.title)+ # 设置title
  geom_label_repel(aes(UMAP_1,UMAP_2,label=cell_type), fontface="bold",data = cell_type_med,
                   point.padding=unit(0.5, "lines"))+
  theme(
    axis.title = element_blank(),  #轴标题
    axis.text = element_blank(), # 文本
    axis.ticks = element_blank(),
    axis.line = element_blank())+
  geom_segment(aes(x = min(umap$UMAP_1) , y = min(umap$UMAP_2) ,
                   xend = min(umap$UMAP_1) +3, yend = min(umap$UMAP_2) ),
               colour = "black", size=1,arrow = arrow(length = unit(0.3,"cm")))+ 
  geom_segment(aes(x = min(umap$UMAP_1)  , y = min(umap$UMAP_2)  ,
                   xend = min(umap$UMAP_1) , yend = min(umap$UMAP_2) + 3.5),
               colour = "black", size=1,arrow = arrow(length = unit(0.3,"cm"))) +
  annotate("text", x = min(umap$UMAP_1) +1.5, y = min(umap$UMAP_2) -1, label = "UMAP_1",
           color="black",size = 4) + 
  annotate("text", x = min(umap$UMAP_1) -1, y = min(umap$UMAP_2) + 1.5, label = "UMAP_2",
           color="black",size = 4,angle=90) 

ggsave('Result/plts/UMAP_Cell_experimental.pdf',height = 20,width = 25,units = 'cm')
myFindMarkers
 {
    # 参数设置
    ids.group = 'TissueType' # 分组信息
    ids.min.pct = 0.25 # 差异基因最低表达比例
    ids.mc.cores = 24 # 设置所调用的线程数量
    ids.path = 'Result/csv/DEGs_of_TissueType/Markers_of_' # 设置文件输出路径和前缀
    
    unique(Idents(sce))
    Idents(sce) = sce[[ids.group]]
    M=unique(Idents(sce))
    print(M)
    
    # 设置多线程识别差异基因
    if(T){
      FindMarker.wrapper <- function(x){
        FindMarkers(sce,ident.1=x, only.pos = TRUE, min.pct=ids.min.pct)
      }
      Markers <- parallel::mclapply(M, FindMarker.wrapper, mc.cores = ids.mc.cores)
      
      DEGs = paste0('DEGs.',M)
      df = NULL
      for (i in seq_along(DEGs)) {
        ids.df = as.data.frame(Markers[i])
        ids.df$Tissue = M[i]
        write.csv(ids.df,file = paste0(ids.path,M[i],'.csv'))
      }
      df = as.data.frame(df)
      head(df)
    }
  }

CellPhoneDB 流程

# cellphonedb1
if(T){
   
  sce = sce.raw
  cell.1 <
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单细胞RNA测序(single-cell RNA-seq)是一种高分辨率的基因表达分析技术,用于分析单个细胞的转录组。长非编码RNA(long non-coding RNA,lncRNA)是一类在转录(transcription)过程中产生的,但不编码蛋白质的非编码RNA分子。在过去的几年里,越来越多的研究证明了lncRNA在调控基因表达和细胞功能中的重要作用。 对lncRNA进行单细胞RNA测序分析,可以在单个细胞水平上研究其表达模式和功能。通过这种方法,研究人员可以了解到lncRNA在细胞类型、发育阶段和环境刺激等条件下的表达动态。此外,单细胞RNA测序还可以帮助鉴定和分类未知的lncRNA,发现新的lncRNA功能以及推断lncRNA与其他RNA分子(如miRNA和mRNA)之间的相互作用。 《Single-cell RNA-seq analysis of lncRNAs》这篇文章可能介绍了使用单细胞RNA测序技术来研究lncRNA的分析方法和相关应用。它可能包含了从样本准备到数据分析的流程,介绍了如何将单细胞RNA测序数据与已知的lncRNA数据库进行比对、定量和注释。此外,文章可能提到了一些用于解析lncRNA在单个细胞中的表达模式和功能的计算方法和工具,如聚类分析、差异表达分析和共表达网络分析。 这篇文章的内容有助于加深我们对lncRNA的理解,揭示其在单个细胞水平上的功能和调控机制。这对于我们进一步研究lncRNA在发育、疾病和药物治疗等方面的作用具有重要意义,有望为个性化医学和精准治疗提供新的思路和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值