Flow Cytometry Standard
From Wikipedia, the free encyclopedia
Flow Cytometry Standard (FCS) is a data file standard for the reading and writing of data from flow cytometry experiments. The FCS specification has traditionally been developed and maintained by the International Society for Advancement of Cytometry (ISAC).[1] FCS used to be the only widely adopted file format in flow cytometry. Recently, additional standard file formats have been developed by ISAC.
The FCS file format describes a file that is a combination of textual data followed by binary data. The order of the file layout is as follows:
- HEADER segment
- TEXT segment
- DATA segment
- Optional ANALYSIS segment
- CRC value
- Optional OTHER segments
The HEADER segment is an ASCII text string that begins by identifying the version of the FCS standard used, followed by three pairs of byte offsets that designate the positions of the TEXT, DATA, and ANALYSIS segments. An example header segment is given below
FCS3.0 58 4380 4381 5586 0 0
Because the field width of the header segment byte positions is constrained by 8 characters, the maximum position it is capable of storing is 99,999,999. Anything beyond that is encoded as a 0 for both the start and end position, and the corresponding TEXT segment keyword is used instead.
The text segment is an ASCII text string that is divided into a series of key-value pairs that are delimited by some chosen character, e.g. '|'. The first character immediately following the header segment is the delimiter. An example of a header and text segment is given below
FCS3.0 58 4380 4381 5586 0 0|$BEGINANALYSIS|0|$BEGINDATA|4381|$BEGINSTEXT|0|$BTIM|08:24:37.64|$BYTEORD|1,2,3,4|$CELLS|RBC|...|
To be a valid FCS file, the text segment must contain all required keywords, which describe the DATA segment format and encoding. For FCS version 3.1, the required FCS primary TEXT segment keywords are as follows:
| Keyword | Description |
|---|---|
| $BEGINANALYSIS | Byte-offset to the beginning of the ANALYSIS segment. |
| $BEGINDATA | Byte-offset to the beginning of the DATA segment. |
| $BEGINSTEXT | Byte-offset to the beginning of a supplemental TEXT segment. |
| $BYTEORD | Byte order for data acquisition computer. |
| $DATATYPE | Type of data in DATA segment (ASCII, integer, floating point). |
| $ENDANALYSIS | Byte-offset to the last byte of the ANALYSIS segment. |
| $ENDDATA | Byte-offset to the last byte of the DATA segment. |
| $ENDSTEXT | Byte-offset to the last byte of a supplemental TEXT segment. |
| $MODE | Data mode (list mode - preferred, histogram - deprecated). |
| $NEXTDATA | Byte offset to next data set in the file. |
| $PAR | Number of parameters in an event. |
| $PnB | Number of bits reserved for parameter number n. |
| $PnE | Amplification type for parameter n. |
| $PnN | Short name for parameter n. |
| $PnR | Range for parameter number n. |
| $TOT | Total number of events in the data set. |
The DATA segment of the FCS file follows after the TEXT segment and is laid out event-wise (row-wise) according to the order described in the parameters (a.k.a. channels) $P1N $P2N$...PnN. An event is either an actual biological cell or some other mass that was large enough to trigger the data acquisition capturing device of the flow cytometer instrument. Data segments hold the following layout:
Data Segment [Event1][Event2][Event3]...[Event$TOT]
Each event is laid out according to the number of bytes described by $PnB for each parameter. These bytes are to be interpreted according to the combination specified by $BYTEORD and $DATATYPE.
Event [$P1B][$P2B][$P3B]...[$PnB]
Data structure
Flow cytometry data is typically saved for analysis in the form of an array, with fluorescence and scatter channels represented in columns, and individual "events" (most of which are cells) forming the rows. The number of events acquired from each sample usually ranges between the low thousands and the low millions.
