Hi Evan,
Thanks for writing. In terms of pyteomics functions, there isn't much to choose from. As far as I understand, you'll need to open the file using read() (or MzML()) and iterate over all MS1 scans. The iteration goes over all scans in the file, so you'll need to filter them by value of 'ms level'. For each scan you have 'm/z array' and 'intensity array', so you'll get MS1 scans as NumPy arrays in a couple of lines of code.
From there, you're free to apply your own logic for extraction of intensities of given m/z. You'll probably need to incorporate some tolerance window and look for any data points between the margins. If you have profile data, you can integrate everything in the given window, while if it's centroided, you probably need to look for a single peak. In any case, NumPy methods such as searchsorted should be of help.
Here's a very naive
example of what you could try.
You could also try to do something more of a viewer application where you load the file and then check different m/z to see XIC's. Then I'd try and create a 2D grid and fill it with intensities.
I'm sure anyone who has actually tried this would give better advice, but I hope this helps.
Best regards,
Lev