def read_spectrum(spectrum, index):
    """Read a single spectrum

    Parameters
    ----------
    spectrum : mzML spectrum
        The mzML spectrum to parse.

    Returns
    -------
    out : list of tuples
        List of values associated with each peak in the spectrum.
    """
    polarity = 'MS:1000130' in spectrum
    ms_level = spectrum['ms level']
    rt, units = spectrum['MS:1000016']
    if units != 'minute':
        rt /= 60

    collision_energy = spectrum.get('MS:1000045', 0)
    precursor_intensity = spectrum.get('MS:1000042', 0)
    precursor_mz = spectrum.get('MS:1000744', 0)
    min_mz = spectrum.get('lowest m/z value', 0)
    max_mz = spectrum.get('highest m/z value', 0)

    if ms_level == 1:
        data = [(mz, i, rt, polarity) for (mz, i) in spectrum.peaks]
    else:
        data = [(mz, i, rt, polarity, precursor_mz, precursor_intensity,
                 collision_energy) for (mz, i) in spectrum.peaks]

    return data, ms_level, polarity