SIRIUS LC-MS/MS Analysis Framework

repository·stable·Indexed 41 days ago

https://github.com/sirius-ms/sirius

A Java-based software framework for the analysis of LC-MS/MS data of metabolites and small molecules. It features isotope pattern analysis, fragmentation tree computation, and integration with tools such as CSI:FingerID, CANOPUS, and MSNovelist. The ecosystem includes a GUI, CLI, a REST-based middleware (Sirius Nightsky), and a Java SDK for programmatic interaction.

Tokens
220.5K
Snippets
360
Records
456
Agent score
51%

What's inside SIRIUS

  1. Overview of RunsApi

    stable

    The RunsApi provides endpoints for managing and retrieving 'runs' within a specific project-space in SIRIUS. It supports operations such as retrieving specific runs, paginating through runs, searching for runs, and managing tags associated with runs. Note that some tagging operations are marked as [EXPERIMENTAL] and may change in future updates.

    All URIs are relative to http://localhost:8888.

  2. Manage GUI instances via GuiApi

    stable

    The GuiApi allows you to programmatically control the SIRIUS Graphical User Interface (GUI). You can open new GUI instances for specific project-spaces, list currently running GUI windows managed by the local SIRIUS instance, or close existing GUI instances.

    Note: getGuis only returns GUI windows managed by the current SIRIUS instance; it will not show clients connected from a separate process.

    All URIs are relative to http://localhost:8888.

  3. Integrate CSI:FingerID, CANOPUS, and MSNovelist web services

    stable

    SIRIUS (both GUI and CLI) provides seamless integration with the following web services:

    • CSI:FingerID
    • CANOPUS
    • MSNovelist

    Workflow:

    1. Fragmentation trees and spectra are uploaded directly from SIRIUS to the web services.
    2. Results are retrieved from the service and displayed within the SIRIUS interface.

    API Access for Training Structures: You can access training structures for CSI:FingerID's predictors via the following endpoints:

    • Positive ion mode: https://www.csi-fingerid.uni-jena.de/v3.0/api/fingerid/trainingstructures?predictor=1
    • Negative ion mode: https://www.csi-fingerid.uni-jena.de/v3.0/api/fingerid/trainingstructures?predictor=2
    https://www.csi-fingerid.uni-jena.de/v3.0/api/fingerid/trainingstructures?predictor=1
  4. Understand the AnnotatedSpectrum data model

    stable

    The AnnotatedSpectrum object represents a mass spectrum model enriched with peak annotations derived from fragmentation trees and Epimetheus substructure annotations.

    Key characteristics:

    • Molecular Formula & Adducts: The spectrum's molecular formula and adduct match those of the corresponding molecular formula candidate and FragmentationTree.
    • Fragment Data: Fragment molecular formulas and adducts correspond to the FragmentNodes within the FragmentationTree.
    • Peak Annotations: The peaks property contains a list of AnnotatedPeak objects, which may include additional annotations like molecular formulas.
    • Intensity Normalization: While the object provides several normalization factors (e.g., maxNormFactor, sumNormFactor), spectra are always returned with raw intensities. You should use the provided factors to normalize intensities on the fly.
  5. How compound search queries will work (Future Syntax)

    stable

    While compound-level indexing is currently not implemented (meaning searchQuery returns 405 METHOD_NOT_ALLOWED), the following Lucene-based syntax is planned for future use.

    Supported Clause Types

    • Term: field:term (e.g., tags.MyTagA:sample)
    • Phrase: field:"phrase" (e.g., tags.MyTagA:"Some Text")
    • Regular Expression: field:/regex/ (e.g., tags.MyTagA:/[mb]oat/)
    • Comparison: field<value or field>value (e.g., tags.MyTagB<3)
    • Range:
      • Open/Closed: field:[* TO 3]
      • Semi-closed: field:{* TO 3}

    Logical Operators

    • Grouping: Use parentheses ( ) to group clauses.
    • Joining: Use AND / OR or && / ||.

    Data Types and Formats

    • Namespace: Tag-based fields are prefixed with tags. (e.g., tags.MyTagA).
    • Date: yyyy-MM-dd (e.g., 2024-01-01)
    • Time: HH:mm:ss (e.g., 12:00:00)
    • Types: Supports text, integer, double, boolean, date, and time.
    // Example of the planned complex filter syntax:
    tags.city:"new york" AND tags.ATextTag:/[mb]oat/ AND tags.count:[1 TO *] OR tags.realNumberTag<=3.2
  6. How to use Lucene filter syntax in searchQuery

    stable

    The searchQuery parameter in getAlignedFeaturesPage supports Lucene syntax for complex filtering.

    Supported Clause Types

    • Term: fieldName:term (e.g., tags.MyTagA:sample)
    • Phrase: fieldName:"phrase in quotes" (e.g., name:"Bicuculline methiodide")
    • Regular Expression: fieldName:/regex/ (e.g., tags.MyTagA:/[mb]oat/)
    • Comparison: fieldName<value or fieldName>value (e.g., ionMass<300)
    • Range:
      • Open: fieldName:[start TO end] (e.g., ionMass:[300 TO 400])
      • Semi-closed: fieldName:{start TO end}
    • Boolean: fieldName:true or fieldName:false (e.g., hasMsMs:true)
    • Value-less Tags: fieldName:* or fieldName:true (e.g., tags.MyTagA:*)

    Grouping and Logic

    • Grouping: Use brackets ( ) to group clauses.
    • Logical Operators: Use AND, OR, &&, or || to join clauses.

    Field Access

    • Indexed Properties: Direct field names like ionMass, name, quality.
    • Annotations: Use dot notation (e.g., topAnnotations.structureAnnotation.structureName).
    • Project Tags: Prefix with tags. (e.g., tags.MyTag).

    Example Query

    ionMass:[300 TO 400] AND quality:GOOD AND topAnnotations.compoundClassAnnotation.npcPathway:"Alkaloids" AND tags.city:"new york" OR tags.MyDateTag:[2023-10-01 TO 2023-12-24] OR tags.time<10:00:00
  7. Understand the PagedModelCompound data structure

    stable

    The PagedModelCompound is a data structure used to represent a paginated collection of Compound objects. It encapsulates both the actual data items and the metadata required to navigate through different pages of results.

    It contains two primary optional properties:

    • content: A List<Compound> containing the items for the current page.
    • page: A PageMetadata object containing pagination details (such as current page number, total pages, etc.).
  8. Understand Isotope Pattern Analysis in SIRIUS

    stable

    SIRIUS uses high-resolution mass spectrometry data to deduce molecular formulas by ranking isotope patterns.

    How it works:

    1. Preprocessing: The mass spectrometer output (list of peaks with masses and abundances) is processed.
    2. Formula Identification: While accurate masses can identify elemental compositions, high-resolution isotope patterns provide the necessary accuracy to distinguish between multiple possible formulas in higher mass regions.
  9. SIRIUS License information

    stable

    Starting with version 4.4.27, SIRIUS is licensed under the GNU Affero General Public License (AGPL v3).

    If you integrate SIRIUS into other software, the developers strongly encourage making the usage of SIRIUS and the relevant literature citations transparent to your users.