前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cytof数据处理难点之修改FCS文件

cytof数据处理难点之修改FCS文件

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

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

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

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

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

修改FCS文件

FCS文件类型,流式细胞术数据文件标准。流式细胞术数据文件标准于1984年发布,以促进流式细胞术数据分析软件与在不同类型的流式细胞术仪器上获取的数据的互操作性。

该标准在1990年修订为FCS 2.0,在1997年修订为FCS 3.0,在2010年修订为FCS 3.1。

2020年9月3日Spidlen J等人在Cytometry A杂志上提出了FCS 3.2,该修订版满足了一些新需求和建议,并结合了十年来整个细胞仪领域的进步。

FCS 3.2规范完整版可以下载http://flowcyt.sf.net/fcs/fcs32.pdf

为什么要修改它呢?

因为有可能是你的同一个实验项目的多个FCS文件,它们的抗体顺序并不一致。

读取fcs文件的函数来自于 flowCore 包

我们读取fcs文件,可以读取一个文件夹下面的全部fcs文件,或者单个fcs文件独立读取。

代码如下:

代码语言:javascript
复制
p1='files'
fs1=list.files(p1,'*fcs' )
fs1
# 可以读取一个文件夹下面的全部fcs文件
samp <- read.flowSet(files = fs1,path = p1)

# 或者单个fcs文件独立读取
cytof_list <- lapply(fs1, function(x){
  read.flowSet(files = x ,path = p1) 
}) 
cytof_list
lapply(cytof_list,colnames)
lapply(cytof_list,function(x) dim(x[[1]]@exprs))
# 具体看每一个fcs文件      
tmp=cytof_list[[1]][[1]]
dim(tmp@exprs) 
tmp@parameters@data
       

首先需要明白读取fcs文件的函数来自于 flowCore 包:

代码语言:javascript
复制
read.flowSet {flowCore} ## 批量读取文件夹下面的全部fcs文件
read.FCS {flowCore} ## 单个fcs读取

简单的思考,既然是有read.FCS可以猜出应该是有 write.FCS {flowCore}

修改flowFrame-class

使用read.FCS {flowCore} 读取fcs文件后是一个 flowFrame-class,需要修改它就得先理解它:

代码语言:javascript
复制
This class represents the data contained in a FCS file or similar data structure. There are three parts of the data:
a numeric matrix of the raw measurement values with rows=events and columns=parameters
annotation for the parameters (e.g., the measurement channels, stains, dynamic range)
additional annotation provided through keywords in the FCS file

构建它的代码是:

代码语言:javascript
复制
new("flowFrame",
exprs = ...., Object of class matrix
parameters = ...., Object of class AnnotatedDataFrame
description = ...., Object of class list
)

最终代码如下:

代码语言:javascript
复制
ids=table(unlist(lapply(cytof_list,colnames)))
id=names(ids[ids==8])
id
dir.create('new')
fs=list.files('old',pattern = '*fcs')
fs
lapply(fs, function(x){
  tmp=read.FCS(file.path('old',x))
  tmp@exprs=tmp@exprs[,id]
  tmp@parameters@data=tmp@parameters@data[match(id,tmp@parameters@data$name ),]
  write.FCS(tmp,file.path('new',x))
})
p1='new'
fs1=list.files(p1,'*fcs' )
fs1
samp <- read.flowSet(files = fs1,path = p1)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 修改FCS文件
  • 为什么要修改它呢?
  • 读取fcs文件的函数来自于 flowCore 包
  • 修改flowFrame-class
  • 最终代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档