glasgowcompbio / vimms

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

ms2 not appearing in mzML (really this time) #19

Closed sdrogers closed 4 years ago

sdrogers commented 4 years ago

Checkout commit https://github.com/sdrogers/vimms/commit/c5c0d77e4a4f587588d77b29c61d23511f8d39c8 from simple_dia branch. Run the tests with python -m unittest tests.integration.test_controllers.TestDIAControllers Although it's clear that MS2 scans do arrive back from the MS and they include peaks, they do not appear in the mzML file (all missing) Perhaps:

Related:

This is despite setting these parameters in the (e.g. MS1) scans here: https://github.com/sdrogers/vimms/blob/c5c0d77e4a4f587588d77b29c61d23511f8d39c8/vimms/Controller/dia.py#L59-L60 Is it being ignored?

joewandy commented 4 years ago

Related:

Is it being ignored?

Yes, it's being ignored when writing to the mzML file. See this line https://github.com/sdrogers/vimms/blob/master/vimms/MzmlWriter.py#L139.

Also I noticed the line above where the collision energy was hardcoded (because it couldn't be changed before) https://github.com/sdrogers/vimms/blob/master/vimms/MzmlWriter.py#L125. This is no longer correct now.

sdrogers commented 4 years ago

ok, looks like easy fixes for those two?

sdrogers commented 4 years ago

ah, that could be because I was playing with things... https://github.com/sdrogers/vimms/blob/1a72746d0489237d148b53f8d36afe3e9aa03e73/vimms/Controller/dia.py#L68 should be changed to level 2...I think the problem will still be there though...?

joewandy commented 4 years ago

yes, changed that to 2 and the ms2 scans are still missing. Checking ..

kkto28 commented 4 years ago

have done some experiments/studying (on AIF_controller_with_beer_chems), able to generate ms2 but not sure can address the issue. Changes are as following..

1/ test_controllers.py IndependentMassSpectrometer initialized by using default scan_time_dict which contains ms2 time, iso scan_time_dict contains only ms1 2) dia.py, using level 2 on fragmentation scan iso level 1, dda_scan_params.set(ScanParameters.MS_LEVEL, 2) 3) dia.py, added checking condition self.scan_to_process, to skip tasks generation if still have jobs in the queue 4) dia.py swap ms1 and ms2 scan, to align sequence ms1(intital default task) follows ms2 + ms1 scan -> ms2 + ms1 scan alternatively 5) dia.py update self.next_processed_scan_id after ms2/ms1 tasks, so as to tell controller two added task as a cycle for process

image

sdrogers commented 4 years ago

Brilliant, thanks - what branch is this on? Would like to look into the code...

Sent from my iPhone

On 19 Jul 2020, at 03:10, kkto28 notifications@github.com wrote:

 have done some experiments/studying (on AIF_controller_with_beer_chems), able to generate ms2 but not sure can address the issue. Changes are as following..

1/ test_controllers.py IndependentMassSpectrometer initialized by using default scan_time_dict which contains ms2 time, iso scan_time_dict contains only ms1 2) dia.py, using level 2 on fragmentation scan iso level 1, dda_scan_params.set(ScanParameters.MS_LEVEL, 2) 3) dia.py, added checking condition self.scan_to_process, to skip tasks generation if still have jobs in the queue 4) dia.py swap ms1 and ms2 scan, to align sequence ms1(intital default task) follows ms2 + ms1 scan -> ms2 + ms1 scan alternatively 5) dia.py update self.next_processed_scan_id after ms2/ms1 tasks, so as to tell controller two added task as a cycle for process

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

kkto28 commented 4 years ago

https://github.com/kkto28/vimms/commit/b329c5684d9e734aebbf9cabd619bcef8a14b378#diff-cc3666849585994cef4481039d067617

*need to uncomment the skip code in test_controllers.py in order to run AIF_controller_with_beer_chems testing. Feel free to give advice/comments. Thanks.

Brilliant, thanks - what branch is this on? Would like to look into the code... Sent from my iPhone On 19 Jul 2020, at 03:10, kkto28 @.***> wrote:  have done some experiments/studying (on AIF_controller_with_beer_chems), able to generate ms2 but not sure can address the issue. Changes are as following.. 1/ test_controllers.py IndependentMassSpectrometer initialized by using default scan_time_dict which contains ms2 time, iso scan_time_dict contains only ms1 2) dia.py, using level 2 on fragmentation scan iso level 1, dda_scan_params.set(ScanParameters.MS_LEVEL, 2) 3) dia.py, added checking condition self.scan_to_process, to skip tasks generation if still have jobs in the queue 4) dia.py swap ms1 and ms2 scan, to align sequence ms1(intital default task) follows ms2 + ms1 scan -> ms2 + ms1 scan alternatively 5) dia.py update self.next_processed_scan_id after ms2/ms1 tasks, so as to tell controller two added task as a cycle for process — 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

It seems that for an ms2 scan, if we do not provide it some precursor information, it will be skipped by the write_spectrum() method of psims. This is why no ms2 scans were found in the mzML file.

joewandy commented 4 years ago

Added issue #43 to talk about the few bugs we found above.

sdrogers commented 4 years ago

Ok - makes sense. Guess this is kind of the definition of an MS2 scam. My guess is that all DIA type things are actually producing fragmented MS1 scans....

Sent from my iPhone

On 22 Jul 2020, at 16:24, Joe Wandy notifications@github.com wrote:

 It seems that for an ms2 scan, if we do not provide it some precursor information, it will be skipped when written out by the write_spectrum() method of psims.

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