03 - Inside an FCS File

Author

David Rach

Published

February 15, 2026

AGPL-3.0 CC BY-SA 4.0

For the YouTube livestream recording, see here

For screen-shot slides, click here



Background

Welcome to the Week #3! Having subjected everyone to two R-focused weeks, this week will have more of a cytometry-focus as we slice into an .fcs file. We will hopefully gather greater understanding of how an .fcs file is structured and what additional kinds of information we can retrieve (while becoming increasingly puzzled why different manufacturers insist on using different keyword names for the exact same things).

We will also gain additional exposure to more object types in R (vectors, list, matrices and data.frames). Continuing the analogy from last week, if every function is the equivalent of a tool in a toolbox, each tool requires certain types of things to do its job properly (hammer ~ nail, screwdriver ~ screws, paintbrush ~ paint, etc.). Being able to identify what type/kind of object a particular variable we have created in R is will allow us to pass it to the correct function that will allow us to work with that object type.



Housekeeping

We are building off concepts that were covered in Week #1 (Installing R packages) and especially Week #2 (File Paths). For those who are flow cytometry beginners, please see UChicago Flow Flow Basics Series for additional context.

Today’s Goal

If you find yourself at some point going “I have no idea what is going on”, please pause, take a break, and circle back later in the day. Our goal is not to have you memorize how to quickly access 100 archaic keywords, but rather showcase a typical object exploration workflow. So don’t power through, but rather circle back when you are in an exploring mindset. Consider what kind of information from within an .fcs file you’d like to retrieve, and then explore/navigate your way through the various paths until you find the information that you were looking for.


Housekeeping

As we do every week, on GitHub, sync your forked-version of the CytometryInR course to bring in the most recent updates. Then within Positron, pull in those changes to your local computer. From there, copy the data folder to a separate project folder you have created. This will prevent any merge issues bringing in new data next week.


Walk Through


Getting Set Up


Set up File Paths

Having copied over the new data to your working project folder (Week 3 or whatever your chosen name), let’s identify the file paths between our working directory and the fcs files. If you retained the same project organization structure we had during Week #2, it may look similar to the following:

PathToDataFolder <- file.path("data")
PathToDataFolder
[1] "data"



Locate .fcs files

We will now locate our .fcs files. As we saw last week, our computer will need the full file.paths to these individual files, so we will set the list.files() “full.names” argument to TRUE.

fcs_files <- list.files(PathToDataFolder, pattern=".fcs", full.names=TRUE)
fcs_files
[1] "data/CellCounts4L_AB_05_ND050_05.fcs"

By contrast, if the “full.names” argument was set to FALSE, we would have retrieved just the file names

list.files(PathToDataFolder, pattern=".fcs", full.names=FALSE)
[1] "CellCounts4L_AB_05_ND050_05.fcs"

This would have been the equivalent of running the basename function on the “full.names=TRUE” output.

basename(fcs_files)
[1] "CellCounts4L_AB_05_ND050_05.fcs"



flowCore

We will be using the flowCore package, which is the oldest and most-frequently downloaded flow cytometry package on Bioconductor.

Code
# I have attached this code for anyone that is interested in seeing how these plots were made. The content is not part of today's lesson, so if you are just starting off, we will cover the details of data-tidying and creating ggplot objects over the next several weeks. Best, David

# Load required packages via a library call

library(dplyr) # CRAN
library(stringr) # CRAN
library(ggplot2) # CRAN
#library(plotly) # Using the :: to access 

# Loading in the dataset contained within the .csv file
BioconductorFlow_path <- file.path(PathToDataFolder, "BioconductorFlow.csv")
BioconductorFlowPackages <- read.csv(BioconductorFlow_path, check.names=FALSE)
BioconductorFlowPackages <- BioconductorFlowPackages |>
     arrange(desc(since)) |> mutate(package = factor(package, levels = package))

# Newer Base R Pipe : |> 
# Older mostly equivalent Magrittr Pipe %>% 
Code
# Notice the code-chunk eval arguments above dictate the shape of the final rendered plot. 

# Taking the imported dataset and passing it to ggplot2 to create the first plot. 

plot <- ggplot(BioconductorFlowPackages,
 aes(x = 0, xend = since, y = package, yend = package)) +
  geom_segment(linewidth = 2, color = "steelblue") +
  scale_x_continuous(trans = "reverse", 
  breaks = seq(0, max(BioconductorFlowPackages$since), by = 5)) +
  labs(
    x = "Years in Bioconductor",
    y = NULL,
    title = "Bioconductor Flow Cytometry R packages"
  ) +
  theme_bw()

# Taking the static plot and making it interactive using the plotly package

plotly::ggplotly(plot)
Code
# Retrieving the names of Bioconductor flow cytometry R packages in correct release order. 

HistoricalOrder <- BioconductorFlowPackages |> pull(package)

# Bringing in 2025 package usage dataset from a .csv file
BioconductorUsage_path <- file.path(PathToDataFolder, "BioconductorDownloads.csv")
BioconductorUsage <- read.csv(BioconductorUsage_path, check.names=FALSE)
BioconductorUsage <- BioconductorUsage |> dplyr::filter(Month %in% "all")

# Note, dplyr::filter is used due to flowCore also having a filter function, which causes conflicts once it is attached to the local environment. 

# Combining both data.frames for use in the plot

Dataset <- left_join(BioconductorFlowPackages, BioconductorUsage, by="package")

# Rearranging the order in which packages are displayed

Dataset$package <- factor(Dataset$package, levels=HistoricalOrder)
Code
# Generating the 2nd plot with ggplot2

plot <- ggplot(Dataset, aes(x = since, y = Nb_of_distinct_IPs)) +
  geom_point(aes(color = package), size = 3, alpha = 0.7) + 
  labs(
    x = "Years in Bioconductor",
    y = "Number of Yearly Downloads",
    title = "",
    color = "Package"
  ) +
  theme_bw()

# Making it interactive with plotly

plotly::ggplotly(plot)

flowCore is also one of the many Bioconductor packages maintained by Mike Jiang. In many ways (as those who completed the optional take-home problems for Week #1 know) reminiscent of this xkcd comic:

As with all our R packages, we first need to make sure flowCore is attached to our local environment via the library call.

library(flowCore)

The function we will be using today is the read.FCS() function. Do you remember how to access the help documentation?

Code
# Or when in Positron, hovering over the highlighted function name within the code-chunk

?flowCore::read.FCS

To start, lets select just the first .fcs file. We will do this by indexing the first item within fcs_files via the square brackets [].

firstfile <- fcs_files[1]
firstfile
[1] "data/CellCounts4L_AB_05_ND050_05.fcs"

flowFrame

For read.FCS(), it accepts several arguments. The argument “filename” is where we provide our file.path to .fcs file that we wish to load into R. Let’s go ahead and do so

read.FCS(filename=firstfile)

Please note, if you are doing this with your own .fcs files, you will need to provide two additional arguments, “transformation” = FALSE, and “truncate_max_range” = FALSE for the files to be read in correctly. We will revisit the reasons why in Week #5.

read.FCS(filename=firstfile, transformation = FALSE, truncate_max_range = FALSE)
flowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'
with 100 cells and 61 observables:
       name   desc     range  minRange  maxRange
$P1    Time     NA    272140         0    272139
$P2   UV1-A     NA   4194304      -111   4194303
$P3   UV2-A     NA   4194304      -111   4194303
$P4   UV3-A     NA   4194304      -111   4194303
$P5   UV4-A     NA   4194304      -111   4194303
...     ...    ...       ...       ...       ...
$P57   R4-A     NA   4194304      -111   4194303
$P58   R5-A     NA   4194304      -111   4194303
$P59   R6-A     NA   4194304      -111   4194303
$P60   R7-A     NA   4194304      -111   4194303
$P61   R8-A     NA   4194304      -111   4194303
476 keywords are stored in the 'description' slot

In this case, we can see the .fcs file has been read into R as a “flowFrame” object. We can also see the file name, as well as details about the number of cells, and number of columns (whether detectors (for raw spectral flow data) or fluorophores (for unmixed spectral flow data)).

Directly below we see what resembles a table. At first glance, the only column with an immediately discernable purpose is the one with the name column, which is listing the detectors present on a Cytek Aurora.

And finally, at the bottom we reach a line that tells us that for this .fcs files, 599 keyword can be found in a description slot.



So let’s get our bearings, we have loaded in an .fcs file to R, but let’s use some of the concepts we covered last week to try to understand a bit about what type or class of object we are working with. From the output, we saw the words flowFrame object, so let’s read it back in again, but assign it to an variable/object called flowFrame so that we can use the type-discerning functions we worked with last week on.

flowFrame <- read.FCS(filename=firstfile, transformation = FALSE, truncate_max_range = FALSE)

As we create this variable, if we have the session tab selected on our right secondary side bar, we see it appear:

If we were to use the type-determining functions we learned last week

class(flowFrame)
[1] "flowFrame"
attr(,"package")
[1] "flowCore"

flowFrames are a class of object with a structure defined within the flowCore package. They are used to work with the data contained within individual .fcs files. Looking again at the right secondary side bar, we can see that it shows up as a ““S4 class flowFrame package flowCore”“” with 3 slots, with the words flowFrame adjacent to it.

A perfectly valid first reaction to first reading this is “well how should I know what any of this means?”. Powering through this initial discomfort, let’s go ahead and click on the dropdown arrow next to the variables name and see if we get any additional clarity on the issue.

When we do so, three additional drop-downs appear. Based on the previous line that mentioned 3 slots, we could infer that each line corresponds to one of those slots.

What we are encountering with flowFrame is our first example of an S4 object type. These more-complicated object types are quite common for the various Bioconductor affilitated R packages.

These objects will usually appear with either S4 or S3 in their metadata, and are made up of various simpler object types that are cobbled together within the larger object, usually occupying individual slots.

What advantage this bundling provides will be something we revisit throughout the course as you encounter more of these S4/S3 objects.



exprs

The first slot within the flowFrame object shows up with the name “exprs”. For the exprs object, glancing at it’s middle column, we can based on the 100 rows and 61 columns, that it is likely a matrix-style object. We might also recall we saw similar numbers in the printed output when we ran read.FCS()earlier.

Which likely means that “exprs” slot is where the MFI data for the individual acquired cells within our .fcs file is being stored. Within Positron, for a matrix object, we can click on the little grid symbol on the far right to open up the table within editor.

If we utilize the scroll bars, we can see that the individual detectors (in the case of uploading a raw spectral fcs file, they would appear as fluorophores for unmixed spectral or conventional fcs files) occupy the individual columns, which are named. The rows are not named, but number 100, matching the number of cells present in the .fcs file. Additionally, on the far left there is a little summary table about the overall data.

Let’s go ahead and assign this matrix to a new variable/object so that we can explore it later. Since flowFrame is an S4 object, it’s slots can be individually accessed by adding the @ symbol and the respective slot name.

MFI_Matrix <- flowFrame@exprs

Alternatively, we can use the Bioconductor helper function exprs() to get data held in that slot

MFI_Matrix_Alternate <- exprs(flowFrame)

In the case of the above, this displayed text output to the console would be unwiedly to display all at once. If we wanted to only see the first five rows, we could use the head() function, and provide a value of 5.

head(MFI_Matrix, 5)
       Time      UV1-A       UV2-A     UV3-A      UV4-A      UV5-A      UV6-A
[1,]  38823   37.79983 -184.479996 353.87714 1106.22998 1145.18140 2130.21899
[2,]  39780  234.23021  -98.456429  26.43876   70.65833  -89.93541  -29.14263
[3,] 267292 -117.96355   40.732426 473.94574 1177.86975 1516.70935 1985.46130
[4,] 128101  289.87671   -2.723389 -54.11960 -163.71489   32.62989 -134.90411
[5,] 255221 -104.50541  -71.163338 567.57562  610.23627 1416.61328 2868.16040
          UV7-A     UV8-A       UV9-A     UV10-A    UV11-A    UV12-A     UV13-A
[1,] 4376.34277 3246.7952 32050.65039  8123.2637 1992.5785 1070.3323  956.43573
[2,]  -26.34649 -162.6675    17.98848   271.9152  154.8575  163.5411  -32.81524
[3,] 3658.87671 4140.1724 59792.16406 14013.7969 3427.4324 1668.7588 1071.14636
[4,]  739.71960  402.9025   427.37534   315.6364 -223.0423  145.7121  127.03777
[5,] 4034.58789 3234.6626 40126.46484 10325.0371 1974.0907 1033.8450  -21.57245
        UV14-A    UV15-A    UV16-A  SSC-H      SSC-A      V1-A      V2-A
[1,]  290.8685 385.49921 670.97687 657613  750760.12 1171.1390  154.5628
[2,] -104.9198 103.41382  71.41528  83481   81552.85  266.2424  705.2527
[3,]  730.1430 214.93053 252.75406 890845 1183519.00 1196.0931 1183.1105
[4,] -207.8978 -55.37944 -45.10131  75103   72457.33  227.9926  556.9189
[5,]  273.6271 960.16290 341.20633 415791  501690.97  717.2498  929.9780
             V3-A      V4-A       V5-A      V6-A       V7-A        V8-A
[1,] 1346.4488525 1706.9260 1923.50940  898.2527 3162.55371  83596.5078
[2,]  244.3218689  341.0508  381.15939   87.1600  151.68785    119.5544
[3,] 2087.0092773  824.6352 1635.27258 1613.9069 4653.16260 176981.6094
[4,]   -0.8137281  205.4732   18.12125  179.6371  -69.50061   -132.4348
[5,] 1358.4512939  788.6506 1208.81006 1156.7040 3118.42627 104951.2578
           V9-A      V10-A        V11-A       V12-A      V13-A       V14-A
[1,] 32506.7617 27161.5137  6236.072754 2220.303223 2023.39966  753.589355
[2,]   -79.7691  -109.1783   -73.991196  114.375542  -11.53453  124.986206
[3,] 69236.4297 57626.8984 13175.838867 4534.874023 3434.38989 1995.172363
[4,]   129.2739   231.8918    -5.473321    8.792875  -24.62049   -8.212234
[5,] 42090.0781 34104.3164  7620.552734 3103.544189 2426.43359  650.836304
         V15-A     V16-A   FSC-H      FSC-A SSC-B-H   SSC-B-A      B1-A
[1,]  510.9540 228.34962 1055905 1217097.50  716733 815959.06  606.6683
[2,] -207.3494 -28.96272   79696   83439.11  104575 103132.83  195.2795
[3,] 1321.8030 615.05560 1092481 1453969.38  757351 982038.31 2010.5110
[4,] -133.7503 -34.32619   64760   60415.23   67955  66806.13 -146.8936
[5,]  290.2892 473.32599 1038362 1184479.00  425296 522873.12 1015.5981
           B2-A       B3-A        B4-A        B5-A        B6-A       B7-A
[1,]  416.98294  4172.4712 192400.0938  93929.9375  54236.3320 19342.6445
[2,]  333.25662   332.1675   -230.9639    196.7810    292.8945  -187.2845
[3,] 2150.21826 10106.9551 437801.5625 212176.1562 124294.3594 45068.3008
[4,]  -34.90987   165.7988    675.0156    136.3076    482.8665   133.0948
[5,]  639.77527  6034.0200 244022.6094 118871.4609  68616.9688 24067.7949
            B8-A       B9-A       B10-A       B11-A     B12-A     B13-A
[1,] 10507.24219  9498.1270  4465.50928 1668.048096 2199.9475 1581.7345
[2,]    70.90886  -334.3563   188.05545 -663.359619 -163.2331   27.9856
[3,] 24289.59180 22500.1914 10624.99219 4684.497559 3471.7749 2727.3904
[4,]   432.28091   246.8794   -94.44906    2.905877  106.8489  283.3633
[5,] 14182.12793 13019.7100  5577.33984 2753.355957 1279.3009 1423.0276
          B14-A      R1-A        R2-A       R3-A       R4-A       R5-A
[1,] 1487.56860  147.1335  129.867630   35.90353  267.23999   49.79849
[2,]  205.82298 -142.9224   66.516052  113.63218  -94.41375   98.13978
[3,] 2371.95850 -128.3749 -105.482544  726.48547   18.87000   95.47879
[4,]   33.24665  127.5455  122.607941   37.83584  -82.87500 -343.83768
[5,] 1565.72742 -266.4482   -3.350622 -178.39566 -117.10875 -100.10384
          R6-A       R7-A       R8-A
[1,] -732.7097   42.83144  248.56728
[2,]  143.4497 -263.28741  -85.83299
[3,] -194.4526  -84.08820 -301.46066
[4,]   82.3745   60.27896  -94.38461
[5,] -182.0066  184.36417  186.17207

This is much more workable, especially on a small laptop screen. We can see that there are names for each column corresponding to detector/fluorophore/metal depending on the .fcs file we are accessing. Lets retrieve these column names using the colnames() function.

ColumnNames <- colnames(MFI_Matrix)
ColumnNames
     $P1N      $P2N      $P3N      $P4N      $P5N      $P6N      $P7N      $P8N 
   "Time"   "UV1-A"   "UV2-A"   "UV3-A"   "UV4-A"   "UV5-A"   "UV6-A"   "UV7-A" 
     $P9N     $P10N     $P11N     $P12N     $P13N     $P14N     $P15N     $P16N 
  "UV8-A"   "UV9-A"  "UV10-A"  "UV11-A"  "UV12-A"  "UV13-A"  "UV14-A"  "UV15-A" 
    $P17N     $P18N     $P19N     $P20N     $P21N     $P22N     $P23N     $P24N 
 "UV16-A"   "SSC-H"   "SSC-A"    "V1-A"    "V2-A"    "V3-A"    "V4-A"    "V5-A" 
    $P25N     $P26N     $P27N     $P28N     $P29N     $P30N     $P31N     $P32N 
   "V6-A"    "V7-A"    "V8-A"    "V9-A"   "V10-A"   "V11-A"   "V12-A"   "V13-A" 
    $P33N     $P34N     $P35N     $P36N     $P37N     $P38N     $P39N     $P40N 
  "V14-A"   "V15-A"   "V16-A"   "FSC-H"   "FSC-A" "SSC-B-H" "SSC-B-A"    "B1-A" 
    $P41N     $P42N     $P43N     $P44N     $P45N     $P46N     $P47N     $P48N 
   "B2-A"    "B3-A"    "B4-A"    "B5-A"    "B6-A"    "B7-A"    "B8-A"    "B9-A" 
    $P49N     $P50N     $P51N     $P52N     $P53N     $P54N     $P55N     $P56N 
  "B10-A"   "B11-A"   "B12-A"   "B13-A"   "B14-A"    "R1-A"    "R2-A"    "R3-A" 
    $P57N     $P58N     $P59N     $P60N     $P61N 
   "R4-A"    "R5-A"    "R6-A"    "R7-A"    "R8-A" 

Something interesting occurred when this occurred, we can see in addition to the detector names directly above each a “$P#N” pattern appear, with # standing for increasing numbers. If we recall, we saw something similar in the first output column when we first ran read.FCS().

Lets break out the str() and class() functions from last week and see what we can find out about why this is occuring.

str(ColumnNames)
 Named chr [1:61] "Time" "UV1-A" "UV2-A" "UV3-A" "UV4-A" "UV5-A" "UV6-A" ...
 - attr(*, "names")= chr [1:61] "$P1N" "$P2N" "$P3N" "$P4N" ...

In this case we can see that we don’t just have a vector (list) similar to what we saw with Fluorophores object last week, because instead of a chr [1:61] we get back a Named chr [1:61] designation. What we see is that in this case, each value has a corresponding index name as well. (ex. $P1N, $P2N, etc.) Let’s double check with class() function.

class(ColumnNames)
[1] "character"

We can see that everything is character, but it doesn’t inform us that each index was named. This is one of the reasons it is best when trying to see what type of an object something is, to use multiple functions, to avoid missing some important details.

If we were trying to remove the names, being left with just the values (similar to what we saw with the vector-style list last week), we could use the unname() function:

unname(ColumnNames)
 [1] "Time"    "UV1-A"   "UV2-A"   "UV3-A"   "UV4-A"   "UV5-A"   "UV6-A"  
 [8] "UV7-A"   "UV8-A"   "UV9-A"   "UV10-A"  "UV11-A"  "UV12-A"  "UV13-A" 
[15] "UV14-A"  "UV15-A"  "UV16-A"  "SSC-H"   "SSC-A"   "V1-A"    "V2-A"   
[22] "V3-A"    "V4-A"    "V5-A"    "V6-A"    "V7-A"    "V8-A"    "V9-A"   
[29] "V10-A"   "V11-A"   "V12-A"   "V13-A"   "V14-A"   "V15-A"   "V16-A"  
[36] "FSC-H"   "FSC-A"   "SSC-B-H" "SSC-B-A" "B1-A"    "B2-A"    "B3-A"   
[43] "B4-A"    "B5-A"    "B6-A"    "B7-A"    "B8-A"    "B9-A"    "B10-A"  
[50] "B11-A"   "B12-A"   "B13-A"   "B14-A"   "R1-A"    "R2-A"    "R3-A"   
[57] "R4-A"    "R5-A"    "R6-A"    "R7-A"    "R8-A"   



Let’s return to the right sidebar to continue our exploration, by clicking on the dropdown arrow for exprs in the side-bar

The output is less user-friendly than what we saw when clicking on the little grid. If we scroll down far enough, we get down as far as [,61], which corresponds to the total number of columns.

In base R, column order can be defined by placing the corresponding column index number after a comma “,”. So for this case, the first column would be designated would be [,1] while the last column would be designated [,61].

MFI_Matrix[,1]
  [1]  38823  39780 267292 128101 255221  79210 196643  83855 109315  26128
 [11] 114423 120001  71831  70551 197021 239994 252611 223012 152780 171822
 [21] 172611 168464 191503 253015  73885  82221 176641 128533   4117 191632
 [31] 191229  58093 141776 265894  55593 227555 233212 248578  95165 171934
 [41]   1360 251847 195764 147503 118723   1060  90033 253553 268268  74610
 [51]  23531 150119 226391 201568 179264  79944 196686 252667 117309   3903
 [61]  77690 195142 229873 254472 179943 236618  68193  87154  28541  78622
 [71] 155664  50115  40866  70753 260118  12033  96149  20740  37461  73998
 [81] 231939 192329  88649 197664  86006 142486 159539 251298 104864 164090
 [91] 102380 218968 145182 239323 261272 118979  17202 194277 229284 258723
MFI_Matrix[,61]
  [1]  248.567276  -85.832993 -301.460663  -94.384613  186.172073 -461.407745
  [7]  843.507080  277.516113 -106.166855  281.633545  195.927261  818.865723
 [13]  734.996460  209.356476  206.442596  279.859894  518.165222   56.947498
 [19]  285.751007  857.126343  -94.384613 -213.030518   62.585236  138.409653
 [25]  118.012444  328.255768  -61.635056  185.285233  464.384979    5.637739
 [31]  -66.385956   31.229273 1198.241211  185.475266  873.279419  457.607025
 [37]  -73.353951   37.880539  729.168640  221.772171 -169.512238  348.272888
 [43] -338.391022  845.534119   -4.434176  620.024597  610.269409 -193.900208
 [49]  230.830566  -23.754517  607.102112   14.949510  -34.333195 -169.132172
 [55]  -96.158287  220.631958  125.297165  -15.202891 -126.057304  193.393448
 [61]   90.203819 -277.706146  590.505615  911.096619  -92.230873  347.259369
 [67]  135.559113  369.430267  -62.015125 -180.597672 -146.517868  810.440796
 [73]  134.038818 -165.268097  727.711731  -88.746880   62.901962  203.275330
 [79]  436.196289 -242.676147  -40.857769  222.278946 -170.272385  525.513245
 [85]  -41.491222  176.670258  201.501648  175.530045  329.839386  474.140167
 [91]  -48.142490 -174.833252   46.052090  357.584656  -26.541714  191.493088
 [97]  211.320190  124.790398 -113.324883  343.268616

What would happen if used a column index number that didn’t exist? Let’s check.

MFI_Matrix[,350]
Error in `MFI_Matrix[, 350]`:
! subscript out of bounds

We get back an error message telling us the subscript is out of bounds.

So if columns are specified by a number after the comma (ex. [,1]), how are rows specified? In R, rows would be specified by a number before the comma [1,]

MFI_Matrix[1,]
         Time         UV1-A         UV2-A         UV3-A         UV4-A 
  38823.00000      37.79983    -184.48000     353.87714    1106.22998 
        UV5-A         UV6-A         UV7-A         UV8-A         UV9-A 
   1145.18140    2130.21899    4376.34277    3246.79517   32050.65039 
       UV10-A        UV11-A        UV12-A        UV13-A        UV14-A 
   8123.26367    1992.57849    1070.33228     956.43573     290.86853 
       UV15-A        UV16-A         SSC-H         SSC-A          V1-A 
    385.49921     670.97687  657613.00000  750760.12500    1171.13904 
         V2-A          V3-A          V4-A          V5-A          V6-A 
    154.56281    1346.44885    1706.92603    1923.50940     898.25269 
         V7-A          V8-A          V9-A         V10-A         V11-A 
   3162.55371   83596.50781   32506.76172   27161.51367    6236.07275 
        V12-A         V13-A         V14-A         V15-A         V16-A 
   2220.30322    2023.39966     753.58936     510.95404     228.34962 
        FSC-H         FSC-A       SSC-B-H       SSC-B-A          B1-A 
1055905.00000 1217097.50000  716733.00000  815959.06250     606.66833 
         B2-A          B3-A          B4-A          B5-A          B6-A 
    416.98294    4172.47119  192400.09375   93929.93750   54236.33203 
         B7-A          B8-A          B9-A         B10-A         B11-A 
  19342.64453   10507.24219    9498.12695    4465.50928    1668.04810 
        B12-A         B13-A         B14-A          R1-A          R2-A 
   2199.94751    1581.73450    1487.56860     147.13348     129.86763 
         R3-A          R4-A          R5-A          R6-A          R7-A 
     35.90353     267.23999      49.79849    -732.70966      42.83144 
         R8-A 
    248.56728 

And while not the focus of today, we could retrieve individual values from a matrix by specifying both a row and a column index number. So for example, if we wanted the MFI value for the UV1-A detector for the first acquired cell (knowing that UV1-A is the 2nd column):

MFI_Matrix[1,2]
   UV1-A 
37.79983 

From our exploration, this looks to be all the information contained within the “exprs” slot, so let’s back up and check on the next slot.



parameters

As we look at the next slot in the flowFrame object, we can see that parameters looks like it is going to be another more complex object, as it is showing up as an AnnotatedDataFrame object (defined by the Biobase R package, and itself contains 4 slots).


Having carved our way this far into the heart of an .fcs file, we are not about to call it quits now, so CHARGE my fellow cytometrist!!! Click that drop-down arrow!


Having survived our charge into the unknown, the four parameter slots appear to be “varMetadata”, “data”, “dimLabels” and “._classVersion_”.

varMetadata

Fortunately for us, both “varMetadata” and “data” at least appear to be table-like objects of a type known as a “data.frame”, so lets click on the grid to open in our editor window.

In the case of varMetadata, we seem to have retrieved a column of metadata names.

These look reminiscent of what we saw at the top of the read.FCS() column outputs previously

data

Clicking on the grid for parameters’s data slot will end opening the actual content that was displayed.

Let’s try to retrieve the data contained within this slot and save it as it’s own variable/object within our R session. First, we need to open flowFrame object, then use @ to get inside its parameters slot. Since parameters is also a complex object (AnnotatedDataFrame specifically), we will need to use another @ to get inside its data slot:

ParameterData <- flowFrame@parameters@data

head(ParameterData, 10)
      name desc   range   minRange maxRange
$P1   Time <NA>  272140    0.00000   272139
$P2  UV1-A <NA> 4194304 -111.00000  4194303
$P3  UV2-A <NA> 4194304 -111.00000  4194303
$P4  UV3-A <NA> 4194304 -111.00000  4194303
$P5  UV4-A <NA> 4194304 -111.00000  4194303
$P6  UV5-A <NA> 4194304 -111.00000  4194303
$P7  UV6-A <NA> 4194304 -111.00000  4194303
$P8  UV7-A <NA> 4194304  -26.34649  4194303
$P9  UV8-A <NA> 4194304 -111.00000  4194303
$P10 UV9-A <NA> 4194304    0.00000  4194303

And similarly, we could access with the Bioconductor helper function parameters(), but we would need to specify the accessor for data outside the parenthesis.

ParameterData_Alternate <- parameters(flowFrame)@data

If we ran the str() function, we get the following insight into ParameterData’s object type

str(ParameterData)
'data.frame':   61 obs. of  5 variables:
 $ name    : 'AsIs' Named chr  "Time" "UV1-A" "UV2-A" "UV3-A" ...
  ..- attr(*, "names")= chr [1:61] "$P1N" "$P2N" "$P3N" "$P4N" ...
 $ desc    : 'AsIs' Named chr  NA NA NA NA ...
  ..- attr(*, "names")= chr [1:61] NA NA NA NA ...
 $ range   : num  272140 4194304 4194304 4194304 4194304 ...
 $ minRange: num  0 -111 -111 -111 -111 ...
 $ maxRange: num  272139 4194303 4194303 4194303 4194303 ...

We can see this class of object is a “data.frame”. This is one of the more common object types in R, and we will be seeing these extensively throughout the course. We see that each of the columns appears to be designated by a $ followed by the column name, and then type of column (numeric, character, etc).

If we are trying to see these columns in R, we notice that data.frame is not like the previous S4 class objets we interacted with, as the @ symbol after doesn’t bring up any suggestions

ParameterData@

By contrast, adding the $ we saw when using the str() function does retrieve the underlying information

ParameterData$

As you become more familiar with R, remembering to check what kind of object you are working with, and how to access the contents will with practice become more familiar to you.

Similar to what we saw with a matrix, we can subset a data.frame based on the column or row index using square brackets [].

ParameterData[,1]
     $P1N      $P2N      $P3N      $P4N      $P5N      $P6N      $P7N      $P8N 
   "Time"   "UV1-A"   "UV2-A"   "UV3-A"   "UV4-A"   "UV5-A"   "UV6-A"   "UV7-A" 
     $P9N     $P10N     $P11N     $P12N     $P13N     $P14N     $P15N     $P16N 
  "UV8-A"   "UV9-A"  "UV10-A"  "UV11-A"  "UV12-A"  "UV13-A"  "UV14-A"  "UV15-A" 
    $P17N     $P18N     $P19N     $P20N     $P21N     $P22N     $P23N     $P24N 
 "UV16-A"   "SSC-H"   "SSC-A"    "V1-A"    "V2-A"    "V3-A"    "V4-A"    "V5-A" 
    $P25N     $P26N     $P27N     $P28N     $P29N     $P30N     $P31N     $P32N 
   "V6-A"    "V7-A"    "V8-A"    "V9-A"   "V10-A"   "V11-A"   "V12-A"   "V13-A" 
    $P33N     $P34N     $P35N     $P36N     $P37N     $P38N     $P39N     $P40N 
  "V14-A"   "V15-A"   "V16-A"   "FSC-H"   "FSC-A" "SSC-B-H" "SSC-B-A"    "B1-A" 
    $P41N     $P42N     $P43N     $P44N     $P45N     $P46N     $P47N     $P48N 
   "B2-A"    "B3-A"    "B4-A"    "B5-A"    "B6-A"    "B7-A"    "B8-A"    "B9-A" 
    $P49N     $P50N     $P51N     $P52N     $P53N     $P54N     $P55N     $P56N 
  "B10-A"   "B11-A"   "B12-A"   "B13-A"   "B14-A"    "R1-A"    "R2-A"    "R3-A" 
    $P57N     $P58N     $P59N     $P60N     $P61N 
   "R4-A"    "R5-A"    "R6-A"    "R7-A"    "R8-A" 

The individual detectors or fluorophore appear under “name”. For now, based on what we know, the $P# appears to be some sort of name being used as an internal consistent reference to the respective.

“desc” is appearing empty for this raw spectral fcs file, but if you were to checked an unmixed file, this would be occupied the marker/ligand name assigned to it during the experiment setup.

“range”, “minRange” and “maxRange” are beyond the scope of today, but are used by both instrument manufacturers and software vendors when setting appropiate scaling for a plot. For the actual details, see the Flow Cytometry Standard documentation.

Having exhausted our options under parameters “varMetadata” and “data” slots, let’s continue to the next slot.

dimLabels

In this case, not much is returned. Yey!

flowFrame@parameters@dimLabels
[1] "rowNames"    "columnNames"

classVersion

Continuing on to the last slot “.__classVersion__”

flowFrame@parameters@.__classVersion__
AnnotatedDataFrame 
           "1.1.0" 

Also mercifully short, both of these seem to be more involved in defining the S4 class object, and don’t contain anything we need to retrieve today.


Description

At this point, we have explored both “exprs” and “parameter” slots for the flowFrame object we created. Let’s tackle the final slot, named description.

When doing so, a very large list is opened within the Positron variables window. While we could scroll through it, it might be easier to retrieve certain number of rows via the console to make interpreting this more structured.

To retrieve the list itself, we would need to access the description slot of the flowFrame object. Since it is a slot, we will need to use the @ accessor.

DescriptionList <- flowFrame@description
DescriptionList 
$`$BEGINANALYSIS`
[1] "0"

$`$BEGINDATA`
[1] "33312"

$`$BEGINSTEXT`
[1] "0"

$`$BTIM`
[1] "13:55:29.85"

$`$BYTEORD`
[1] "4,3,2,1"

$`$CYT`
[1] "Aurora"

$`$CYTOLIB_VERSION`
[1] "2.22.0"

$`$CYTSN`
[1] "V0333"

$`$DATATYPE`
[1] "F"

$`$DATE`
[1] "04-Aug-2025"

$`$ENDANALYSIS`
[1] "0"

$`$ENDDATA`
[1] "57711"

$`$ENDSTEXT`
[1] "0"

$`$ETIM`
[1] "13:55:57.02"

$`$FIL`
[1] "CellCounts4L_AB_05-ND050-05.fcs"

$`$INST`
[1] "UMBC"

$`$MODE`
[1] "L"

$`$NEXTDATA`
[1] "0"

$`$OP`
[1] "David Rach"

$`$P10B`
[1] "32"

$`$P10E`
[1] "0,0"

$`$P10N`
[1] "UV9-A"

$`$P10R`
[1] "4194304"

$`$P10TYPE`
[1] "Raw_Fluorescence"

$`$P10V`
[1] "710"

$`$P11B`
[1] "32"

$`$P11E`
[1] "0,0"

$`$P11N`
[1] "UV10-A"

$`$P11R`
[1] "4194304"

$`$P11TYPE`
[1] "Raw_Fluorescence"

$`$P11V`
[1] "377"

$`$P12B`
[1] "32"

$`$P12E`
[1] "0,0"

$`$P12N`
[1] "UV11-A"

$`$P12R`
[1] "4194304"

$`$P12TYPE`
[1] "Raw_Fluorescence"

$`$P12V`
[1] "469"

$`$P13B`
[1] "32"

$`$P13E`
[1] "0,0"

$`$P13N`
[1] "UV12-A"

$`$P13R`
[1] "4194304"

$`$P13TYPE`
[1] "Raw_Fluorescence"

$`$P13V`
[1] "434"

$`$P14B`
[1] "32"

$`$P14E`
[1] "0,0"

$`$P14N`
[1] "UV13-A"

$`$P14R`
[1] "4194304"

$`$P14TYPE`
[1] "Raw_Fluorescence"

$`$P14V`
[1] "564"

$`$P15B`
[1] "32"

$`$P15E`
[1] "0,0"

$`$P15N`
[1] "UV14-A"

$`$P15R`
[1] "4194304"

$`$P15TYPE`
[1] "Raw_Fluorescence"

$`$P15V`
[1] "975"

$`$P16B`
[1] "32"

$`$P16E`
[1] "0,0"

$`$P16N`
[1] "UV15-A"

$`$P16R`
[1] "4194304"

$`$P16TYPE`
[1] "Raw_Fluorescence"

$`$P16V`
[1] "737"

$`$P17B`
[1] "32"

$`$P17E`
[1] "0,0"

$`$P17N`
[1] "UV16-A"

$`$P17R`
[1] "4194304"

$`$P17TYPE`
[1] "Raw_Fluorescence"

$`$P17V`
[1] "1069"

$`$P18B`
[1] "32"

$`$P18E`
[1] "0,0"

$`$P18N`
[1] "SSC-H"

$`$P18R`
[1] "4194304"

$`$P18TYPE`
[1] "Side_Scatter"

$`$P18V`
[1] "334"

$`$P19B`
[1] "32"

$`$P19E`
[1] "0,0"

$`$P19N`
[1] "SSC-A"

$`$P19R`
[1] "4194304"

$`$P19TYPE`
[1] "Side_Scatter"

$`$P19V`
[1] "334"

$`$P1B`
[1] "32"

$`$P1E`
[1] "0,0"

$`$P1N`
[1] "Time"

$`$P1R`
[1] "272140"

$`$P1TYPE`
[1] "Time"

$`$P20B`
[1] "32"

$`$P20E`
[1] "0,0"

$`$P20N`
[1] "V1-A"

$`$P20R`
[1] "4194304"

$`$P20TYPE`
[1] "Raw_Fluorescence"

$`$P20V`
[1] "352"

$`$P21B`
[1] "32"

$`$P21E`
[1] "0,0"

$`$P21N`
[1] "V2-A"

$`$P21R`
[1] "4194304"

$`$P21TYPE`
[1] "Raw_Fluorescence"

$`$P21V`
[1] "412"

$`$P22B`
[1] "32"

$`$P22E`
[1] "0,0"

$`$P22N`
[1] "V3-A"

$`$P22R`
[1] "4194304"

$`$P22TYPE`
[1] "Raw_Fluorescence"

$`$P22V`
[1] "304"

$`$P23B`
[1] "32"

$`$P23E`
[1] "0,0"

$`$P23N`
[1] "V4-A"

$`$P23R`
[1] "4194304"

$`$P23TYPE`
[1] "Raw_Fluorescence"

$`$P23V`
[1] "217"

$`$P24B`
[1] "32"

$`$P24E`
[1] "0,0"

$`$P24N`
[1] "V5-A"

$`$P24R`
[1] "4194304"

$`$P24TYPE`
[1] "Raw_Fluorescence"

$`$P24V`
[1] "257"

$`$P25B`
[1] "32"

$`$P25E`
[1] "0,0"

$`$P25N`
[1] "V6-A"

$`$P25R`
[1] "4194304"

$`$P25TYPE`
[1] "Raw_Fluorescence"

$`$P25V`
[1] "218"

$`$P26B`
[1] "32"

$`$P26E`
[1] "0,0"

$`$P26N`
[1] "V7-A"

$`$P26R`
[1] "4194304"

$`$P26TYPE`
[1] "Raw_Fluorescence"

$`$P26V`
[1] "303"

$`$P27B`
[1] "32"

$`$P27E`
[1] "0,0"

$`$P27N`
[1] "V8-A"

$`$P27R`
[1] "4194304"

$`$P27TYPE`
[1] "Raw_Fluorescence"

$`$P27V`
[1] "461"

$`$P28B`
[1] "32"

$`$P28E`
[1] "0,0"

$`$P28N`
[1] "V9-A"

$`$P28R`
[1] "4194304"

$`$P28TYPE`
[1] "Raw_Fluorescence"

$`$P28V`
[1] "320"

$`$P29B`
[1] "32"

$`$P29E`
[1] "0,0"

$`$P29N`
[1] "V10-A"

$`$P29R`
[1] "4194304"

$`$P29TYPE`
[1] "Raw_Fluorescence"

$`$P29V`
[1] "359"

$`$P2B`
[1] "32"

$`$P2E`
[1] "0,0"

$`$P2N`
[1] "UV1-A"

$`$P2R`
[1] "4194304"

$`$P2TYPE`
[1] "Raw_Fluorescence"

$`$P2V`
[1] "1008"

$`$P30B`
[1] "32"

$`$P30E`
[1] "0,0"

$`$P30N`
[1] "V11-A"

$`$P30R`
[1] "4194304"

$`$P30TYPE`
[1] "Raw_Fluorescence"

$`$P30V`
[1] "271"

$`$P31B`
[1] "32"

$`$P31E`
[1] "0,0"

$`$P31N`
[1] "V12-A"

$`$P31R`
[1] "4194304"

$`$P31TYPE`
[1] "Raw_Fluorescence"

$`$P31V`
[1] "234"

$`$P32B`
[1] "32"

$`$P32E`
[1] "0,0"

$`$P32N`
[1] "V13-A"

$`$P32R`
[1] "4194304"

$`$P32TYPE`
[1] "Raw_Fluorescence"

$`$P32V`
[1] "236"

$`$P33B`
[1] "32"

$`$P33E`
[1] "0,0"

$`$P33N`
[1] "V14-A"

$`$P33R`
[1] "4194304"

$`$P33TYPE`
[1] "Raw_Fluorescence"

$`$P33V`
[1] "318"

$`$P34B`
[1] "32"

$`$P34E`
[1] "0,0"

$`$P34N`
[1] "V15-A"

$`$P34R`
[1] "4194304"

$`$P34TYPE`
[1] "Raw_Fluorescence"

$`$P34V`
[1] "602"

$`$P35B`
[1] "32"

$`$P35E`
[1] "0,0"

$`$P35N`
[1] "V16-A"

$`$P35R`
[1] "4194304"

$`$P35TYPE`
[1] "Raw_Fluorescence"

$`$P35V`
[1] "372"

$`$P36B`
[1] "32"

$`$P36E`
[1] "0,0"

$`$P36N`
[1] "FSC-H"

$`$P36R`
[1] "4194304"

$`$P36TYPE`
[1] "Forward_Scatter"

$`$P36V`
[1] "55"

$`$P37B`
[1] "32"

$`$P37E`
[1] "0,0"

$`$P37N`
[1] "FSC-A"

$`$P37R`
[1] "4194304"

$`$P37TYPE`
[1] "Forward_Scatter"

$`$P37V`
[1] "55"

$`$P38B`
[1] "32"

$`$P38E`
[1] "0,0"

$`$P38N`
[1] "SSC-B-H"

$`$P38R`
[1] "4194304"

$`$P38TYPE`
[1] "Side_Scatter"

$`$P38V`
[1] "241"

$`$P39B`
[1] "32"

$`$P39E`
[1] "0,0"

$`$P39N`
[1] "SSC-B-A"

$`$P39R`
[1] "4194304"

$`$P39TYPE`
[1] "Side_Scatter"

$`$P39V`
[1] "241"

$`$P3B`
[1] "32"

$`$P3E`
[1] "0,0"

$`$P3N`
[1] "UV2-A"

$`$P3R`
[1] "4194304"

$`$P3TYPE`
[1] "Raw_Fluorescence"

$`$P3V`
[1] "286"

$`$P40B`
[1] "32"

$`$P40E`
[1] "0,0"

$`$P40N`
[1] "B1-A"

$`$P40R`
[1] "4194304"

$`$P40TYPE`
[1] "Raw_Fluorescence"

$`$P40V`
[1] "1013"

$`$P41B`
[1] "32"

$`$P41E`
[1] "0,0"

$`$P41N`
[1] "B2-A"

$`$P41R`
[1] "4194304"

$`$P41TYPE`
[1] "Raw_Fluorescence"

$`$P41V`
[1] "483"

$`$P42B`
[1] "32"

$`$P42E`
[1] "0,0"

$`$P42N`
[1] "B3-A"

$`$P42R`
[1] "4194304"

$`$P42TYPE`
[1] "Raw_Fluorescence"

$`$P42V`
[1] "471"

$`$P43B`
[1] "32"

$`$P43E`
[1] "0,0"

$`$P43N`
[1] "B4-A"

$`$P43R`
[1] "4194304"

$`$P43TYPE`
[1] "Raw_Fluorescence"

$`$P43V`
[1] "473"

$`$P44B`
[1] "32"

$`$P44E`
[1] "0,0"

$`$P44N`
[1] "B5-A"

$`$P44R`
[1] "4194304"

$`$P44TYPE`
[1] "Raw_Fluorescence"

$`$P44V`
[1] "467"

$`$P45B`
[1] "32"

$`$P45E`
[1] "0,0"

$`$P45N`
[1] "B6-A"

$`$P45R`
[1] "4194304"

$`$P45TYPE`
[1] "Raw_Fluorescence"

$`$P45V`
[1] "284"

$`$P46B`
[1] "32"

$`$P46E`
[1] "0,0"

$`$P46N`
[1] "B7-A"

$`$P46R`
[1] "4194304"

$`$P46TYPE`
[1] "Raw_Fluorescence"

$`$P46V`
[1] "531"

$`$P47B`
[1] "32"

$`$P47E`
[1] "0,0"

$`$P47N`
[1] "B8-A"

$`$P47R`
[1] "4194304"

$`$P47TYPE`
[1] "Raw_Fluorescence"

$`$P47V`
[1] "432"

$`$P48B`
[1] "32"

$`$P48E`
[1] "0,0"

$`$P48N`
[1] "B9-A"

$`$P48R`
[1] "4194304"

$`$P48TYPE`
[1] "Raw_Fluorescence"

$`$P48V`
[1] "675"

$`$P49B`
[1] "32"

$`$P49E`
[1] "0,0"

$`$P49N`
[1] "B10-A"

$`$P49R`
[1] "4194304"

$`$P49TYPE`
[1] "Raw_Fluorescence"

$`$P49V`
[1] "490"

$`$P4B`
[1] "32"

$`$P4E`
[1] "0,0"

$`$P4N`
[1] "UV3-A"

$`$P4R`
[1] "4194304"

$`$P4TYPE`
[1] "Raw_Fluorescence"

$`$P4V`
[1] "677"

$`$P50B`
[1] "32"

$`$P50E`
[1] "0,0"

$`$P50N`
[1] "B11-A"

$`$P50R`
[1] "4194304"

$`$P50TYPE`
[1] "Raw_Fluorescence"

$`$P50V`
[1] "286"

$`$P51B`
[1] "32"

$`$P51E`
[1] "0,0"

$`$P51N`
[1] "B12-A"

$`$P51R`
[1] "4194304"

$`$P51TYPE`
[1] "Raw_Fluorescence"

$`$P51V`
[1] "407"

$`$P52B`
[1] "32"

$`$P52E`
[1] "0,0"

$`$P52N`
[1] "B13-A"

$`$P52R`
[1] "4194304"

$`$P52TYPE`
[1] "Raw_Fluorescence"

$`$P52V`
[1] "700"

$`$P53B`
[1] "32"

$`$P53E`
[1] "0,0"

$`$P53N`
[1] "B14-A"

$`$P53R`
[1] "4194304"

$`$P53TYPE`
[1] "Raw_Fluorescence"

$`$P53V`
[1] "693"

$`$P54B`
[1] "32"

$`$P54E`
[1] "0,0"

$`$P54N`
[1] "R1-A"

$`$P54R`
[1] "4194304"

$`$P54TYPE`
[1] "Raw_Fluorescence"

$`$P54V`
[1] "158"

$`$P55B`
[1] "32"

$`$P55E`
[1] "0,0"

$`$P55N`
[1] "R2-A"

$`$P55R`
[1] "4194304"

$`$P55TYPE`
[1] "Raw_Fluorescence"

$`$P55V`
[1] "245"

$`$P56B`
[1] "32"

$`$P56E`
[1] "0,0"

$`$P56N`
[1] "R3-A"

$`$P56R`
[1] "4194304"

$`$P56TYPE`
[1] "Raw_Fluorescence"

$`$P56V`
[1] "338"

$`$P57B`
[1] "32"

$`$P57E`
[1] "0,0"

$`$P57N`
[1] "R4-A"

$`$P57R`
[1] "4194304"

$`$P57TYPE`
[1] "Raw_Fluorescence"

$`$P57V`
[1] "238"

$`$P58B`
[1] "32"

$`$P58E`
[1] "0,0"

$`$P58N`
[1] "R5-A"

$`$P58R`
[1] "4194304"

$`$P58TYPE`
[1] "Raw_Fluorescence"

$`$P58V`
[1] "191"

$`$P59B`
[1] "32"

$`$P59E`
[1] "0,0"

$`$P59N`
[1] "R6-A"

$`$P59R`
[1] "4194304"

$`$P59TYPE`
[1] "Raw_Fluorescence"

$`$P59V`
[1] "274"

$`$P5B`
[1] "32"

$`$P5E`
[1] "0,0"

$`$P5N`
[1] "UV4-A"

$`$P5R`
[1] "4194304"

$`$P5TYPE`
[1] "Raw_Fluorescence"

$`$P5V`
[1] "1022"

$`$P60B`
[1] "32"

$`$P60E`
[1] "0,0"

$`$P60N`
[1] "R7-A"

$`$P60R`
[1] "4194304"

$`$P60TYPE`
[1] "Raw_Fluorescence"

$`$P60V`
[1] "524"

$`$P61B`
[1] "32"

$`$P61E`
[1] "0,0"

$`$P61N`
[1] "R8-A"

$`$P61R`
[1] "4194304"

$`$P61TYPE`
[1] "Raw_Fluorescence"

$`$P61V`
[1] "243"

$`$P6B`
[1] "32"

$`$P6E`
[1] "0,0"

$`$P6N`
[1] "UV5-A"

$`$P6R`
[1] "4194304"

$`$P6TYPE`
[1] "Raw_Fluorescence"

$`$P6V`
[1] "616"

$`$P7B`
[1] "32"

$`$P7E`
[1] "0,0"

$`$P7N`
[1] "UV6-A"

$`$P7R`
[1] "4194304"

$`$P7TYPE`
[1] "Raw_Fluorescence"

$`$P7V`
[1] "506"

$`$P8B`
[1] "32"

$`$P8E`
[1] "0,0"

$`$P8N`
[1] "UV7-A"

$`$P8R`
[1] "4194304"

$`$P8TYPE`
[1] "Raw_Fluorescence"

$`$P8V`
[1] "661"

$`$P9B`
[1] "32"

$`$P9E`
[1] "0,0"

$`$P9N`
[1] "UV8-A"

$`$P9R`
[1] "4194304"

$`$P9TYPE`
[1] "Raw_Fluorescence"

$`$P9V`
[1] "514"

$`$PAR`
[1] "61"

$`$PROJ`
[1] "CellCounts4L_AB_05"

$`$SPILLOVER`
      UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A
 [1,] 1e+00     0     0     0     0     0     0     0     0      0      0
 [2,] 1e-06     1     0     0     0     0     0     0     0      0      0
 [3,] 0e+00     0     1     0     0     0     0     0     0      0      0
 [4,] 0e+00     0     0     1     0     0     0     0     0      0      0
 [5,] 0e+00     0     0     0     1     0     0     0     0      0      0
 [6,] 0e+00     0     0     0     0     1     0     0     0      0      0
 [7,] 0e+00     0     0     0     0     0     1     0     0      0      0
 [8,] 0e+00     0     0     0     0     0     0     1     0      0      0
 [9,] 0e+00     0     0     0     0     0     0     0     1      0      0
[10,] 0e+00     0     0     0     0     0     0     0     0      1      0
[11,] 0e+00     0     0     0     0     0     0     0     0      0      1
[12,] 0e+00     0     0     0     0     0     0     0     0      0      0
[13,] 0e+00     0     0     0     0     0     0     0     0      0      0
[14,] 0e+00     0     0     0     0     0     0     0     0      0      0
[15,] 0e+00     0     0     0     0     0     0     0     0      0      0
[16,] 0e+00     0     0     0     0     0     0     0     0      0      0
[17,] 0e+00     0     0     0     0     0     0     0     0      0      0
[18,] 0e+00     0     0     0     0     0     0     0     0      0      0
[19,] 0e+00     0     0     0     0     0     0     0     0      0      0
[20,] 0e+00     0     0     0     0     0     0     0     0      0      0
[21,] 0e+00     0     0     0     0     0     0     0     0      0      0
[22,] 0e+00     0     0     0     0     0     0     0     0      0      0
[23,] 0e+00     0     0     0     0     0     0     0     0      0      0
[24,] 0e+00     0     0     0     0     0     0     0     0      0      0
[25,] 0e+00     0     0     0     0     0     0     0     0      0      0
[26,] 0e+00     0     0     0     0     0     0     0     0      0      0
[27,] 0e+00     0     0     0     0     0     0     0     0      0      0
[28,] 0e+00     0     0     0     0     0     0     0     0      0      0
[29,] 0e+00     0     0     0     0     0     0     0     0      0      0
[30,] 0e+00     0     0     0     0     0     0     0     0      0      0
[31,] 0e+00     0     0     0     0     0     0     0     0      0      0
[32,] 0e+00     0     0     0     0     0     0     0     0      0      0
[33,] 0e+00     0     0     0     0     0     0     0     0      0      0
[34,] 0e+00     0     0     0     0     0     0     0     0      0      0
[35,] 0e+00     0     0     0     0     0     0     0     0      0      0
[36,] 0e+00     0     0     0     0     0     0     0     0      0      0
[37,] 0e+00     0     0     0     0     0     0     0     0      0      0
[38,] 0e+00     0     0     0     0     0     0     0     0      0      0
[39,] 0e+00     0     0     0     0     0     0     0     0      0      0
[40,] 0e+00     0     0     0     0     0     0     0     0      0      0
[41,] 0e+00     0     0     0     0     0     0     0     0      0      0
[42,] 0e+00     0     0     0     0     0     0     0     0      0      0
[43,] 0e+00     0     0     0     0     0     0     0     0      0      0
[44,] 0e+00     0     0     0     0     0     0     0     0      0      0
[45,] 0e+00     0     0     0     0     0     0     0     0      0      0
[46,] 0e+00     0     0     0     0     0     0     0     0      0      0
[47,] 0e+00     0     0     0     0     0     0     0     0      0      0
[48,] 0e+00     0     0     0     0     0     0     0     0      0      0
[49,] 0e+00     0     0     0     0     0     0     0     0      0      0
[50,] 0e+00     0     0     0     0     0     0     0     0      0      0
[51,] 0e+00     0     0     0     0     0     0     0     0      0      0
[52,] 0e+00     0     0     0     0     0     0     0     0      0      0
[53,] 0e+00     0     0     0     0     0     0     0     0      0      0
[54,] 0e+00     0     0     0     0     0     0     0     0      0      0
      UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A
 [1,]      0      0      0      0      0    0    0    0    0    0    0    0
 [2,]      0      0      0      0      0    0    0    0    0    0    0    0
 [3,]      0      0      0      0      0    0    0    0    0    0    0    0
 [4,]      0      0      0      0      0    0    0    0    0    0    0    0
 [5,]      0      0      0      0      0    0    0    0    0    0    0    0
 [6,]      0      0      0      0      0    0    0    0    0    0    0    0
 [7,]      0      0      0      0      0    0    0    0    0    0    0    0
 [8,]      0      0      0      0      0    0    0    0    0    0    0    0
 [9,]      0      0      0      0      0    0    0    0    0    0    0    0
[10,]      0      0      0      0      0    0    0    0    0    0    0    0
[11,]      0      0      0      0      0    0    0    0    0    0    0    0
[12,]      1      0      0      0      0    0    0    0    0    0    0    0
[13,]      0      1      0      0      0    0    0    0    0    0    0    0
[14,]      0      0      1      0      0    0    0    0    0    0    0    0
[15,]      0      0      0      1      0    0    0    0    0    0    0    0
[16,]      0      0      0      0      1    0    0    0    0    0    0    0
[17,]      0      0      0      0      0    1    0    0    0    0    0    0
[18,]      0      0      0      0      0    0    1    0    0    0    0    0
[19,]      0      0      0      0      0    0    0    1    0    0    0    0
[20,]      0      0      0      0      0    0    0    0    1    0    0    0
[21,]      0      0      0      0      0    0    0    0    0    1    0    0
[22,]      0      0      0      0      0    0    0    0    0    0    1    0
[23,]      0      0      0      0      0    0    0    0    0    0    0    1
[24,]      0      0      0      0      0    0    0    0    0    0    0    0
[25,]      0      0      0      0      0    0    0    0    0    0    0    0
[26,]      0      0      0      0      0    0    0    0    0    0    0    0
[27,]      0      0      0      0      0    0    0    0    0    0    0    0
[28,]      0      0      0      0      0    0    0    0    0    0    0    0
[29,]      0      0      0      0      0    0    0    0    0    0    0    0
[30,]      0      0      0      0      0    0    0    0    0    0    0    0
[31,]      0      0      0      0      0    0    0    0    0    0    0    0
[32,]      0      0      0      0      0    0    0    0    0    0    0    0
[33,]      0      0      0      0      0    0    0    0    0    0    0    0
[34,]      0      0      0      0      0    0    0    0    0    0    0    0
[35,]      0      0      0      0      0    0    0    0    0    0    0    0
[36,]      0      0      0      0      0    0    0    0    0    0    0    0
[37,]      0      0      0      0      0    0    0    0    0    0    0    0
[38,]      0      0      0      0      0    0    0    0    0    0    0    0
[39,]      0      0      0      0      0    0    0    0    0    0    0    0
[40,]      0      0      0      0      0    0    0    0    0    0    0    0
[41,]      0      0      0      0      0    0    0    0    0    0    0    0
[42,]      0      0      0      0      0    0    0    0    0    0    0    0
[43,]      0      0      0      0      0    0    0    0    0    0    0    0
[44,]      0      0      0      0      0    0    0    0    0    0    0    0
[45,]      0      0      0      0      0    0    0    0    0    0    0    0
[46,]      0      0      0      0      0    0    0    0    0    0    0    0
[47,]      0      0      0      0      0    0    0    0    0    0    0    0
[48,]      0      0      0      0      0    0    0    0    0    0    0    0
[49,]      0      0      0      0      0    0    0    0    0    0    0    0
[50,]      0      0      0      0      0    0    0    0    0    0    0    0
[51,]      0      0      0      0      0    0    0    0    0    0    0    0
[52,]      0      0      0      0      0    0    0    0    0    0    0    0
[53,]      0      0      0      0      0    0    0    0    0    0    0    0
[54,]      0      0      0      0      0    0    0    0    0    0    0    0
      V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A
 [1,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [2,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [3,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [4,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [5,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [6,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [7,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [8,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [9,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[10,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[11,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[12,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[13,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[14,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[15,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[16,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[17,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[18,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[19,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[20,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[21,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[22,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[23,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[24,]    1    0     0     0     0     0     0     0     0    0    0    0    0
[25,]    0    1     0     0     0     0     0     0     0    0    0    0    0
[26,]    0    0     1     0     0     0     0     0     0    0    0    0    0
[27,]    0    0     0     1     0     0     0     0     0    0    0    0    0
[28,]    0    0     0     0     1     0     0     0     0    0    0    0    0
[29,]    0    0     0     0     0     1     0     0     0    0    0    0    0
[30,]    0    0     0     0     0     0     1     0     0    0    0    0    0
[31,]    0    0     0     0     0     0     0     1     0    0    0    0    0
[32,]    0    0     0     0     0     0     0     0     1    0    0    0    0
[33,]    0    0     0     0     0     0     0     0     0    1    0    0    0
[34,]    0    0     0     0     0     0     0     0     0    0    1    0    0
[35,]    0    0     0     0     0     0     0     0     0    0    0    1    0
[36,]    0    0     0     0     0     0     0     0     0    0    0    0    1
[37,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[38,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[39,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[40,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[41,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[42,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[43,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[44,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[45,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[46,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[47,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[48,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[49,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[50,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[51,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[52,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[53,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[54,]    0    0     0     0     0     0     0     0     0    0    0    0    0
      B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A
 [1,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [2,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [3,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [4,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [5,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [6,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [7,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [8,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [9,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[10,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[11,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[12,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[13,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[14,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[15,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[16,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[17,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[18,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[19,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[20,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[21,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[22,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[23,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[24,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[25,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[26,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[27,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[28,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[29,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[30,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[31,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[32,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[33,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[34,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[35,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[36,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[37,]    1    0    0    0    0     0     0     0     0     0    0    0    0
[38,]    0    1    0    0    0     0     0     0     0     0    0    0    0
[39,]    0    0    1    0    0     0     0     0     0     0    0    0    0
[40,]    0    0    0    1    0     0     0     0     0     0    0    0    0
[41,]    0    0    0    0    1     0     0     0     0     0    0    0    0
[42,]    0    0    0    0    0     1     0     0     0     0    0    0    0
[43,]    0    0    0    0    0     0     1     0     0     0    0    0    0
[44,]    0    0    0    0    0     0     0     1     0     0    0    0    0
[45,]    0    0    0    0    0     0     0     0     1     0    0    0    0
[46,]    0    0    0    0    0     0     0     0     0     1    0    0    0
[47,]    0    0    0    0    0     0     0     0     0     0    1    0    0
[48,]    0    0    0    0    0     0     0     0     0     0    0    1    0
[49,]    0    0    0    0    0     0     0     0     0     0    0    0    1
[50,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[51,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[52,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[53,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[54,]    0    0    0    0    0     0     0     0     0     0    0    0    0
      R4-A R5-A R6-A R7-A R8-A
 [1,]    0    0    0    0    0
 [2,]    0    0    0    0    0
 [3,]    0    0    0    0    0
 [4,]    0    0    0    0    0
 [5,]    0    0    0    0    0
 [6,]    0    0    0    0    0
 [7,]    0    0    0    0    0
 [8,]    0    0    0    0    0
 [9,]    0    0    0    0    0
[10,]    0    0    0    0    0
[11,]    0    0    0    0    0
[12,]    0    0    0    0    0
[13,]    0    0    0    0    0
[14,]    0    0    0    0    0
[15,]    0    0    0    0    0
[16,]    0    0    0    0    0
[17,]    0    0    0    0    0
[18,]    0    0    0    0    0
[19,]    0    0    0    0    0
[20,]    0    0    0    0    0
[21,]    0    0    0    0    0
[22,]    0    0    0    0    0
[23,]    0    0    0    0    0
[24,]    0    0    0    0    0
[25,]    0    0    0    0    0
[26,]    0    0    0    0    0
[27,]    0    0    0    0    0
[28,]    0    0    0    0    0
[29,]    0    0    0    0    0
[30,]    0    0    0    0    0
[31,]    0    0    0    0    0
[32,]    0    0    0    0    0
[33,]    0    0    0    0    0
[34,]    0    0    0    0    0
[35,]    0    0    0    0    0
[36,]    0    0    0    0    0
[37,]    0    0    0    0    0
[38,]    0    0    0    0    0
[39,]    0    0    0    0    0
[40,]    0    0    0    0    0
[41,]    0    0    0    0    0
[42,]    0    0    0    0    0
[43,]    0    0    0    0    0
[44,]    0    0    0    0    0
[45,]    0    0    0    0    0
[46,]    0    0    0    0    0
[47,]    0    0    0    0    0
[48,]    0    0    0    0    0
[49,]    0    0    0    0    0
[50,]    1    0    0    0    0
[51,]    0    1    0    0    0
[52,]    0    0    1    0    0
[53,]    0    0    0    1    0
[54,]    0    0    0    0    1

$`$TIMESTEP`
[1] "0.0001"

$`$TOT`
[1] "100"

$`$VOL`
[1] "30.31"

$`APPLY COMPENSATION`
[1] "FALSE"

$CHARSET
[1] "utf-8"

$CREATOR
[1] "SpectroFlo 3.3.0"

$FCSversion
[1] "3"

$FILENAME
[1] "data/CellCounts4L_AB_05_ND050_05.fcs"

$`FSC ASF`
[1] "1.21"

$GROUPNAME
[1] "ND050"

$GUID
[1] "CellCounts4L_AB_05-ND050-05.fcs"

$LASER1ASF
[1] "1.09"

$LASER1DELAY
[1] "-19.525"

$LASER1NAME
[1] "Violet"

$LASER2ASF
[1] "1.14"

$LASER2DELAY
[1] "0"

$LASER2NAME
[1] "Blue"

$LASER3ASF
[1] "1.02"

$LASER3DELAY
[1] "20.15"

$LASER3NAME
[1] "Red"

$LASER4ASF
[1] "0.92"

$LASER4DELAY
[1] "40.725"

$LASER4NAME
[1] "UV"

$ORIGINALGUID
[1] "CellCounts4L_AB_05-ND050-05.fcs"

$P10DISPLAY
[1] "LOG"

$P11DISPLAY
[1] "LOG"

$P12DISPLAY
[1] "LOG"

$P13DISPLAY
[1] "LOG"

$P14DISPLAY
[1] "LOG"

$P15DISPLAY
[1] "LOG"

$P16DISPLAY
[1] "LOG"

$P17DISPLAY
[1] "LOG"

$P18DISPLAY
[1] "LIN"

$P19DISPLAY
[1] "LIN"

$P1DISPLAY
[1] "LOG"

$P20DISPLAY
[1] "LOG"

$P21DISPLAY
[1] "LOG"

$P22DISPLAY
[1] "LOG"

$P23DISPLAY
[1] "LOG"

$P24DISPLAY
[1] "LOG"

$P25DISPLAY
[1] "LOG"

$P26DISPLAY
[1] "LOG"

$P27DISPLAY
[1] "LOG"

$P28DISPLAY
[1] "LOG"

$P29DISPLAY
[1] "LOG"

$P2DISPLAY
[1] "LOG"

$P30DISPLAY
[1] "LOG"

$P31DISPLAY
[1] "LOG"

$P32DISPLAY
[1] "LOG"

$P33DISPLAY
[1] "LOG"

$P34DISPLAY
[1] "LOG"

$P35DISPLAY
[1] "LOG"

$P36DISPLAY
[1] "LIN"

$P37DISPLAY
[1] "LIN"

$P38DISPLAY
[1] "LIN"

$P39DISPLAY
[1] "LIN"

$P3DISPLAY
[1] "LOG"

$P40DISPLAY
[1] "LOG"

$P41DISPLAY
[1] "LOG"

$P42DISPLAY
[1] "LOG"

$P43DISPLAY
[1] "LOG"

$P44DISPLAY
[1] "LOG"

$P45DISPLAY
[1] "LOG"

$P46DISPLAY
[1] "LOG"

$P47DISPLAY
[1] "LOG"

$P48DISPLAY
[1] "LOG"

$P49DISPLAY
[1] "LOG"

$P4DISPLAY
[1] "LOG"

$P50DISPLAY
[1] "LOG"

$P51DISPLAY
[1] "LOG"

$P52DISPLAY
[1] "LOG"

$P53DISPLAY
[1] "LOG"

$P54DISPLAY
[1] "LOG"

$P55DISPLAY
[1] "LOG"

$P56DISPLAY
[1] "LOG"

$P57DISPLAY
[1] "LOG"

$P58DISPLAY
[1] "LOG"

$P59DISPLAY
[1] "LOG"

$P5DISPLAY
[1] "LOG"

$P60DISPLAY
[1] "LOG"

$P61DISPLAY
[1] "LOG"

$P6DISPLAY
[1] "LOG"

$P7DISPLAY
[1] "LOG"

$P8DISPLAY
[1] "LOG"

$P9DISPLAY
[1] "LOG"

$THRESHOLD
[1] "(FSC,50000)"

$TUBENAME
[1] "05"

$USERSETTINGNAME
[1] "DTR_CellCounts"

$`WINDOW EXTENSION`
[1] "3"

The returned list is a little too large to reasonably explore. We can attempt to subset using the head() function as shown below

head(DescriptionList, 5)
$`$BEGINANALYSIS`
[1] "0"

$`$BEGINDATA`
[1] "33312"

$`$BEGINSTEXT`
[1] "0"

$`$BTIM`
[1] "13:55:29.85"

$`$BYTEORD`
[1] "4,3,2,1"

Alternatively, it might be better to subset based on position index

DescriptionList[1:10]
$`$BEGINANALYSIS`
[1] "0"

$`$BEGINDATA`
[1] "33312"

$`$BEGINSTEXT`
[1] "0"

$`$BTIM`
[1] "13:55:29.85"

$`$BYTEORD`
[1] "4,3,2,1"

$`$CYT`
[1] "Aurora"

$`$CYTOLIB_VERSION`
[1] "2.22.0"

$`$CYTSN`
[1] "V0333"

$`$DATATYPE`
[1] "F"

$`$DATE`
[1] "04-Aug-2025"

And just as we saw for exprs and parameters, there is also a Bioconductor helper keyword() function to access this same information directly from the flowFrame.

DescriptionList_Alternate <- keyword(flowFrame)

If we run the class() function, we can see that DescriptionList is an actual “list”.

class(DescriptionList)
[1] "list"

This is in contrast to the vectors we have previously generated. While these are also list like, they are what are known as as atomic list, which contain values that are all either characters, numerics or logicals.

Fluorophores <- c("BV421", "FITC", "PE", "APC")
class(Fluorophores)
[1] "character"
PanelAntibodyCounts <- c(5, 12, 19, 26, 34, 46, 51)
class(PanelAntibodyCounts)
[1] "numeric"
SpecimenIndexToKeep <- c(TRUE, TRUE, FALSE, TRUE)
class(SpecimenIndexToKeep)
[1] "logical"

A list on the other hand is not restricted to contain objects composed entirely of a certain atomic type. For example, I could include the three previous vectors into a list using the list() function.

MyListofVectors <- list(Fluorophores, PanelAntibodyCounts, SpecimenIndexToKeep)
str(MyListofVectors)
List of 3
 $ : chr [1:4] "BV421" "FITC" "PE" "APC"
 $ : num [1:7] 5 12 19 26 34 46 51
 $ : logi [1:4] TRUE TRUE FALSE TRUE

We can see that with the Description/Keyword list we retrieved from our flowFrame shares a somewhat similar format.

str(DescriptionList[1:10])
List of 10
 $ $BEGINANALYSIS  : chr "0"
 $ $BEGINDATA      : chr "33312"
 $ $BEGINSTEXT     : chr "0"
 $ $BTIM           : chr "13:55:29.85"
 $ $BYTEORD        : chr "4,3,2,1"
 $ $CYT            : chr "Aurora"
 $ $CYTOLIB_VERSION: chr "2.22.0"
 $ $CYTSN          : chr "V0333"
 $ $DATATYPE       : chr "F"
 $ $DATE           : chr "04-Aug-2025"

But in this case, there are also names present ($BEGINANALYSIS, $BEGINDATA, etc). What if we had tried to provide names to our List of Vectors? Would the format match?

When we assigned a name to each of the vectors (by providing an equal to = ), we get the same kind of structure format to what we see in Description.

MyNamedListofVectors <- list(FluorophoresNamed=Fluorophores,
                        PanelAntibodyCountsNamed=PanelAntibodyCounts,
                        SpecimenIndexToKeepNamed=SpecimenIndexToKeep)

str(MyNamedListofVectors)
List of 3
 $ FluorophoresNamed       : chr [1:4] "BV421" "FITC" "PE" "APC"
 $ PanelAntibodyCountsNamed: num [1:7] 5 12 19 26 34 46 51
 $ SpecimenIndexToKeepNamed: logi [1:4] TRUE TRUE FALSE TRUE

We could then subsequently be able to isolate items from that list using the $ operator.

MyNamedListofVectors$

Alternatively, we could also access by list index position

MyNamedListofVectors[1]
$FluorophoresNamed
[1] "BV421" "FITC"  "PE"    "APC"  

Remembering back to the original output from read.FCS() we remember that it mentioned 599 keywords being in the description slot, so now we know that this is what was being referenced.

Keyword Madness

Rather than go through the keywords individually (in which case we would be here through tomorrow), let’s take a birds eye view of the contents of this list.

Subset <- DescriptionList[1:18]
Subset
$`$BEGINANALYSIS`
[1] "0"

$`$BEGINDATA`
[1] "33312"

$`$BEGINSTEXT`
[1] "0"

$`$BTIM`
[1] "13:55:29.85"

$`$BYTEORD`
[1] "4,3,2,1"

$`$CYT`
[1] "Aurora"

$`$CYTOLIB_VERSION`
[1] "2.22.0"

$`$CYTSN`
[1] "V0333"

$`$DATATYPE`
[1] "F"

$`$DATE`
[1] "04-Aug-2025"

$`$ENDANALYSIS`
[1] "0"

$`$ENDDATA`
[1] "57711"

$`$ENDSTEXT`
[1] "0"

$`$ETIM`
[1] "13:55:57.02"

$`$FIL`
[1] "CellCounts4L_AB_05-ND050-05.fcs"

$`$INST`
[1] "UMBC"

$`$MODE`
[1] "L"

$`$NEXTDATA`
[1] "0"

Early Metadata

Within the initial portion, we are getting back metadata keywords related to where and how the particular file was acquired. Keywords of potential interest include:

Start Time

What time was the .fcs file acquired

DescriptionList$`$BTIM`
[1] "13:55:29.85"
Cytometer

What type of cytometer was the .fcs file acquired on

DescriptionList$`$CYT`
[1] "Aurora"



Cytometer Serial Number

Manufacturer Serial Number of the Cytometer

DescriptionList$`$CYTSN`
[1] "V0333"
FCS File Acquisition Date

What was the date of acquisition

DescriptionList$`$DATE`
[1] "04-Aug-2025"



Acquisition End Time

What time was acquisition stopped

DescriptionList$`$ETIM`
[1] "13:55:57.02"
File Name

Name of the .fcs file

DescriptionList$`$FIL`
[1] "CellCounts4L_AB_05-ND050-05.fcs"



Operator

Who acquired the .fcs file

DescriptionList$`$OP`
[1] "David Rach"



Detector Values

The next major stretch of keywords encode parameter values associated with the individual detectors for at the time of acquisition.

Detectors <- DescriptionList[20:384]
Detectors
$`$P10B`
[1] "32"

$`$P10E`
[1] "0,0"

$`$P10N`
[1] "UV9-A"

$`$P10R`
[1] "4194304"

$`$P10TYPE`
[1] "Raw_Fluorescence"

$`$P10V`
[1] "710"

$`$P11B`
[1] "32"

$`$P11E`
[1] "0,0"

$`$P11N`
[1] "UV10-A"

$`$P11R`
[1] "4194304"

$`$P11TYPE`
[1] "Raw_Fluorescence"

$`$P11V`
[1] "377"

$`$P12B`
[1] "32"

$`$P12E`
[1] "0,0"

$`$P12N`
[1] "UV11-A"

$`$P12R`
[1] "4194304"

$`$P12TYPE`
[1] "Raw_Fluorescence"

$`$P12V`
[1] "469"

$`$P13B`
[1] "32"

$`$P13E`
[1] "0,0"

$`$P13N`
[1] "UV12-A"

$`$P13R`
[1] "4194304"

$`$P13TYPE`
[1] "Raw_Fluorescence"

$`$P13V`
[1] "434"

$`$P14B`
[1] "32"

$`$P14E`
[1] "0,0"

$`$P14N`
[1] "UV13-A"

$`$P14R`
[1] "4194304"

$`$P14TYPE`
[1] "Raw_Fluorescence"

$`$P14V`
[1] "564"

$`$P15B`
[1] "32"

$`$P15E`
[1] "0,0"

$`$P15N`
[1] "UV14-A"

$`$P15R`
[1] "4194304"

$`$P15TYPE`
[1] "Raw_Fluorescence"

$`$P15V`
[1] "975"

$`$P16B`
[1] "32"

$`$P16E`
[1] "0,0"

$`$P16N`
[1] "UV15-A"

$`$P16R`
[1] "4194304"

$`$P16TYPE`
[1] "Raw_Fluorescence"

$`$P16V`
[1] "737"

$`$P17B`
[1] "32"

$`$P17E`
[1] "0,0"

$`$P17N`
[1] "UV16-A"

$`$P17R`
[1] "4194304"

$`$P17TYPE`
[1] "Raw_Fluorescence"

$`$P17V`
[1] "1069"

$`$P18B`
[1] "32"

$`$P18E`
[1] "0,0"

$`$P18N`
[1] "SSC-H"

$`$P18R`
[1] "4194304"

$`$P18TYPE`
[1] "Side_Scatter"

$`$P18V`
[1] "334"

$`$P19B`
[1] "32"

$`$P19E`
[1] "0,0"

$`$P19N`
[1] "SSC-A"

$`$P19R`
[1] "4194304"

$`$P19TYPE`
[1] "Side_Scatter"

$`$P19V`
[1] "334"

$`$P1B`
[1] "32"

$`$P1E`
[1] "0,0"

$`$P1N`
[1] "Time"

$`$P1R`
[1] "272140"

$`$P1TYPE`
[1] "Time"

$`$P20B`
[1] "32"

$`$P20E`
[1] "0,0"

$`$P20N`
[1] "V1-A"

$`$P20R`
[1] "4194304"

$`$P20TYPE`
[1] "Raw_Fluorescence"

$`$P20V`
[1] "352"

$`$P21B`
[1] "32"

$`$P21E`
[1] "0,0"

$`$P21N`
[1] "V2-A"

$`$P21R`
[1] "4194304"

$`$P21TYPE`
[1] "Raw_Fluorescence"

$`$P21V`
[1] "412"

$`$P22B`
[1] "32"

$`$P22E`
[1] "0,0"

$`$P22N`
[1] "V3-A"

$`$P22R`
[1] "4194304"

$`$P22TYPE`
[1] "Raw_Fluorescence"

$`$P22V`
[1] "304"

$`$P23B`
[1] "32"

$`$P23E`
[1] "0,0"

$`$P23N`
[1] "V4-A"

$`$P23R`
[1] "4194304"

$`$P23TYPE`
[1] "Raw_Fluorescence"

$`$P23V`
[1] "217"

$`$P24B`
[1] "32"

$`$P24E`
[1] "0,0"

$`$P24N`
[1] "V5-A"

$`$P24R`
[1] "4194304"

$`$P24TYPE`
[1] "Raw_Fluorescence"

$`$P24V`
[1] "257"

$`$P25B`
[1] "32"

$`$P25E`
[1] "0,0"

$`$P25N`
[1] "V6-A"

$`$P25R`
[1] "4194304"

$`$P25TYPE`
[1] "Raw_Fluorescence"

$`$P25V`
[1] "218"

$`$P26B`
[1] "32"

$`$P26E`
[1] "0,0"

$`$P26N`
[1] "V7-A"

$`$P26R`
[1] "4194304"

$`$P26TYPE`
[1] "Raw_Fluorescence"

$`$P26V`
[1] "303"

$`$P27B`
[1] "32"

$`$P27E`
[1] "0,0"

$`$P27N`
[1] "V8-A"

$`$P27R`
[1] "4194304"

$`$P27TYPE`
[1] "Raw_Fluorescence"

$`$P27V`
[1] "461"

$`$P28B`
[1] "32"

$`$P28E`
[1] "0,0"

$`$P28N`
[1] "V9-A"

$`$P28R`
[1] "4194304"

$`$P28TYPE`
[1] "Raw_Fluorescence"

$`$P28V`
[1] "320"

$`$P29B`
[1] "32"

$`$P29E`
[1] "0,0"

$`$P29N`
[1] "V10-A"

$`$P29R`
[1] "4194304"

$`$P29TYPE`
[1] "Raw_Fluorescence"

$`$P29V`
[1] "359"

$`$P2B`
[1] "32"

$`$P2E`
[1] "0,0"

$`$P2N`
[1] "UV1-A"

$`$P2R`
[1] "4194304"

$`$P2TYPE`
[1] "Raw_Fluorescence"

$`$P2V`
[1] "1008"

$`$P30B`
[1] "32"

$`$P30E`
[1] "0,0"

$`$P30N`
[1] "V11-A"

$`$P30R`
[1] "4194304"

$`$P30TYPE`
[1] "Raw_Fluorescence"

$`$P30V`
[1] "271"

$`$P31B`
[1] "32"

$`$P31E`
[1] "0,0"

$`$P31N`
[1] "V12-A"

$`$P31R`
[1] "4194304"

$`$P31TYPE`
[1] "Raw_Fluorescence"

$`$P31V`
[1] "234"

$`$P32B`
[1] "32"

$`$P32E`
[1] "0,0"

$`$P32N`
[1] "V13-A"

$`$P32R`
[1] "4194304"

$`$P32TYPE`
[1] "Raw_Fluorescence"

$`$P32V`
[1] "236"

$`$P33B`
[1] "32"

$`$P33E`
[1] "0,0"

$`$P33N`
[1] "V14-A"

$`$P33R`
[1] "4194304"

$`$P33TYPE`
[1] "Raw_Fluorescence"

$`$P33V`
[1] "318"

$`$P34B`
[1] "32"

$`$P34E`
[1] "0,0"

$`$P34N`
[1] "V15-A"

$`$P34R`
[1] "4194304"

$`$P34TYPE`
[1] "Raw_Fluorescence"

$`$P34V`
[1] "602"

$`$P35B`
[1] "32"

$`$P35E`
[1] "0,0"

$`$P35N`
[1] "V16-A"

$`$P35R`
[1] "4194304"

$`$P35TYPE`
[1] "Raw_Fluorescence"

$`$P35V`
[1] "372"

$`$P36B`
[1] "32"

$`$P36E`
[1] "0,0"

$`$P36N`
[1] "FSC-H"

$`$P36R`
[1] "4194304"

$`$P36TYPE`
[1] "Forward_Scatter"

$`$P36V`
[1] "55"

$`$P37B`
[1] "32"

$`$P37E`
[1] "0,0"

$`$P37N`
[1] "FSC-A"

$`$P37R`
[1] "4194304"

$`$P37TYPE`
[1] "Forward_Scatter"

$`$P37V`
[1] "55"

$`$P38B`
[1] "32"

$`$P38E`
[1] "0,0"

$`$P38N`
[1] "SSC-B-H"

$`$P38R`
[1] "4194304"

$`$P38TYPE`
[1] "Side_Scatter"

$`$P38V`
[1] "241"

$`$P39B`
[1] "32"

$`$P39E`
[1] "0,0"

$`$P39N`
[1] "SSC-B-A"

$`$P39R`
[1] "4194304"

$`$P39TYPE`
[1] "Side_Scatter"

$`$P39V`
[1] "241"

$`$P3B`
[1] "32"

$`$P3E`
[1] "0,0"

$`$P3N`
[1] "UV2-A"

$`$P3R`
[1] "4194304"

$`$P3TYPE`
[1] "Raw_Fluorescence"

$`$P3V`
[1] "286"

$`$P40B`
[1] "32"

$`$P40E`
[1] "0,0"

$`$P40N`
[1] "B1-A"

$`$P40R`
[1] "4194304"

$`$P40TYPE`
[1] "Raw_Fluorescence"

$`$P40V`
[1] "1013"

$`$P41B`
[1] "32"

$`$P41E`
[1] "0,0"

$`$P41N`
[1] "B2-A"

$`$P41R`
[1] "4194304"

$`$P41TYPE`
[1] "Raw_Fluorescence"

$`$P41V`
[1] "483"

$`$P42B`
[1] "32"

$`$P42E`
[1] "0,0"

$`$P42N`
[1] "B3-A"

$`$P42R`
[1] "4194304"

$`$P42TYPE`
[1] "Raw_Fluorescence"

$`$P42V`
[1] "471"

$`$P43B`
[1] "32"

$`$P43E`
[1] "0,0"

$`$P43N`
[1] "B4-A"

$`$P43R`
[1] "4194304"

$`$P43TYPE`
[1] "Raw_Fluorescence"

$`$P43V`
[1] "473"

$`$P44B`
[1] "32"

$`$P44E`
[1] "0,0"

$`$P44N`
[1] "B5-A"

$`$P44R`
[1] "4194304"

$`$P44TYPE`
[1] "Raw_Fluorescence"

$`$P44V`
[1] "467"

$`$P45B`
[1] "32"

$`$P45E`
[1] "0,0"

$`$P45N`
[1] "B6-A"

$`$P45R`
[1] "4194304"

$`$P45TYPE`
[1] "Raw_Fluorescence"

$`$P45V`
[1] "284"

$`$P46B`
[1] "32"

$`$P46E`
[1] "0,0"

$`$P46N`
[1] "B7-A"

$`$P46R`
[1] "4194304"

$`$P46TYPE`
[1] "Raw_Fluorescence"

$`$P46V`
[1] "531"

$`$P47B`
[1] "32"

$`$P47E`
[1] "0,0"

$`$P47N`
[1] "B8-A"

$`$P47R`
[1] "4194304"

$`$P47TYPE`
[1] "Raw_Fluorescence"

$`$P47V`
[1] "432"

$`$P48B`
[1] "32"

$`$P48E`
[1] "0,0"

$`$P48N`
[1] "B9-A"

$`$P48R`
[1] "4194304"

$`$P48TYPE`
[1] "Raw_Fluorescence"

$`$P48V`
[1] "675"

$`$P49B`
[1] "32"

$`$P49E`
[1] "0,0"

$`$P49N`
[1] "B10-A"

$`$P49R`
[1] "4194304"

$`$P49TYPE`
[1] "Raw_Fluorescence"

$`$P49V`
[1] "490"

$`$P4B`
[1] "32"

$`$P4E`
[1] "0,0"

$`$P4N`
[1] "UV3-A"

$`$P4R`
[1] "4194304"

$`$P4TYPE`
[1] "Raw_Fluorescence"

$`$P4V`
[1] "677"

$`$P50B`
[1] "32"

$`$P50E`
[1] "0,0"

$`$P50N`
[1] "B11-A"

$`$P50R`
[1] "4194304"

$`$P50TYPE`
[1] "Raw_Fluorescence"

$`$P50V`
[1] "286"

$`$P51B`
[1] "32"

$`$P51E`
[1] "0,0"

$`$P51N`
[1] "B12-A"

$`$P51R`
[1] "4194304"

$`$P51TYPE`
[1] "Raw_Fluorescence"

$`$P51V`
[1] "407"

$`$P52B`
[1] "32"

$`$P52E`
[1] "0,0"

$`$P52N`
[1] "B13-A"

$`$P52R`
[1] "4194304"

$`$P52TYPE`
[1] "Raw_Fluorescence"

$`$P52V`
[1] "700"

$`$P53B`
[1] "32"

$`$P53E`
[1] "0,0"

$`$P53N`
[1] "B14-A"

$`$P53R`
[1] "4194304"

$`$P53TYPE`
[1] "Raw_Fluorescence"

$`$P53V`
[1] "693"

$`$P54B`
[1] "32"

$`$P54E`
[1] "0,0"

$`$P54N`
[1] "R1-A"

$`$P54R`
[1] "4194304"

$`$P54TYPE`
[1] "Raw_Fluorescence"

$`$P54V`
[1] "158"

$`$P55B`
[1] "32"

$`$P55E`
[1] "0,0"

$`$P55N`
[1] "R2-A"

$`$P55R`
[1] "4194304"

$`$P55TYPE`
[1] "Raw_Fluorescence"

$`$P55V`
[1] "245"

$`$P56B`
[1] "32"

$`$P56E`
[1] "0,0"

$`$P56N`
[1] "R3-A"

$`$P56R`
[1] "4194304"

$`$P56TYPE`
[1] "Raw_Fluorescence"

$`$P56V`
[1] "338"

$`$P57B`
[1] "32"

$`$P57E`
[1] "0,0"

$`$P57N`
[1] "R4-A"

$`$P57R`
[1] "4194304"

$`$P57TYPE`
[1] "Raw_Fluorescence"

$`$P57V`
[1] "238"

$`$P58B`
[1] "32"

$`$P58E`
[1] "0,0"

$`$P58N`
[1] "R5-A"

$`$P58R`
[1] "4194304"

$`$P58TYPE`
[1] "Raw_Fluorescence"

$`$P58V`
[1] "191"

$`$P59B`
[1] "32"

$`$P59E`
[1] "0,0"

$`$P59N`
[1] "R6-A"

$`$P59R`
[1] "4194304"

$`$P59TYPE`
[1] "Raw_Fluorescence"

$`$P59V`
[1] "274"

$`$P5B`
[1] "32"

$`$P5E`
[1] "0,0"

$`$P5N`
[1] "UV4-A"

$`$P5R`
[1] "4194304"

$`$P5TYPE`
[1] "Raw_Fluorescence"

$`$P5V`
[1] "1022"

$`$P60B`
[1] "32"

$`$P60E`
[1] "0,0"

$`$P60N`
[1] "R7-A"

$`$P60R`
[1] "4194304"

$`$P60TYPE`
[1] "Raw_Fluorescence"

$`$P60V`
[1] "524"

$`$P61B`
[1] "32"

$`$P61E`
[1] "0,0"

$`$P61N`
[1] "R8-A"

$`$P61R`
[1] "4194304"

$`$P61TYPE`
[1] "Raw_Fluorescence"

$`$P61V`
[1] "243"

$`$P6B`
[1] "32"

$`$P6E`
[1] "0,0"

$`$P6N`
[1] "UV5-A"

$`$P6R`
[1] "4194304"

$`$P6TYPE`
[1] "Raw_Fluorescence"

$`$P6V`
[1] "616"

$`$P7B`
[1] "32"

$`$P7E`
[1] "0,0"

$`$P7N`
[1] "UV6-A"

$`$P7R`
[1] "4194304"

$`$P7TYPE`
[1] "Raw_Fluorescence"

$`$P7V`
[1] "506"

$`$P8B`
[1] "32"

$`$P8E`
[1] "0,0"

$`$P8N`
[1] "UV7-A"

$`$P8R`
[1] "4194304"

$`$P8TYPE`
[1] "Raw_Fluorescence"

$`$P8V`
[1] "661"

$`$P9B`
[1] "32"

$`$P9E`
[1] "0,0"

$`$P9N`
[1] "UV8-A"

$`$P9R`
[1] "4194304"

$`$P9TYPE`
[1] "Raw_Fluorescence"

$`$P9V`
[1] "514"

Fortunately for all involved, there is a consistently repeating pattern for the keywords corresponding to each detector. We can see that here for $P7B, $P7E, $P7N, $P7R, $P7TYPE, $P7V

When referencing to the Flow Cytometry Standard documentation, here are what the particular keyword letters mean:

B

Number of bits reserved for parameter number n

DescriptionList$`$P7B`
[1] "32"
E

Amplification type for parameter n. 

DescriptionList$`$P7E`
[1] "0,0"



N

Short Name for parameter n. 

DescriptionList$`$P7N`
[1] "UV6-A"
R

Range for parameter number n. 

DescriptionList$`$P7R`
[1] "4194304"



TYPE

Detector type for parameter n. 

DescriptionList$`$P7TYPE`
[1] "Raw_Fluorescence"
V

Detector voltage for parameter n. 

DescriptionList$`$P7V`
[1] "506"



While not immediately obvious, understanding what these keywords encoded has proven useful for our core. In our case, we have built an automated InstrumentQC dashboard for all the instruments at our core.



By extracting out from our daily QC bead .fcs files the stored N (Detector Name) and V (Gain/Voltage) values for all the individual detectors, it allows us to plot Levey-Jennings Plots for our individual instruments, giving us usually around a months warning before an individual laser begins to fail. This helps with scheduling the Field-Service Engineer visit before it starts impacting the actual data.



While most of the detectors keywords are similar (only changing there individual name and voltage) there are a couple exceptions.

For the FSC/SSC parameters, instead of Raw_Fluorescence value for Type, we see the corresponding Scatter value get return. This in term is what is used by various commercial softwares to show those axis as linear instead of biexponential when selected.



This is similarly the case for the Time parameter, where in addition to Type being set to Time, the range also appears different to Raw/Scatters value.

Middle Metadata

Once we are out of the detector keywords, we find the last of the $Metadata associated keywords.

Detectors <- DescriptionList[385:398]
Detectors
$`$PAR`
[1] "61"

$`$PROJ`
[1] "CellCounts4L_AB_05"

$`$SPILLOVER`
      UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A
 [1,] 1e+00     0     0     0     0     0     0     0     0      0      0
 [2,] 1e-06     1     0     0     0     0     0     0     0      0      0
 [3,] 0e+00     0     1     0     0     0     0     0     0      0      0
 [4,] 0e+00     0     0     1     0     0     0     0     0      0      0
 [5,] 0e+00     0     0     0     1     0     0     0     0      0      0
 [6,] 0e+00     0     0     0     0     1     0     0     0      0      0
 [7,] 0e+00     0     0     0     0     0     1     0     0      0      0
 [8,] 0e+00     0     0     0     0     0     0     1     0      0      0
 [9,] 0e+00     0     0     0     0     0     0     0     1      0      0
[10,] 0e+00     0     0     0     0     0     0     0     0      1      0
[11,] 0e+00     0     0     0     0     0     0     0     0      0      1
[12,] 0e+00     0     0     0     0     0     0     0     0      0      0
[13,] 0e+00     0     0     0     0     0     0     0     0      0      0
[14,] 0e+00     0     0     0     0     0     0     0     0      0      0
[15,] 0e+00     0     0     0     0     0     0     0     0      0      0
[16,] 0e+00     0     0     0     0     0     0     0     0      0      0
[17,] 0e+00     0     0     0     0     0     0     0     0      0      0
[18,] 0e+00     0     0     0     0     0     0     0     0      0      0
[19,] 0e+00     0     0     0     0     0     0     0     0      0      0
[20,] 0e+00     0     0     0     0     0     0     0     0      0      0
[21,] 0e+00     0     0     0     0     0     0     0     0      0      0
[22,] 0e+00     0     0     0     0     0     0     0     0      0      0
[23,] 0e+00     0     0     0     0     0     0     0     0      0      0
[24,] 0e+00     0     0     0     0     0     0     0     0      0      0
[25,] 0e+00     0     0     0     0     0     0     0     0      0      0
[26,] 0e+00     0     0     0     0     0     0     0     0      0      0
[27,] 0e+00     0     0     0     0     0     0     0     0      0      0
[28,] 0e+00     0     0     0     0     0     0     0     0      0      0
[29,] 0e+00     0     0     0     0     0     0     0     0      0      0
[30,] 0e+00     0     0     0     0     0     0     0     0      0      0
[31,] 0e+00     0     0     0     0     0     0     0     0      0      0
[32,] 0e+00     0     0     0     0     0     0     0     0      0      0
[33,] 0e+00     0     0     0     0     0     0     0     0      0      0
[34,] 0e+00     0     0     0     0     0     0     0     0      0      0
[35,] 0e+00     0     0     0     0     0     0     0     0      0      0
[36,] 0e+00     0     0     0     0     0     0     0     0      0      0
[37,] 0e+00     0     0     0     0     0     0     0     0      0      0
[38,] 0e+00     0     0     0     0     0     0     0     0      0      0
[39,] 0e+00     0     0     0     0     0     0     0     0      0      0
[40,] 0e+00     0     0     0     0     0     0     0     0      0      0
[41,] 0e+00     0     0     0     0     0     0     0     0      0      0
[42,] 0e+00     0     0     0     0     0     0     0     0      0      0
[43,] 0e+00     0     0     0     0     0     0     0     0      0      0
[44,] 0e+00     0     0     0     0     0     0     0     0      0      0
[45,] 0e+00     0     0     0     0     0     0     0     0      0      0
[46,] 0e+00     0     0     0     0     0     0     0     0      0      0
[47,] 0e+00     0     0     0     0     0     0     0     0      0      0
[48,] 0e+00     0     0     0     0     0     0     0     0      0      0
[49,] 0e+00     0     0     0     0     0     0     0     0      0      0
[50,] 0e+00     0     0     0     0     0     0     0     0      0      0
[51,] 0e+00     0     0     0     0     0     0     0     0      0      0
[52,] 0e+00     0     0     0     0     0     0     0     0      0      0
[53,] 0e+00     0     0     0     0     0     0     0     0      0      0
[54,] 0e+00     0     0     0     0     0     0     0     0      0      0
      UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A
 [1,]      0      0      0      0      0    0    0    0    0    0    0    0
 [2,]      0      0      0      0      0    0    0    0    0    0    0    0
 [3,]      0      0      0      0      0    0    0    0    0    0    0    0
 [4,]      0      0      0      0      0    0    0    0    0    0    0    0
 [5,]      0      0      0      0      0    0    0    0    0    0    0    0
 [6,]      0      0      0      0      0    0    0    0    0    0    0    0
 [7,]      0      0      0      0      0    0    0    0    0    0    0    0
 [8,]      0      0      0      0      0    0    0    0    0    0    0    0
 [9,]      0      0      0      0      0    0    0    0    0    0    0    0
[10,]      0      0      0      0      0    0    0    0    0    0    0    0
[11,]      0      0      0      0      0    0    0    0    0    0    0    0
[12,]      1      0      0      0      0    0    0    0    0    0    0    0
[13,]      0      1      0      0      0    0    0    0    0    0    0    0
[14,]      0      0      1      0      0    0    0    0    0    0    0    0
[15,]      0      0      0      1      0    0    0    0    0    0    0    0
[16,]      0      0      0      0      1    0    0    0    0    0    0    0
[17,]      0      0      0      0      0    1    0    0    0    0    0    0
[18,]      0      0      0      0      0    0    1    0    0    0    0    0
[19,]      0      0      0      0      0    0    0    1    0    0    0    0
[20,]      0      0      0      0      0    0    0    0    1    0    0    0
[21,]      0      0      0      0      0    0    0    0    0    1    0    0
[22,]      0      0      0      0      0    0    0    0    0    0    1    0
[23,]      0      0      0      0      0    0    0    0    0    0    0    1
[24,]      0      0      0      0      0    0    0    0    0    0    0    0
[25,]      0      0      0      0      0    0    0    0    0    0    0    0
[26,]      0      0      0      0      0    0    0    0    0    0    0    0
[27,]      0      0      0      0      0    0    0    0    0    0    0    0
[28,]      0      0      0      0      0    0    0    0    0    0    0    0
[29,]      0      0      0      0      0    0    0    0    0    0    0    0
[30,]      0      0      0      0      0    0    0    0    0    0    0    0
[31,]      0      0      0      0      0    0    0    0    0    0    0    0
[32,]      0      0      0      0      0    0    0    0    0    0    0    0
[33,]      0      0      0      0      0    0    0    0    0    0    0    0
[34,]      0      0      0      0      0    0    0    0    0    0    0    0
[35,]      0      0      0      0      0    0    0    0    0    0    0    0
[36,]      0      0      0      0      0    0    0    0    0    0    0    0
[37,]      0      0      0      0      0    0    0    0    0    0    0    0
[38,]      0      0      0      0      0    0    0    0    0    0    0    0
[39,]      0      0      0      0      0    0    0    0    0    0    0    0
[40,]      0      0      0      0      0    0    0    0    0    0    0    0
[41,]      0      0      0      0      0    0    0    0    0    0    0    0
[42,]      0      0      0      0      0    0    0    0    0    0    0    0
[43,]      0      0      0      0      0    0    0    0    0    0    0    0
[44,]      0      0      0      0      0    0    0    0    0    0    0    0
[45,]      0      0      0      0      0    0    0    0    0    0    0    0
[46,]      0      0      0      0      0    0    0    0    0    0    0    0
[47,]      0      0      0      0      0    0    0    0    0    0    0    0
[48,]      0      0      0      0      0    0    0    0    0    0    0    0
[49,]      0      0      0      0      0    0    0    0    0    0    0    0
[50,]      0      0      0      0      0    0    0    0    0    0    0    0
[51,]      0      0      0      0      0    0    0    0    0    0    0    0
[52,]      0      0      0      0      0    0    0    0    0    0    0    0
[53,]      0      0      0      0      0    0    0    0    0    0    0    0
[54,]      0      0      0      0      0    0    0    0    0    0    0    0
      V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A
 [1,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [2,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [3,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [4,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [5,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [6,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [7,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [8,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [9,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[10,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[11,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[12,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[13,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[14,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[15,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[16,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[17,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[18,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[19,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[20,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[21,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[22,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[23,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[24,]    1    0     0     0     0     0     0     0     0    0    0    0    0
[25,]    0    1     0     0     0     0     0     0     0    0    0    0    0
[26,]    0    0     1     0     0     0     0     0     0    0    0    0    0
[27,]    0    0     0     1     0     0     0     0     0    0    0    0    0
[28,]    0    0     0     0     1     0     0     0     0    0    0    0    0
[29,]    0    0     0     0     0     1     0     0     0    0    0    0    0
[30,]    0    0     0     0     0     0     1     0     0    0    0    0    0
[31,]    0    0     0     0     0     0     0     1     0    0    0    0    0
[32,]    0    0     0     0     0     0     0     0     1    0    0    0    0
[33,]    0    0     0     0     0     0     0     0     0    1    0    0    0
[34,]    0    0     0     0     0     0     0     0     0    0    1    0    0
[35,]    0    0     0     0     0     0     0     0     0    0    0    1    0
[36,]    0    0     0     0     0     0     0     0     0    0    0    0    1
[37,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[38,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[39,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[40,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[41,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[42,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[43,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[44,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[45,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[46,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[47,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[48,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[49,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[50,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[51,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[52,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[53,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[54,]    0    0     0     0     0     0     0     0     0    0    0    0    0
      B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A
 [1,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [2,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [3,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [4,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [5,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [6,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [7,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [8,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [9,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[10,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[11,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[12,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[13,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[14,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[15,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[16,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[17,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[18,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[19,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[20,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[21,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[22,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[23,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[24,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[25,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[26,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[27,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[28,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[29,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[30,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[31,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[32,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[33,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[34,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[35,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[36,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[37,]    1    0    0    0    0     0     0     0     0     0    0    0    0
[38,]    0    1    0    0    0     0     0     0     0     0    0    0    0
[39,]    0    0    1    0    0     0     0     0     0     0    0    0    0
[40,]    0    0    0    1    0     0     0     0     0     0    0    0    0
[41,]    0    0    0    0    1     0     0     0     0     0    0    0    0
[42,]    0    0    0    0    0     1     0     0     0     0    0    0    0
[43,]    0    0    0    0    0     0     1     0     0     0    0    0    0
[44,]    0    0    0    0    0     0     0     1     0     0    0    0    0
[45,]    0    0    0    0    0     0     0     0     1     0    0    0    0
[46,]    0    0    0    0    0     0     0     0     0     1    0    0    0
[47,]    0    0    0    0    0     0     0     0     0     0    1    0    0
[48,]    0    0    0    0    0     0     0     0     0     0    0    1    0
[49,]    0    0    0    0    0     0     0     0     0     0    0    0    1
[50,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[51,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[52,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[53,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[54,]    0    0    0    0    0     0     0     0     0     0    0    0    0
      R4-A R5-A R6-A R7-A R8-A
 [1,]    0    0    0    0    0
 [2,]    0    0    0    0    0
 [3,]    0    0    0    0    0
 [4,]    0    0    0    0    0
 [5,]    0    0    0    0    0
 [6,]    0    0    0    0    0
 [7,]    0    0    0    0    0
 [8,]    0    0    0    0    0
 [9,]    0    0    0    0    0
[10,]    0    0    0    0    0
[11,]    0    0    0    0    0
[12,]    0    0    0    0    0
[13,]    0    0    0    0    0
[14,]    0    0    0    0    0
[15,]    0    0    0    0    0
[16,]    0    0    0    0    0
[17,]    0    0    0    0    0
[18,]    0    0    0    0    0
[19,]    0    0    0    0    0
[20,]    0    0    0    0    0
[21,]    0    0    0    0    0
[22,]    0    0    0    0    0
[23,]    0    0    0    0    0
[24,]    0    0    0    0    0
[25,]    0    0    0    0    0
[26,]    0    0    0    0    0
[27,]    0    0    0    0    0
[28,]    0    0    0    0    0
[29,]    0    0    0    0    0
[30,]    0    0    0    0    0
[31,]    0    0    0    0    0
[32,]    0    0    0    0    0
[33,]    0    0    0    0    0
[34,]    0    0    0    0    0
[35,]    0    0    0    0    0
[36,]    0    0    0    0    0
[37,]    0    0    0    0    0
[38,]    0    0    0    0    0
[39,]    0    0    0    0    0
[40,]    0    0    0    0    0
[41,]    0    0    0    0    0
[42,]    0    0    0    0    0
[43,]    0    0    0    0    0
[44,]    0    0    0    0    0
[45,]    0    0    0    0    0
[46,]    0    0    0    0    0
[47,]    0    0    0    0    0
[48,]    0    0    0    0    0
[49,]    0    0    0    0    0
[50,]    1    0    0    0    0
[51,]    0    1    0    0    0
[52,]    0    0    1    0    0
[53,]    0    0    0    1    0
[54,]    0    0    0    0    1

$`$TIMESTEP`
[1] "0.0001"

$`$TOT`
[1] "100"

$`$VOL`
[1] "30.31"

$`APPLY COMPENSATION`
[1] "FALSE"

$CHARSET
[1] "utf-8"

$CREATOR
[1] "SpectroFlo 3.3.0"

$FCSversion
[1] "3"

$FILENAME
[1] "data/CellCounts4L_AB_05_ND050_05.fcs"

$`FSC ASF`
[1] "1.21"

$GROUPNAME
[1] "ND050"

$GUID
[1] "CellCounts4L_AB_05-ND050-05.fcs"

Among those of potential interest

Proj

Often corresponding to the experiment file name

DescriptionList$`$PROJ`
[1] "CellCounts4L_AB_05"
Spillover

Where the internal spillover matrix is stored (we will revisit during compensation)

DescriptionList$`$SPILLOVER`
      UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A
 [1,] 1e+00     0     0     0     0     0     0     0     0      0      0
 [2,] 1e-06     1     0     0     0     0     0     0     0      0      0
 [3,] 0e+00     0     1     0     0     0     0     0     0      0      0
 [4,] 0e+00     0     0     1     0     0     0     0     0      0      0
 [5,] 0e+00     0     0     0     1     0     0     0     0      0      0
 [6,] 0e+00     0     0     0     0     1     0     0     0      0      0
 [7,] 0e+00     0     0     0     0     0     1     0     0      0      0
 [8,] 0e+00     0     0     0     0     0     0     1     0      0      0
 [9,] 0e+00     0     0     0     0     0     0     0     1      0      0
[10,] 0e+00     0     0     0     0     0     0     0     0      1      0
[11,] 0e+00     0     0     0     0     0     0     0     0      0      1
[12,] 0e+00     0     0     0     0     0     0     0     0      0      0
[13,] 0e+00     0     0     0     0     0     0     0     0      0      0
[14,] 0e+00     0     0     0     0     0     0     0     0      0      0
[15,] 0e+00     0     0     0     0     0     0     0     0      0      0
[16,] 0e+00     0     0     0     0     0     0     0     0      0      0
[17,] 0e+00     0     0     0     0     0     0     0     0      0      0
[18,] 0e+00     0     0     0     0     0     0     0     0      0      0
[19,] 0e+00     0     0     0     0     0     0     0     0      0      0
[20,] 0e+00     0     0     0     0     0     0     0     0      0      0
[21,] 0e+00     0     0     0     0     0     0     0     0      0      0
[22,] 0e+00     0     0     0     0     0     0     0     0      0      0
[23,] 0e+00     0     0     0     0     0     0     0     0      0      0
[24,] 0e+00     0     0     0     0     0     0     0     0      0      0
[25,] 0e+00     0     0     0     0     0     0     0     0      0      0
[26,] 0e+00     0     0     0     0     0     0     0     0      0      0
[27,] 0e+00     0     0     0     0     0     0     0     0      0      0
[28,] 0e+00     0     0     0     0     0     0     0     0      0      0
[29,] 0e+00     0     0     0     0     0     0     0     0      0      0
[30,] 0e+00     0     0     0     0     0     0     0     0      0      0
[31,] 0e+00     0     0     0     0     0     0     0     0      0      0
[32,] 0e+00     0     0     0     0     0     0     0     0      0      0
[33,] 0e+00     0     0     0     0     0     0     0     0      0      0
[34,] 0e+00     0     0     0     0     0     0     0     0      0      0
[35,] 0e+00     0     0     0     0     0     0     0     0      0      0
[36,] 0e+00     0     0     0     0     0     0     0     0      0      0
[37,] 0e+00     0     0     0     0     0     0     0     0      0      0
[38,] 0e+00     0     0     0     0     0     0     0     0      0      0
[39,] 0e+00     0     0     0     0     0     0     0     0      0      0
[40,] 0e+00     0     0     0     0     0     0     0     0      0      0
[41,] 0e+00     0     0     0     0     0     0     0     0      0      0
[42,] 0e+00     0     0     0     0     0     0     0     0      0      0
[43,] 0e+00     0     0     0     0     0     0     0     0      0      0
[44,] 0e+00     0     0     0     0     0     0     0     0      0      0
[45,] 0e+00     0     0     0     0     0     0     0     0      0      0
[46,] 0e+00     0     0     0     0     0     0     0     0      0      0
[47,] 0e+00     0     0     0     0     0     0     0     0      0      0
[48,] 0e+00     0     0     0     0     0     0     0     0      0      0
[49,] 0e+00     0     0     0     0     0     0     0     0      0      0
[50,] 0e+00     0     0     0     0     0     0     0     0      0      0
[51,] 0e+00     0     0     0     0     0     0     0     0      0      0
[52,] 0e+00     0     0     0     0     0     0     0     0      0      0
[53,] 0e+00     0     0     0     0     0     0     0     0      0      0
[54,] 0e+00     0     0     0     0     0     0     0     0      0      0
      UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A
 [1,]      0      0      0      0      0    0    0    0    0    0    0    0
 [2,]      0      0      0      0      0    0    0    0    0    0    0    0
 [3,]      0      0      0      0      0    0    0    0    0    0    0    0
 [4,]      0      0      0      0      0    0    0    0    0    0    0    0
 [5,]      0      0      0      0      0    0    0    0    0    0    0    0
 [6,]      0      0      0      0      0    0    0    0    0    0    0    0
 [7,]      0      0      0      0      0    0    0    0    0    0    0    0
 [8,]      0      0      0      0      0    0    0    0    0    0    0    0
 [9,]      0      0      0      0      0    0    0    0    0    0    0    0
[10,]      0      0      0      0      0    0    0    0    0    0    0    0
[11,]      0      0      0      0      0    0    0    0    0    0    0    0
[12,]      1      0      0      0      0    0    0    0    0    0    0    0
[13,]      0      1      0      0      0    0    0    0    0    0    0    0
[14,]      0      0      1      0      0    0    0    0    0    0    0    0
[15,]      0      0      0      1      0    0    0    0    0    0    0    0
[16,]      0      0      0      0      1    0    0    0    0    0    0    0
[17,]      0      0      0      0      0    1    0    0    0    0    0    0
[18,]      0      0      0      0      0    0    1    0    0    0    0    0
[19,]      0      0      0      0      0    0    0    1    0    0    0    0
[20,]      0      0      0      0      0    0    0    0    1    0    0    0
[21,]      0      0      0      0      0    0    0    0    0    1    0    0
[22,]      0      0      0      0      0    0    0    0    0    0    1    0
[23,]      0      0      0      0      0    0    0    0    0    0    0    1
[24,]      0      0      0      0      0    0    0    0    0    0    0    0
[25,]      0      0      0      0      0    0    0    0    0    0    0    0
[26,]      0      0      0      0      0    0    0    0    0    0    0    0
[27,]      0      0      0      0      0    0    0    0    0    0    0    0
[28,]      0      0      0      0      0    0    0    0    0    0    0    0
[29,]      0      0      0      0      0    0    0    0    0    0    0    0
[30,]      0      0      0      0      0    0    0    0    0    0    0    0
[31,]      0      0      0      0      0    0    0    0    0    0    0    0
[32,]      0      0      0      0      0    0    0    0    0    0    0    0
[33,]      0      0      0      0      0    0    0    0    0    0    0    0
[34,]      0      0      0      0      0    0    0    0    0    0    0    0
[35,]      0      0      0      0      0    0    0    0    0    0    0    0
[36,]      0      0      0      0      0    0    0    0    0    0    0    0
[37,]      0      0      0      0      0    0    0    0    0    0    0    0
[38,]      0      0      0      0      0    0    0    0    0    0    0    0
[39,]      0      0      0      0      0    0    0    0    0    0    0    0
[40,]      0      0      0      0      0    0    0    0    0    0    0    0
[41,]      0      0      0      0      0    0    0    0    0    0    0    0
[42,]      0      0      0      0      0    0    0    0    0    0    0    0
[43,]      0      0      0      0      0    0    0    0    0    0    0    0
[44,]      0      0      0      0      0    0    0    0    0    0    0    0
[45,]      0      0      0      0      0    0    0    0    0    0    0    0
[46,]      0      0      0      0      0    0    0    0    0    0    0    0
[47,]      0      0      0      0      0    0    0    0    0    0    0    0
[48,]      0      0      0      0      0    0    0    0    0    0    0    0
[49,]      0      0      0      0      0    0    0    0    0    0    0    0
[50,]      0      0      0      0      0    0    0    0    0    0    0    0
[51,]      0      0      0      0      0    0    0    0    0    0    0    0
[52,]      0      0      0      0      0    0    0    0    0    0    0    0
[53,]      0      0      0      0      0    0    0    0    0    0    0    0
[54,]      0      0      0      0      0    0    0    0    0    0    0    0
      V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A
 [1,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [2,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [3,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [4,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [5,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [6,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [7,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [8,]    0    0     0     0     0     0     0     0     0    0    0    0    0
 [9,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[10,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[11,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[12,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[13,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[14,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[15,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[16,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[17,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[18,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[19,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[20,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[21,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[22,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[23,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[24,]    1    0     0     0     0     0     0     0     0    0    0    0    0
[25,]    0    1     0     0     0     0     0     0     0    0    0    0    0
[26,]    0    0     1     0     0     0     0     0     0    0    0    0    0
[27,]    0    0     0     1     0     0     0     0     0    0    0    0    0
[28,]    0    0     0     0     1     0     0     0     0    0    0    0    0
[29,]    0    0     0     0     0     1     0     0     0    0    0    0    0
[30,]    0    0     0     0     0     0     1     0     0    0    0    0    0
[31,]    0    0     0     0     0     0     0     1     0    0    0    0    0
[32,]    0    0     0     0     0     0     0     0     1    0    0    0    0
[33,]    0    0     0     0     0     0     0     0     0    1    0    0    0
[34,]    0    0     0     0     0     0     0     0     0    0    1    0    0
[35,]    0    0     0     0     0     0     0     0     0    0    0    1    0
[36,]    0    0     0     0     0     0     0     0     0    0    0    0    1
[37,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[38,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[39,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[40,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[41,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[42,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[43,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[44,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[45,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[46,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[47,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[48,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[49,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[50,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[51,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[52,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[53,]    0    0     0     0     0     0     0     0     0    0    0    0    0
[54,]    0    0     0     0     0     0     0     0     0    0    0    0    0
      B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A
 [1,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [2,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [3,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [4,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [5,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [6,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [7,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [8,]    0    0    0    0    0     0     0     0     0     0    0    0    0
 [9,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[10,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[11,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[12,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[13,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[14,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[15,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[16,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[17,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[18,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[19,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[20,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[21,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[22,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[23,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[24,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[25,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[26,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[27,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[28,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[29,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[30,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[31,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[32,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[33,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[34,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[35,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[36,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[37,]    1    0    0    0    0     0     0     0     0     0    0    0    0
[38,]    0    1    0    0    0     0     0     0     0     0    0    0    0
[39,]    0    0    1    0    0     0     0     0     0     0    0    0    0
[40,]    0    0    0    1    0     0     0     0     0     0    0    0    0
[41,]    0    0    0    0    1     0     0     0     0     0    0    0    0
[42,]    0    0    0    0    0     1     0     0     0     0    0    0    0
[43,]    0    0    0    0    0     0     1     0     0     0    0    0    0
[44,]    0    0    0    0    0     0     0     1     0     0    0    0    0
[45,]    0    0    0    0    0     0     0     0     1     0    0    0    0
[46,]    0    0    0    0    0     0     0     0     0     1    0    0    0
[47,]    0    0    0    0    0     0     0     0     0     0    1    0    0
[48,]    0    0    0    0    0     0     0     0     0     0    0    1    0
[49,]    0    0    0    0    0     0     0     0     0     0    0    0    1
[50,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[51,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[52,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[53,]    0    0    0    0    0     0     0     0     0     0    0    0    0
[54,]    0    0    0    0    0     0     0     0     0     0    0    0    0
      R4-A R5-A R6-A R7-A R8-A
 [1,]    0    0    0    0    0
 [2,]    0    0    0    0    0
 [3,]    0    0    0    0    0
 [4,]    0    0    0    0    0
 [5,]    0    0    0    0    0
 [6,]    0    0    0    0    0
 [7,]    0    0    0    0    0
 [8,]    0    0    0    0    0
 [9,]    0    0    0    0    0
[10,]    0    0    0    0    0
[11,]    0    0    0    0    0
[12,]    0    0    0    0    0
[13,]    0    0    0    0    0
[14,]    0    0    0    0    0
[15,]    0    0    0    0    0
[16,]    0    0    0    0    0
[17,]    0    0    0    0    0
[18,]    0    0    0    0    0
[19,]    0    0    0    0    0
[20,]    0    0    0    0    0
[21,]    0    0    0    0    0
[22,]    0    0    0    0    0
[23,]    0    0    0    0    0
[24,]    0    0    0    0    0
[25,]    0    0    0    0    0
[26,]    0    0    0    0    0
[27,]    0    0    0    0    0
[28,]    0    0    0    0    0
[29,]    0    0    0    0    0
[30,]    0    0    0    0    0
[31,]    0    0    0    0    0
[32,]    0    0    0    0    0
[33,]    0    0    0    0    0
[34,]    0    0    0    0    0
[35,]    0    0    0    0    0
[36,]    0    0    0    0    0
[37,]    0    0    0    0    0
[38,]    0    0    0    0    0
[39,]    0    0    0    0    0
[40,]    0    0    0    0    0
[41,]    0    0    0    0    0
[42,]    0    0    0    0    0
[43,]    0    0    0    0    0
[44,]    0    0    0    0    0
[45,]    0    0    0    0    0
[46,]    0    0    0    0    0
[47,]    0    0    0    0    0
[48,]    0    0    0    0    0
[49,]    0    0    0    0    0
[50,]    1    0    0    0    0
[51,]    0    1    0    0    0
[52,]    0    0    1    0    0
[53,]    0    0    0    1    0
[54,]    0    0    0    0    1
TOT

Total events (in this case my downsampled 100 cells)

DescriptionList$`$TOT`
[1] "100"
Volume

Volume amount acquired during acquisition.

DescriptionList$`$VOL`
[1] "30.31"
Software

Software used and version

DescriptionList$CREATOR
[1] "SpectroFlo 3.3.0"

You will notice at this point, the keyword names including a “$” symbol have stopped, so tick marks are no longer required (except when there is a space in the name). The only $ remaining is being used as a selector for a particular item in the list.

Detectors <- DescriptionList[390:398]
Detectors
$`$VOL`
[1] "30.31"

$`APPLY COMPENSATION`
[1] "FALSE"

$CHARSET
[1] "utf-8"

$CREATOR
[1] "SpectroFlo 3.3.0"

$FCSversion
[1] "3"

$FILENAME
[1] "data/CellCounts4L_AB_05_ND050_05.fcs"

$`FSC ASF`
[1] "1.21"

$GROUPNAME
[1] "ND050"

$GUID
[1] "CellCounts4L_AB_05-ND050-05.fcs"
FILENAME

Basically the full file.path to the .fcs file of interest.

DescriptionList$FILENAME
[1] "data/CellCounts4L_AB_05_ND050_05.fcs"
GROUPNAME

The Name assigned to the acquisition Group.

DescriptionList$GROUPNAME
[1] "ND050"

Laser Metadata

Next up, there is a small stretch of keywords containing the values associated with the individual lasers as far as delays and area scaling factors for a particular day (also useful when plotted).

Detectors <- DescriptionList[399:410]
Detectors
$LASER1ASF
[1] "1.09"

$LASER1DELAY
[1] "-19.525"

$LASER1NAME
[1] "Violet"

$LASER2ASF
[1] "1.14"

$LASER2DELAY
[1] "0"

$LASER2NAME
[1] "Blue"

$LASER3ASF
[1] "1.02"

$LASER3DELAY
[1] "20.15"

$LASER3NAME
[1] "Red"

$LASER4ASF
[1] "0.92"

$LASER4DELAY
[1] "40.725"

$LASER4NAME
[1] "UV"

Display

Then there is a stretch matching whether a particular detector needs to be displayed as linear (in the case of time and scatter) or as log (for individual detectors).

Detectors <- DescriptionList[412:472]
Detectors
$P10DISPLAY
[1] "LOG"

$P11DISPLAY
[1] "LOG"

$P12DISPLAY
[1] "LOG"

$P13DISPLAY
[1] "LOG"

$P14DISPLAY
[1] "LOG"

$P15DISPLAY
[1] "LOG"

$P16DISPLAY
[1] "LOG"

$P17DISPLAY
[1] "LOG"

$P18DISPLAY
[1] "LIN"

$P19DISPLAY
[1] "LIN"

$P1DISPLAY
[1] "LOG"

$P20DISPLAY
[1] "LOG"

$P21DISPLAY
[1] "LOG"

$P22DISPLAY
[1] "LOG"

$P23DISPLAY
[1] "LOG"

$P24DISPLAY
[1] "LOG"

$P25DISPLAY
[1] "LOG"

$P26DISPLAY
[1] "LOG"

$P27DISPLAY
[1] "LOG"

$P28DISPLAY
[1] "LOG"

$P29DISPLAY
[1] "LOG"

$P2DISPLAY
[1] "LOG"

$P30DISPLAY
[1] "LOG"

$P31DISPLAY
[1] "LOG"

$P32DISPLAY
[1] "LOG"

$P33DISPLAY
[1] "LOG"

$P34DISPLAY
[1] "LOG"

$P35DISPLAY
[1] "LOG"

$P36DISPLAY
[1] "LIN"

$P37DISPLAY
[1] "LIN"

$P38DISPLAY
[1] "LIN"

$P39DISPLAY
[1] "LIN"

$P3DISPLAY
[1] "LOG"

$P40DISPLAY
[1] "LOG"

$P41DISPLAY
[1] "LOG"

$P42DISPLAY
[1] "LOG"

$P43DISPLAY
[1] "LOG"

$P44DISPLAY
[1] "LOG"

$P45DISPLAY
[1] "LOG"

$P46DISPLAY
[1] "LOG"

$P47DISPLAY
[1] "LOG"

$P48DISPLAY
[1] "LOG"

$P49DISPLAY
[1] "LOG"

$P4DISPLAY
[1] "LOG"

$P50DISPLAY
[1] "LOG"

$P51DISPLAY
[1] "LOG"

$P52DISPLAY
[1] "LOG"

$P53DISPLAY
[1] "LOG"

$P54DISPLAY
[1] "LOG"

$P55DISPLAY
[1] "LOG"

$P56DISPLAY
[1] "LOG"

$P57DISPLAY
[1] "LOG"

$P58DISPLAY
[1] "LOG"

$P59DISPLAY
[1] "LOG"

$P5DISPLAY
[1] "LOG"

$P60DISPLAY
[1] "LOG"

$P61DISPLAY
[1] "LOG"

$P6DISPLAY
[1] "LOG"

$P7DISPLAY
[1] "LOG"

$P8DISPLAY
[1] "LOG"

$P9DISPLAY
[1] "LOG"

And a few final keywords with threshold, window scaling and other user selected settings.

Detectors <- DescriptionList[473:476]
Detectors
$THRESHOLD
[1] "(FSC,50000)"

$TUBENAME
[1] "05"

$USERSETTINGNAME
[1] "DTR_CellCounts"

$`WINDOW EXTENSION`
[1] "3"

flowCore Parameters

Depending on the arguments selected during read.FCS(), we might also encounter additional keywords that are added in by flowCore. For example, we do not see these keywords when “transformation” is set to FALSE.

flowCoreCheck <- read.FCS(filename=firstfile,
 transformation = FALSE, truncate_max_range = FALSE)

flowCoreCheck
flowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'
with 100 cells and 61 observables:
       name   desc     range  minRange  maxRange
$P1    Time     NA    272140         0    272139
$P2   UV1-A     NA   4194304      -111   4194303
$P3   UV2-A     NA   4194304      -111   4194303
$P4   UV3-A     NA   4194304      -111   4194303
$P5   UV4-A     NA   4194304      -111   4194303
...     ...    ...       ...       ...       ...
$P57   R4-A     NA   4194304      -111   4194303
$P58   R5-A     NA   4194304      -111   4194303
$P59   R6-A     NA   4194304      -111   4194303
$P60   R7-A     NA   4194304      -111   4194303
$P61   R8-A     NA   4194304      -111   4194303
476 keywords are stored in the 'description' slot
NoChange <- keyword(flowCoreCheck)
Detectors <- NoChange [476:500]
Detectors
$`WINDOW EXTENSION`
[1] "3"

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

$<NA>
NULL

By contrast, if we had set “transformation” to TRUE:

flowCoreCheck <- read.FCS(filename=firstfile,
 transformation = TRUE, truncate_max_range = FALSE)

flowCoreCheck
flowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'
with 100 cells and 61 observables:
       name   desc     range  minRange  maxRange
$P1    Time     NA    272140         0    272139
$P2   UV1-A     NA   4194304      -111   4194303
$P3   UV2-A     NA   4194304      -111   4194303
$P4   UV3-A     NA   4194304      -111   4194303
$P5   UV4-A     NA   4194304      -111   4194303
...     ...    ...       ...       ...       ...
$P57   R4-A     NA   4194304      -111   4194303
$P58   R5-A     NA   4194304      -111   4194303
$P59   R6-A     NA   4194304      -111   4194303
$P60   R7-A     NA   4194304      -111   4194303
$P61   R8-A     NA   4194304      -111   4194303
599 keywords are stored in the 'description' slot
YesChange <- keyword(flowCoreCheck)
Detectors <- YesChange [476:500]
Detectors
$`WINDOW EXTENSION`
[1] "3"

$transformation
[1] "applied"

$`flowCore_$P1Rmax`
[1] "272140"

$`flowCore_$P1Rmin`
[1] "0"

$`flowCore_$P2Rmax`
[1] "4194304"

$`flowCore_$P2Rmin`
[1] "-111"

$`flowCore_$P3Rmax`
[1] "4194304"

$`flowCore_$P3Rmin`
[1] "-111"

$`flowCore_$P4Rmax`
[1] "4194304"

$`flowCore_$P4Rmin`
[1] "-111"

$`flowCore_$P5Rmax`
[1] "4194304"

$`flowCore_$P5Rmin`
[1] "-111"

$`flowCore_$P6Rmax`
[1] "4194304"

$`flowCore_$P6Rmin`
[1] "-111"

$`flowCore_$P7Rmax`
[1] "4194304"

$`flowCore_$P7Rmin`
[1] "-111"

$`flowCore_$P8Rmax`
[1] "4194304"

$`flowCore_$P8Rmin`
[1] "-26.3464946746826"

$`flowCore_$P9Rmax`
[1] "4194304"

$`flowCore_$P9Rmin`
[1] "-111"

$`flowCore_$P10Rmax`
[1] "4194304"

$`flowCore_$P10Rmin`
[1] "0"

$`flowCore_$P11Rmax`
[1] "4194304"

$`flowCore_$P11Rmin`
[1] "-111"

$`flowCore_$P12Rmax`
[1] "4194304"



For some flow cytometry R packages, you will notice when opening their exported .fcs outputs in commercial software that these flowCore keywords have ended up integrated. It is likely somewhere in the package code the author forgot to add set transformation to FALSE, which is why we are seeing these flowCore keywords after the fact.

Take Away

Today we broke open an .fcs file and explored how the underlying data is organized and stored once it is brought into R. In the process, we continued to build familiarity with some of the basic R knowledge, going from smaller simpler objects we encountered in week 2 to matrices and data.frames, to complex objects with multiple slots typical of what we encounter in the Bioconductor packages. We will build on these initial observations on the weeks to come.

In context of our continuing analogy, with each function being a tool, and an R package a toolbox, each tool in the toolbox works on different types of objects. A hammer needs nails, screwdrivers need screws, a paintbrush needs paint and a wall, etc. Object types help define these requirements, so when we use a function, knowing what type can help determine what we provide to it in order for it to work properly and not error out.

Next week, we will dive into the world of tidyverse, working specifically with these intermediate object types matrices and data.frames. The basic premise is to think of all data as rows and columns, the reasoning behind this approach which can be found here.



Additional Resources

Data File Standard for Flow Cytometry, Version FCS 3.1

R Programming - R Data Types: Vectors and Lists

Base Types vs. Object-Oriented Objects



Take-home Problems

Problem 1

Today’s walkthrough focused on a raw spectral flow cytometry file. Within a subfolder in data you will also find an unmixed .fcs file (2025_07_26…). Using what learned to day, investigate it, and see if you can catalog the main differences that occured to the keyword, parameters and exprs. Did any keywords get added, changed, deleted entirely? etc.

Problem 2

Today’s files were for spectral .fcs files from a Cytek Aurora within a subfolder in data you will also find a conventional flow cytometry file (2025-10_22…). Similarly, explore and see if you find any major differences (beyond the different detector or fluorophore names which will vary based on antibody panel used, etc)

Problem 3

If you have access to commercial software, take one of the .fcs files and try to see if you can see similar internal information from within the software. For those without commercial access, try the equivalent process using Floreada.io.

AGPL-3.0 CC BY-SA 4.0