Code Monkey home page Code Monkey logo

boecker-lab / sirius Goto Github PK

View Code? Open in Web Editor NEW
76.0 8.0 17.0 45.34 MB

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)

License: GNU Affero General Public License v3.0

MAXScript 0.30% TeX 9.35% Java 83.93% HTML 0.17% JavaScript 6.19% CSS 0.05% Dockerfile 0.01%
denovo metabolomics mass-spectrometry java science cheminformatics bioinformatics molecular-structures molecular-formulas ms-spectra ms-data structure-elucidation fragmentation-trees sirius csi-fingerid fingerid isotope-pattern mass-spectra

sirius's Introduction

License: AGPL v3 Generic badge Build and Pubish

Our methods are offered to the scientific community as freely available resources. (Re-)distribution of the methods, in whole or in part, for commercial purposes is prohibited. CSI:FingerID and CANOPUS web services hosted by the Böcker group are for academic research and education use only. Please review the terms of service of the academic version for details. For non-academic users, the Bright Giant GmbH provides licenses and all related services. We ask that users of our tools cite the corresponding papers in any resulting publications.

Contact:

SIRIUS is a java-based software framework for the analysis of LC-MS/MS data of metabolites and other "small molecules of biological interest". SIRIUS integrates a collection of our tools, including CSI:FingerID (with COSMIC), ZODIAC and CANOPUS. In particular, both the graphical user interface and the command line version of SIRIUS seamlessly integrate the CSI:FingerID and CANOPUS web services.

Download Links

Since version 5.7.0 SIRIUS is officially available via conda (conda-forge) under the package name sirius-ms. Native MacOS arm64 (Apple Silicon) builds are solely available via conda.

SIRIUS+CSI:FingerID GUI and CLI - Version 5.8.6 (2024-01-27)

These versions include the Java Runtime Environment, so there is no need to install Java separately! Just download, install/unpack and execute.

All (including previous) releases can be found here.

Documentation

The recommended method to install SIRIUS is via conda (sirius-ms) since the package manager takes care about system library compatibility.

conda install -c conda-forge sirius-ms

For Windows and MacOS, we also provide installers (msi/pkg) which should be preferred over the standalone zip packages but might require administrator permissions for installation.

Since we do not pay Microsoft/Apple for certification, you might have to confirm that you want to trust "software from an unknown source" on Windows/MacOS when using the installers provided by the Böcker group. Therefore, we highly recommend using the signed installers provided by Bright Giant (also linked above). These installers ease the installation process by triggering no (or less) security issues of the respective OS.

See the documentation for details.

User accounts can be created directly via the SIRIUS GUI. Please, use your institutional email address. SIRIUS web services are free for academic/non-commercial use. Usually academic institutions are identified by their email domain and access will be granted automatically. In some cases, further validation of your academic/non-commercial may be required. See also SIRIUS Documentation – Account and License.

These might be especially interesting for Windows and MacOS users that have problems with the installation due to an unsigned installer (Unknown developer etc...)

Integration of CSI:FingerID

Fragmentation trees and spectra can be directly uploaded from SIRIUS to a CSI:FingerID web service, without the need to access the (deprecated) CSI:FingerID website. Results are retrieved from the web service and can be displayed in the SIRIUS graphical user interface. This functionality is also available for the SIRIUS command-line tool. Training structures for CSI:FingerID's predictors are available through the CSI:FingerID web API:

Fragmentation Tree Computation

The manual interpretation of tandem mass spectra is time-consuming and non-trivial. SIRIUS analyses the fragmentation pattern resulting in a hypothetical fragmentation tree, in which nodes are annotated with molecular formulas of the fragments and arcs (edges) represent fragmentation events (losses). SIRIUS allows for the automated and high-throughput analysis of small-compound MS data beyond elemental composition without requiring compound structures or a mass spectral database.

Isotope Pattern Analysis

SIRIUS deduces molecular formulas of small compounds by ranking isotope patterns from mass spectra of high resolution. After preprocessing, the output of a mass spectrometer is a list of peaks which corresponds to the masses of the sample molecules and their abundance. In principle, elemental compositions of small molecules can be identified using only accurate masses. However, even with very high mass accuracy, many formulas are obtained in higher mass regions. High resolution mass spectrometry allows us to determine the isotope pattern of sample molecule with outstanding accuracy and apply this information to identify the elemental composition of the sample molecule. SIRIUS can be downloaded either as graphical user interface (see Sirius GUI) or as command-line tool.

Main citations

Kai Dührkop, Markus Fleischauer, Marcus Ludwig, Alexander A. Aksenov, Alexey V. Melnik, Marvin Meusel, Pieter C. Dorrestein, Juho Rousu, and Sebastian Böcker, SIRIUS 4: Turning tandem mass spectra into metabolite structure information. Nature Methods 16, 299–302, 2019.


Martin A. Hoffmann and Louis-Félix Nothias and Marcus Ludwig and Markus Fleischauer and Emily C. Gentry and Michael Witting and Pieter C. Dorrestein and Kai Dührkop and Sebastian Böcker Assigning confidence to structural annotations from mass spectra with COSMIC bioRxiv, 2021. (Cite if you are using: CSI:FingerID, COSMIC)

Kai Dührkop, Louis-Félix Nothias, Markus Fleischauer, Raphael Reher, Marcus Ludwig, Martin A. Hoffmann, Daniel Petras, William H. Gerwick, Juho Rousu, Pieter C. Dorrestein and Sebastian Böcker. Systematic classification of unknown metabolites using high-resolution fragmentation mass spectra. Nature Biotechnology, 2020. (Cite if you are using CANOPUS)

Yannick Djoumbou Feunang, Roman Eisner, Craig Knox, Leonid Chepelev, Janna Hastings, Gareth Owen, Eoin Fahy, Christoph Steinbeck, Shankar Subramanian, Evan Bolton, Russell Greiner, David S. Wishart. ClassyFire: automated chemical classification with a comprehensive, computable taxonomy. Journal of Cheminformatics 8, 61, 2016. (ClassyFire publication; cite this if you are using CANOPUS)

Marcus Ludwig, Louis-Félix Nothias, Kai Dührkop, Irina Koester, Markus Fleischauer, Martin A. Hoffmann, Daniel Petras, Fernando Vargas, Mustafa Morsy, Lihini Aluwihare, Pieter C. Dorrestein, Sebastian Böcker. Database-independent molecular formula annotation using Gibbs sampling through ZODIAC. Nature Machine Intelligence 2, 629–641, 2020. (Cite if you are using ZODIAC)

Kai Dührkop and Sebastian Böcker. Fragmentation trees reloaded. Journal of Cheminformatics 8, 5, 2016. (Cite this for fragmentation pattern analysis and fragmentation tree computation)

Kai Dührkop, Huibin Shen, Marvin Meusel, Juho Rousu, and Sebastian Böcker. Searching molecular structure databases with tandem mass spectra using CSI:FingerID. Proceedings of the National Academy of Sciences U S A 112(41), 12580-12585, 2015. (cite this when using CSI:FingerID)

Sebastian Böcker, Matthias C. Letzel, Zsuzsanna Lipták and Anton Pervukhin. SIRIUS: decomposing isotope patterns for metabolite identification. Bioinformatics 25(2), 218-224, 2009. (Cite this for isotope pattern analysis)

Additional citations

Marcus Ludwig, Kai Dührkop and Sebastian and Böcker. Bayesian networks for mass spectrometric metabolite identification via molecular fingerprints. Bioinformatics, 34(13): i333-i340. 2018. Proc. of Intelligent Systems for Molecular Biology (ISMB 2018). (Cite for CSI:FingerID Scoring)

W. Timothy J. White, Stephan Beyer, Kai Dührkop, Markus Chimani and Sebastian Böcker. Speedy Colorful Subtrees. In Proc. of Computing and Combinatorics Conference (COCOON 2015), volume 9198 of Lect Notes Comput Sci, pages 310-322. Springer, Berlin, 2015. (cite this on why computations are swift, even on a laptop computer)

Huibin Shen, Kai Dührkop, Sebastian Böcker and Juho Rousu. Metabolite Identification through Multiple Kernel Learning on Fragmentation Trees. Bioinformatics, 30(12):i157-i164, 2014. Proc. of Intelligent Systems for Molecular Biology (ISMB 2014). (Introduces the machinery behind CSI:FingerID)

Imran Rauf, Florian Rasche, François Nicolas and Sebastian Böcker. Finding Maximum Colorful Subtrees in practice. J Comput Biol, 20(4):1-11, 2013. (More, earlier work on why computations are swift today)

Heinonen, M.; Shen, H.; Zamboni, N.; Rousu, J. Metabolite identification and molecular fingerprint prediction through machine learning. Bioinformatics, 2012. Vol. 28, nro 18, pp. 2333-2341. (Introduces the idea of predicting molecular fingerprints from tandem MS data)

Florian Rasche, Aleš Svatoš, Ravi Kumar Maddula, Christoph Böttcher, and Sebastian Böcker. Computing Fragmentation Trees from Tandem Mass Spectrometry Data. Analytical Chemistry (2011) 83 (4): 1243–1251. (Cite this for introduction of fragmentation trees as used by SIRIUS)

Sebastian Böcker and Florian Rasche. Towards de novo identification of metabolites by analyzing tandem mass spectra. Bioinformatics (2008) 24 (16): i49-i55. (The very first paper to mention fragmentation trees as used by SIRIUS)

License

Starting with version 4.4.27, SIRIUS is licensed under the GNU Affero General Public License (GPL). If you integrate SIRIUS into other software, we strongly encourage you to make the usage of SIRIUS as well as the literature to cite transparent to the user.

Acknowledgements

Thanks for supporting the development of SIRIUS!

MSCJ Logo

sirius's People

Contributors

egonw avatar f-kretschmer avatar joxemmx avatar ju52les avatar kaibioinfo avatar lukasscholz avatar marcus-ludwig avatar mfleisch avatar sebastian-boecker avatar timschndr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sirius's Issues

Result ".csv"s are actually .tsv

Hi! I've recently started using SIRIUS via CLI and have been super impressed with its functionality.

One thing that has been causing me some issues, however, is that all the exported .csv files are actually separated by tabs ( \t character). Since I'm using SIRIUS as part of a larger workflow, I'm going through and renaming them after the fact so that I can open them properly in other programs (e.g. Excel). Would it be possible to modify the file extension while they're being written out so this doesn't need to happen as a separate step afterwards?

As far as I can tell, literally just changing the file extension from ".csv" to ".tsv" resolves the problem and gives the user a heads-up about the file format without breaking any of the later workflow.

CLI for 4.4: Report more feature properties

Hello,

I just noticed that 4.4 contains quite a few cool new functionalities! One of them is feature detection (lcms-align). I was wondering if more feature properties could be reported to facilitate further integration in patRoon. Nice to haves would be: peak intensity/height and area (which is reported currently?) and the retention time and m/z range for each feature.

Thanks,
Rick

Hello! I have some troubles using Sirius

image
image

Hello!
When using "Sirius", I got the warning message below. How can I solve this problem.

Connection error
org.apache.http.conn.ConnectTimeoutException: Connect to www.google.com:443 [www.google.com/157.240.3.50] failed: connect timed out
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:143)
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
at de.unijena.bioinf.webapi.ProxyManager$LockedClosableHttpClient.execute(ProxyManager.java:344)
at de.unijena.bioinf.webapi.ProxyManager$LockedClosableHttpClient.execute(ProxyManager.java:313)
at de.unijena.bioinf.webapi.ProxyManager.checkConnectionToUrl(ProxyManager.java:224)
at de.unijena.bioinf.webapi.ProxyManager.checkExternal(ProxyManager.java:211)
at de.unijena.bioinf.webapi.ProxyManager.checkInternetConnection(ProxyManager.java:135)
at de.unijena.bioinf.webapi.WebAPI.lambda$checkConnection$0(WebAPI.java:134)
at de.unijena.bioinf.webapi.ProxyManager.doWithClient(ProxyManager.java:279)
at de.unijena.bioinf.webapi.WebAPI.checkConnection(WebAPI.java:130)
at de.unijena.bioinf.ms.gui.net.ConnectionMonitor$CheckJob.compute(ConnectionMonitor.java:121)
at de.unijena.bioinf.ms.gui.net.ConnectionMonitor$CheckJob.compute(ConnectionMonitor.java:117)
at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:95)
at java.base/java.util.concurrent.FutureTask.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)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.base/java.net.PlainSocketImpl.waitForConnect(Native Method)
at java.base/java.net.PlainSocketImpl.socketConnect(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
at java.base/java.net.Socket.connect(Unknown Source)
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:337)
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:134)
... 24 more

Dec 17, 2020 4:19:25 PM de.unijena.bioinf.ms.rest.client.info.InfoClient getVersionInfo
警告: Could not reach fingerid version specific URL for version verification. Try to reach root url. Cause:Connect to www.csi-fingerid.uni-jena.de:443 [www.csi-fingerid.uni-jena.de/141.35.12.31] failed: Read timed out
Dec 17, 2020 4:19:25 PM de.unijena.bioinf.ms.rest.client.info.InfoClient getVersionInfo
警告: Could not reach fingerid version specific URL for version verification. Try to reach root url. Cause:Connect to www.csi-fingerid.uni-jena.de:443 [www.csi-fingerid.uni-jena.de/141.35.12.31] failed: Read timed out
Dec 17, 2020 4:19:57 PM de.unijena.bioinf.ms.rest.client.info.InfoClient getVersionInfo
警告: Could not reach fingerid version specific URL for version verification. Try to reach root url. Cause:Read timed out
Dec 17, 2020 4:19:57 PM de.unijena.bioinf.ms.rest.client.info.InfoClient getVersionInfo
警告: Could not reach fingerid version specific URL for version verification. Try to reach root url. Cause:Read timed out

Trees

Apologies for opening 2021 with so many Issues...

A previous Sirius version had the option (now apparently cancelled) to generate fragmentation tree in the .dot format, which could then be rather easily converted to figures via a third party app.
However current version generates only .json files. Can you perhaps add to the documentation an outline of a procedure from .json tree files to a graphical tree representation (as was previously outlines for the .dot files)?

Usage of custom database

Hi there,

I have been recently using SIRIUS using a custom database using the import function of SMILES formulas. In the latest version, I have been looking for the possibility to define a custom database without success. Is this function still implemented and, if yes, where can I find it?

Thanks and Cheers,
Johannes

Definition of the candidate fingerprint binary format

Hi,

is there a documentation how the fingerprint binary files (e.g. "C8H18O5_[M+Na]+.fps") for the molecular candidates in the "fingerid" sub-directory of the SIRIUS workspace can loaded? What is there binary encoding?

Best regards,

Eric

Implement fragmentation tree method?

Hi, I'm very interested in implementing the fragmentation tree(FT) method from SIRIUS, ideally a function that takes one molecular formula candidate and MS2 spectra as the input, and returns a FT along with the score. Is this available through openAPI?

Thanks!

Xi

Mistakes in fragmentation tree and output spectra labels

Hi,

There is a possible bug in the output format of the fragmentation tables of the Sirius output
(the parent MF, C42H42O19 is correct):
As fragments and heavier isotopic peaks are co-occurring in the data, I would expect them to
be labelled according, however in the output table the isotopes are labelled as independent
chemical entities, which are wrongly labelled as a +[H] of the monoisotopic mass, see:

image

Additionally, the corresponding fragmentation tree seems mistaken - with the [M+1]+ and [M+2]+ taken as distinct
fragments and become parents of subsequent sub-trees:

image

java.io.IOException: Database have to be a directory of .csv xor .json files

Hi,

Trying to structure annotate vs. a local DB (since online connection to the CSI server is still jammed), I get the above error msg. - however the database is the direct result of applying the 'custom-db' stand-alone and contains numerous '.json.gz' files. I'm running now Sirius version 4.6.0.

A side issue - when running the 'custom-db' on a local structure DB of around 350K compounds I get a library folder with 57619 files. In contrary, when running the same 'custom-db' command but with the added option of uniting it with some other DBs:

--derive-from="COCONUT,KNAPSACK,CHEBI,KEGG,GNPS,PLANTCYC,SUPERNATURAL"

I get a new folder with exactly one additional file and very similar size.

Any additional info about how to properly run CSI with an internal DB and how to gen. unified custom-DBs would be welcome!

Thanks,
`

Sirius output files

Hello! I'd like to ask questions and make a few observations about the output files. I noticed a few inconsistencies with my data, and couldn't find answers anywhere. Hope you can help me out. I am using Sirius CLI (v.4.4.29) in ubuntu/linux. I've been running positive and negative mode data from environmental samples. Thanks in advance!

1 - Is there a way to find out which formulas/structures are predicted in silico or predicted from database matches?

2 - Why does Sirius output a partial InChIkey (InChIkey2D)?

3 - I've been compound_identifications.tsv as the final/summary output file. However, in my datasets, I noticed that the molecular formulas in the InChI and in the molecular formula column often don't match. I did some inspections comparing the structure_candidates.tsv and formula_candidates.tsv of each feature, and found that Sirius wasn't selecting the first ranked structure and formula candidate. I was wondering if there is a reason for that. I updated my scripts to obtain the top ranked structure and formula candidate from each feature instead of using that summary output file. With this adaptation, the molecular formula match with the structure (InChI column).

4 - I notived a few inconsistencies with PubChem ids. Some PubChem ids returned by Sirius don't exist when I search online.

5 - I also have got PubChem ids with a dot ., and searching for the id with the dot returns no value, and removing the dot including and excluding the numbers after the dot yields different compounds.

6 - I am using a program that needs the full InChIkey. I wrote a script to get that from PubChem (from those features that at least one PubChem id is available). Because I noticed the issues I mentioned previously, I search PubChem using the PubChem id, and try to match the InChI, Smiles and the partial InChIkey (InChIkey2D) given by Sirius with the resulting PubChem properties for that id. In many instances, these three resulting properties (InChI, Smiles, InChIkey) don't match with what is given by Sirius. This is specially complicated when there is more than one PubChem id for a single feature. Sometimes I get two ids with matching all three, or none. It would be great to get some insight about how to sort this out.

customize summary files

How to customize the sorting of summary files, e.g. using CSI:finger's similarity calculation as the primary rule

re-occuring "not a valid Project Location" error

Hi Sirius team,

Running the latest version from the command line (and as "system" call from within R) on Linux64bit, I keep getting a non indicative error message related to the output directory: "not a valid Project Location".
By re-iterating with different parameters I conclude that this error message occurs in the following conditions:

  • A project file already exists - but the "--recompute" option was not specified
  • A project file exists and the "--recompute" option is specified - but not all calculations have completed (i.e. maybe the project file is missing for a recompute and then this error is thrown)
  • A project file does not exist and "--recompute" was specified
  • (possibly) also a permission problem - but it's difficult to know because of the non-informative message.

I did set full permissions at my designated output folder and additionally I noticed the Sirius is independently writing to "/tmp" which is owned by "root" (!) - so I really I do not know what can cause this error.

Thanks,
Nir

sessionInfo()
R version 3.6.2 (2019-12-12)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Ubuntu 16.04.7 LTS

Matrix products: default
BLAS: /usr/lib/libblas/libblas.so.3.6.0
LAPACK: /usr/lib/lapack/liblapack.so.3.6.0

locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=he_IL.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=he_IL.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=he_IL.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=he_IL.UTF-8 LC_IDENTIFICATION=C

Result Interpretation - missing "Posterior Probability or Normalized Scores" in the TSV Result Files

Hello,

Thank you for your efforts in developing and updating SIRIUS, which is an amazing tool for Metabolite Identification.

For the "result output", the standardized directory structure is easy to understand. SIRIUS gives the high scoring formula identification and structure identification in the project space directory. However, I would also like to check the other possible outcomes from formula, structure, and canopus tools; the results from these tools are present in the Compound level directory.

Since I am using the CLI version, I obtain the results in TSV format. And the result tables for "formula", "structure", "predicted fingerprints" and "canopus" doesn't have a "probability scores" column or a column that gives the "normalized scores". However, if I load this project space in SIRIUS-GUI, there is a probability score or normalized score from 0-1 or 0-100%, which is easier to interpret rather than the SIRIUS or CSI-FingerID scores.

Is it possible to add those probability scores or normalized scores into the TSV result files for easier automation of the results? If there is documentation for the "result output" to understand the TSV files, that would be really helpful for the result interpretation. Also, there are some files named canopus_neg.tsv or csi_fingerid_neg.tsv? Can you also explain what "neg" means here?

Best Regards,
Mahnoor

Question/Request: offline (custom) databases

Hi guys,

I was wondering if it is possible to use an offline database with SIRIUS/CSI:FingerID? I tried a test DB created with the custom-db tool, but it seems data is still fetched from the servers.

Background: I am running SIRIUS on CI for automated patRoon tests. It may happen that connection issues make tests fail or slow down considerably, and it doesn't 'feel' very nice either that CI is abusing the CSI servers once in a while... With MetFrag I got around this by using local CSV databases, so I was hoping to do something similar for SIRIUS.

Thanks,
Rick

SIRIUS command line with MS1 only data?

We're currently evaluating how to use SIRIUS from/with R and our current workaround (until the REST API is ready - see also #11 ) is to export data from R into a .ms file and call the command line of SIRIUS passing these text files as input. We're trying this at present with MS1 only data (i.e. omitting the >ms2) - but the command line SIRIUS complains about the missing MS2 data. How can we run the command line with MS1 data only (if possible at all)?

Regarding the REST API - is there something available what we could test? Ideally something like provide MS1 data and get formulas back?

I'm including also @andreavicini here since he's the one looking into this at present.

[config] arguments

Hi,

Me again!

As I am trying to better understand and tune some parameters I had some issues with the following ones:

--MS1MassDeviation.allowedMassDeviation
--MS1MassDeviation.massDifferenceDeviation
--MS1MassDeviation.standardMassDeviation
--MS2MassDeviation.allowedMassDeviation
--MS2MassDeviation.standardMassDeviation

Whatever argument I try to give, it seems incorrect. Could it be that they are treated as characters instead of numeric?

I tried the following options:

sirius config --MS1MassDeviation.allowedMassDeviation=10.0 ppm --MS1MassDeviation.massDifferenceDeviation=5.0 ppm --MS1MassDeviation.standardMassDeviation=10.0 ppm --MS2MassDeviation.allowedMassDeviation=10.0 ppm --MS2MassDeviation.standardMassDeviation=10.0 ppm

leading to:

PicocliException: Could not set value (10.0) for option --MS1MassDeviation.allowedMassDeviation: java.lang.RuntimeException: de.unijena.bioinf.ms.properties.IllegalDefaultPropertyKeyException: Default value change finished with errors! Rollback previous default value for key MS1MassDeviation.allowedMassDeviation if possible. while processing argument at or before arg[1] '--MS1MassDeviation.allowedMassDeviation=10.0' in [config, --MS1MassDeviation.allowedMassDeviation=10.0, ppm, --MS1MassDeviation.massDifferenceDeviation=5.0, ppm, --MS1MassDeviation.standardMassDeviation=10.0, ppm, --MS2MassDeviation.allowedMassDeviation=10.0, ppm, --MS2MassDeviation.standardMassDeviation=10.0, ppm]: picocli.CommandLine$PicocliException: Could not set value (10.0) for option --MS1MassDeviation.allowedMassDeviation: java.lang.RuntimeException: de.unijena.bioinf.ms.properties.IllegalDefaultPropertyKeyException: Default value change finished with errors! Rollback previous default value for key MS1MassDeviation.allowedMassDeviation if possible.

then without the " ppm":

sirius config --MS1MassDeviation.allowedMassDeviation=10.0 --MS1MassDeviation.massDifferenceDeviation=5.0 --MS1MassDeviation.standardMassDeviation=10.0 --MS2MassDeviation.allowedMassDeviation=10.0 --MS2MassDeviation.standardMassDeviation=10.0

leading to:

PicocliException: Could not set value (10.0) for option --MS1MassDeviation.allowedMassDeviation: java.lang.RuntimeException: de.unijena.bioinf.ms.properties.IllegalDefaultPropertyKeyException: Default value change finished with errors! Rollback previous default value for key MS1MassDeviation.allowedMassDeviation if possible. while processing argument at or before arg[1] '--MS1MassDeviation.allowedMassDeviation=10.0' in [config, --MS1MassDeviation.allowedMassDeviation=10.0, --MS1MassDeviation.massDifferenceDeviation=5.0, --MS1MassDeviation.standardMassDeviation=10.0, --MS2MassDeviation.allowedMassDeviation=10.0, --MS2MassDeviation.standardMassDeviation=10.0]: picocli.CommandLine$PicocliException: Could not set value (10.0) for option --MS1MassDeviation.allowedMassDeviation: java.lang.RuntimeException: de.unijena.bioinf.ms.properties.IllegalDefaultPropertyKeyException: Default value change finished with errors! Rollback previous default value for key MS1MassDeviation.allowedMassDeviation if possible.

and finally without the ".0":

sirius config --MS1MassDeviation.allowedMassDeviation=10 --MS1MassDeviation.massDifferenceDeviation=5 --MS1MassDeviation.standardMassDeviation=10 --MS2MassDeviation.allowedMassDeviation=10 --MS2MassDeviation.standardMassDeviation=10
PicocliException: Could not set value (10) for option --MS1MassDeviation.allowedMassDeviation: java.lang.RuntimeException: de.unijena.bioinf.ms.properties.IllegalDefaultPropertyKeyException: Default value change finished with errors! Rollback previous default value for key MS1MassDeviation.allowedMassDeviation if possible. while processing argument at or before arg[1] '--MS1MassDeviation.allowedMassDeviation=10' in [config, --MS1MassDeviation.allowedMassDeviation=10, --MS1MassDeviation.massDifferenceDeviation=5, --MS1MassDeviation.standardMassDeviation=10, --MS2MassDeviation.allowedMassDeviation=10, --MS2MassDeviation.standardMassDeviation=10]: picocli.CommandLine$PicocliException: Could not set value (10) for option --MS1MassDeviation.allowedMassDeviation: java.lang.RuntimeException: de.unijena.bioinf.ms.properties.IllegalDefaultPropertyKeyException: Default value change finished with errors! Rollback previous default value for key MS1MassDeviation.allowedMassDeviation if possible.

Of course this is not the whole command, just for diagnostic purposes! Taking those parameters off the command runs 👍🏼

How to access CANOPUS confidence scores?

Hi again,

I've been using SIRIUS + CANOPUS from the command line to get potential compound classes for untargeted metabolomic data, but I can't figure out how to access the data that's available from the GUI. This kind of output is incredible and super informative, but I'd like to be able to access it programmatically:

image

Specifically, I'm interested in the posterior probability for each compound class. The classes themselves are available in the canopus_summary.tsv file that's written out for the project as a whole, but I'd like to filter out the low-confidence class estimations. I can't seem to find those values in the individual compound files either; the "canopus" folder contains only a .fpt file apparently containing raw floating-point values from an unknown process.

image

Any advice would be great!

Error when loading confidence SVMs

Hello and happy new year,

When running from command line with the following settings:

"sirius -i [input] -o [output] --recompute --ignore-formula formula --ppm-max-ms2=15 -e='CHNOPSCl[3]Br[2]Na' --candidates=10 --ilp-solver='GUROBI' structure --database pubchem canopus"

I keep getting these warnings - do they relate to an upcoming feature that needs some specific setup?

"Error when loading confidence SVMs or the bayesian network. Confidence SCore will not be available!"

Download

I'm so sorry to bother you,how should I download Sirius 4.5, it seems that there is a small problem that cannot be downloaded.

Best,
Kingphen

Input .mzXML file, but nothing happened, formular annotation on "MS1 only" supported?

I tried to load my .mzXML Data in Sirius, but no peak list was shown on the left side.
LC-MS .raw data was taken on QE, consisting of MS1 scan only, and was converted to .mzXML by ProteoWizard.
I'm wondering if Sirius can annotate MS1 data without fragmentation info provided? and is this (MS1 only) the cause of the problem (not loaded successfully)?

[Feature request] Add option to write all candidates in the summaries

Hi again,

Would be nice to have such an option directly for downstream uses of the candidates' list.
I think many people out there have custom bash scripts to cat their own summaries from the folders just because the "default" candidates are too restricted.

Best,

Edit: Having the ability to filter the N top candidates according to a given score, for example, the confidence score, would be even better! 😄

[warning] Exception in Unstable 'resolveAdducts' Code

Hi,

Since you wrote such explicit message, here it is:

SEVERE07:51:55 - Exception in Unstable 'resolveAdducts' Code. PLease report this problem. Using unmodified Tree!

Don't know what could have happened, tell me which details you need! :)

API available to interface sirius from R?

Dear all,

we're currently implementing and (trying to streamline) functionality for MS data analysis in R (the Spectra package is one example of that). On the to-do list are also tools to determine formulas and structural features in spectra - and here it would make more sense to use sirius for that instead of re-implementing everything in R. I was wondering if you have already an API to the web service (REST?) in place that I could play around with? I would e.g. have spectra as an Spectra object in R and e.g. would like to identify the most likely formula based on the isotope pattern.

I've seen the sirius-apis repository, but there seems to be little development lastly.

thanks for any feedback or suggestions

support for gzipped files

Hi!

Wonderful work on Sirius 4.5.0!

I am used to working with mzML.gz files with my other pipelines without problems, would it be possible to support importing them gzipped?

Best,

[lcms align]

Hi,

Me again, testing all the wonderful possibilities you offer!

I ran the LCMS-align on a single file and it gave me files containing info about peak shape and isotopic pattern quality as output.
When running it on multiple files however this information gets (or at least I guess so...) lost. Wouldn't it be possible to get a list of them among samples? (for example, peak shape good for sample 1, bad for sample 2, etc.)

EDIT: It comes from the F command...strangely, if you start a F command you have the info, else not, is this wanted?

Just having a quick look at it also seems to indicate that some "noise" is taken into account as features. (as it looks that there is no parameter available could it be that default options detect redundant "features" having absolutely no peak shape?)

I attach a screenshot where you can see an example of problematic ion being detected 324 times as "feature", where 1-2 times, in the beginning, could be ok but it is along with the whole chromatogram sadly.

Capture d’écran 2020-11-25 à 08 56 22

Thanks a lot again and congrats on all the great tools!

4.5.0 does not run from Linux/R

Hi guys,

Something strange is going on with the new 4.5.0 release on Linux when I try to run it from R.

When the sirius binary is executed, all kinds of Java options are prepended to the command line arguments, which obviously make the command fail. Example output:

> system2("/home/rick/Rproj/deps/sirius/bin/sirius", "-i")
INFO  15:45:40 - Sirius Workspace Successfull initialized at: /home/rick/.sirius-4.5
INFO  15:45:40 - You run SIRIUS 4.5.0
INFO  15:45:40 - Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v8.1.0, CPLEX-v12.7.1, COIN-OR-v1.17.3
INFO  15:45:40 - Treebuilder priorities are: [CLP, CPLEX, GUROBI, GLPK]
INFO  15:45:40 - CPU check done. 4 cores that handle 8 threads were found.
INFO  15:45:40 - Bug reporter initialized.
INFO  15:45:41 - Web API initialized.
INFO  15:45:41 - Running with following arguments: [-Djava.library.path=/home/rick/Rproj/deps/sirius/lib/app:/home/rick/Rproj/deps/sirius/bin, -Djava.launcher.path=/home/rick/Rproj/deps/sirius/bin, -Xms1G, -XX:MaxRAMPercentage=85, --illegal-access=permit, --add-opens, java.base/java.lang=ALL-UNNAMED, --add-opens, java.base/java.net=ALL-UNNAMED, -Djava.library.path=/home/rick/Rproj/deps/sirius/lib/app/../native, -javaagent:/home/rick/Rproj/deps/sirius/lib/app/agents-4.4.8.jar, -classpath, /home/rick/Rproj/deps/sirius/lib/app/sirius_cli-4.5.0.jar:/home/rick/Rproj/deps/sirius/lib/app/cdk-structgen-2.3.jar:/home/rick/Rproj/deps/sirius/lib/app/woodstox-core-5.0.3.jar:/home/rick/Rproj/deps/sirius/lib/app/cdk-fragment-2.3.jar:/home/rick/Rproj/deps/sirius/lib/app/cdk-cip-2.3.jar:/home/rick/Rproj/deps/sirius/lib/app/commons-configuration2-2.4.jar:/home/rick/Rproj/deps/sirius/lib/app/jakarta.xml.bind-api-2.3.3.jar:/home/rick/Rproj/deps/sirius/lib/app/GraphUtils-1.1.jar:/home/rick/Rproj/deps/sirius/lib/app/animal-sniffer-annotations-1.18.jar:/home/rick/Rproj/deps/sirius/lib/app/maven-artifact-3.5.0.jar:/home/rick/Rproj/deps/sirius/lib/app/jnati-deploy-0.4.jar:....

(output truncated).

When running from the shell no problems occur though. The problem can be reproduced with the patRoon docker image: https://hub.docker.com/r/patroonorg/patroonrs

If you need more details please let me know!

Thanks,
Rick

Windows CLI troubles

Hi guys,

As of SIRIUS 4.7 I get all kinds of exceptions when trying to run on Windows, both on my laptop and on AppVeyor

C:\Users\rick\Documents\Rproj\sirius>sirius -i C:\Users\rick\Documents\Rproj\sirius-demo-data\ms\Bicuculline.ms -o C:\Users\rick\Documents\Rproj\sirius-demo-data\out formula
INFO    08:56:54 - Sirius Workspace Successfull initialized at: C:\Users\rick\.sirius-4.7
INFO    08:56:54 - You run SIRIUS 4.7.3
INFO    08:56:54 - Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3
INFO    08:56:54 - Treebuilder priorities loaded from 'sirius.properties' are: [GUROBI, CPLEX, CLP, GLPK]
INFO    08:56:54 - CPU check done. 8 cores that handle 16 threads were found.
INFO    08:56:54 - Bug reporter initialized.
INFO    08:56:54 - Web API initialized.
INFO    08:56:55 - Running with following arguments: [-i, C:\Users\rick\Documents\Rproj\sirius-demo-data\ms\Bicuculline.ms, -o, C:\Users\rick\Documents\Rproj\sirius-demo-data\out, formula]
INFO    08:56:55 - Job manager successful initialized with 8 CPU thread(s) and 3 IO thread(s).
FINE    08:56:55 - <0>[InputExpanderJJob] Running post processing
FINE    08:56:55 - <0>[InputExpanderJJob] Running cleanup
INFO    08:56:55 - <1>[InputExpanderJJob] Expanding Input Files: 'C:\Users\rick\Documents\Rproj\sirius-demo-data\ms\Bicuculline.ms'...
INFO    08:56:55 - <1>[InputExpanderJJob] ...Input Files successfully expanded!
FINE    08:56:55 - <1>[InputExpanderJJob] Running post processing
FINE    08:56:55 - <1>[InputExpanderJJob] Running cleanup
WARNING 08:56:56 - Could not load GrbSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: gurobi/GRBException
WARNING 08:56:56 - Could not load GrbSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: gurobi/GRBException
WARNING 08:56:56 - Could not load GrbSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: gurobi/GRBException
WARNING 08:56:56 - Could not load CPLEXSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: ilog/concert/IloNumVar
WARNING 08:56:56 - Could not load CPLEXSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: ilog/concert/IloNumVar
WARNING 08:56:56 - Could not load CPLEXSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: ilog/concert/IloNumVar
WARNING 08:56:56 - Could not load Solver 'CLP': java.lang.UnsatisfiedLinkError: C:\Users\rick\Documents\Rproj\sirius\CLPModelWrapper_JNI.dll: Kan opgegeven procedure niet vinden
WARNING 08:56:56 - Could not load Solver 'CLP': java.lang.NoClassDefFoundError: Could not initialize class de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.CLPModel_JNI
WARNING 08:56:56 - Could not load Solver 'CLP': java.lang.NoClassDefFoundError: Could not initialize class de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.CLPModel_JNI
WARNING 08:56:56 - Could not find and load de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.GLPKSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.GLPKSolver
WARNING 08:56:56 - Could not find and load de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.GLPKSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.GLPKSolver
WARNING 08:56:56 - Could not find and load de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.GLPKSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v9.1.1, CPLEX-v12.7.1, COIN-OR-v1.17.3: de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.ilp.GLPKSolver
SEVERE  08:56:56 - Your system does not ship with any instantiatable ILP solver. Please install either CLP,  Gurobi or CPLEX to use SIRIUS.
SEVERE  08:56:56 - Your system does not ship with any instantiatable ILP solver. Please install either CLP,  Gurobi or CPLEX to use SIRIUS.
SEVERE  08:56:56 - Your system does not ship with any instantiatable ILP solver. Please install either CLP,  Gurobi or CPLEX to use SIRIUS.
SEVERE  08:56:56 - <28>[RecalibrationJob] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <27>[RecalibrationJob] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <26>[RecalibrationJob] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <17>[FasterTreeComputationInstance] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <18>[FasterTreeComputationInstance] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <19>[FasterTreeComputationInstance] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <16>[SiriusIdentificationJob] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <14>[SiriusIdentificationJob] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <15>[SiriusIdentificationJob] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <13>[SiriusSubToolJob | 1_Bicuculline_Bicuculline@368m/z] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <10>[SiriusSubToolJob | 0_Bicuculline_Bicuculline@368m/z] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <7>[SiriusSubToolJob | 2_Bicuculline_Bicuculline@368m/z] Failed!
java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance.recalibrate(FasterTreeComputationInstance.java:557)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:532)
        at de.unijena.bioinf.FragmentationTreeConstruction.computation.FasterTreeComputationInstance$RecalibrationJob.compute(FasterTreeComputationInstance.java:518)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.jjobs.BasicMasterJJob$1.compute(BasicMasterJJob.java:87)
        at java.base/java.util.concurrent.RecursiveTask.exec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

SEVERE  08:56:56 - <7>[SiriusSubToolJob | 2_Bicuculline_Bicuculline@368m/z] ToolChain Job failed due to: java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
SEVERE  08:56:56 - <10>[SiriusSubToolJob | 0_Bicuculline_Bicuculline@368m/z] ToolChain Job failed due to: java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
SEVERE  08:56:56 - <13>[SiriusSubToolJob | 1_Bicuculline_Bicuculline@368m/z] ToolChain Job failed due to: java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.FragmentationTreeConstruction.computation.tree.TreeBuilder.computeTree()" because "finalBuilder" is null
INFO    08:56:56 - Workflow has been finished!
INFO    08:56:56 - Executing Postprocessing...
INFO    08:56:56 - Writing summary files...
INFO    08:56:56 - Project-Space summaries successfully written!
INFO    08:56:56 - CLI shut down hook: SIRIUS is cleaning up threads and shuts down...


Please cite the following publications when using our tool:

When using the SIRIUS Software please cite the following paper:

Kai Dührkop, Markus Fleischauer, Marcus Ludwig, Alexander A. Aksenov, Alexey V. Melnik, Marvin Meusel, Pieter C. Dorrestein, Juho Rousu and Sebastian Böcker
SIRIUS4: a rapid tool for turning tandem mass spectra into metabolite structure information
Nat Methods, 16, 2019.  https://doi.org/10.1038/s41592-019-0344-8


Depending on the tools you have used please also cite:

Kai Dührkop, Louis-Félix Nothias, Markus Fleischauer, Raphael Reher, Marcus Ludwig, Martin A. Hoffmann, Daniel Petras, William H. Gerwick, Juho Rousu, Pieter C. Dorrestein and Sebastian Böcker
Systematic classification of unknown metabolites using high-resolution fragmentation mass spectra
Nature Biotechnology, 2020.  https://doi.org/10.1038/s41587-020-0740-8
(Cite if you are using: CANOPUS)

Yannick Djoumbou Feunang, Roman Eisner, Craig Knox, Leonid Chepelev, Janna Hastings, Gareth Owen, Eoin Fahy, Christoph Steinbeck, Shankar Subramanian, Evan Bolton, Russell Greiner, David S. Wishart
ClassyFire: automated chemical classification with a comprehensive, computable taxonomy
J Cheminf, 8, 2016.  https://doi.org/10.1186/s13321-016-0174-y
(Cite if you are using: CANOPUS)

Kai Dührkop, Huibin Shen, Marvin Meusel, Juho Rousu and Sebastian Böcker
Searching molecular structure databases with tandem mass spectra using CSI:FingerID
Proc Natl Acad Sci U S A, 112, 2015.  https://doi.org/10.1073/pnas.1509788112
(Cite if you are using: CSI:FingerID)

Sebastian Böcker and Kai Dührkop
Fragmentation trees reloaded
J Cheminform, 8, 2016.  https://doi.org/10.1186/s13321-016-0116-8
(Cite if you are using: Fragmentation Trees)

Sebastian Böcker, Matthias Letzel, Zsuzsanna Lipták and Anton Pervukhin
SIRIUS: Decomposing isotope patterns for metabolite identification
Bioinformatics, 25, 2009.  https://doi.org/10.1093/bioinformatics/btn603
(Cite if you are using: Isotope Pattern analysis)

Marcus Ludwig, Louis-Félix Nothias, Kai Dührkop, Irina Koester, Markus Fleischauer, Martin A. Hoffmann, Daniel Petras, Fernando Vargas, Mustafa Morsy, Lihini Aluwihare, Pieter C. Dorrestein, Sebastian Böcker
ZODIAC: database-independent molecular formula annotation using Gibbs sampling reveals unknown small molecules
bioRxiv, 2019.  https://doi.org/10.1101/842740
(Cite if you are using: ZODIAC)

Similar errors appear when running the .bat file. Any ideas?

Thanks,
Rick

Sirius similarity

Hello,

Can you please include a working example and/or a more elaborate documentation of the 'similarity' standalone function?
In particular, are inputs .ms/.mgf spectra files? Is the process similar to comparison of high-resolution fragmentation trees
(AKA der Hooft/Ric de Vos?)

Error in Linux executable vs MacOS executable

Hello!

I am using sirius exec both in my iOS and a linux machine with the same exact parameters but from an OpenMS wrapper (SiriusAdapter) with the following command:
SiriusAdapter -executable resources/Sirius/sirius/bin/sirius -in results/20210827_UMETAB219_POS_FPY12_Plate-2_MDNAWGS18_rep3/interim/sirius/PCfeature_nch_20210827_UMETAB219_POS_FPY12_Plate-2_MDNAWGS18_rep3.mzML -in_featureinfo results/20210827_UMETAB219_POS_FPY12_Plate-2_MDNAWGS18_rep3/interim/sirius/MFD_nch_20210827_UMETAB219_POS_FPY12_Plate-2_MDNAWGS18_rep3.featureXML -out_sirius results/20210827_UMETAB219_POS_FPY12_Plate-2_MDNAWGS18_rep3/interim/sirius/formulas_20210827_UMETAB219_POS_FPY12_Plate-2_MDNAWGS18_rep3.mzTab -preprocessing:filter_by_num_masstraces 2 -preprocessing:feature_only -sirius:profile orbitrap -sirius:db none -sirius:ions_considered "[M+H]+, [M-H2O+H]+, [M+Na]+, [M+NH4]+" -sirius:elements_enforced CHN[15]OS[4] -project:processors 2 -debug 3

which basically corresponds to:

sirius -in "path/to/temp.ms" -out "path/to/output.txt" preprocessing:filter_by_num_masstraces 2 -preprocessing:feature_only -sirius:profile orbitrap -sirius:db none -sirius:ions_considered "[M+H]+, [M-H2O+H]+, [M+Na]+, [M+NH4]+" -sirius:elements_enforced CHN[15]OS[4] -project:processors 2 -debug 3

I have several very complex files, some of which include a high number of high mass compounds (compound timeout is by default set to 100s) - for those files, it seems that sirius in macOS runs (completes the run in e.g. 57min) but in my linux system it produces the following error:

SEVERE  09:20:16 - <83601>[SiriusSubToolJob | 353_20211208_085100_metabotest2_99880_2__2162765726596644275-2509--2508--UNKNOWN@630m/z] ToolChain Job failed due to: java.lang.NullPointerException: Cannot invoke "de.unijena.bioinf.ChemistryBase.ms.ft.FTree.getTreeWeight()" because "solve.tree" is null
WARNING 09:22:11 - <83951>[SiriusSubToolJob | 445_20211208_085100_metabotest2_99880_2__7001155623839493666-2824--2823--UNKNOWN@1393m/z] ToolChain Job canceled due to: de.unijena.bioinf.jjobs.exceptions.TimeoutException: Timeout reached!

p.s. I am using Sirius 4.9.9 headless

Thank you in advance!
Efi

Formula decomposition of higher masses

Sirius team,

Apart from the blocking issues which seem (independently) be due to connection problems with the CSI server, I have a very slow convergence of the algorithm when running on .ms file of a larger compound of m/z=1388 corresponding with [M+NH4]+.
The running parameters where optimized for this situation - by reducing the PPM threshold and reserving sufficient resources - nevertheless the Sirius command line took roughly a day(!) to conclude, see:

sirius -i 015.ms -o ./Sirius/015 --cores=12 --ignore-formula formula --ppm-max=5 --ppm-max-ms2=15 -e='CHNOPSCl[3]Br[2]Na' --candidates=10 --ilp-solver='GUROBI'

The input spectra below, have you any idea? Maybe related to the Java run time parameters? Or to the large number of putative fragments (originating from DIA method)??

compound NP-008069
formula C61H94O34
parentmass 1388.59904067667
ionization [M+NH4]+

ms1
1371.57494392328 1025.9755859375
1372.57849610784 663.23046875
1373.56091308594 133.44140625
1373.58071729741 333.5439453125
1374.58309329047 97.9529418945312
1375.5654840212 39.0334777832031
1375.61694335938 30.9311218261719
1388.59904067667 1393.7451171875
1389.60537001044 919.021484375
1390.61263799646 394.663330078125
1391.02517184432 17.2550659179688
1391.61883311232 93.4871826171875
1391.64147949219 74.007080078125
1392.65447228716 23.4032440185547

ms2
83.0464075469008 245.248413085938
84.0492461711597 12.1519012451172
105.068158640417 32.4050598144531
111.042515340518 1430.7685546875
111.407310723258 8.61387634277344
111.443288110774 10.126579284668
111.49466964541 6.84843826293945
111.56425560776 8.10126495361328
111.654724121821 8.10126495361328
111.794356094135 6.07595062255859
111.880957345395 11.1485443115234
111.954912147972 15.1898727416992
112.047352787194 123.935729980469
112.483057235946 8.10126495361328
113.04924080486 18.2278442382812
133.101032172488 41.5189819335938
147.11757193408 53.6708984375
153.053653994456 2304.45703125
153.388392130322 9.11392211914062
153.516252004507 12.1139068603516
153.545457032096 8.71035003662109
153.593770181811 15.3144912719727
153.64470464468 19.5127868652344
153.704257084699 13.1645584106445
153.728306154381 7.65116882324219
153.769238996538 11.1392440795898
153.832549266069 10.6513290405273
153.871194687431 15.4863815307617
153.93441710211 12.716682434082
153.967132805929 9.68875122070312
154.059091006073 249.80126953125
154.119863921841 12.1519012451172
154.167065513166 8.40129089355469
154.204067041253 10.1253128051758
154.238483539865 8.60770416259766
154.287281503401 8.63239288330078
154.354295312583 9.11392211914062
154.442366571632 12.802001953125
154.458579268121 13.6596527099609
154.516618876556 7.53665161132812
154.597967058099 9.56630706787109
154.741877511563 7.60279083251953
154.867932118902 8.80154418945312
155.057186257394 33.417724609375
161.132132245247 39.7950744628906
171.066157321442 184.842407226562
172.068898882286 15.1898727416992
203.179434771839 439.214111328125
204.185131411275 77.8417358398438
205.195457121799 71.0940551757812
206.199091397854 13.1645584106445
213.076358931849 413.51806640625
214.081604128092 61.6261596679688
221.19191080542 56.7674255371094
225.150462624481 28.5277709960938
253.145769250348 30.3797454833984
271.017300561015 8.10126495361328
273.097346889741 1529.84765625
273.915130615234 16.1784820556641
274.104743725598 241.557006835938
274.313159180022 8.10126495361328
274.532276354022 8.10126495361328
274.801666259482 13.1645584106445
275.104747385923 55.3226013183594
275.667171499961 8.93072509765625
276.108852648378 7.22447967529297
327.01580132435 10.126579284668
335.223267414442 40.77490234375
375.12562966097 16.0544128417969
387.044061882768 31.8549346923828
388.041061401409 7.08860778808594
389.049219385066 13.3026580810547
390.044051096872 11.0856628417969
391.037421516486 13.8551330566406
429.045277913892 19.2405090332031
435.149311018644 180.959106445312
436.155138304358 42.5316467285156
437.156342045052 20.2531585693359
447.062735513126 41.5189819335938
448.059813189891 15.1898727416992
449.059782854491 33.7029724121094
451.053728262932 10.126579284668
459.063733139018 31.2515411376953
461.053361060316 10.3263168334961
489.076601895619 22.2784881591797
507.073951707729 14.4237823486328
513.172417463455 14.4203948974609
567.197453937355 62.7848205566406
568.195965237054 16.2025299072266
585.196779097862 16.6740417480469
637.323992485113 67.8480834960938
638.326947745576 33.417724609375
639.126516966879 73.3114013671875
641.128830943476 37.8892211914062
641.152369988391 32.8050537109375
647.219895535169 44.4820861816406
647.724347795395 13.1645584106445
648.213351767236 14.8246917724609
655.333107352198 220.65283203125
656.334681209509 95.7450561523438
677.236541863835 16.2025299072266
705.256645257799 22.1676177978516
707.238495741311 552.73828125
708.244755768619 203.0302734375
709.247389400702 114.836059570312
710.254508101981 26.5077514648438
712.293399741442 24.42236328125
713.244267236952 65.3881225585938
713.739835267102 55.22412109375
714.247355511125 82.9747314453125
714.746865060184 60.5936584472656
715.241382631612 49.7239685058594
715.734835319859 46.4164428710938
716.232969030739 10.9199066162109
716.753662479995 12.1519012451172
717.251519725418 38.7474060058594
727.313944260083 11.7802963256836
769.381899986102 25.3446044921875
787.373217106504 70.6663208007812
788.387105843535 32.4050598144531
805.408736998906 13.9015274047852
833.280428532967 24.7292022705078
839.285756703998 37.0708618164062
840.282628786684 15.9805755615234
841.288116921971 42.3271179199219
842.293898423669 16.7073364257812
843.318412584578 28.8607635498047
869.296843485573 453.271728515625
870.298953955147 186.107055664062
871.310912499797 67.4124145507812
872.321418289423 24.3453369140625
887.298386765163 27.2509918212891
909.414671463409 25.3164520263672
919.424468858016 16.1927032470703
927.423522949219 35.0611572265625
927.437877308387 40.5063171386719
928.426100877904 23.3436737060547
1001.33264226971 40.2743530273438
1020.35634155276 16.2025299072266
1071.47793216169 15.6688461303711
1072.48083496094 20.0883941650391
1089.48340305908 153.455444335938
1090.479354639 93.2432861328125
1091.4862340367 40.8655395507812
1106.44499180906 12.8054504394531
1107.48572357247 76.3225708007812
1108.4899059212 55.7180480957031
1124.52558032729 13.0770568847656
1160.38052034597 39.3897094726562
1160.39770507812 37.4783630371094
1161.39329244002 26.2115325927734
1221.51934349623 61.9869384765625
1222.29489839963 15.1898727416992
1222.49035644531 30.8860778808594
1222.53234863281 32.4050598144531
1223.54123535173 14.1772155761719
1239.5293695344 90.3782958984375
1240.53419873005 66.0807495117188
1241.52443343886 29.3670959472656
1256.55279828367 24.3453826904297
1292.43559755503 54.3342895507812
1293.45704348615 59.1096496582031
1294.4746067796 28.8607635498047
1332.48965731506 29.3670959472656
1332.53833007812 21.2658233642578
1333.01085486806 21.2658233642578
1333.50175548727 22.2784881591797
1333.9893951729 14.3023986816406
1353.57559841698 19.1224975585938
1354.55534323493 14.1149215698242
1371.57709521761 82.7237548828125
1372.58424410134 50.5753784179688
1373.57772084761 20.9331665039062

wrong formula in fragment spectrum and rare NaNs

Hello,

Using the CLI, I found some inconsistencies when specifying another adduct than [M+H]+. I am trying to figure out what's going here and I could use some help :-)

A minimal example:

input spectrum:

>parentmass 100.024448818631
>ionization [M+NH3+H]+
>ms1peaks
100.024448818631 92749.5607638889

>ms2peaks
100.075553894043 2571.09342447917

The command is run without any specials, other than setting ionization to [M+NH3+H]+ with the -i option.

Then looking at formula_candidates.tsv:

rank	molecularFormula	adduct	precursorFormula	TreeIsotope_Score	Tree_Score	Isotope_Score	explainedPeaks	explainedIntensity	medianMassError(ppm)	massError(ppm)
1	H2O5	[M + H3N + H]+	H5NO5	0.0	0.0	0.0	1	0.0	NaN	4.000087430558615

and the resulting fragment spectrum file, H5NO5_[M+H3N+H]+.tsv:

mz	intensity	rel.intensity	exactmass	formula	ionization
100.024449	0.00	0.00	82.997500	H2O5	[M + H]+

Questions/Remarks:

  1. What is the precursorFormula column supposed to be in the formula_candidates.tsv file? From the past I know that this column is always equal to molecularFormula when having [M+H]+ adducts. Is it simply always the deprotonated form?
  2. Bug: the medianMassError from formula_candidates.tsv gives a NaN here :(
  3. The file name of the spectrum file seems to match that of precursorFormula from the candidates file, is that always the case? Again, when using [M+H]+ this equals that of the molecularFormula.
  4. The ionization column in the spectrum file suddenly says [M + H]+.

Thanks,
Rick

Exporting results

Hi all,

Is there any way to export the results including all the results from the batch analysis?
I realized that the "Writing summary" function only contains 1 compound per feature. It would be great if I can extract all the results in a single file?

Running Sirius 4.8.2 through Qemistree

I am trying to run the latest version of Sirius (4.8.2), instead of 4.0.1, but although I've downloaded the newest version, the files are structured differently and I don't know how to reference the bin folder.

The Qemistree tutorial is set up like this;

qiime qemistree predict-fingerprints --p-sirius-path '/Users/briansedio/Documents/Sirius/sirius-osx64-4.0.1/bin'
--i-molecular-formulas molecular_formulas.qza
--p-ppm-max 20
--p-java-flags "-Djava.io.tmpdir=/Users/briansedio/Documents/QemUT/demo-qemistree/javatemp -Xms16G -Xmx64G"
--o-predicted-fingerprints fingerprints.qza

But for the Sirius 4.8.2, there is no Sirius/sirius-version/bin folder. Would you know how to modify that line to run Sirius 4.8.2 correctly?

Thank you very much,
Brian

Specifying enforced elements in .ms file

Hi, I would like to run the Sirius CLI in batch mode so that I can avoid having to call a new JVM for every formula calculation I am doing, but I need to be able to set different enforced elements for each individual spectrum input. I cannot seem to make this work within the .ms file format. I can of course use the -E flag within the CLI arguments, but then the same elemental alphabet will be applied across all calculations. However, when I specify >elements within the .ms files, the elemental alphabet seems to be treated analogous to the CLI argument -e (elements considered).

Perhaps I'm missing a feature? Please let me know if this is possible or if it could be implemented.

[Feature request] Add canopus_npc export

Hi guys,

Would be nice to have the

from canopus import Canopus
C = Canopus(sirius="sirius_projectspace")
C.npcSummary().to_csv("npc_summary.csv")

from Kai's repo directly integrated into SIRIUS, maybe as an optional argument...

Hope this makes sense, thank you for all your work!

Are naturally protonated [M]+ adducts correctly interpreted?

Hi,

I'm analyzing the MS spectra of a chemical standard glyco-benzofuran:

http://www.chemspider.com/Chemical-Structure.22370036.html

which seems to get naturally protonated in the MS - and so I defined the 'ionization' field in the input .ms file as [M]+:

compound NP-001626
formula C27H36O11
parentmass 536.22743870979
ionization [M]+

ms1
536.22743870979 381.23291015625
537.230671259965 195.141723632812
538.2336537032 50.3028564453125
539.237769343928 17.7765197753906_

Sirius accepts the [M]+ adduct in the input and output file names, e.g.: "C27H35O11_[M]+.tsv"

However, in the interpreted spectra and in the resulting formula candidates Sirius doesn't considers this setting and defaults to the '[M+H]+' adduct - resulting in a wrong chemical formula with one less proton:

-- | -- | -- | -- | -- | --
311.129975 | 50.84 | 3.46 | 311.127786 | C19H18O4 | [M + H]+
312.137327 | 32.89 | 2.24 | 312.135611 | C19H19O4 | [M + H]+
313.141775 | 65.65 | 4.46 | 313.143436 | C19H20O4 | [M + H]+
315.157055 | 88.66 | 6.03 | 315.159086 | C19H22O4 | [M + H]+
327.157783 | 397.81 | 27.04 | 327.159086 | C20H22O4 | [M + H]+
328.16423 | 93.28 | 6.34 | 328.166911 | C20H23O4 | [M + H]+
344.163271 | 59.12 | 4.02 | 344.161825 | C20H23O5 | [M + H]+
345.168496 | 1471.32 | 100 | 345.16965 | C20H24O5 | [M + H]+
346.174581 | 367.3 | 24.96 | 346.177475 | C20H25O5 | [M + H]+
506.213676 | 144.16 | 9.8 | 506.214649 | C26H33O10 | [M + H]+
518.215092 | 96.59 | 6.56 | 518.214649 | C27H33O10 | [M + H]+
536.227439 | 0 | 0 | 536.225213 | C27H35O11 | [M + H]+

and the true formula candidate, correctly ranked, is now wrongly assigned (true formula is C27H36O11):

rank molecularFormula adduct precursorFormula SiriusScore TreeScore
1 C27H35O11 [M]+ C27H35O11 84.9812761617617 84.9812761617617

BTW, I tries setting the '--ions-considered' to [M]+ only and have used the mos updated version, just in case, however, the results do not change.

P.S. I still have my fragmentation trees infiltrated with high resolution isopes - is the '--IsotopeMs2Settings FILTER' option already implemented?

Thanks!

CPU usage

Running sirius 4.0.1 with parameter --processors 1 uses more than 100% CPU (according to top).

This is a problem on restrictive HPC systems.

Windows headless CLI seems to ignore JAVA_HOME/PATH

Hi guys,

I want to run SIRIUS on AppVeyor (Windows) which has several JDKs/JREs installed by default. The usual way of setting %PATH% and %JAVA_HOME% to the right paths doesn't seem to work with the executable. Interestingly, it does work when executing java -jar sirius_cli_single_os-4.4.17.jar. The same occurs on my Windows machine. Is there any other way to override JAVA paths?

Thanks,
Rick

minimal work to obtain a CANOPUS annotation

Hi,

I would like to only compute compound classes for each of my spectra without the need for any molecular formula, structure, or whatever, what would be the shortest command line to do so? Is using an empty homemade DB an idea to go faster?

Best

Data conversion issue: mgf vs. mzML

Hi there.

I have acquired Agilent QTOF LC/MS data (in centroid mode) and converted it w/ msConvert into mgf and mzML.
I have then imported each converted file into Sirius GUI. Depending on the conversion format selected, I get different numbers of imported compounds/MS2. E.g. SIRIUS shows me 1700 MS/MS spectra / compounds for the mgf format, but only 40 for the mzML format. There were definitively more than 40 MS2 spectra acquired.

What could be the reason for this?

Cheers,
Thomas

Sirius issues

Hi! I sent an email about this, sorry for the spam but just wondering if you have any updates on this issue:

I am using PyOpenMS on MacOS (10.15.7) to call the SIRIUS CLI executable (4.6.2 - OpenMS THIRDPARTY) [1]. I am getting the following error:

SEVERE10:20:40 - Error when loading confidence SVMs or the bayesian network. Confidence SCore will not be available!

siriusCLI.zip
SIRIUS is stuck and not terminating the program afterwards.

This error occurs when calling the SIRIUS executable via the OpenMS python bindings, as well as when we use the SIRIUS CLI directly:

/Users/eeko/Desktop/software/THIRDPARTY/MacOS/64bit/Sirius/sirius --input /Users/eeko/Desktop/siriusCLI/sirius.ms --project /Users/eeko/Desktop/siriusCLI/sirius_out sirius

Strangely, it does not appear when using SIRIUS GUI (4.7.0) with the sirius.ms file. It also runs perfectly fine when using the CLI with the SiriusAdapter from OpenMS 2.6.0 nightly (2021-04-04) (it takes 20.67 s), which is very strange since it calls the SIRIUS executable from the THIRDPARTY file.

I have attached an example below.

It would be great if you could take a look!

Note:

  1. I am matching all parameters in pyOpenMS and the CLI
  2. I used different files to test whether it is an issue with the mzML file

[1] https://github.com/OpenMS/THIRDPARTY/tree/master/MacOS/64bit/Sirius

Could not load Custom Database ... DB seems to be corrupted and should be deleted and re-imported

I am experiencing a database error when trying to implement a custom database search.

The attached test fails with the following error:

SEVERE  11:40:46 - Could not load Custom Database 'db3'. DB seems to be corrupted and should be deleted and re-imported
java.io.IOException: Custom database 'db3' not found.
	at de.unijena.bioinf.chemdb.RestWithCustomDatabase.getCustomDb(RestWithCustomDatabase.java:209)
	at de.unijena.bioinf.chemdb.RestWithCustomDatabase.loadCompoundsByFormula(RestWithCustomDatabase.java:189)
	at de.unijena.bioinf.fingerid.FormulaJob.lambda$compute$0(FormulaJob.java:57)
	at de.unijena.bioinf.utils.NetUtils.tryAndWait(NetUtils.java:72)
	at de.unijena.bioinf.utils.NetUtils.tryAndWait(NetUtils.java:64)
	at de.unijena.bioinf.fingerid.FormulaJob.compute(FormulaJob.java:56)
	at de.unijena.bioinf.fingerid.FormulaJob.compute(FormulaJob.java:36)
	at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
	at de.unijena.bioinf.jjobs.BatchJJob.compute(BatchJJob.java:28)
	at de.unijena.bioinf.jjobs.BatchJJob.compute(BatchJJob.java:9)
	at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
	at java.base/java.util.concurrent.FutureTask.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)
#!/usr/bin/env bash

# This test works 
mkdir test1
cd test1
echo "CN1CCCC1C2=C[N+](=CC=C2)[O-]	id-01	Nicotin
CN1C=NC2=C1C(=O)N(C(=O)N2C)C	id-03	Caffein
CN1CCC2=CC3=C(C=C2C1C4C5=C(C6=C(C=C5)OCO6)C(=O)O4)OCO3 id-05 Bicculine" > candidates1.tsv

echo ">compound test1
>formula C8H10N4O2
>ionization [M+H]+
>parentmass 195.0877
>ms2
138.0661 3.693034
195.0877 100.000000" > test1.ms

sirius -i candidates1.tsv custom-db --output . --name db1
sirius -i test1.ms -o sirius_rst1 formula structure --database ./db1

cd ..

# ...this test also works 
mkdir test2
cp test1/test1.ms test2/test2.ms
cd test2

echo "NC(=O)c1ccc([N+](=O)[O-])cc1	ZESWUEBPRPGMTP	name1
NC(=O)c1cccc([N+](=O)[O-])c1	KWAYEPXDGHYGRW	name2
NC(=O)c1ccccc1[N+](=O)[O-]	KLGQWSOYKYFBTR	name3
COc1ccc2no[n+]([O-])c2c1	XCWFKHHSXPIDHN	name4
O=[N+]([O-])c1ccc(C=NO)cc1	WTLPAVBACRIHHC	name5
O=[N+]([O-])c1cccc(C=NO)c1	GQMMRLBWXCGBEV	name6
O=CNc1ccc([N+](=O)[O-])cc1	ZTCQFVRINYOPOH	name7" > candidates2.tsv

sirius -i candidates2.tsv custom-db --output . --name db2
sirius -i test2.ms -o sirius_rst2 formula structure --database ./db2

cd ..

# ...but this one fails 
mkdir test3
cp ./test2/candidates2.tsv ./test3/candidates3.tsv
cd test3
echo ">compound test3
>formula C7H6N2O3
>ionization [M+H]+
>parentmass 167.0451
>ms2 
  50.0153   332681.1
  51.0232  1177739.8
  52.0184    26185.3
   76.031    22813.9
  78.0338  1824839.5
  81.0335    18824.8
  92.0257    74763.5
  96.0444    41429.5
 120.0205    23742.8
 150.0186   14099669" > test3.ms

sirius -i candidates3.tsv custom-db --output . --name db3
sirius -i test3.ms -o sirius_rst3 formula structure --database ./db3

Installing the sirirus 4.4 Gui version

Hi SIRIRUS 4 developers,

I am having troubles in installing the sirirus 4.4 Gui version. The following errors pop up. Could you help to inspect the problem?

Thanks a lot.

Dong

Unexpected error!
org.openscience.cdk.exception.CDKException: Unable to load native code; net.sf.jnati.deploy.resolver.ArtefactNotFoundException: Artefact not found: jniinchi-1.03_1-WINDOWS-AMD64
at org.openscience.cdk.inchi.InChIGeneratorFactory.(InChIGeneratorFactory.java:87)
at org.openscience.cdk.inchi.InChIGeneratorFactory.getInstance(InChIGeneratorFactory.java:102)
at de.unijena.bioinf.ms.frontend.subtools.gui.GuiAppOptions$Flow$2.compute(GuiAppOptions.java:115)
at de.unijena.bioinf.ms.frontend.subtools.gui.GuiAppOptions$Flow$2.compute(GuiAppOptions.java:106)
at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:95)
at java.base/java.util.concurrent.FutureTask.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)
Caused by: net.sf.jniinchi.LoadNativeLibraryException: net.sf.jnati.deploy.resolver.ArtefactNotFoundException: Artefact not found: jniinchi-1.03_1-WINDOWS-AMD64
at net.sf.jniinchi.JniInchiWrapper.loadLibrary(JniInchiWrapper.java:98)
at org.openscience.cdk.inchi.InChIGeneratorFactory.(InChIGeneratorFactory.java:85)
... 8 more
Caused by: net.sf.jnati.deploy.resolver.ArtefactNotFoundException: Artefact not found: jniinchi-1.03_1-WINDOWS-AMD64
at net.sf.jnati.deploy.NativeArtefactLocator.getArtefact(NativeArtefactLocator.java:80)
at net.sf.jnati.deploy.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:47)
at net.sf.jnati.deploy.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:41)
at net.sf.jnati.deploy.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:37)
at net.sf.jniinchi.JniInchiWrapper.loadLibrary(JniInchiWrapper.java:84)
... 9 more

CLI slowdowns

Hi guys,

First of all congrats on the 4.4 release! Many new features to explore, that's for sure :-)

I am using the CLI version, but noticed two different slowdowns. First of all, it seems execution times ~doubled compared to 4.0.1. Results are different now, so I guess algorithms changed here and there. Still this will affect run times quite a bit with large batch calculations.

Secondly, the CLI tool bundled with GUI package seems to sometimes get stuck for ~1 minute after calculations with a message like SEVERE10:00:01 - CheckJob (5): Future wait of job was interrupted (Job Canceled)!. I haven't been able to pin point when this exactly happens. I tried different input data files, command-line option combinations, output folders that were or weren't removed prior to running SIRIUS...

Both situations I noticed on both Windows 10 and Ubuntu Linux. On the latter I made a script to quantify this better:

#/bin/bash

SIR40=~/Rproj/sirius-linux64-4.0.1/bin/sirius
SIRHL44=~/Rproj/sirius-linux64-headless-4.4.17/bin/sirius
SIR44=~/Rproj/sirius-linux64-4.4.17/bin/sirius

IN=~/Rproj/demo-data/ms/Bicuculline.ms
OUT=~/Rproj/demo-data/sirout

rm -rf $OUT && /usr/bin/time -po sir40.txt $SIR40 -o $OUT $IN
rm -rf $OUT && JAVA_HOME=~/Rproj/zulu11.39.15-ca-jre11.0.7-linux_x64 /usr/bin/time -po sirhl44.txt $SIRHL44 -o $OUT -i $IN formula
rm -rf $OUT && /usr/bin/time -po sir44.txt $SIR44 -o $OUT -i $IN formula

for i in {1..5}
do
    rm -rf $OUT && JAVA_HOME=~/Rproj/zulu11.39.15-ca-jre11.0.7-linux_x64 /usr/bin/time -po sirhl44_$i.txt $SIRHL44 -o $OUT -i $IN formula -p qtof -e CHNOP --ppm-max 5 -c 100
done

for i in {1..5}
do
    rm -rf $OUT && /usr/bin/time -po sir44_$i.txt $SIR44 -o $OUT -i $IN formula -p qtof -e CHNOP --ppm-max 5 -c 100
done

The first three tests highlight the first slowdown I described:

$ cat sir40.txt sirhl44.txt sir44.txt 
real 2.13
user 3.08
sys 0.41
real 4.78
user 7.85
sys 0.60
real 5.15
user 8.09
sys 0.68

For the second slowdown I delibaretely added more command-line options, as this seems to increase chances of getting stuck at the end of execution. With the headless version all is fine:

$ cat sirhl44_*
real 4.63
user 7.49
sys 0.51
real 4.64
user 7.77
sys 0.58
real 4.42
user 7.07
sys 0.60
real 4.80
user 7.71
sys 0.62
real 4.76
user 7.76
sys 0.61

For the GUI version not so much:

rick@rick-VirtualBox:~/Rproj$ cat sir44_*
real 65.71
user 8.88
sys 0.92
real 65.45
user 8.74
sys 0.77
real 65.01
user 8.90
sys 0.86
real 65.36
user 8.58
sys 0.70
real 5.51
user 8.57
sys 0.84

As seen from the last run you can see it doesn't always happen. The output below is from when a slowdown happens:

May 13, 2020 10:02:07 AM org.apache.commons.beanutils.FluentPropertyBeanIntrospector introspect
INFO: Error when creating PropertyDescriptor for public final void org.apache.commons.configuration2.AbstractConfiguration.setProperty(java.lang.String,java.lang.Object)! Ignoring this property.
INFO  10:02:07 - Sirius Workspace Successfull initialized at: /home/rick/.sirius
INFO  10:02:07 - You run SIRIUS 4.4.17
INFO  10:02:07 - Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v8.1.0, CPLEX-v12.7.1, COIN-OR-v1.17.3
INFO  10:02:07 - Treebuilder priorities are: [CPLEX, GUROBI, GLPK]
INFO  10:02:07 - CPU check done. 2 cores that handle 2 threads were found.
INFO  10:02:07 - Bug reporter initialized.
INFO  10:02:07 - Web API initialized.
INFO  10:02:07 - Application Core started
INFO  10:02:07 - Swing Job MANAGER initialized! 2 : 2
INFO  10:02:08 - CDK InChIGeneratorFactory configured.
INFO  10:02:08 - Running with following arguments: [-o, /home/rick/Rproj/demo-data/sirout, -i, /home/rick/Rproj/demo-data/ms/Bicuculline.ms, formula, -p, qtof, -e, CHNOP, --ppm-max, 5, -c, 100]
WARNING10:02:10 - Could not load CPLEXSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v8.1.0, CPLEX-v12.7.1, COIN-OR-v1.17.3
WARNING10:02:10 - Could not load GrbSolver! Sirius was compiled with the following ILP solvers: GLPK-v1.7.0 (included), Gurobi-v8.1.0, CPLEX-v12.7.1, COIN-OR-v1.17.3
INFO  10:02:11 - Workflow has been finished!
INFO  10:02:11 - Executing Postprocessing...
INFO  10:02:11 - Writing summary files...
INFO  10:02:11 - Project-Space summaries successfully written!
INFO  10:02:11 - CLI shut down hook: SIRIUS is cleaning up threads and shuts down...
INFO  10:02:11 - Shutting down JobManager
INFO  10:02:11 - Awaiting termination of JobManager
SEVERE10:02:11 - CheckJob (5): Future wait of job was interrupted (Job Canceled)!


Please cite the following publications when using our tool:

Kai Dührkop, Markus Fleischauer, Marcus Ludwig, Alexander A. Aksenov, Alexey V. Melnik, Marvin Meusel, Pieter C. Dorrestein, Juho Rousu, and Sebastian Böcker.
SIRIUS 4: a rapid tool for turning tandem mass spectra into metabolite structure information.
Nat methods, 16, 2019. https://doi.org/10.1038/s41592-019-0344-8

Marcus Ludwig, Louis-Félix Nothias, Kai Dührkop, Irina Koester, Markus Fleischauer, Martin A. Hoffmann, Daniel Petras, Fernando Vargas, Mustafa Morsy, Lihini Aluwihare, Pieter C. Dorrestein, Sebastian Böcker
ZODIAC: database-independent molecular formula annotation using Gibbs sampling reveals unknown small molecules.
bioRxiv, 842740, 2019. https://doi.org/10.1101/842740 (Cite this for ZODIAC)

Kai Dührkop and Sebastian Böcker.
Fragmentation trees reloaded.
J Cheminform, 8:5, 2016. http://dx.doi.org/10.1007/978-3-319-16706-0_10 (Cite this for fragmentation pattern analysis and fragmentation tree computation)

Kai Dührkop, Huibin Shen, Marvin Meusel, Juho Rousu, and Sebastian Böcker.
Searching molecular structure databases with tandem mass spectra using CSI:FingerID.
Proc Natl Acad Sci U S A, 112(41):12580-12585, 2015. http://dx.doi.org/10.1073/pnas.1509788112 (Cite this when using CSI:FingerID)

Sebastian Böcker, Matthias C. Letzel, Zsuzsanna Lipták and Anton Pervukhin.
SIRIUS: decomposing isotope patterns for metabolite identification.
Bioinformatics (2009) 25 (2): 218-224. https://doi.org/10.1093/bioinformatics/btn603 (Cite this for isotope pattern analysis)

Please let me know if you need more information.

Thanks,
Rick

Blocking issues

Hi Sirius team,

After a few weeks of flow-less runs, I started to repeatedly get warnings related to scoring of the fragmentation trees, such as:

There is a large gap between the optimal solution and the score of the computed fragmentation tree: Gap is 1.3559191947010163E-7 for a score of 55.503432884

...and immediately after:

FasterTreeComputationInstance (101): ExactJob: Score of C7H26N9O4 differs significantly from recalculated score: 95.49730043266138 vs 88.2112108354583 with tree size is 0.5 and root score is -2.05843558645278 and 0.5 sort key is score 95.49730043266138

..worst, the program started to block and I have to kill the process or close the terminal to stop it - it seems somehow related to the jvm settings and I notice that the program is not using the Swap at all - but riding on the free RAM. When stopping I get:

java.lang.InterruptedException
at java.base/java.lang.Object.wait(Native Method)
at java.base/java.lang.Object.wait(Unknown Source)
at java.desktop/sun.awt.AWTAutoShutdown.activateBlockerThread(Unknown Source)
at java.desktop/sun.awt.AWTAutoShutdown.notifyThreadBusy(Unknown Source)
at java.desktop/java.awt.EventQueue$6.run(Unknown Source)
at java.desktop/java.awt.EventQueue$6.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.desktop/java.awt.EventQueue.initDispatchThread(Unknown Source)
at java.desktop/java.awt.EventQueue.postEventPrivate(Unknown Source)
at java.desktop/java.awt.EventQueue.postEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.invokeLater(Unknown Source)
at ca.odell.glazedlists.impl.swing.SwingThreadProxyEventList.schedule(SwingThreadProxyEventList.java:36)
at ca.odell.glazedlists.impl.gui.ThreadProxyEventList.listChanged(ThreadProxyEventList.java:119)
at ca.odell.glazedlists.event.ListEventAssembler$ListEventFormat.fire(ListEventAssembler.java:434)
at ca.odell.glazedlists.event.ListEventAssembler$ListEventFormat.fire(ListEventAssembler.java:430)
at ca.odell.glazedlists.event.SequenceDependenciesEventPublisher$SubjectAndListener.firePendingEvent(SequenceDependenciesEventPublisher.java:469)
at ca.odell.glazedlists.event.SequenceDependenciesEventPublisher.fireEvent(SequenceDependenciesEventPublisher.java:365)
at ca.odell.glazedlists.event.ListEventAssembler.commitEvent(ListEventAssembler.java:326)
at ca.odell.glazedlists.ObservableElementList.elementChanged(ObservableElementList.java:433)
at ca.odell.glazedlists.impl.beans.BeanConnector$PropertyChangeHandler.propertyChange(BeanConnector.java:240)
at java.desktop/java.beans.PropertyChangeSupport.fire(Unknown Source)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at de.unijena.bioinf.jjobs.SwingJJobContainer.propertyChange(SwingJJobContainer.java:71)
at de.unijena.bioinf.jjobs.JJobsPropertyChangeSupport.lambda$fire$1(JJobsPropertyChangeSupport.java:261)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at de.unijena.bioinf.jjobs.JJobsPropertyChangeSupport.fire(JJobsPropertyChangeSupport.java:259)
at de.unijena.bioinf.jjobs.JJobsPropertyChangeSupport.firePropertyChange(JJobsPropertyChangeSupport.java:252)
at de.unijena.bioinf.jjobs.BasicJJob.firePropertyChange(BasicJJob.java:269)
at de.unijena.bioinf.jjobs.BasicJJob.updateProgress(BasicJJob.java:275)
at de.unijena.bioinf.jjobs.BasicJJob.updateProgress(BasicJJob.java:283)
at de.unijena.bioinf.jjobs.ProgressJJob.updateProgress(ProgressJJob.java:7)
at de.unijena.bioinf.jjobs.BasicJJob.doFailHandling(BasicJJob.java:133)
at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:108)
at java.base/java.util.concurrent.FutureTask.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)

X11 DISPLAY error on remote linux server

I am running the sirius command line tool (SIRIUS 4.7.4) from a remote linux server. I am using a folder of mzXML files as input. When running the following command:

sirius -i test_spec/ -o sirius_test_spec --maxmz=600 lcms-align sirius zodiac fingerid canopus

I get this error:

SEVERE  00:12:17 - Unexpected Error!
java.lang.ExceptionInInitializerError
        at de.unijena.bioinf.projectspace.GuiProjectSpaceManager.<init>(GuiProjectSpaceManager.java:80)
        at de.unijena.bioinf.projectspace.GuiProjectSpaceManagerFactory.create(GuiProjectSpaceManagerFactory.java:39)
        at de.unijena.bioinf.projectspace.GuiProjectSpaceManagerFactory.create(GuiProjectSpaceManagerFactory.java:35)
        at de.unijena.bioinf.projectspace.GuiProjectSpaceManagerFactory.create(GuiProjectSpaceManagerFactory.java:31)
        at de.unijena.bioinf.projectspace.ProjectSpaceManagerFactory.create(ProjectSpaceManagerFactory.java:35)
        at de.unijena.bioinf.ms.frontend.subtools.CLIRootOptions.configureProjectSpace(CLIRootOptions.java:183)
        at de.unijena.bioinf.ms.frontend.subtools.CLIRootOptions.getProjectSpace(CLIRootOptions.java:147)
        at de.unijena.bioinf.ms.frontend.subtools.lcms_align.LcmsAlignSubToolJob.<init>(LcmsAlignSubToolJob.java:60)
        at de.unijena.bioinf.ms.frontend.subtools.lcms_align.LcmsAlignOptions.makePreprocessingJob(LcmsAlignOptions.java:33)
        at de.unijena.bioinf.ms.frontend.subtools.lcms_align.LcmsAlignOptions.makePreprocessingJob(LcmsAlignOptions.java:28)
        at de.unijena.bioinf.ms.frontend.workflow.WorkflowBuilder$ParseResultHandler.handle(WorkflowBuilder.java:210)
        at de.unijena.bioinf.ms.frontend.workflow.WorkflowBuilder$ParseResultHandler.handle(WorkflowBuilder.java:190)
        at picocli.CommandLine$AbstractParseResultHandler.handleParseResult(CommandLine.java:2073)
        at picocli.CommandLine.parseWithHandlers(CommandLine.java:2454)
        at picocli.CommandLine.parseWithHandler(CommandLine.java:2389)
        at de.unijena.bioinf.ms.frontend.Run.parseArgs(Run.java:75)
        at de.unijena.bioinf.ms.frontend.SiriusCLIApplication.run(SiriusCLIApplication.java:109)
        at de.unijena.bioinf.ms.frontend.SiriusGUIApplication$1.compute(SiriusGUIApplication.java:84)
        at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
        at de.unijena.bioinf.ms.frontend.SiriusGUIApplication.main(SiriusGUIApplication.java:98)
Caused by: java.awt.HeadlessException:
No X11 DISPLAY variable was set,
but this program performed an operation which requires it.
        at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(Unknown Source)
        at java.desktop/java.awt.Window.<init>(Unknown Source)
        at java.desktop/java.awt.Frame.<init>(Unknown Source)
        at java.desktop/javax.swing.JFrame.<init>(Unknown Source)
        at de.unijena.bioinf.ms.gui.mainframe.MainFrame.<init>(MainFrame.java:139)
        at de.unijena.bioinf.ms.gui.mainframe.MainFrame.<clinit>(MainFrame.java:63)
        ... 20 more

When running the same command from my local windows machine with the windows version (SIRIUS 4.7.4) it does work. I tried setting my DISPLAY value to listen to my local machine but this didn't help.

Any idea what is going wrong here? Maybe some setting on my remote server that is not configured properly?

unexpected error when starting gui

I got unexpected errors below when starting "sirius-gui.exe" in my laptop (fine on a different PC). Tried to update JAVA but problem remains. Any ideas on how to fix this? Thanks!

Unexpected error!
java.lang.NullPointerException: Cannot invoke "String.length()" because "" is null
at java.base/sun.nio.fs.WindowsPathParser.parse(Unknown Source)
at java.base/sun.nio.fs.WindowsPathParser.parse(Unknown Source)
at java.base/sun.nio.fs.WindowsPath.parse(Unknown Source)
at java.base/sun.nio.fs.WindowsFileSystem.getPath(Unknown Source)
at java.base/java.nio.file.Path.of(Unknown Source)
at java.base/java.nio.file.Paths.get(Unknown Source)
at de.unijena.bioinf.chemdb.SearchableDatabases.getDatabaseDirectory(SearchableDatabases.java:61)
at de.unijena.bioinf.chemdb.SearchableDatabases.getCustomDatabaseDirectory(SearchableDatabases.java:52)
at de.unijena.bioinf.chemdb.SearchableDatabases.loadCustomDatabases(SearchableDatabases.java:148)
at de.unijena.bioinf.chemdb.SearchableDatabases.getCustomDatabases(SearchableDatabases.java:130)
at de.unijena.bioinf.chemdb.SearchableDatabases.getCustomDatabases(SearchableDatabases.java:125)
at de.unijena.bioinf.chemdb.SearchableDatabases.getAvailableDatabases(SearchableDatabases.java:141)
at de.unijena.bioinf.ms.frontend.subtools.gui.GuiAppOptions$Flow$2.compute(GuiAppOptions.java:140)
at de.unijena.bioinf.ms.frontend.subtools.gui.GuiAppOptions$Flow$2.compute(GuiAppOptions.java:128)
at de.unijena.bioinf.jjobs.BasicJJob.call(BasicJJob.java:120)
at java.base/java.util.concurrent.FutureTask.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)

Spectrum ID and input file names in result files

Hi,

I would like to make a suggestion for an addition to the result files. I can not find the ID of the input spectra as well as the filename of the input file in the resulting mzTab file or in any other result file, besides these information somewhat hidden in the 'evidence_input_id'.
I am using .mgf files as input. My problem here is, that all dots and underscores are stripped from the TITLE (e.g. mgf_name.scan_id.scan_id.charge) field in the .mgf file and it is a bit cumbersome to re-extract the required information. Would it be possible to add these information in e.g. the 'SME' part of the file, as these entries point directly to single input spectra?

Cheers,
Johannes

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.