<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _parse_spectra_annotation(self, line):
 """Parse and store the spectral annotation details """

        if re.match('^PK\$NUM_PEAK(.*)', line, re.IGNORECASE):
            self.start_spectra_annotation = False
            return

        saplist = line.split()

        sarow = (
            self.current_id_spectra_annotation,
            float(saplist[self.spectra_annotation_indexes['m/z']]) if 'm/z' in self.spectra_annotation_indexes else None,
            saplist[self.spectra_annotation_indexes[
                'tentative_formula']] if 'tentative_formula' in self.spectra_annotation_indexes else None,
            float(saplist[self.spectra_annotation_indexes[
                'mass_error(ppm)']]) if 'mass_error(ppm)' in self.spectra_annotation_indexes else None,
            self.current_id_meta)

        self.spectra_annotation_all.append(sarow)

        self.current_id_spectra_annotation += 1