Source code for get_precursors

#!/usr/bin/env python

import os
from operator import itemgetter

import pymzml


[docs]def main(): """ Extract the 10 most often fragmented precursors from the BSA example file. This can e.g. be used for defining exclusion lists for further MS runs. usage: ./get_precursors.py """ example_file = os.path.join( os.path.dirname(__file__), os.pardir, 'tests', 'data', 'BSA1.mzML.gz' ) run = pymzml.run.Reader(example_file) fragmented_precursors = {} for spectrum in run: if spectrum.ms_level == 2: selected_precursors = spectrum.selected_precursors if spectrum.selected_precursors is not None: for precursor_dict in selected_precursors: precursor_mz = precursor_dict['mz'] precursor_i = precursor_dict['i'] rounded_precursor_mz = round(precursor_mz,3) if rounded_precursor_mz not in fragmented_precursors.keys(): fragmented_precursors[rounded_precursor_mz] = [] fragmented_precursors[rounded_precursor_mz].append(spectrum.ID) precursor_info_list = [] for rounded_precursor_mz, spectra_list in fragmented_precursors.items(): precursor_info_list.append( ( len(spectra_list), rounded_precursor_mz, spectra_list ) ) for pos, (number_of_spectra, rounded_precursor_mz, spectra_list) in enumerate(sorted(precursor_info_list, reverse=True)): print( 'Found precursor: {0} in spectra: {1}'.format( rounded_precursor_mz, spectra_list ) ) if pos > 8: break
if __name__ == '__main__': main()