Data File Standard forFlow Cytometry, Version FCS3.0

Data File Standards Committeeof the International Society for Analytical Cytology (ISAC)

ABSTRACT

The flow cytometry data file standardprovides the specifications needed to completely describe flowcytometry data sets within the confines of the file containingthe experimental data. In 1984 the first Flow Cytometry Standardformat for data files was adopted as FCS1.0, this standard wasmodified in 1990 as FCS2.0. We report here on the proposed nextgeneration Flow Cytometry Standard data file format, FCS3.0. The principal goal of the Standard is to provide a uniform fileformat allowing files created by one type of acquisition hardwareand software to be analyzed by another type. The proposed FCS3.0standard maintains backwards compatibility with previous versionsby retaining the basic FCS file structure. The FCS structurerequires that each data set in a file contains three segments:HEADER, TEXT and DATA, with an optional ANALYSIS segment. TheHEADER appears first and contains plain text byte offsets neededto locate the other segments. The TEXT segment contains plaintext keyword-value pairs that describe the experiment, the instrument,the specimen, the data and any other information which the filecreator wishes to include. The DATA segment contains the actualFCM data in one of several formats specified in the TEXT segment. The ANALYSIS segment contains plain text keyword-value pairsthat describe user-specified analyses of the data. The proposedchanges in FCS3.0 include: a mechanism for handling data setsof 100 megabytes and larger, support for UNICODE text for keywordvalues, support for cyclic redundancy check (CRC) validation foreach data set, a requirement for the inclusion of informationdescribing the method of signal amplification and increased supportfor the inclusion of time as a measurement parameter.

INTRODUCTION

The goal of the Flow CytometryData File Standard is to facilitate the development of softwarefor reading and writing flow cytometry data files in a standardizedformat. Application of a standard file format allows files createdon one type of instrument to be read and analyzed by softwareimplemented on a different computer. The original FCS standardwas published in 1984 as FCS1.0 (1) and amended in 1990 as FCS2.0(2).

The changes included in FCS3.0 weremade necessary by rapid evolution in microcomputer technology,computer communications, instrument design and experimental complexity. These technological advances have resulted in an increase inthe average data file size straining the limit of 99,999,999 bytesper data set designed into previous FCS versions. FCS3.0 providesa mechanism to avoid this restriction while retaining backwardscompatibility for those data files which do not exceed the 100-megabytelimit. The growth of computer networks has resulted in the routinemovements of large amounts of data between computers. This hascreated the need for a means of confirming file integrity. Therefore,FCS3.0 provides support for a cyclic redundancy check (CRC) wordto be placed at the end of each FCS3.0 data set. The use of aCRC check word allows errors, occurring during file transfer orreading, to be detected. Time is increasingly used as a measurementparameter. Therefore, keyword support has been added to betterdescribe the acquisition of time. Internationalization in thefield of flow cytometry has caused a need for the incorporationof international characters in keyword values. Therefore, a provision has been made to support the use of multi-byte charactersfor some strings by providing a keyword to support the UNICODEcharacter set (3).

Table of Contents

1. General
1.1 Scope
1.2 Conformance
2. Terminology and General Requirements
2.1 Conventions
2.2 Definitions
2.3 General Concepts
3. File Segments
3.1 HEADER Segment
3.2 TEXT Segment
3.3 DATA Segment
3.4 ANALYSIS segment
3.5 CRC Value
3.6 Other Segments
4. References
5. Appendices
5.1 Appendix A - Differences from FCS2.0
5.2 Appendix B - Data File Standard Committee Members

1. General

1.1 Scope

This is version 3.0 of the FlowCytometry Data File Standard (FCS3.0). Its purpose is to providedetailed specifications for the structure of the data sets producedas a result of acquiring data on a cytometer and writing the datato a file.

1.2 Conformance

To be conformant with FCS3.0, adata file must conform to the file structure as described in thisdocument and must contain all required keyword-value pairs inthe primary TEXT segment of the file. A conformant file mustnot contain other segments not described in the data set HEADERsegment. To be conformant with FCS3.0 an analysis program mustbe able to correctly read and interpret all of the data containedin any minimum FCS3.0 conformant file (a minimum FCS3.0 conformantfile is one with only the required keyword-value pairs in theTEXT segment of the file and no information in the ANALYSIS segment).

2. Terminology and General Requirements

2.1 Conventions

2.1.1 The ASCII character code is used forall keywords and most of the keyword values throughout an FCS3.0file (see section 3.2.20 regarding the use of UNICODE characters).

2.1.2 Numerical values are base 10 unlessotherwise specified.

2.2 Definition

2.2.1 An FCS3.0 data file consists of oneor more data sets.

2.2.2 A data set is defined as the collectionof information produced by a cytometer as it carries out its measurementson some number of particles.

2.2.3 The collection of information in a dataset is divided into at least four segments including a HEADERsegment, a primary TEXT segment, a DATA segment, and an ANALYSISsegment. The ANALYSIS segment may be empty and any number ofimplementor-defined segments may follow the first four segments. New to FCS3.0 is the inclusion of an optional supplemental TEXTsegment.

2.2.4 The HEADER segment identifies the dataset as FCS3.0 and contains ASCII byte offsets from the start ofthe data set to the beginning and end of each of the other segments.

2.2.5A keyword is the label of a data field.A keyword-value pair is the label of the data field with its associatedvalue.

2.2.6 The TEXT segments contain a series ofASCII keyword-value pairs that describe the format of the DATAsegment and most of the experimental operating conditions. Theprimary TEXT segment contains all required keyword-value pairs. The supplemental TEXT segment contains optional keyword-valuepairs only.

2.2.7 The DATA segment contains either a listof the events or histograms of the data.

2.2.8 An event is an ordered list of the cytometricmeasurements for one particle. The length of an event is the numberof parameters involved in the measurement.

2.2.9 A parameter is the signal produced byone of the detectors of the cytometer. Forward scattering istypically one of the measurement parameters. A parameter valueis a digital representation of a parameter.

2.2.10 Each data set in a data file containsall the information needed to read and interpret the data set.

2.2.11 All space within a file which is notcontained in a segment specified in the HEADER must be filledwith a space character (ASCII 32). This includes unused spacebetween the end of one segment and the beginning of the next segmentand between the end of the last data set and the end of the file.

2.2.12 List mode data storage means that eventsare stored one after the other in a list.

2.2.13 All byte offsets are referenced tothe beginning of the data set. The first data set in a file beginsat byte zero of the file.

2.2.14 The implementor is the entity thatcreates the software to read and write FCS conformant data files.

2.2.15 The "delimiter" is the firstcharacter of the primary TEXT segment and is subsequently placedin the primary TEXT, supplemental TEXT and ANALYSIS segments toseparate keywords from keyword values. The delimiter can be anyASCII character.

2.3 General Concepts

An FCS3.0 file is composed of one or moredata sets, each containing at a minimum HEADER, TEXT and DATAsegments. The HEADER, TEXT, and ANALYSIS segments contain ASCII-encodedtext readable by a text editor (some keyword-values may containUNICODE characters; See section 3.2.20). The DATA segment containsflow cytometry data stored in list mode or as histograms.

3. File Segments

3.1 HEADER Segment

3.1.1 The primary purpose of the HEADER segmentis to describe the location of the other segments in the dataset. The HEADER segment begins at byte offset zero from the beginningof the data set. The first six bytes in the HEADER segment comprisethe version identifier (FCS3.0). Note, there is no space characterbetween the FCS and the 3.0 in the identifier. The next 4 bytes(6 - 9) are occupied by space characters (ASCII 32). Followingthe identifier are at least three pairs of ASCII-encoded integersindicating the byte offsets for the start and end of the primaryTEXT segment, the DATA segment, and the ANALYSIS segment, respectively. The byte offsets are referenced to the beginning of the dataset. Under FCS3.0 these offsets remain limited to 8 bytes. EachASCII encoded integer offset is right justified in its 8 bytespace. The first byte offset (bytes 10 - 17) is that to the startof the primary TEXT segment. The next byte offset (bytes 18 -25) is that for the end of the primary TEXT segment. The nextoffset (bytes 26 - 33) is that for the start of the DATA segment. The byte offset for the end of the DATA segment occupies bytes34 - 41. That for the start of the ANALYSIS segment occupiesbytes 42 - 49. The byte offset for the end of the ANALYSIS segmentis in bytes 50 - 57. If there is no ANALYSIS segment these lasttwo byte offsets can be set to zero (right justified) or leftblank (filled with space characters). Offsets to the start andend of user-defined OTHER segments of the data set follow theANALYSIS segment offsets. The user-defined segments will not beinterpretable by others unless appropriate information is passedon by the data set originator.

A major change from previous FCS versionsis the allowance for data sets larger than 99,999,999 bytes. When any portion of a segment falls outside the 99,999,999 bytelimit, '0's are substituted in the HEADER for that segments beginand end byte offset. The byte offsets for begin DATA, end DATA,begin ANALYSIS, end ANALYSIS (begin and end supplemental TEXTif appropriate) will then only be found as keyword-value pairsin the primary TEXT segment. Note, when a segment is containedcompletely within the first 99,999,999 bytes of a data set, thebyte offsets for that segment will be duplicated in the TEXT segmentas keyword values. Note also, if the ANALYSIS offsets in theHEADER are zero, the $BEGINANALYSIS and $ENDANALYSIS keywordsmust be checked to determine if an ANALYSIS segment is present.

Table 1. Contents of HEADER fieldsand the byte offsets to the beginning and end of each field. Each offset is right justified in its field.

Contents Start and endbyte positions

FCS3.0 00 - 05

ASCII(32) - space characters 06 - 09

ASCII-encoded offset to first byteof TEXT segment 10 - 17

ASCII-encoded offset to last byteof TEXT segment 18 - 25

ASCII-encoded offset to first byteof DATA segment 26 - 33

ASCII-encoded offset to last byteof DATA segment 34 - 41

ASCII-encoded offset to first byteof ANALYSIS segment 42 - 49

ASCII-encoded offset to last byteof ANALYSIS segment 50 - 57

ASCII-encoded offset to user defined OTHERsegments 58 - beginning of next segment

One example HEADER segment is as follows:


FCS3.0*********256****1545****1792**202456*******0*******0

The '*' character is used to represent a spacecharacter here. The TEXT segment starts at byte 256 from thelocation of the 'F' in FCS3.0 and ends at byte offset 1545. TheDATA segment starts at byte offset 1792 and ends at 202456. Thereis no ANALYSIS segment, so the start and end offsets are shownas zeros. They could be left blank. Note that the HEADER segmentis a continuous byte stream with no return or line feed characters. The bytes between the end of the HEADER segment and the startof the next segment must be filled with the space character. In this example, the segments are in the order HEADER, TEXT, DATA,and ANALYSIS. The FCS standard requires only that the HEADERsegment be at the start of the data set and the primary TEXT segmentbe located entirely within the first 99,999,999 bytes.

A second example of a legal HEADER segmentis:

FCS3.0*********256****1545*******0*******0*******0*******0

The '0's in the begin DATA and end DATApositions indicates that the DATA segment exceeds the 99,999,999byte limit. Therefore, the byte offsets to begin Data and endData, are located only in the $BEGINDATA, $ENDDATA keyword valuesin the TEXT segment. The begin ANALYSIS and end ANALYSIS byteoffsets are also located in the $BEGINANALYSIS and $ENDANALYSISkeyword values in TEXT segment, if an ANALYSIS segment exist.

A third example of a legal HEADER segment is:

FCS3.0******202451**203140****1792**202450*******0*******0

This HEADER is different from the otherexamples in that it describes a data set in which the primaryTEXT segment follows the DATA segment.

3.2 TEXT Segment

3.2.1 The TEXT segments (primary and supplemental)contain a series of ASCII encoded keyword-value pairs that describevarious aspects of the data set. For example, $TOT/5000/ is akeyword-value pair indicating that the total number of eventsin the file is 5000. $TOT is the keyword and 5000 is the value. The '$' character flags this keyword as an standard FCS keyword. In this example, the '/' is the delimiter character.

3.2.2 A data set must contain a primary TEXTsegment which contains all required keyword-value pairs and anynumber of optional keyword-value pairs. The primary TEXT segmentmust be contained entirely in the first 99,999,999 bytes of dataset.

3.2.3 A data set may contain an optional supplementalTEXT segment that can contain only optional keyword-value pairsand may be placed anywhere in a data set after the HEADER segment.

3.2.4 The byte offset to the beginning andend of the supplemental TEXT segment is found in the $BEGINSTEXTand $ENDSTEXT keyword-value pairs which must be located in theprimary TEXT segment.

3.2.5 The first character in the primary TEXTsegment is the ASCII delimiter character. This character mustalso be used as the delimiter in the ANALYSIS and supplementalTEXT segments.

3.2.6 The delimiter is placed at the startand end of a keyword value.

3.2.7 The delimiter may not be the first characterin a keyword or keyword value. If the delimiter appears in akeyword or keyword value, it must be immediately followed by asecond delimiter. For example, "$SYS/RSX-11//M/" showsa value of RSX-11/M for the keyword $SYS. Since null (zero length)keywords or keyword values are not permitted, two consecutivedelimiters can never occur between a value and a keyword.

3.2.8 All keywords are encoded in ASCII. Keyword values are encoded in ASCII by default. The values ofspecified keywords may be in languages not representable in ASCIIby use of the $UNICODE keyword.

3.2.9 Keywords and keyword values must havelengths greater than zero.

3.2.10 Keywords are case insensitive, Theymay be written in a file in lower case, upper case, or a mixtureof the two. However, an FCS file reader must ignore keyword case. A keyword value may be in lower case, upper case or a mixtureof the two. Keyword values are case sensitive.

3.2.11 There are no default values for anykeyword.

3.2.12 FCS-defined keywords must begin withthe '$' character. Only FCS-defined keywords may begin with the'$' character.

3.2.13 FCS-defined keywords may not be redefinedby the implementor.

3.2.14 There are required and optional FCSkeyword-value pairs. The required keyword-value pairs representthe minimum set needed to successfully read and write an FCS dataset. Conformant FCS file reading programs must recognize requiredFCS keywords.

3.2.15 The TEXT segments must not containreturn (ASCII 13), line feed (ASCII 10) or other unprintable charactersunless they are within a keyword value or are used as the delimitercharacter.

3.2.16 The parameter description keywords (e.g.$PnR, $PnB, etc) are numbered consecutively in the order in whichthe parameters are written to the file, beginning with number1.

The required and optional FCS keywords arelisted below with one line descriptions. The keywords and theirvalues are described in alphabetical order following the lists. Required keywords are so indicated.

3.2.18 The required FCS primary TEXT segmentkeywords are as follows:

$BEGINANALYSIS Byte-offsetto the beginning of the ANALYSIS segment.

$BEGINDATA Byte-offset to the beginning ofthe DATA segment.

$BEGINSTEXT Byte-offset to the beginning ofa supplemental TEXT segment.

$BYTEORD Byte order for data acquisitioncomputer.

$DATATYPE Type of data in DATA segment (ASCII,integer, floating point).

$ENDANALYSIS Byte-offsetto the end of the ANALYSIS segment.

$ENDDATA Byte-offsetto the end of the DATA segment.

$ENDSTEXT Byte-offset to the end of a supplementalTEXT segment.

$MODE Data mode (list mode, histogram).

$NEXTDATA Byte offset to next data set inthe file.

$PAR Number of parameters in an event.

$PnB Number of bits reserved for parameternumber n.

$PnE Amplification type for parameter n.

$PnR Range for parameter number n.

$TOT Total number of events in the data set.

3.2.19 The optional FCS TEXT segment keywordsare as follows:

$ABRT Events lost due to data acquisitionelectronic coincidence.

$BTIM Clock time at beginning of data acquisition.

$CELLS Description of objects measured.

$COM Comment.

$COMP Fluorescence compensation matrix.

$CSMODE Cell subset mode, number of subsetsto which an object may belong.

$CSVBITS Number of bits used to encodea cell subset identifier.

$CSVnFLAG The bit set as a flag for subsetn.

$CYT Type of flow cytometer.

$CYTSN Flow cytometer serial number.

$DATE Date of data set acquisition.

$ETIM Clock time at end of data acquisition.

$EXP Name of investigator initiating theexperiment.

$FIL Name of the data file containingthe data set.

$GATE Number of gating parameters.

$GATING Specifies region combinations usedfor gating.

$GnE Amplification type for gating parameternumber n.

$GnF Optical filter used for gating parameternumber n.

$GnN Name of gating parameter number n.

$GnP Percent of emitted light collectedby gating parameter n.

$GnR Range of gating parameter n.

$GnS Name used for gating parameter n.

$GnT Detector type for gating parametern.

$GnV Detector voltage for gating parametern.

$INST Institution at which data acquired.

$LOST Number of events lost due to computerbusy.

$OP Name of flow cytometry operator.

$Pkn Peak channel number of univariatehistogram for parameter n.

$PKNn Count in peak channel of univariatehistogram for parameter n.

$PnF Name of optical filter for parametern.

$PnG Amplifier gain used for acquisitionof parameter n.

$PnL Excitation wavelength for parametern.

$PnN Short name for parameter n.

$PnO Excitation power for parameter n.

$PnP Percent of emitted light collectedby parameter n.

$PnS Name used for parameter n.

$PnT Detector type for parameter n.

$PnV Detector voltage for parameter n.

$PROJ Name of the experiment project.

$RnI Gating region for parameter numbern.

$RnW Window settings for gating region n.

$SMNO Specimen (tube or well) label.

$SRC Source of the specimen (patient name,cell types)

$SYS Type of computer and its operatingsystem.

$TIMESTEP Time step for time parameter.

$TR Trigger parameter and its threshold.

$UNICODE UNICODE code page for string typekeyword values.

3.2.20 Alphabetical listing and detailed descriptionof keywords. For all the keywords below 'n', 'n1', 'n2', etcrepresent ASCII-encoded integer values. The character 'f' representsan ASCII-encoded floating point number. The word "string"represents an ASCII or UNICODE-encoded TEXT string that can beof any length greater than zero. If the optional $UNICODE keywordis used, a specified subset of the strings may be representedwith two byte characters in a variety of UNICODE conformant languages. Otherwise strings are in single byte ASCII. The character 'c'represents a single ASCII-encoded character. The '/' characteris used here as the delimiter for illustrative purposes.

$ABRT/n/ $ABRT/1265/

Number of events lost due to data acquisitionelectronic coincidence effects. The number of aborted eventshere was 1265.

$BEGINANALYSIS/n/ $BEGINANALYSIS/123456789/ [REQUIRED]

This field contains the byte-offset from thebeginning of the data set to the beginning of the optional ANALYSISsegment. If there is no ANALYSIS segment, a '0' should be placedin this keyword value. In this example, the ANALYSIS segment beginsat byte 123,456,789.

$BEGINDATA/n/ $BEGINDATA/123456789/ [REQUIRED]

This field contains the byte-offsetfrom the beginning of the data set to the beginning of the DATAsegment. If the DATA segment is completely contained within thefirst 99,999,999 bytes of the data set, this value duplicatesthe offset contained in the HEADER segment.In this example, the DATA segment begins at byte 123,456,789

$BEGINSTEXT/n/ $BEGINSTEXT/123456789/ [REQUIRED]

This field contains the byte-offsetfrom the beginning of the data set to the beginning of the supplementalTEXT segment. If there is no supplemental TEXT segment, the valueshould be set to '0'. In this example, the supplemental TEXT segmentbegins at byte 123,456,789.

$BTIM/hh:mm:ss[:tt]/ $BTIM/14:22:10:47/

Clock time at the beginning of data acquisition. The format of the value is 24-hour clock hours:minutes:seconds:numberof fractional seconds in units of 1/60 of a second. The fractionalseconds [:tt] is optional. Data acquisition began at 14 hours,22 minutes, 10 seconds, and 47/60th of a second.

$BYTEORD/n1,n2,n3,n4/ $BYTEORD/4,3,2,1/ [REQUIRED]

This keyword specifies the order from numericallyleast significant[1] to numerically most significant[4] in whichfour binary data bytes are written to compose a 32-bit word inthe data acquisition computer. The numbers are separated by commas(ASCII 44). In VAX computers and personal computers of the IBMPC type, the byte order is 1,2,3,4 with the least significantbyte written first. In Hewlett Packard, Macintosh and Sun computers,the byte order is 4,3,2,1 meaning that the least significant byteis written last. In PDP-11 computers the byte order is 3,4,1,2meaning that in the two 16-bit words comprising a 32-bit word,the most significant 16-bit word is written first. Within the16-bit word, however, the least significant byte is written first,which is the same as for a PC. Byte order is discussed more fullyin reference 4. In this example, the most significant byte iswritten first and the least significant byte is written last. Use of this keyword enables collection of data on one computertype and analysis of the data on another computer type.

$CELLS/string/ $CELLS/Normal human peripheralblood/

Type of cells or other objects measured. Thisspecimen is normal human peripheral blood.

$COM/string/ $COM/Incubation time was47 minutes./

This keyword is used to attach a comment tothe data set. It should not to be used as a substitute for otherstandard keywords. This example shows the use of $COM toadd a brief note to the data set, a note that otherwise mightappear only in a laboratory notebook.

$COMP/n,f1,f2,f3,.../ $COMP/3,0.0,-0.1,0.0,-40.0,0.0,-0.6,0.0,-36.4,0.0/

This keyword enables the efficient storageof a fluorescence compensation matrix. The matrix has n rowsand n columns where n represents the number of acquisition parameters.f1, f2,

f3, ... are floating point numbers representingthe matrix elements. Both positive and negative values are allowed.A positive or unsigned value indicates that compensation has beenadditive while a negative value indicates the more common caseof subtractive compensation. The elements are stored in row-majororder, i.e., the elements in the first row appear first. Thematrix element Cij is the percentage of FLj that has been subtractedelectronically from FLi. In the example, the compensation matrixis 3 x 3 and the matrix elements have the following subtractive values: C11=0.0%, C12 = 0.1%, C13 = 0.0%, C21 = 40.0%, C22=0.0%,C23 = 0.6%, C31 = 0.0%, and C32 = 36.4%, C33 = 0.0%.

$CSMODE/n/ $CSMODE/3/

Cell subset mode, i.e., the number "n"of subsets to which a object may belong. The simplest case isthat the cell subset parameter encodes a single value per objectas would be indicated by n = 1. If the value of n is greaterthan 1 it indicates that the value of the cell subset parametermay encode n subset identifiers. In these cases, the $CSVBITSand $CSVnFLAG keyword values will specify how the cellsubset values are encoded. It should be noted that regardlessof the value for this keyword, a cell subset value of zero indicatesthat the object is undefined by the analysis scheme that was used.

$CSVBITS/n/ $CSVBITS/4/

The number of bits used to encode a cell subsetvalue. When the $CSMODE keyword value is greater than1, the number of bits used to encode a cell subset identifiermust be specified by the $CSVBITS keyword value. In thecited example, 4 bits, i.e., values of 0-15, are used to encodecell subset identifiers. See the discussion of the ANALYSIS segmentin section 3.4.

$CSVnFLAG $CSV1FLAG/4096/

The value used as a "flag" to indicatethat the "n" identifier field encodes a value. In thecited example, if bit 13 is set in the value of the cell subsetparameter (parameter value AND 8192 is TRUE), one should readthe second field of bits to decode the value. It is not necessaryto set "flags", but if one wishes to use zero to encodethe first subset for any field, one must set a "flag"to indicate that the zero in that field refers to a subset. Seethe discussion of the ANALYSIS segment in section 3.4.

$CYT/string/ $CYT/FACScan/

The name of the flow cytometer used for thedata set. Here a FACScan was used.

$CYTSN/string/ $CYTSN/400E370/

The serial number of the flow cytometer usedfor the data set. Here the serial number is 400E370.

$DATATYPE/c/ $DATATYPE/I/ [REQUIRED]

This keyword describes the type of data writtenin the DATA segment of the data set. The four allowed valuesare 'I', 'F', 'D', or 'A'. The DATA segment is a continuous bitstream with no delimiters. 'I' stands for unsigned binary integer,F stands for single precision IEEE floating point, 'D' standsfor double precision IEEE floating point, and 'A' stands for ASCII. The additional keywords $PnB (bits per parameter) and$PnR (range per parameter) are needed to completely describean event in the DATA segment.

$DATATYPE/I/means that the events are written as unsigned binary integers.For each parameter in an event, both the maximum length in bitsallocated for storage of the parameter and the actual integerrange used by the parameter within that allocation are needed. The number of bits per parameter is specified by $PnB. For example, $P1B/16/ specifies that 16 bits are allocatedfor parameter 1. $P1R/1024/ specifies that parameter 1values range from 0 to 1023. This allows the data word lengthto be specified, facilitating compatibility between machines withdifferent data word lengths and enabling bit compression of thedata.

$DATATYPE/F/ meansthat the data are written as single precision floating point valuesin the IEEE standard format. Note that the $PnB keywordsshould be set to a value of 32 for each parameter in an event.For example, $P1B/32/.

$DATATYPE/D/ meansthat the data are written as double precision floating point valuesin the IEEE standard format. The $PnB keyword should beset to a value of 64 for each parameter in an event. For example, $P3B/64/ says that parameter 3 is allocated 64 bits ofstorage space. The IEEE standard formats for single- and double-precisionnumbers are given in the table below:

Single-precision Double-precision

Sign bit 31 bit 63

Exponent bits 30-23 bits 62-52

bias 127 bias 1023

Fraction bits 22-0 bits 51-0

Range 3.402823e+38 1.797693e+308

approx. 1.175494e-38 2.225074e-308

$DATATYPE/A/ means that the data arewritten as ASCII-encoded integer values. In this case, the keyword$PnB specifies the number of bytes allocated per value (onebyte per character). This represents fixed format ASCII data.$P1B/4/ indicates that the maximum value for parameter1 would be 9999. Data are stored in a continuous byte stream,with no delimiters. If the value of the $PnB keyword isthe * character, e.g., $P1B/*/, the data are free formatand number of characters per parameter value may vary. In thiscase, all values are separated by one of the following delimiters: "space", "tab", "comma", "carriagereturn", or "line feed" characters. Note thatmultiple, consecutive delimiters are treated as a single delimiter.Since there are significant differences between the way in whichconsecutive delimiters are treated by different programming languages,care should be taken when using this format. Zero values mustbe explicitly specified by the zero (0) character. Thus, the string"1,3,, ,3" (note the space between the third and fourthcommas) would only specify three values. It would be treatedas between 3 and 5 values by different programming languages.

$DATE/dd-mmm-yyyy/ $DATE/01-OCT-1994/

This keyword specifies the date on which thedata set was created. The format is day-month-year with the numberof characters specified by dd-mmm-yyyy. This data set was createdon 01 October 1994. Note that the all the character positionsshould be filled including leading zeros. Accepted abbreviationsfor the months are: JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP,OCT, NOV, DEC.

$ENDANALYSIS/n/ $ENDANALYSIS/123456789/ [REQUIRED]

This field contains the byte-offsetfrom the beginning of the data set to the end of the ANALYSISsegment. If there is no ANALYSIS segment, a '0' should be placedin this keyword value. In this example,the ANALYSIS segment ends at byte 123,456,789

$ENDDATA/n/ $ENDDATA/123456789/ [REQUIRED]

This field contains the byte-offsetfrom the beginning of the data set to the end of the DATA segment.If the DATA segment is completely contained in the first 99,999,999bytes of the data set, this value duplicates the offset containedin the HEADER segment. In this example,the DATA segment ends at byte 123,456,789.

$ENDSTEXT/n/ $ENDSTEXT/123456789/ [REQUIRED]

This field contains the byte-offsetfrom the beginning of the data set to the end of the supplementalTEXT segment. If there is no supplemental TEXT segment, the valueshould be set to '0'. In this example, the supplemental TEXTsegment ends at byte 123,456,789.

$ETIM/hh:mm:ss[:tt]/ $ETIM/14:22:10:47/

Clock time at the end of data acquisition. The format of the value is 24-hour clock hours:minutes:seconds:numberof fractional seconds in units of 1/60 of a second. Data acquisitionended at 14 hours, 22 minutes, 10 seconds, and 47/60th of a second. The fractional seconds keyword value is optional as indicatedby the square brackets.

$EXP/string/ $EXP/A. Smith/

The name of the person initiating the experiment.This experiment was under the direction of A. Smith.

$FIL/string/ $FIL/071494.001/

The name of the data file that correspondsto this data set. If there is only one data set in the FCS file,then this file name should be the same as the name of the FCSfile. If this data set is one of several in the FCS file, thenthe file name may correspond to a data file collected at someearlier time. In this example, the data are stored in a filenamed 071494.001.

$GATE/n/ $GATE/2/

This keyword specifies the number of parametersused for gating. It is analogous to the $PAR keyword,which specifies the total number of parameters for each eventin the data set. In this example, there are two gating parameters.The current practice in many flow cytometry laboratories is thatthe gating parameters are collected as part of the data set. This fact is reflected in the redefinition of the $RnIkeyword described below.

$GATING/string/ $GATING/R1/ $GATING/R1AND (R2.0R.R3)/

This keyword specifies the conditions underwhich the data in the data set have been acquired. The conditionsare set through Boolean operations among regions defined belowusing the $RnI and $RnW keywords. Allowed Booleanoperators are AND, OR(inclusive), and NOT. The operands are theregions (Rn). Operators are separated from operands or otheroperators by spaces or periods. Operator precedence is from leftto right unless overridden with parentheses. In the first example,data were collected using gating region R1. Events with parametervalues falling outside R1 were excluded from the data set. Inthe second example, an event is included in the data set onlyif the appropriate parameter value is inside R1 and is insideR2 or R3 or both.

$GnE/f1,f2/ $G3E/4.0,0.01/

This keyword specifies whether linear or logarithmicamplifiers were used for gating parameter number n. When the amplificationis logarithmic the value of f1 specifies the number of logarithmicdecades and f2 represents the linear value that would have beenobtained for a signal with a log value of 0. In the example above,the data for parameter 3 were collected using a four-decade logarithmicamplifier and the 0 channel represents the linear value, 0.01.When linear amplification is used or when amplification is undefinedsuch as with some calculated parameters, f1 and f2 are set to0.

$GnF/string/ $G2F/520LP/

This keyword specifies the optical filter thatwas used for the light reaching the detector for gating parametern. This example shows that the optical filter used for the secondgating parameter was a type 520 nm long pass.

$GnN/string/ $G1N/FL2/

This keyword specifies a short name for gatingparameter number n. Here "FL2" is the name for gatingparameter 1. Required short names for parameters include thefollowing:

FS Forward Scatter

SS Side scatter

FLn Fluorescence channel n

AE Axial Extinction

CV Coulter Volume

TIME Time

$GnP/n1/ $P3P/27/

The amount of light collected by the detectorfor gating parameter number n1 expressed as a percentage of thelight emitted by a fluorescent object. In the example, 27% ofthe emitted light was captured by the detector for gating parameternumber 3.

$GnR/n1/ $G2R/1024/

This keyword specifies the range, n1, of gatingparameter n. In this example, the events for gating parameter2 range from 0 to 1023.

$GnS/string/ $G1S/FITC-CD45/

This keyword specifies a longer name for gatingparameter n than is allowed by $GnN. Here, FITC-labeledCD45 is the name for gating parameter 1.

$GnT/string/ $G2T/PMT9524/

This keyword specifies the detector type forgating parameter n. Here, gating parameter 2 uses a photomultipliertube (PMT) of type 9524.

$GnV/n1/ $G2V/645/

This keyword specifies the detector bias voltagefor gating parameter n. In this example, the detector for gatingparameter 2 is biased at 645 volts.

$INST/string/ $INST/Laboratory of FCM,RPCI/

The institution or laboratory in which thedata were collected. In this example, the data were collectedin the Laboratory of Flow Cytometry at Roswell Park Cancer Institute.

$LOST/n/ $LOST/457/

This keyword specifies the number of eventslost during data acquisition because the computer was busy withother tasks. Here, 457 events were so lost.

$MODE/c/ $MODE/L/ [REQUIRED]

This keyword specifies the mode in which thedata were acquired. Allowed values for the character c are 'C','L', or 'U'. These options are described as follows:

C One correlated multivariate histogram isstored in the data set as a multidimensional array. There canbe only one such histogram per data set. In storing multiparametercorrelated data, the index for the first parameter is incrementedfirst, then the second, etc. For bivariate data, the first datavalue corresponds to index 1 for parameter 1 and index 1 for parameter2, the second data value corresponds to index 2 for parameter1 and index 1 for parameter 2, etc.

L List mode. For each event, the value of eachparameter is stored in the order in which the parameters are described. The number of bits reserved for parameter 1 is described usingthe $P1B keyword. There can be only one set of list modedata per data set. The $DATATYPE keyword describes thedata format. This is the most versatile mode for the storageof flow cytometry data because mode C and mode U data can be createdfrom mode L data.

U Uncorrelated univariate histograms. Therecan be more than one univariate histogram per data set. The histogramfrequencies for parameter 1 are stored first followed by thosefor parameter 2, etc. If the univariate histograms have beengated, they must all have been acquired with the same gates sothat the total number of events in each histogram is the same.

$NEXTDATA/n/ $NEXTDATA/202512/ [REQUIRED]

When there is more than one data set in anFCS file, this keyword gives the byte offset from the beginningof a data set to the first byte in the HEADER of the next dataset in the FCS file. If n is zero (0), this is the final or onlydata set in the file. This example shows that the next data setbegins at byte 202512 from the beginning of the present data set. Each data set stands alone and must contain a full complementof keywords.

$OP/string/ $OP/Dave/

The name of the operator of the flow cytometer. Here Dave was the operator of this instrument.

$PAR/n/ $PAR/5/ [REQUIRED]

This keyword specifies the total number ofparameters stored in each event in the data set. In this example,data for five parameters are stored for each event.

$Pkn/n1/ $PK2/374/

For a univariate histogram of parameter n,this keyword specifies the channel number, n1, containing thehighest frequency of events. In this example, the peak in theunivariate histogram for parameter 2 is located in channel 374. The $PKNn keyword specifies the count in that channel.

$PKNn/n1/ $PKN2/12803/

For a univariate histogram of parameter n,this keyword specifies the number of events, n1, in the channelnumber (histogram bin) containing the maximum event frequency. In this example, the univariate histogram for parameter 2 hasa maximum event frequency of 12803. The $PKn keyword abovespecifies that this peak count occurs at channel 374.

$PnB/n1/ $P3B/16/ [REQUIRED]

For $DATATYPE/I/(binary integers), thiskeyword specifies the number of bits allocated, n1, for storageof parameter n. In this example, the data value for parameter3 would be stored as two bytes (16 bits). This keyword is usedin conjunction with $PnR to determine how the data areactually stored. A flow cytometer with 10-bit analog-to-digitalconverters (ADCs) would have $PnR/1024/. A 10-bit numberwould be stored in the 16-bit space allocated by $PnB/16/leaving 6 empty bits per parameter. These keywords enable tightbit packing of events. For example, the data storage could bespecified by $PnB/10/$PnR/1024/ for each of the n parametersin an event. Then fewer bits would be wasted in storing eachevent. However, packing these data for storage and unpackingthem later for analysis is very time-consuming. In practice,most flow cytometers use $PnB/16/$PnR/1024/ for 10-bitdata. A flow cytometer with 8-bit ADCs would use $PnB/8/$PnR/256/where n represents integers from one to the number of parametersmeasured.

For $DATATYPE/A/(ASCII-encoded integers),$PnB specifies the number of characters, n, per measuredvalue for parameter n.

$PnE/f1,f2/ $P3E/4.0,0.01/ [REQUIRED]

This keyword specifies whether linear or logarithmicamplifiers were used for parameter number n. When the amplificationis logarithmic the value of f1 specifies the number of logarithmicdecades and f2 represents the linear value that would have beenobtained for a signal with a log value of 0. In the example above,the data for parameter 3 were collected using a four-decade logarithmicamplifier and the 0 channel represents the linear value, 0.01.When linear amplification is used or when amplification is undefinedsuch as with some calculated parameters, f1 and f2 are set to0.

$PnF/string/ $P2F/520LP/

This keyword specifies the optical filter thatwas used for the light reaching the detector for parameter n. This example shows that the optical filter used for the secondparameter was a type 520 nm long pass.

$PnG/f/ $P2G/10.0/

This keyword specifies the gain thatwas used to amplify the signal for parameter n. This exampleshows that parameter 2 was amplified 10.0-fold before digitization.

$PnL/n1/ $P1L/488/

This keyword specifies the excitation wavelength,n1, in nm for parameter n. In this example, the wavelength was488 nm for parameter number 1.

$PnN/string/ $P3N/FL1/

This keyword is used to specify the short nameof parameter n. Here parameter 3 has a short name of FL1. Requiredshort names for parameters include the following:

CS Cell subset

FS Forward Scatter

SS Side scatter

FLn Fluorescence channel n

AE Axial Extinction

CV Coulter Volume

TIME Time

$PnO/n1/ $P2O/200/

This keyword specifies the excitation power,n1, in milliwatts for the light source associated with the measurementsfor parameter n. Here 200 mW was used to produce the signal associatedwith parameter 2.

$PnP/n1/ $P4P/50/

The amount of light collected by the detectorfor parameter number n expressed as a percentage of the lightemitted by a fluorescent object. In the example, 50% of the emittedlight was captured by the detector for parameter number 4.

$PnR/n1/ $P2R/1024/ [REQUIRED]

This keyword specifies the maximum range, n1,of parameter n. For $MODE/L/ (list mode data), this correspondsto the ADC range, here 1024. The data values can range from 0to 1023. For univariate histogram data ($MODE/C/ or $MODE/U/),it is the number of channels, n1, in the histogram for parametern. Here the histogram channel numbers range from 0 to 1023.

$PnS/string/ $PnS/CD45 FITC Fluorescence/

This keyword specifies a long name to be usedas an axis label in a plot of parameter n. Here FITC-labeledCD45 is the label. $PnS is the long name equivalent of$PnN.

$PnT/string/ $P2T/PMT9524/

This keyword specifies the detector type forparameter n. Here, parameter 2 uses a photomultiplier tube (PMT)of type 9524.

$PnV/n1/ $P2V/645/

This keyword specifies the detector bias voltage,n1, in Volts for parameter n. In this example, the detector forparameter 2 is biased at 645 Volts.

$PROJ/string/ $PROJ/AML patient study/

This keyword provides the name of the project.Here it is an AML patient study.

$RnI/string1,[string2]/ $R3I/P2,P4/ $R2I/G3/

This keyword associates a gating region number,n, with one or two parameters, here shown as string1 and string2. The two strings are of the form "Pn" or "Gn". "Pn" stands for collected parameter n, while "Gn"stands for gating parameter n. In the first example, gating region3 is associated with a bivariate dot plot or bivariate histogramfor parameters 2 and 4. The $RnW keyword described belowspecifies the shape of the gating region. In the second example,gating region 2 is associated with gating parameter 3. See thediscussion for the $GATE keyword.

$RnW/n1, n2[;n3, n4;...]/ $R1W/345, 366/

This keyword specifies the window settingsfor gating region n. This window setting is useful only if the$RnI keyword is also specified. If the keyword $RnI hasonly a single value, then n1 and n2 specify the inclusive lowerand upper bounds for the window in a univariate histogram. Forexample, $R2I/3/$R2W/345,366/ specifies that gating region2 is associated with gating parameter 3. The gated events mustrange between channels 345 and 366 inclusive. If the $RnIkeyword value has two values, then the window exists in a bivariateplot and it is specified in the $RnW keyword as a polygon. The x and y coordinates of the first point in the polygon arethe pair n1, n2. The next point is separated from the first bya ';' character and is represented as n3, n4 above. The polygoncan contain any number of points separated by semicolons. Thefirst point and the last point are assumed to be connected. Forexample, $R1I/2,3/$R1W/310,205;515,304;480,615;240,514;354,542/specifies that region 1 is defined in parameter 2 and 3 andthat the region 1 window is a 5-sided polygon in this 2-parameterspace. The $GATING keyword will specify the way the windowswill be used (AND, OR, etc.).

$SMNO/string/ $SMN0/A7/

This keyword specifies the specimen number,which could be a tube or well number. Here the specimen numberis A7.

$SRC/string/ $SRC/J. Doe, HIV positivepatient/

This keyword specifies the source of the specimen. Note that this keyword value could contain patient information,which is protected by the U.S. Privacy Act and by strict U.S.National Institutes of Health guidelines. The acquiring laboratorymay choose to use encoded information for this keyword value.

$SYS/string/ $SYS/Macintosh System 7.5/

This keyword specifies the type of computerand the operating system under which the data set was collected. Here the data set was collected on a Macintosh running System7.5.

$TIMESTEP/f/ $TIMESTEP/0.0167/ $TIMESTEP/1.0/

The presence of this keyword indicates thattime has been collected as one of the parameters in the data set. $PnN/TIME/ specifies which parameter represents time. $TIMESTEP specifies the time step in seconds. In thefirst example, the time step is 0.0167 seconds, which is 1/60of a second and is the typical clock tick on a personal computer. For this example, an implementor specifies $P6N/TIME/$P6B/16/$P6R/65536/$TIMESTEP/0.0167/. When the first event in thedata set is captured by the computer, the number of clock tickssince the computer was turned on is read and saved as a constant,n Ticks. A zero value is entered into parameter 6 in this firstevent. When the second event arrives, the number of clock ticksis obtained from the computer clock. n Ticks is subtracted fromthis number and the result stored as parameter 6 of the secondevent. The actual number of seconds between any subsequent eventand the first event is obtained by multiplying the parameter 6value by the $TIMESTEP value. In this example, the maximumtime range is approximately 17.5 minutes. In the second example,an implementor specifies $P6N/TIME/$P6B/16/$P6R/65536/$TIMESTEP/1.0/. Using the same procedure as in the first example, any eventsarriving less than 1.0 second after the first event have a parametervalue of zero, while those arriving between 1.0 second and (lessthan) 2.0 seconds have a parameter 6 value of 1. The maximumtime range is approximately 18 hours. If an external constanttime interval generator is used to provide a signal input thatincreases linearly with time, the appropriate TEXT keywords mightbe $P6N/TIME/$P6B/16/$P6R/1024/

$TIMESTEP/0.001/. Here the time step is smaller than that available from the computerclock. However, the number of steps is limited by the range ofthe ADC, here 10 bits. The maximum time range for this exampleis 1023 seconds.

$TOT/n/ $TOT/25000/ [REQUIRED]

This keyword specifies the total number ofevents in the data set. This data set contains 25000 events.

$TR/string, n/ $TR/FS,54/

This keyword specifies the parameter name whichserves as the trigger signal for an event. The number, n, isthe channel number of the threshold signifying an event. Whenthe threshold is exceeded, an event is declared. Here forwardscatter (FS) is the trigger signal and the event threshold isat channel 54.

$UNICODE/n,string1,string2,etc/ $UNICODE/3,$SYS,$SRC/

The integer 'n' represents the UNICODE pagenumber used and the comma delimited strings represent the keywordvalues where UNICODE text is used. UNICODE is an internationalstandard that enables computer representation of most of the world'slanguages. The characters for each language are represented astwo-byte codes on a code page. There are 65536 codes available. U.S. ASCII requires 256 two-byte characters. For computer systemsthat support UNICODE, implementors will be able to present axislabels and other appropriate text strings in the language of thecountry in which the flow cytometry data are being collected. If this keyword is not present, single byte U.S. ASCII is usedfor all strings. In the example above, UNICODE page 3 was usedto write the values for the $SYS and $SRC keywords.

3.3 DATA Segment

The DATA segment contains the raw data inone of three modes (list, correlated or uncorrelated) describedin the primary TEXT segment by the $MODE keyword value.The data are written to the DATA segment in one of four allowedformats (binary, floating point, double precision floating pointor ASCII) described by the $DATATYPE keyword value. Themost common form of data storage is list mode storage in the formof binary integers ($DATATYPE/I/ $MODE/L/). The $PnBset of keywords specify the bit width for the storage of eachparameter. The $PnR set of keywords specify the channelnumber range for each parameter. For example, $P1B/16/ $P1R/1024/specifies a 16-bit field for parameter 1 and a range for the valuesof parameter 1 from 0 to 1023, which corresponds to 10 bits. Implementorsshould use a bit mask when reading these list mode parameter valuesto insure that erroneous values are not read from the 4 unusedbits.

3.4 ANALYSIS segment

ANALYSIS is an optional segment that, whenpresent, contains the results of data processing. It is oftenthe case that analysis is performed off-line, after the data hasbeen collected and stored in a data set. Therefore, the ANALYSISsegment typically contains information added to a copy of theoriginal file. For examples, the results of cell cycle analysisor immunophenotype determinations often involve more complex analysesthan can be performed in "real time" as the data iscollected and stored. The ANALYSIS segment has the same structureas the TEXT segment; i.e., it consists of a series of keyword-valuepairs. There are no required keywords for the ANALYSIS segment. The optional FCS keywords are listed in 3.4.1 with one line descriptionsand in 3.4.2 with full descriptions and examples. Implementorsmay add their own keywords.

A proposal has been made that the ANALYSISsegment be used for identifying cell subsets, determined eitherby region drawing or by some partitioning method such as clusteranalysis (4). This may be particularly useful for immunophenotypingdata. Three approaches to identifying cell subsets are discussedbelow. The first two use the least space in the data set butrequire the cell subsets be disjoint. The third approach adds a parameter to eachevent and supports overlapping cell subset assignments.

In method 1, the implementor uses the TEXTsegment keyword-value pairs $CSMODE/1/ and $CSTOT/n/to specify that there is one group of cell subsets containingn disjoint subsets of cells. The TEXT segment keyword-value pair$CSVBITS/8/ is used to indicate that the cell subset assignmentsfor each event are stored in a binary vector of unsigned characters(8 bits each) whose length is the number of events in the dataset. This vector is stored in an other segment following theANALYSIS segment. The DATA segment contains a copy of the originaldata with the events written in the same order as in the originaldata set. In the ANALYSIS segment, $CSnNUM is used tocount the number of cells in each of the n subsets.

In method 2, the implementor uses the TEXTsegment keyword-value pairs $CSMODE/1/ and $CSTOT/n/as above but does not use the $CSVBITS keyword. In theDATA segment, the events are written out one cell subset at timerather than in the original event order. In the ANALYSIS segment,$CSnNUM is used to count the number of cells in each ofthe n subsets. No other segment is required.

Method 3 creates an additional cell subset(CS) parameter for each event in the data set. Cell subsets maybe defined by the method, e.g., cluster analysis, neural network,boolean gates on combinations of parameters, hyperplanes in n-dimensionalspace, etc. The value of the parameter may encode a single subsetidentifier number for each event ($CSMODE/1/) or more thanone identifier number per event (value of $CSMODE greaterthan 1). The meanings of the identifier numbers are specifiedby the values of the $CSnNAME keywords in the TEXT andANALYSIS segments. If the value of the CS parameter is 0 (zero),that event is unclassified by the definitions used to assign cellsubsets. If the classification scheme creates unique non-overlappingpopulations, e.g., CD4 T cells, CD8 T cells, B cells, monocytes/macrophages,neutrophils, etc., then the simplest approach is to set the valueof $CSMODE to "1" and use 1==CD4 T cell, 2 ==CD8 T cells, etc. In some situations, it may be useful to be ableto assign a single cell to more than one defined subset. For example,to extend the preceding example, subset identifiers 1 - 5 wouldcorrespond the definitions listed above with 6 == lymphocytesand 7 == mononuclear cells. This scheme would require $CSMODE/3/since a single cell could belong to three defined subsets.Operationally, assuming that an event in the data set is a CD4T cell, then the first bit field would encode a value of 1 (CD4T cell), the second bit field would encode a value of 6 (lymphocyte),and the third bit field would encode a value of 7 (mononuclearcell). The bit fields and their interpretations in these caseswould be defined by the values of the $CSVBITS and the$CSVnFLAG keywords as outlined in the reference (4). Method3 also supports the creation of an ANALYSIS segment that includesa summary for the results written as the values for the keywordspertaining to the numbers of cells in each subset, etc. Method3 has the size "cost" of an additional parameter, butit permits one to include a complete and explicit record of ananalysis as an integral part of a data set.

3.4.1 Optional FCS ANALYSIS segment keywordlist:

$CSDATE Cell subset analysis date.

$CSDEFFILE Cell subset definition file name.

$CSEXP Name of person who performed the cellsubset analysis.

$CSnName Name of cell subset number n.

$CSnNUM Number of cells in cell subset numbern.

3.4.2 Optional FCS ANALYSIS segment keywords:

$CSDATE/dd-mmm-yyyy/ $CSDATE/26-OCT-94/

Cell subset date. This keyword specifies thedate on which the data set containing the cell subset analysiswas created. The format is of the date is the same as that for$DATE. This data set was created on 26 October 1994.

$CSDEFFILE/string/ $CSDEFFILE/c:\filename.dat/

Cell subset definition file. The string isthe name of the file containing the information needed to defineeach of the cell subsets. In the example the cell subset definitionfile is named filename.dat and is located on drive c:.

$CSEXP/string/ $CSEXP/A. Smith/

Cell subset experimenter. Name of the personwho performed the cell subset analysis. Here, A. Smith performedthe cell subset analysis.

$CSnName/string/ $CS2N/lymphocytes/

Cell subset name. This is a string namingcell subset number n. In the example, cell subset 2 is named"lymphocytes".

$CSnNUM/n1/ $CS2NUM/3456/

This keyword specifies the number of cells,n1, in cell subset number n. In the example, cell subset 2 contains3456 cells.

3.5 CRC Value

The CRC word is computed for the part of eachdata set beginning with the first byte of the HEADER segment andending with the last byte of the final segment of the data set(which could be a TEXT, DATA, ANALYSIS or OTHER segment). TheCRC word is a 16-bit cyclic redundancy check value (5). This16-bit CRC word conforms to the CCITT standard (Comite' ConsultatifInternational Te'le'graphique et Te'le'phonique). This standarduses the CCITT polynomial X16 + X12 + X5 and requires that eachinput character be interpreted as its bit-reversed image. Theserequirements are satisfied by the icrc function in reference 6 if the last two function arguments are 0 and -1, respectively. The CRC value will be placed as ASCII in the 8 bytes immediatelyafter the end data set. If an implementor chooses not to computeand store a CRC word then the 8 bytes immediately after the endof the data set should be filled with ASCII '0' characters.

3.6 Other Segments

Implementors may create any number of OTHERsegments as they choose.

4. References

1. Murphy RF, Chused TM:A proposal for a flowcytometric data file standard. Cytometry 5:553-555, 1984.

2. Dean PN, Bagwell CB, Lindmo T, Murphy RFand Salzman GC: Data File Standard for Flow Cytometry. Cytometry11:323-332, 1990.

3. The Unicode Consortium: The UNICODE Standard,Version 1.0, vol. 1. Addison-Wesley Publishing Co. Inc., Reading,MA, 1991.

4. Redelman D, Coder DM: Cell subset (CS)parameter to record the identities of individual cells in flowcytometric data. Cytometry 18:95-102, 1994.

5. Press WH, Teukolsky SA, Vetterling WT,Flannery BP: Numerical Recipes in C. 2nd ed. Cambridge UniversityPress, Cambridge, UK, 1992.

5.1 Appendix A: Major Differences BetweenFCS2.0 and FCS3.0.

1) The HEADER has been modified to accommodatedata sets longer than 99,999,999 bytes. Any offset value thatrequires more than 8-bytes is now represented by placing a '0' in the HEADER for that value and its associated "$BEGIN"value. The actual byte-offset value is then found in the primaryTEXT segment of the data set. This system allows the vast majorityof data files to be backwards compatible with analysis softwaredesigned for previous FCS versions. However, a '0' byte-offsetin the HEADER will prevent previous FCS versions from readingvery large data sets, avoiding read errors or partial data reads. Note, $BEGINDATA, $ENDDATA, $BEGINANALYSIS, $ENDANALYSIS, $BIGINSTEXTand $ENDSTEXT keyword-value pairs are required in the HEADER segmentof FCS3.0 conformant files irrespective of the size of the dataset. When the size of a data set remains below the 100 megabytelimit, the byte offsets will be found both in the HEADER and inkeyword value pairs in the primary TEXT segment. When a data setreaches or exceeds 100 megabytes, byte offsets will only be locatedin the primary TEXT segment.

2) A supplemental TEXT segmentmay now be included in a data set. The supplemental TEXT segmentmay contain only optional keyword-value pairs and may be locatedanywhere in a data set after the HEADER segment.

3) A primary TEXT segment must contain allrequired keyword-value pairs and be located entirely within thefirst 99,999,999 bytes of a data set.

4) An optional 16-bit CRC check has been addedto the end of each data set. This internal check-word allows fordata set integrity checks.

5) To enable third party or off-line analysissoftware to correctly read and interpret data, the keyword $PnEis now required for each parameter. The $PnE keyword describesthe method of amplification used for a given parameter.

6) There are a number of new optional FCS TEXTSegment keywords. $CSMODE, $CSTOT, $CSVBITS, $CSVnFLAG specifyan added parameter to identify cell subsets. $CYTSN specifiesthe cytometer serial number. $RnI has been redefined. $TIMESTEPhas been added to enable use of a time parameter. $UNICODE enablesthe specification of certain keywords in languages not representablewith ASCII text.

7) The $DATE keyword value for year is increasedby two bytes to -yyyy.

8) The following optional ANALYSIS segmentkeywords have been added: $CSDATE, CSDEFFILE, $CSEXP, $CSnN,and $CSnNUM to enable specification of cell subsets.

9) The definition of the $BYTEORD and $PnEkeywords have been corrected and clarified. The $PnG keyword hasbeen added, describing the linear gain applied to a signal.

10) The $COMP keyword has replaced $DFCiTOjfor the description of fluorescence compensation.

5.2 Appendix B: Data File Standards Committee of the International Societyfor Analytical Cytology

Larry Seamer, Chair
Director, Flow Cytometry Facility
University of New Mexico
Cancer Center, Cytometry
900 Camino de Salud NE
Albuquerque, NM 87131
(505) 277-6206
lseamer@cobra.unm.edu

Bruce Bagwell
Maine Medical Center Research Institute
70 John Roberts Road, Suite 8
South Portland, ME 04106
75450.167@compuserve.com

Luther Barden
Div. of Computer Research and Technology,
Building 12A Room 2015
National Institutes of Health
9000 Rockville Pike
Bethesda, MD 20892
luther_barden@nih.gov

Marc Christofferson
Becton Dickinson Immunocytometry Systems
2350 Qume Drive
San Jose, California 95131-1807
(408) 954-2058
[N.B.: Marc Christofferson is no longer with BDIS.]

Louise E. Magruder
Division of Clinical Laboratory Devices
FDA/CDRH/ODE
72 Gaither Road
Rockville, MD 20850
lem@fdadr.cdrh.fda.gov

George Malachowski
Cytomation, Inc.
400 E. Horsetooth Rd.
Ft. Collins, CO
(303)226-2200

Robert F. Murphy
Associate Professor
Department of Biological Sciences and Centerfor
Light Microscope Imaging and Biotechnology
Carnegie Mellon University
4400 Fifth Avenue, Box 52
Pittsburgh, Pennsylvania 15213
(412) 268-3480
murphy+@cmu.edu

Doug Redelman
Sierra Cytometry
3150 Susileen Dr.
Reno, NV 89509

Gary C. Salzman
Life Sciences Division
Los Alamos National Laboratory
Mail Stop M888
Los Alamos, NM 87545
(505)667-5503
salzman@lanl.gov

James C.S. Wood
Coulter Corporation
Mail Code 52-A01
11800 S.W. 147th Avenue
Miami, FL 33196-2500
(305)380-2449 or 344-1290 (voice)
(305)344-5240 (FAX)
woodjcs@gate.net



1996 International Society for Analytical Cytology

Back to ISAC WWW Home page

last revised Thu Aug 8 12:14:30 PDT 1996