# #加载所需的包:flowWorkspaceData
的openCyto包的目的是便于自动化控制方法以连续的方式模拟手动控制方案。
传统上,科学家们已经绘制盖茨为每个样本在每个2 d预测(2通道)内flowJo
。或画出的模板门的示例复制到另一个样本,然后手动检查每个样品上的门在必要时做调整。方法是费时和主观的,因此不适合高通量流血细胞计数器或生成的大型数据集cross-lab
数据分析。
这是一个xml
工作区(手动控制计划)出口flowJo
。
flowDataPath < -系统。文件(“extdata”,包=“flowWorkspaceData”) wsfile < -列表。文件(flowDataPath,模式= "手册。xml”,满wsfile = TRUE)
# # [1]“/ home / biocbuild / bbs - 3.4 - bioc / R /图书馆/ flowWorkspaceData / extdata / manual.xml”
通过使用flowWorkspace
包,我们可以加载到R,
ws < - openWorkspace (wsfile)
应用(parseWorkspace
)手动门
中定义的xml
原始的FSC
文件,
gs < - parseWorkspace (ws name =“t细胞”,子集= 1,isNcdf = TRUE)
然后想象控制层次结构
gh < - gs[[1]]阴谋(gh)
和盖茨
:
plotGate (gh)
这是一种控制方案T细胞
委员会试图识别T细胞
亚类。我们可以实现相同的结果通过使用这个包提供的自动浇注管道。
flowCore
,flowStats
,flowClust
和其他包提供了许多不同的浇注方法检测细胞数量和自动画出大门。
flowWorkspace
包提供了GatingSet
作为一种高效的数据结构来存储,查询和可视化分层的数据。
利用这些工具,openCyto
包可以创建的自动浇注管道控制模板
,它本质上是同样的分层控制方案所使用的生物学家和科学家。
首先,我们需要描述传播的控制层次结构表(纯文本格式)。这个扩展清单必须有以下列:
别名
:一个名字标签使用的细胞群,由别名的路径及其先例节点(例如/root/A/B/alias)的唯一标识。流行
:人口的模式+ / -
或+ / - b + / -
,它告诉算法(积极或消极)哪一边的1 d门或象限2 d门时保持的形式+ / - B + / -,”“和“B”应该是全名(或子串只要是码字匹配)流的通道或标记的数据。父
:父人口的别名,它的路径是唯一标识。会变暗
:由逗号字符分离指定维度(1 d和2 d)用于控制。它可以是通道名称或彩色标记的名字。gating_method
:控制函数的名称(如。flowClust
)。它由一个包装器函数,调用相同的函数名前缀点。(如。.flowClust
)gating_args
:传递给控制函数的命名参数collapseDataForGating
:当真实,数据(群体内部崩溃groupBy
指定的)门和门复制倒闭之前样品。当设置错误(或空白)groupBy
参数只使用预处理
和被选通所忽视。groupBy
:如果样品分成小组通过研究的独特组合变量(即pData列名称,例如“PTID: VISITNO”)。当分割是数字,那么样品就按每N分组样本preprocessing_method
(如:预处理的名称功能。prior_flowClust
)。它由一个包装器函数,调用相同的函数名前缀点。(如。.prior_flowClust
)预处理结果然后传递给控制包装器函数pps_res
论点。preprocessing_args
:命名参数传递给预处理功能。这是控制模板的一个例子。
库(openCyto)库(data.table) gtFile < -执行(“extdata / gating_template / tcell。csv”,包= " openCyto”) dtTemplate < -从文件中读dtTemplate (gtFile,自动启动= 1 l)
# #别名流行家长dim gating_method # # 1: nonDebris nonDebris根FSC-A mindensity # # 2:汗衫背心nonDebris FSC-A, FSC-H singletGate # # 3:淋巴结淋巴汗衫FSC-A, SSC-A flowClust # # 4: cd3 cd3淋巴cd3 mindensity # # 5: * cd4 - / + cd8 + / - cd3 cd4, cd8 mindensity # # 6:激活cd4 CD38 + HLA + cd4 + cd8 - CD38 HLA后挡板# # 7:激活cd8 CD38 + HLA + cd4-cd8 + CD38、HLA后挡板# # 8:CD45_neg CD45RA - cd4 + cd8 - CD45RA mindensity # # 9: CCR7_gate CCR7 + CD45_neg CCR7 flowClust # # 10: CCR7 + / * -CD45RA cd4 + cd8 + / -, CCR7 CD45RA refGate # # 11: CCR7 + / * -CD45RA + / - cd4-cd8 + CCR7 CD45RA mindensity # # gating_args collapseDataForGating groupBy # # 1: # # 2: NA NA NA NA # # 3: K = 2,目标= c (1) e5, 5 e4) NA NA # # 4:真正的4 # # 5:gate_range = c (1、3) # # 6: NA NA NA NA # # 7:托尔= 0.08 NA NA # # 8: gate_range = c (2、3) NA NA # # 9:底片= 1,pos = 1 NA NA # # 10: CD45_neg: CCR7_gate NA NA # # 11: NA NA # # preprocessing_method preprocessing_args # # 1: NA # # 2: NA # # 3: # # 4: prior_flowClust NA NA # # 5: NA # # 6: standardize_flowset NA # # 7: standardize_flowset NA # # 8: NA # # 9: NA # # 10: NA # # 11: NA
通常是每一行对应一个细胞的人口和人口的控制方法,用于获取。我们将试图解释如何创建这个浇注模板基于逐行手动控制方案。
dtTemplate [1]
# #别名流行家长dim gating_method gating_args # # 1: nonDebris nonDebris根FSC-A mindensity # # collapseDataForGating groupBy preprocessing_method preprocessing_args # # 1: NA NA NA
“nonDebris”
(指定别名
字段)。父
节点根
(总是第一个节点控制层次结构
默认情况下)。mindensity
(其中的一个选通
提供的功能openCyto
包)gating_method
在维度(门昏暗的
)FSC-A
。FSC-A
。“nonDebris”
(相当于“nonDebris +”
)流行
字段显示积极的
1 d的门保持随着人口的兴趣。分组
或预处理
参与这门,因此离开其他列空白
dtTemplate [2]
# #别名流行家长dim gating_method gating_args # # 1:汗衫背心nonDebris FSC-A, FSC-H singletGate # # collapseDataForGating groupBy preprocessing_method preprocessing_args # # 1: NA NA NA
“汗衫”
(别名
字段)。父
节点nonDebris
。gating_method
是singletGate
(函数flowStats
包)polygonGate
将会产生FSC-A
和FSC-H
(指定的会变暗
为每个样本)。“汗衫”
在流行
现场代表“背心+”
。但这是2 d门,这意味着我们要保持多边形的区域内dtTemplate [3]
# #别名流行家长dim gating_method gating_args # # 1:淋巴结淋巴汗衫FSC-A, SSC-A flowClust K = 2,目标= c (1) e5, 5 e4) # # collapseDataForGating groupBy preprocessing_method preprocessing_args # # 1: NA NA prior_flowClust NA
别名
指定的名称父
指出单线态
flowClust
作为gating_method
二维控制,会变暗
是逗号分隔字符串,x
轴(FSC-A
)首先,y
(SSC-A
第二个)。这个顺序不影响浇注过程但将决定盖茨是如何显示的。flowClust
算法可以接受gating-args
如果输入R控制台
。看到帮助(flowClust)
对这些观点的更多细节flowClust
算法接受额外的参数先知先觉
这是计算在预处理
(之前实际的阶段选通
),因此,我们供应preprocessing_method
与prior_flowClust
。dtTemplate [4]
# #别名流行家长dim gating_method gating_args collapseDataForGating # # 1: cd3 cd3淋巴cd3 mindensity真正的# # groupBy preprocessing_method preprocessing_args # # 1: 4 NA
它是相似的nonDebris
门,除了我们指定collapseDataForGating
作为真正的
告诉管道崩溃
所有样品在一个和适用mindensity
倒塌的数据CD3
维度。门一旦生成,它是复制的所有样品。这仅仅是有用的,当每个样本没有足够的事件来推断出门口。我们这样做的目的只是为了证明概念。
第四行指定流行
作为cd4 + / cd8 + / -
,这将扩大到6行。
dtTemplate [5]
# #别名流行家长dim gating_method gating_args # # 1: * cd4 - / + cd8 + / - cd3 cd4, cd8 mindensity gate_range = c (1、3) # # collapseDataForGating groupBy preprocessing_method preprocessing_args # # 1: NA NA NA
前两行两个1 d盖茨将生成的gating_method
在每个维度(cd4
和cd8
)独立:
# #别名流行家长dim gating_method # # 1: cd4 + cd4 + / nonDebris /背心/淋巴/ cd3, cd4 mindensity # # 2: cd8 + cd8 + / nonDebris /背心/淋巴/ cd3 cd8 mindensity # # gating_args collapseDataForGating groupBy preprocessing_method # # 1: gate_range = c (1、3) # # 2: gate_range = c (1、3) # # preprocessing_args # # 1: # # 2:
另一个4行4rectangleGate
年代,对应于4象限
在二维投影(cd4和cd8
)。
# #别名流行家长dim gating_method # # 1: cd4 + cd8 + cd4 + cd8 + / nonDebris /背心/淋巴/ cd3, cd4, cd8 refGate # # 2: cd4-cd8 + cd4-cd8 + / nonDebris /背心/淋巴/ cd3, cd4, cd8 refGate # # 3: cd4 + cd8 - cd4 + cd8 - / nonDebris /背心/淋巴/ cd3, cd4, cd8 refGate # # 4: cd4-cd8 - cd4-cd8 nonDebris /背心/淋巴/ cd3, cd4, cd8 refGate # # gating_args # # 1: / nonDebris /背心/淋巴/ cd3 / cd4 +: / nonDebris /背心/淋巴/ cd3 / cd8 + # # 2: / nonDebris /背心/淋巴/ cd3 / cd4 +: / nonDebris /背心/淋巴/ cd3 / cd8 + # # 3: / nonDebris /背心/淋巴/ cd3 / cd4 +: / nonDebris /背心/淋巴/ cd3 / cd8 + # # 4: / nonDebris /背心/淋巴/ cd3 / cd4 +: / nonDebris /背心/淋巴/ cd3 / cd8 + # # collapseDataForGating groupBy preprocessing_method preprocessing_args # # 1: # # 2: # # 3: # # 4:
我们在这里看到的,“refGate”
在gating_method
表明,构造基于门坐标
之前的两个1 d盖茨。这些1 d盖茨这样认为“参考门”
所提到的冒号分开别名
字符串gating_args
:“cd4 +, cd8 +”
。
或者,我们可以扩大它在传播这6行明确表。但这方便表示建议除非用户希望可以更精确地控制的控制是如何实现的。例如,有时我们需要使用不同的gating_method
s生成1 d盖茨cd4
和cd8
。或cd8
门需要依赖cd4
门,也就是说。的父
的c8 +
是cd4 +
(或cd4 -
)而不是cd3
。有时我们想要定制的别名
除了quadrant-like名称(x + y +
)自动生成。(例如控制模板的五行)
后浇注模板中定义的扩散板,它可以加载到R:
gt_tcell < - gatingTemplate gt_tcell (gtFile,自动启动= 1 l)
# # - - -浇注模板:违约和29 # #人口定义的
除了看传播表,我们可以通过可视化检查控制计划:
情节(gt_tcell)
我们可以看到,上述控制方案已经扩大了我们。所有的彩色的箭头的来源父
人口和灰色箭头的来源参考
人口(/门)。
一旦我们满意控制模板,我们可以把它应用到实际的流数据。
首先,我们原始的FCS文件加载到RncdfFlow: read.ncdfFlowSet
(它使用更少的内存flowCore: read.flowSet
)。
fcsFiles < -列表。文件(模式= " CytoTrol ", flowDataPath全= TRUE) ncfs < - read.ncdfFlowSet ncfs (fcsFiles)
# #的ncdfFlowSet 2样本。# # NCDF文件:/ tmp / RtmpbsSIZ3 / ncfs2ce541952552。数控# #一个类的对象“AnnotatedDataFrame”# # rowNames: CytoTrol_CytoTrol_1。fcs CytoTrol_CytoTrol_2。fcs # # varLabels:名字# # varMetadata: labelDescription # # # #列名:# # FSC-A, FSC-H, FSC-W, SSC-A, B710-A, R660-A, R780-A, V450-A, V545-A, G560-A G780-A,时间
然后,补偿数据。如果我们有补偿控制(即单彩色样本),我们可以计算补偿矩阵flowCore:溢出
函数。这里我们简单地使用补偿矩阵中定义flowJo工作区
。
compMat < - getCompensationMatrices (gh) ncfs_comp < -补偿(ncfs compMat)
这里是一个例子显示了补偿结果:
所有的彩色通道需要转换前适当控制。在这里,我们使用flowCore: estimateLogicle
这样做logicle
转换。
chnls < -参数(compMat) transFuncts < - estimateLogicle (ncfs[[1]],渠道= chnls) ncfs_trans < -变换(ncfs_comp transFuncts)
这里是一个例子显示转换结果:
一旦数据预处理,它可以加载到GatingSet
对象。
gs < - GatingSet (ncfs_trans) getNodes (gs [[1]])
# #[1]“根”
作为getNodes
显示,只有一个节点根
在这一点上。
现在我们可以控制模板应用到数据:
门(gt_tcell, gs)
可选地,我们可以运行的管道平行
加速控制。如。
门(gt_tcell、gs、mc.cores = 2, parallel_type =“多核”)
浇注后,有一些额外的数量的管道(如自动生成。refGate
)。
情节(gs [[1]])
我们可以隐藏这些人群:如果我们不感兴趣
dodesToHide < - c (cd8 +、cd4 +、“cd4-cd8——”, cd4 + cd8 +、cd4 + cd8 - / HLA +, cd4 + cd8 - / CD38 +”、“cd4-cd8 + / HLA +”、“cd4-cd8 + / CD38 +”、“CD45_neg / CCR7_gate”、“cd4 + cd8 - / CD45_neg”、“cd4-cd8 + / CCR7 +”、“cd4-cd8 + / CD45RA +”)拉普兰人(dodesToHide,函数(thisNode) setNode (gs、thisNode假))
和重命名的人群:
setNode (gs、“cd4 + cd8 -”,“cd4”) setNode (gs、“cd4-cd8 +”“cd8”)
情节(gs [[1]])
plotGate (gs [[1]])
有时它会很有帮助(尤其是与一个已经封闭的数据)能够与他GatingSet直接交互,而不需要编写完成csv浇注模板。
的openCyto
包允许用户指定他们的控制方案和门的数据在一个数据驱动的时尚。它使科学家们从labor-intensitive手动控制例程和增加的速度以及reproducibilty和客观的数据分析工作。