SPLASH: The Spectral Hash Identifier

View on GitHub

SPLASH

Welcome to the SPLASH Validation and Computational Page

What is the SPLASH?

The SPLASH is an unambiguous, database-independent spectral identifier, just as the InChIKey is designed to serve as a unique identifier for chemical structures. It contains separate blocks that define different layers of information, separated by dashes. For example, the full SPLASH of a caffeine mass spectrum above is splash10-0002-0900000000-b112e4e059e1ecf98c5f. The first block is the SPLASH identifier, the second and third are summary blocks, and the fourth is the unique hash block.

The SPLASH began as the MoNA (Massbank of North America) hash, designed to identify duplicate spectra within the database. This idea developed further during the 2015 Metabolomics conference, where the SPLASH collaboration was formed. Currently, the specification has been formalized for mass spectrometry data. Additional specifications for IR, UV and NMR spectrometry are planned.

If you would like to contribute to the development of the SPLASH, report an issue, or suggest improvements, please visit our GitHub Repository and create a new Issue or Pull Request.

What can I use SPLASH for?

The primary usage of the SPLASH is as a database identifier for unique spectra, and can thereby be used as an easy lookup tool and for cross-reference identification. It also allows for coarse similarity comparisons without any knowledge of the spectra themselves. We hope that developers will adopt the SPLASH into their systems so that we may easily discover overlap between mass spectral databases and begin to use it to reference spectra between publications.

Where can I find the SPLASH specification?

The SPLASH for mass spectrometry has been published in Nature Biotechnology and the source code for reference implementations is freely available on our GitHub Repository.

Citing SPLASH:

Wohlgemuth, G, et al., SPLASH, a Hashed Identifier for Mass Spectra. Nature Biotechnology 34, 1099-101 (2016).

Available implementations of the SPLASH algorithm:
Language Source Validated
Java source code
C++ source code
Python source code
C# source code
R source code
Ruby source code
Scala source code
Who is using SPLASH?

Currently the following software packages and databases have implemented the SPLASH:

Name Type
MoNA (MassBank of North America) database/repository
MassBank database/repository
HMDB (Human Metabolome Database) database
GNPS (Global National Products Social Molecular Networking) database
MetaboLights database
mzCloud database
HUPO Mass Spectrometry Ontology mass spectrometry controlled vocabulary
BinBase database/software
BinView software
MS-DIAL software
MSDK (Mass Spectrometry Development Kit) programming framework
MZmine programming framework
RMassBank MS Processing Workflow
Bioclipse programming framework
SPLASH Your Spectra

To 'SPLASH' your spectra easily, we provide you with a simple REST api, this can be easily utilized from any programming language and so allows you to compute the splash as easily as possible, without the need of providing your own implementation

Request URL:
http://splash.fiehnlab.ucdavis.edu/splash/it
the request needs to be done, as POST with a JSON load.
Example load
{
    "ions":
        [
                {
                    "mass": 100,
                    "intensity": 1
                },
                {
                    "mass": 101,
                    "intensity": 2
                },
                {
                    "mass": 102,
                    "intensity": 3
                }
         ],
         "type": "MS"
}
                    

The type codes are as followed (please note that at this time, only the MS SPLASH is available):

  1. MS
  2. NMR
  3. UV
  4. IR
  5. RAMAN
Example response

Upon complication of your request, your response should be a SPLASH code:

splash10-0udi-0900000000-f5bf6f6a4a1520a35d4f
Validate Your SPLASH Implementation

Since we plan on only maintaining a limited set of reference implementation, we are providing a simple REST-based tool to easily validate your implementation against the reference implementation. This does not mean you should not developed your own suite of test's to ensure your API works as desired.

The main advantage of the validation api is to test that your SPLASH implementation produces results consistent with the reference implementation

Request URL:
http://splash.fiehnlab.ucdavis.edu/splash/validate
the request needs to be done, as POST with a JSON load.
Example load

This is an example for a validate object, send to the validation system. Please be aware that you need to provide all the fields.

{
    "spectrum": {
        "ions":
            [
                {
                    "mass": 100,
                    "intensity": 1
                },
                {
                    "mass": 101,
                    "intensity": 2
                },
                {
                    "mass": 102,
                    "intensity": 3
                }
            ],
            "type": "MS"
    },
    "splash":"splash10-0udi-0900000000-f5bf6f6a4a1520a35d4f"
}
            
Example response

The following is an example validation response:

{
    "request": {
        "spectrum": {
            "origin": None,
            "ions": [
                {"mass": 100.0, "intensity": 1.0},
                {"mass": 101.0, "intensity": 2.0},
                {"mass": 102.0, "intensity": 3.0}
            ],
            "type": "MS"
        },
        "splash": "splash10-0udi-0900000000-f5bf6f6a4a1520a35d4f"
    },
    "validationSuccessful": true,
    "referenceSplash": "splash10-0udi-0900000000-f5bf6f6a4a1520a35d4f"
 }