RGLab / flowWorkspace

flowWorkspace
GNU Affero General Public License v3.0
45 stars 21 forks source link

problem creating a gating set from flowset and empty cytoset #365

Closed ghost closed 3 years ago

ghost commented 3 years ago

Hi Mike, Greg and the team, I am having a very similar issue as issue 341 but the solution of install newer version of cytolib and flowWorkspace and flowCore doesn't seem to fix the issue.

I can create flowset without problem using read.flowset() but the GatingSet is returning an error. `

fs <- read.flowSet(file_list, emptyValue = FALSE, alter.names = TRUE) gs <- GatingSet(fs) Error in (function (cond) : error in evaluating the argument 'x' in selecting a method for function 'GatingSet': Empty keyword name detected!If it is due to the double delimiters in keyword value, please set emptyValue to FALSE and try again! `

in addition, (this might be related?), if I start from a cytoset with load_cytoset_from_fcs() return an empty cytoSet... using: cs <- load_cytoset_from_fcs(files = file_list, emptyValue = FALSE, alter.names = TRUE)

Screen Shot 2021-09-01 at 9 34 32 AM

The FCS files that I am trying to analyze were created with a guava (FCS version 2.0). Here is an example of the file (2x) I used: Archive.zip Here is the session info():

`> sessionInfo() R version 4.1.0 (2021-05-18) Platform: x86_64-apple-darwin17.0 (64-bit) Running under: macOS Big Sur 11.5.2

Matrix products: default LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages: [1] stats graphics grDevices utils datasets methods base

other attached packages: [1] flowWorkspace_4.5.3 flowCore_2.5.0 cytolib_2.5.3

loaded via a namespace (and not attached): [1] Rcpp_1.0.7 RColorBrewer_1.1-2 compiler_4.1.0 pillar_1.6.2
[5] base64enc_0.1-3 tools_4.1.0 zlibbioc_1.38.0 aws.s3_0.3.21
[9] digest_0.6.27 lattice_0.20-44 lifecycle_1.0.0 tibble_3.1.4
[13] png_0.1-7 pkgconfig_2.0.3 rlang_0.4.11 graph_1.70.0
[17] DBI_1.1.1 Rgraphviz_2.36.0 curl_4.3.2 parallel_4.1.0
[21] httr_1.4.2 dplyr_1.0.7 xml2_1.3.2 generics_0.1.0
[25] S4Vectors_0.30.0 vctrs_0.3.8 stats4_4.1.0 grid_4.1.0
[29] tidyselect_1.1.1 glue_1.4.2 data.table_1.14.0 Biobase_2.52.0
[33] R6_2.5.1 jpeg_0.1-9 fansi_0.5.0 XML_3.99-0.7
[37] latticeExtra_0.6-29 purrr_0.3.4 RProtoBufLib_2.4.0 magrittr_2.0.1
[41] scales_1.1.1 matrixStats_0.60.1 ellipsis_0.3.2 BiocGenerics_0.38.0 [45] assertthat_0.2.1 colorspace_2.0-2 aws.signature_0.6.0 ncdfFlow_2.38.0
[49] utf8_1.2.2 munsell_0.5.0 RcppParallel_5.1.4 crayon_1.4.1 `

Hope this help! Let me know if you need more information or if I missed anything in the previous issues.

Best, Stephane

mikejiang commented 3 years ago

cytoset should work

> cs <- load_cytoset_from_fcs(files = file_list, emptyValue = FALSE, alter.names = TRUE)
> gs <- GatingSet(cs)

The reason you see these empty s4 slots contents is because these are inherited from flowSet s4 class and not actually used by cytoset. So the real data structures are hidden behind the external pointer (in c++), i.e.

> cs@pointer
<pointer: 0x56356e303f60>

and can be accessed by the cytoset accessors (i.e. s4 methods)

> cs
A cytoset with 2 samples.

  column names:
    FSC-HLin, SSC-HLin, GRN-HLog, YEL-HLog, RED-HLog, NIR-HLog, RED2-HLog, NIR2-HLog, FSC-HLog, SSC-HLog, GRN-HLin, YEL-HLin, RED-HLin, NIR-HLin, RED2-HLin, NIR2-HLin, NIR2-A, NIR2-ALog, NIR2-W

> cs[[1]]
cytoframe object 'C2210_CD5_CD45_CD14.fcs'
with 9310 cells and 19 observables:
            name                   desc     range  minRange  maxRange
$P1     FSC-HLin Forward Scatter (FSC..      1023   0.00000      1023
$P2     SSC-HLin Side Scatter (SSC-HL..      1023   0.00000      1023
$P3     GRN-HLog Green Fluorescence (..     10000   1.00904     10000
$P4     YEL-HLog Yellow Fluorescence ..     10000   1.00904     10000
$P5     RED-HLog Red Fluorescence (RE..     10000   1.00904     10000
...          ...                    ...       ...       ...       ...
$P15   RED2-HLin Red2 Fluorescence (R..      1023         0      1023
$P16   NIR2-HLin   Near IR2 (NIR2-HLin)      1023         0      1023
$P17      NIR2-A Near IR2 Area (NIR2-A)      1023         0      1023
$P18   NIR2-ALog Near IR2 Area (NIR2-..      1023         0      1023
$P19      NIR2-W Near IR2 Width (NIR2..      1023         0      1023
318 keywords are stored in the 'description' slot
row names(0):

I know it maybe confusing but s4 slots are not supposed to be accessed directly by user anyway.

ghost commented 3 years ago

Thank you so much! (I am clearly a newbie!) I was indeed confused.