def __init__(self, path=None, read_data=True, channel_naming='<STR_LIT>', data_set=<NUM_LIT:0>, encoding='<STR_LIT:utf-8>'):
self._encoding = encoding<EOL>self._data = None<EOL>self._channel_naming = channel_naming<EOL>self.channel_names_s = []<EOL>self.channel_names_n = []<EOL>self._data_start = -<NUM_LIT:1><EOL>self._data_end = -<NUM_LIT:1><EOL>self.channel_numbers = []<EOL>self._analysis = None<EOL>self._file_size = <NUM_LIT:0><EOL>if channel_naming not in ('<STR_LIT>', '<STR_LIT>'):<EOL><INDENT>raise ValueError(u'<STR_LIT>')<EOL><DEDENT>self.annotation = {}<EOL>self.path = path<EOL>if path:<EOL><INDENT>with open(path, '<STR_LIT:rb>') as f:<EOL><INDENT>self.load_file(f, data_set=data_set, read_data=read_data)<EOL><DEDENT><DEDENT>
Parse FCS files.

        Compatible with most FCS 2.0, 3.0, 3.1 files.

        self.annotation: a dictionary holding the parsed content of the TEXT segment
                         In addition, a key called __header__ has been added to this dictionary
                         It specifies the information parsed from the FCS file HEADER segment.
                         (This won't be necessary for most users.)

        self.data holds the parsed DATA segment
        self.analysis holds the ANALYSIS segment as read from the file.

        After the data segment is read:
            self.channel_names holds the chosen names of the channels
            self.channel_names_alternate holds the alternate names of the channels

        Args:
            path : str
                Path of .fcs file
            read_data : bool
                If True, reads the data immediately.
                Otherwise, use read_data method to read in the data from the fcs file.
            channel_naming: '$PnS' | '$PnN'
                Determines which meta data field is used for naming the channels.

                The default should be $PnS (even though it is not guaranteed to be unique)

                $PnN stands for the short name (guaranteed to be unique).
                    Will look like 'FL1-H'
                $PnS stands for the actual name (not guaranteed to be unique).
                    Will look like 'FSC-H' (Forward scatter)

                The chosen field will be used to population self.channels.

                If the chosen field does not exist in the fcs file.
                The program attempts to use the alternative field by default.

                Note: These names are not flipped in the implementation.
                It looks like they were swapped for some reason in the official FCS specification.
            data_set: int
                Index of retrieved data set in the fcs file.
                This value specifies the data set being retrieved from an fcs file with
                multiple data sets.
            encoding: str
                Specify encoding of the text section of the fcs data