sirius-ms / sirius

SIRIUS is a software for discovering a landscape of de-novo identification of metabolites using tandem mass spectrometry. This repository contains the code of the SIRIUS Software (GUI and CLI)
GNU Affero General Public License v3.0
85 stars 20 forks source link

Index does not contain mzML root! #208

Open sb855 opened 3 days ago

sb855 commented 3 days ago

I have a set of MS2 spectra I'm trying to import into Sirius, using .mzml format. These files were converted from SCIEX's .wiff2, from a QTOF (X500B) using MSConvert. The MS1 spectra from this instrument appears to import properly, but I get the following error for my MS2 data:

Error when importing data! Cause: java.lang.Exception: java.lang.IllegalStateException: Index does not contain mzML root!
java.lang.Exception: java.lang.IllegalStateException: Index does not contain mzML root!
    at io.sirius.ms.sdk.jjobs.SseProgressJJob.updateAndCheckIfDone(SseProgressJJob.java:128)
    at io.sirius.ms.sdk.jjobs.SseProgressJJob$1.onNext(SseProgressJJob.java:75)
    at io.sirius.ms.sdk.jjobs.SseProgressJJob$1.onNext(SseProgressJJob.java:64)
    at io.sirius.ms.sse.FluxToFlowBroadcast.lambda$onNext$7(FluxToFlowBroadcast.java:103)
    at java.base/java.lang.Iterable.forEach(Unknown Source)
    at io.sirius.ms.sse.FluxToFlowBroadcast.onNext(FluxToFlowBroadcast.java:99)
    at io.sirius.ms.sdk.SiriusClient.lambda$enableEventListening$3(SiriusClient.java:203)
    at reactor.core.publisher.LambdaSubscriber.onNext(LambdaSubscriber.java:160)
    at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.runAsync(FluxPublishOn.java:446)
    at reactor.core.publisher.FluxPublishOn$PublishOnSubscriber.run(FluxPublishOn.java:533)
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:84)
    at reactor.core.scheduler.WorkerTask.call(WorkerTask.java:37)
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.base/java.lang.Thread.run(Unknown Source)

The file opens in Wiley's KnowItAll, with all the spectral information as expected. Based on the "Index does not contain mzML root!", I imagine this could be a MSConvert issue, but I get different parsing errors with .mgf and .txt conversions as well. Happy to give one of the data files, but will defer to a file upload service of anyone's choosing. Let me know if this is something any of you have experienced.

Additional (perhaps the issue?) context: My MS2 data is a CE ramp, so I increase the CE by 5 eV every 30 seconds. Each file contains 10 different CEs.

I'm on Windows 11, Sirius 6.0.6. Intel i9 12900H, 32 GB RAM.

Thanks!

MartinHoffmannJena commented 2 days ago

Hi,

are you able to share an .mzML file that procudes this issue?

sb855 commented 2 days ago

Sure: https://drive.google.com/file/d/1XHlxkvW6RYfs7VVuwmZXwlCDwNprzGnU/view?usp=sharing

MartinHoffmannJena commented 2 days ago

Sure: https://drive.google.com/file/d/1XHlxkvW6RYfs7VVuwmZXwlCDwNprzGnU/view?usp=sharing

Thank you, I don't get that error that you reported, however there are still no spectra imported.

The reason is, that the file contains no MS1 information, every spectrum contained has "msLevel="2"". For .mz(X)ML files SIRIUS requires MS1 information to be present, so that we can pick the peaks. Did you maybe not the the ms level to "1-2" in msconvert?

sb855 commented 2 days ago

Sure: https://drive.google.com/file/d/1XHlxkvW6RYfs7VVuwmZXwlCDwNprzGnU/view?usp=sharing

Thank you, I don't get that error that you reported, however there are still no spectra imported.

The reason is, that the file contains no MS1 information, every spectrum contained has "msLevel="2"". For .mz(X)ML files SIRIUS requires MS1 information to be present, so that we can pick the peaks. Did you maybe not the the ms level to "1-2" in msconvert?

I have a separate MS1 file- I suppose I should combine the files then? Or can I import MS1 before, then import MS2?

Presumably, since you can import it, I have an access issue or something funky with my install then?

EDIT: Just checking, was there any setup you needed to do to import this data? I asked my colleague to install the MacOS version, and she also gets the issue EDIT 2: I got it to work by merging MS1 and MS2 together.

sb855 commented 2 days ago

If you're willing (importing issue, but happy to post a new issue if that's the procedure).

I'm able to read the MS2 spectra from my merged file for 5-20 eV, but I have CEs spanning up to 45 eV. I can't seem to get any of the CEs above 20 to display. I've tried splitting the files into CE-independent chunks, but it doesn't seem to register.

I was wondering if you notice anything weird about this data: https://drive.google.com/file/d/1FOvOOvK9oIKYeDg3q4XkxrSRRJpi99Rg/view?usp=sharing

Thank you for your help! I appreciate it greatly.