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.
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.
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:
| Language | Source | Validated |
|---|---|---|
| Java | source code | |
| C++ | source code | |
| Python | source code | |
| C# | source code | |
| R | source code | |
| Ruby | source code | |
| Scala | source code |
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 |
| Wikidata | database |
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:
Note: Please be sure to use https when submitting POST
requests.
https://splash.fiehnlab.ucdavis.edu/splash/itthe 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):
- MS
- NMR
- UV
- IR
- RAMAN
Example response
Upon complication of your request, your response should be a SPLASH code:
splash10-0udi-0900000000-f5bf6f6a4a1520a35d4f
Format Examples:
100:1 101:2 102:3
100 1;101 2;102 3
100 1
101 2
102 3
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:
https://splash.fiehnlab.ucdavis.edu/splash/validatethe 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"
}