def read_header(self, file_handle, nextdata_offset=<NUM_LIT:0>):
header = {'<STR_LIT>': file_handle.read(<NUM_LIT:6>)}<EOL>file_handle.read(<NUM_LIT:4>)  <EOL>for field in ('<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>', '<STR_LIT>',<EOL>'<STR_LIT>'):<EOL><INDENT>s = file_handle.read(<NUM_LIT:8>)<EOL>try:<EOL><INDENT>field_value = int(s)<EOL><DEDENT>except ValueError:<EOL><INDENT>field_value = <NUM_LIT:0><EOL><DEDENT>header[field] = field_value + nextdata_offset<EOL><DEDENT>for k in ('<STR_LIT>', '<STR_LIT>'):<EOL><INDENT>if header[k] == <NUM_LIT:0>:<EOL><INDENT>raise ValueError(u'<STR_LIT>'<EOL>u'<STR_LIT>'.format(self.path, k))<EOL><DEDENT>elif header[k] > self._file_size:<EOL><INDENT>raise ValueError(u'<STR_LIT>'<EOL>u'<STR_LIT>'.format(self.path, k))<EOL><DEDENT>else:<EOL><INDENT>pass<EOL><DEDENT><DEDENT>self._data_start = header['<STR_LIT>']<EOL>self._data_end = header['<STR_LIT>']<EOL>if header['<STR_LIT>'] - header['<STR_LIT>'] != <NUM_LIT:0>:<EOL><INDENT>warnings.warn(u'<STR_LIT>'<EOL>u'<STR_LIT>'.format(self.path))<EOL><DEDENT>self.annotation['<STR_LIT>'] = header<EOL>
Read the header of the FCS file.

        The header specifies where the annotation, data and analysis are located inside the binary
        file.

        Args:
            file_handle: buffer containing FCS file.
            nextdata_offset: byte offset of a set header from file start specified by $NEXTDATA