glasgowcompbio / vimms

A programmable and modular LC/MS simulator in Python
MIT License
19 stars 6 forks source link

Making multiple precursor windows match MS behaviour #48

Closed sdrogers closed 4 years ago

sdrogers commented 4 years ago

At the moment, it is possible to send a list of windows (parameterised by start and end point) to the MS. We need to see if:

  1. This is the format that the real MS accepts for multiple windows and, if not,
  2. Change our code to reflect the real MS so that DIA controllers will work with both real and simulated MS.
joewandy commented 4 years ago

I guess (1) can be in any format we want, because when running on the real MS, we translate (1) to the actual IAPI calls. See https://github.com/sdrogers/vimms-fusion/blob/master/vimms_fusion/MassSpec.py#L162-L173.

sdrogers commented 4 years ago

Ah, ok - do we know how to do multiple isolations in the actual IAPI?

sdrogers commented 4 years ago

Also, just remembered something else... All MS2 need at least one precursor m/z (I think they can have multiple), so it makes more sense to me that the controllers, if asking for an MS2 scan, parameterise it with one (or more) precursor m/z and isolation widths, rather than m/z windows, just for coherence?

sdrogers commented 4 years ago

I’m referring to the list of window ends that is used in some of the DIA controllers...we’ll also have to put precursors in them for the simulator for the MS2 scans to write to the .mzml

joewandy commented 4 years ago

Also, just remembered something else... All MS2 need at least one precursor m/z (I think they can have multiple), so it makes more sense to me that the controllers, if asking for an MS2 scan, parameterise it with one (or more) precursor m/z and isolation widths, rather than m/z windows, just for coherence?

It's already parameterised by precursor m/z and isolation width to match what IAPI requires.

Then given those two values, we have a method to get the isolation window in the simulator.

joewandy commented 4 years ago

Ah, ok - do we know how to do multiple isolations in the actual IAPI?

Seems like it should work (although never actually tried it on the real machine). Take a look at the table at the end of the attached word doc. That lists the parameters to use when specifying an IAPI custom scan. Entries with * can be specified as multiple values using ';' as the delimiter. This includes the PrecursorMass and IsolationWidth parameters.

AnalysisOfMZML.docx

sdrogers commented 4 years ago

It is and that’s what we’ve been mainly using, but we also seem to permit a list of windows defined by their upper and lower bounds (without a precursor) and I think we shouldn’t allow that. If there is no precursor, it will have to be added somewhere to make the mzML writing work, and it seems most sensible to have it added by the controller?

Sent from my iPhone

On 25 Jul 2020, at 14:34, Joe Wandy notifications@github.com wrote:

 Also, just remembered something else... All MS2 need at least one precursor m/z (I think they can have multiple), so it makes more sense to me that the controllers, if asking for an MS2 scan, parameterise it with one (or more) precursor m/z and isolation widths, rather than m/z windows, just for coherence?

It's already parameterised by precursor m/z and isolation width to match what IAPI requires.

Then given those two values, we have a method to get the isolation window.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

joewandy commented 4 years ago

Done as part of #106?