前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cytof数据处理难点之合并两个不同panel的数据集

cytof数据处理难点之合并两个不同panel的数据集

作者头像
生信技能树
发布2020-12-03 15:20:21
1.6K0
发布2020-12-03 15:20:21
举报
文章被收录于专栏:生信技能树生信技能树

前面我们已经完成了cytof数据处理的主要步骤,读入文件,质量控制,降维聚类分群,生物学注释和细胞亚群比例差异分析。目录如下:

其实跟纯粹的单细胞转录组就非常类似了,不过单细胞转录组数据分析的细节以及背景我就不赘述了,看我在《单细胞天地》的单细胞基础10讲:

以及各式各样的个性化汇总教程,差不多就明白了。

基本流程走完了,仅仅是万里长征第一步而已。我们可以开始尝试分析一些文献的公共数据集啦,不过在处理那些数据的过程中,我们还需要传授给大家几个小技巧。

合并两个不同panel的cytof数据集

有一些情况下,你的同一个实验项目的多个FCS文件,它们的抗体顺序并不一致。如下:

代码语言:javascript
复制
  sce1 <- prepData(fs, panel, md, features = panel$fcs_colname)
  sce2 <- prepData(fs, panel, md, features = panel$fcs_colname)
  rowData(sce1)[,1]
  rowData(sce2)[,1]

可以看到,两个数据集的panel其实是一样的:

代码语言:javascript
复制
>   rowData(sce1)[,1]
[1] "PerCP-Cy5-5-A"     "APC-H7-A"          "BV510-A"           "PE-Cy7-A"         
[5] "BV421-A"           "Alexa Fluor 647-A" "PE-A"              "FITC-A"           
>   rowData(sce2)[,1]
[1] "PerCP-Cy5-5-A"     "APC-H7-A"          "BV510-A"           "PE-Cy7-A"         
[5] "PE-A"              "Alexa Fluor 647-A" "FITC-A"            "BV421-A" 

都是8个抗体,但是呢,顺序不一样。

这个时候需要对 SingleCellExperiment 对象了如指掌:http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html

代码语言:javascript
复制
different quantifications (e.g., counts, CPMs, log-expression) can be stored simultaneously in the assays slot, 
and row and column metadata can be attached using rowData and colData, respectively.
metadata(1): experiment_info
assays(2): counts exprs

首先把SingleCellExperiment对象拆分

SingleCellExperiment对象比较复杂,需要自行阅读,http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html

拆分的代码如下:

代码语言:javascript
复制
  ct1=assay(sce1,1)
  ct1[1:4,1:4]
  ex1=assay(sce1,2)
  ex1[1:4,1:4]
  r1=as.data.frame(rowData(sce1))
  c1=as.data.frame(colData(sce1))
  
  ct2=assay(sce2)
  ct2[1:4,1:4]
  ex2=assay(sce2,2)
  ex2[1:4,1:4]
  r2=as.data.frame(rowData(sce2))
  c2=as.data.frame(colData(sce2))

然后把两个抗体对齐:

代码语言:javascript
复制
  r1;r2
  n=match(r1$channel_name,r2$channel_name)
  r1;r2[n,]
  
  # 首先合并抗体信号矩阵
  ct=cbind(ct1,ct2[n,])
  ex=cbind(ex1,ex2[n,])
  # 然后合并细胞的样本来源及其分组信息
  phe=rbind(c1,c2)
  head(phe)
  # 最后确定抗体的标记信息
  r1 # 因为r2已经被修改回来成为了r1
  # 参考   http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html 
  

有了两个矩阵,assays(2): counts exprs ,以及抗体信息,样品信息,就可以重新组建SingleCellExperiment对象,它比较复杂,需要自行阅读,http://www.bioconductor.org/packages/release/bioc/vignettes/scater/inst/doc/overview.html

最后重新组建SingleCellExperiment对象

代码超级简单

代码语言:javascript
复制
 sce <- SingleCellExperiment(
    assays = list(counts = ct,exprs=ex), 
    colData = phe,
    rowData = r1
  )
  sce 

得到的全新的SingleCellExperiment对象就包含了两个不同panel顺序的cytof数据集啦。

如果不仅仅是panel顺序不一样

panel本身也不一样,就比较麻烦了,不同的panel可能研究的生物学问题不一样,或许有批次效应等其它未知的混杂因素。

需要具体问题具体分析啦。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 合并两个不同panel的cytof数据集
    • 首先把SingleCellExperiment对象拆分
      • 然后把两个抗体对齐:
        • 最后重新组建SingleCellExperiment对象
          • 如果不仅仅是panel顺序不一样
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档