def read_text(self, file_handle):
header = self.annotation['<STR_LIT>']  <EOL>file_handle.seek(header['<STR_LIT>'], <NUM_LIT:0>)<EOL>raw_text = file_handle.read(header['<STR_LIT>'] - header['<STR_LIT>'] + <NUM_LIT:1>)<EOL>try:<EOL><INDENT>raw_text = raw_text.decode(self._encoding)<EOL><DEDENT>except UnicodeDecodeError as e:<EOL><INDENT>logger.warning(u'<STR_LIT>'<EOL>u'<STR_LIT>'.format(e))<EOL>raw_text = raw_text.decode(self._encoding, errors='<STR_LIT:ignore>')<EOL><DEDENT>text = self._extract_text_dict(raw_text)<EOL>pars = int(text['<STR_LIT>'])<EOL>if '<STR_LIT>' in text.keys():  <EOL><INDENT>self.channel_numbers = range(<NUM_LIT:0>, pars)  <EOL><DEDENT>else:<EOL><INDENT>self.channel_numbers = range(<NUM_LIT:1>, pars + <NUM_LIT:1>)  <EOL><DEDENT>try:<EOL><INDENT>names_n = tuple([text['<STR_LIT>'.format(i)] for i in self.channel_numbers])<EOL><DEDENT>except KeyError:<EOL><INDENT>names_n = []<EOL><DEDENT>try:<EOL><INDENT>names_s = tuple([text['<STR_LIT>'.format(i)] for i in self.channel_numbers])<EOL><DEDENT>except KeyError:<EOL><INDENT>names_s = []<EOL><DEDENT>self.channel_names_s = names_s<EOL>self.channel_names_n = names_n<EOL>keys_encoding_bits = ['<STR_LIT>'.format(i) for i in self.channel_numbers]<EOL>add_keys_to_convert_to_int = ['<STR_LIT>', '<STR_LIT>', '<STR_LIT>']<EOL>keys_to_convert_to_int = keys_encoding_bits + add_keys_to_convert_to_int<EOL>for key in keys_to_convert_to_int:<EOL><INDENT>value = text[key]<EOL>text[key] = int(value)<EOL><DEDENT>self.annotation.update(text)<EOL>if self._data_start == <NUM_LIT:0>:<EOL><INDENT>self._data_start = int(text['<STR_LIT>'])<EOL><DEDENT>if self._data_end == <NUM_LIT:0>:<EOL><INDENT>self._data_end = int(text['<STR_LIT>'])<EOL><DEDENT>
Parse the TEXT segment of the FCS file.

        The TEXT segment contains meta data associated with the FCS file.
        Converting all meta keywords to lower case.