我试图在一个.FCS格式文件(这是一个流式细胞术格式文件)上使用mclust方法,并将该文件作为flowFrame对象读取到R中。
install.packages("openCyto") # since the old version sefaulted my R session
library( openCyto )
library( flowCore)
library( mclust)
trial1=read.FCS("export_Alcina TregMAIT_AV 10-1974 P1_CD4.fcs")
a=as.matrix(trial1)编辑注意:其中一些是生物导体软件包,您应该根据该环境的帮助页进行安装。
但是,mclust不接受.fcs文件作为矩阵&我尝试将其转换为带有函数as.matrix的矩阵,并得到以下错误:
Error in as.vector(data) :
no method for coercing this S4 class to a vector我发现了类似的问题,它们解释了您必须将importMethodsFrom(S4Vectors,as.matrix)添加到mclust的名称空间中,我就是这样做的。我还在mclust的名称空间中做了importMethodsFrom(BiocGenerics,as.vector)。但是,我仍然不能使用mclust。
如有任何建议或阅读,将不胜感激!
如果有人知道其他使用GMM模型的聚类方法可以接受.FCS格式而不进行转换,我会非常高兴的。
发布于 2016-06-30 20:37:46
我编辑了您的问题,以显示您最初应该做什么,也没有在以后做(而不是在注释中包含代码,您应该按照具体建议编辑这个问题)。我的响应基于flowCore::read.FCS中的第一个示例(因为您也没有包含指向从磁盘加载的数据集的指针),所以我将引用运行该代码的"samp“对象,而不是"trial1”。
"samp“对象现在从class和str返回
> class(samp)
[1] "flowFrame"
attr(,"package")
[1] "flowCore"
str(samp)
Formal class 'flowFrame' [package "flowCore"] with 3 slots
..@ exprs : num [1:10000, 1:8] 382 628 1023 373 1023 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : NULL
.. .. ..$ : Named chr [1:8] "FSC-H" "SSC-H" "FL1-H" "FL2-H" ...
.. .. .. ..- attr(*, "names")= chr [1:8] "$P1N" "$P2N" "$P3N" "$P4N" ...
.. ..- attr(*, "ranges")= num [1:8] 1023 1023 10000 10000 10000 ...
..@ parameters :Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
.. .. ..@ varMetadata :'data.frame': 5 obs. of 1 variable:
.. .. .. ..$ labelDescription: chr [1:5] "Name of Parameter" "Description of Parameter" "Range of Parameter" "Minimum Parameter Value after Transforamtion" ...
.. .. ..@ data :'data.frame': 8 obs. of 5 variables:
.. .. .. ..$ name :Class 'AsIs' Named chr [1:8] "FSC-H" "SSC-H" "FL1-H" "FL2-H" ...
.. .. .. .. .. ..- attr(*, "names")= chr [1:8] "$P1N" "$P2N" "$P3N" "$P4N" ...
.. .. .. ..$ desc :Class 'AsIs' Named chr [1:8] "FSC-H" "SSC-H" NA NA ...
.. .. .. .. .. ..- attr(*, "names")= chr [1:8] "$P1S" "$P2S" "$P3S" "$P4S" ...
.. .. .. ..$ range : num [1:8] 1024 1024 1024 1024 1024 ...
.. .. .. ..$ minRange: num [1:8] 0 0 1 1 1 0 1 0
.. .. .. ..$ maxRange: num [1:8] 1023 1023 10000 10000 10000 ...
.. .. ..@ dimLabels : chr [1:2] "rowNames" "columnNames"
.. .. ..@ .__classVersion__:Formal class 'Versions' [package "Biobase"] with 1 slot
.. .. .. .. ..@ .Data:List of 1
.. .. .. .. .. ..$ : int [1:3] 1 1 0
..@ description:List of 164
.. ..$ FCSversion : chr "2"
.. ..$ $BYTEORD : chr "4,3,2,1"
.. ..$ $DATATYPE : chr "F"
#----- output truncated -----------因此,"samp“不是任何意义上的矩形对象,而是一个包含大量属性关联信息的复杂列表。我的猜测是,您需要@ exprs节点中的信息,这是一个矩阵。
另一个困难是在mclust包中没有函数mclust,尽管在?mclust中我们确实看到了一个演示使用Mclust函数的示例。R坚决要求函数名的大写,这是不可原谅的。
Mclust(exprs(samp)[1:100,])
#-----------
'Mclust' model object:
best model: ellipsoidal, equal orientation (VVE) with 4 componentshttps://stackoverflow.com/questions/38102956
复制相似问题