001//  Copyright 2019 nils.hoffmann.
002//
003//  Licensed under the Apache License, Version 2.0 (the "License");
004//  you may not use this file except in compliance with the License.
005//  You may obtain a copy of the License at
006//
007//       http://www.apache.org/licenses/LICENSE-2.0
008//
009//  Unless required by applicable law or agreed to in writing, software
010//  distributed under the License is distributed on an "AS IS" BASIS,
011//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012//  See the License for the specific language governing permissions and
013//  limitations under the License.
014package de.isas.lipidomics.domain;
015
016import de.isas.lipidomics.palinom.exceptions.ConstraintViolationException;
017import java.lang.String;
018import java.util.Arrays;
019import java.util.List;
020import java.util.Optional;
021
022/**
023 * This class was generated by the LipidClassGenerator.
024 *
025 * Enumeration of lipid classes. The shorthand names / abbreviations are used to
026 * look up the lipid class association of a lipid head group. We try to map each
027 * abbreviation and synonyms thereof to LipidMAPS main class. However, not all
028 * described head groups are categorized in LipidMAPS, or only occur in other
029 * databases, so they do not have such an association at the moment.
030 *
031 * Example: Category=Glyerophospholipids maps to Class=Glycerophosphoinositols
032 * (PI)
033 *
034 * @author nils.hoffmann
035 */
036public enum LipidClass {
037    SP_3P_SULFO_LACCER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C12H20O13S", java.util.Arrays.asList("(3'-sulfo)LacCer")),
038    SP_FUC_IGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C24H41O19", java.util.Arrays.asList("(Fuc)iGb3Cer")),
039    SP_1_O_BEHENOYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C22H43O", java.util.Arrays.asList("1-O-behenoyl-Cer")),
040    SP_1_O_CARBOCEROYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C28H55O", java.util.Arrays.asList("1-O-carboceroyl-Cer")),
041    SP_1_O_CEROTOYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C26H51O", java.util.Arrays.asList("1-O-cerotoyl-Cer")),
042    SP_1_O_EICOSANOYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C20H39O", java.util.Arrays.asList("1-O-eicosanoyl-Cer")),
043    SP_1_O_LIGNOCEROYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C24H47O", java.util.Arrays.asList("1-O-lignoceroyl-Cer")),
044    SP_1_O_MYRISTOYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C14H27O", java.util.Arrays.asList("1-O-myristoyl-Cer")),
045    SP_1_O_PALMITOYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C16H31O", java.util.Arrays.asList("1-O-palmitoyl-Cer")),
046    SP_1_O_STEAROYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C18H35O", java.util.Arrays.asList("1-O-stearoyl-Cer")),
047    SP_1_O_TRICOSANOYL_CER(LipidCategory.SP, "Acylceramides [SP0204]", 2, "2", "C70H59O", java.util.Arrays.asList("1-O-tricosanoyl-Cer")),
048    FA_10_HDOHE(LipidCategory.FA, "Other Docosanoids [FA0400]", 0, "0", "C22H32O3", java.util.Arrays.asList("10-HDoHE")),
049    FA_11_HDOHE(LipidCategory.FA, "Other Docosanoids [FA0400]", 0, "0", "C22H32O3", java.util.Arrays.asList("11-HDoHE")),
050    FA_11_HETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O3", java.util.Arrays.asList("11-HETE")),
051    FA_11_12_DHET(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H34O4", java.util.Arrays.asList("11,12-DHET", "11,12-DiHETrE")),
052    FA_11_12_EET(LipidCategory.FA, "Epoxyeicosatrienoic acids [FA0308]", 0, "0", "C20H32O3", java.util.Arrays.asList("11(12)-EET", "11,12-EpETrE")),
053    FA_12_HEPE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosapentaenoic acids [FA0307]", 0, "0", "C20H30O3", java.util.Arrays.asList("12-HEPE")),
054    FA_12_HETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O3", java.util.Arrays.asList("12-HETE")),
055    FA_12_HHTRE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatrienoic acids [FA0305]", 0, "0", "C17H28O3", java.util.Arrays.asList("12-HHTrE")),
056    FA_12_OXOETE(LipidCategory.FA, "Fatty acids and conjugates [FA01]", 0, "0", "C20H30O3", java.util.Arrays.asList("12-OxoETE")),
057    FA_12_13_EPOME(LipidCategory.FA, "Other Octadecanoids [FA0200]", 0, "0", "C18H32O3", java.util.Arrays.asList("12(13)-EpOME")),
058    FA_13_HODE(LipidCategory.FA, "Other Octadecanoids [FA0200]", 0, "0", "C18H32O3", java.util.Arrays.asList("13-HODE")),
059    FA_13_HOTRE(LipidCategory.FA, "Other Octadecanoids [FA0200]", 0, "0", "C18H30O3", java.util.Arrays.asList("13-HOTrE")),
060    FA_14_15_DHET(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H34O4", java.util.Arrays.asList("14,15-DHET", "14,15-DiHETrE")),
061    FA_14_15_EET(LipidCategory.FA, "Epoxyeicosatrienoic acids [FA0308]", 0, "0", "C20H32O3", java.util.Arrays.asList("14(15)-EET", "14,15-EpETrE")),
062    FA_14_15_EPETE(LipidCategory.FA, "Other Eicosanoids [FA0300]", 0, "0", "C20H30O3", java.util.Arrays.asList("14(15)-EpETE")),
063    FA_15_HEPE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosapentaenoic acids [FA0307]", 0, "0", "C20H30O3", java.util.Arrays.asList("15-HEPE")),
064    FA_15_HETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O3", java.util.Arrays.asList("15-HETE")),
065    FA_15D_PGJ2(LipidCategory.FA, "Prostaglandins [FA0301]", 0, "0", "C20H28O3", java.util.Arrays.asList("15d-PGJ2")),
066    FA_16_HDOHE(LipidCategory.FA, "Other Docosanoids [FA0400]", 0, "0", "C22H32O3", java.util.Arrays.asList("16-HDoHE")),
067    FA_16_HETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O3", java.util.Arrays.asList("16-HETE")),
068    FA_18_HEPE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosapentaenoic acids [FA0307]", 0, "0", "C20H30O3", java.util.Arrays.asList("18-HEPE")),
069    FA_5_HEPE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosapentaenoic acids [FA0307]", 0, "0", "C20H30O3", java.util.Arrays.asList("5-HEPE")),
070    FA_5_HETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O3", java.util.Arrays.asList("5-HETE")),
071    FA_5_HPETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O4", java.util.Arrays.asList("5-HpETE")),
072    FA_5_OXOETE(LipidCategory.FA, "Fatty acids and conjugates [FA01]", 0, "0", "C20H30O3", java.util.Arrays.asList("5-OxoETE")),
073    FA_5_12_DIHETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O4", java.util.Arrays.asList("5,12-DiHETE")),
074    FA_5_6_DIHETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O4", java.util.Arrays.asList("5,6-DiHETE")),
075    FA_5_6_15_LXA4(LipidCategory.FA, "Lipoxins [FA0304]", 0, "0", "C20H32O5", java.util.Arrays.asList("5,6,15-LXA4")),
076    FA_5_6_EET(LipidCategory.FA, "Epoxyeicosatrienoic acids [FA0308]", 0, "0", "C20H32O3", java.util.Arrays.asList("5(6)-EET", "5,6-EpETrE")),
077    GP_6_AC_GLC_GP(LipidCategory.GP, "Glycosylglycerophospholipids [GP14]", 2, "2", "C11H19O12P", java.util.Arrays.asList("6-Ac-Glc-GP")),
078    FA_8_HDOHE(LipidCategory.FA, "Other Docosanoids [FA0400]", 0, "0", "C22H32O3", java.util.Arrays.asList("8-HDoHE")),
079    FA_8_HETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O3", java.util.Arrays.asList("8-HETE")),
080    FA_8_9_DHET(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H34O4", java.util.Arrays.asList("8,9-DHET", "8,9-DiHETrE")),
081    FA_8_9_EET(LipidCategory.FA, "Epoxyeicosatrienoic acids [FA0308]", 0, "0", "C20H32O3", java.util.Arrays.asList("8(9)-EET", "8,9-EpETrE")),
082    FA_9_HEPE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosapentaenoic acids [FA0307]", 0, "0", "C20H30O3", java.util.Arrays.asList("9-HEPE")),
083    FA_9_HETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C20H32O3", java.util.Arrays.asList("9-HETE")),
084    FA_9_HODE(LipidCategory.FA, "Other Octadecanoids [FA0200]", 0, "0", "C18H32O3", java.util.Arrays.asList("9-HODE")),
085    FA_9_HOTRE(LipidCategory.FA, "Other Octadecanoids [FA0200]", 0, "0", "C18H30O3", java.util.Arrays.asList("9-HOTrE")),
086    FA_9_10_EPOME(LipidCategory.FA, "Other Octadecanoids [FA0200]", 0, "0", "C18H32O3", java.util.Arrays.asList("9(10)-EpOME")),
087    AA(LipidCategory.FA, "Unsaturated fatty acids [FA0103]", 0, "0", "C20H32O2", java.util.Arrays.asList("AA", "Arachidonic acid", "Arachidonic Acid")),
088    AC_O_9_GD1A(LipidCategory.SP, "Globoside", 2, "2", "C50H78N3O37", java.util.Arrays.asList("Ac-O-9-GD1a")),
089    AC_O_9_GT1B(LipidCategory.SP, "Globoside", 2, "2", "C61H94N4O45", java.util.Arrays.asList("Ac-O-9-GT1b")),
090    AC_O_9_GT3(LipidCategory.SP, "Globoside", 2, "2", "C47H71N3O35", java.util.Arrays.asList("Ac-O-9-GT3")),
091    AC2SGL(LipidCategory.SL, "Acyltrehaloses [SL03]", 2, "2", "C20H36O14S", java.util.Arrays.asList("AC2SGL")),
092    ALPHA_LA(LipidCategory.FA, "Fatty acids and conjugates [FA01]", 0, "0", "", java.util.Arrays.asList("alpha-LA", "ALA")),
093    ANACARD(LipidCategory.PK, "Anacardic acids and derivatives [PK1504]", 2, "2", "", java.util.Arrays.asList("ANACARD")),
094    BMP(LipidCategory.GP, "Monoacylglycerophosphomonoradylglycerols [GP0410]", 4, "4", "C6H11O8P", java.util.Arrays.asList("BMP")),
095    BRANCHED_FORSSMAN(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C48H80N3O35", java.util.Arrays.asList("Branched-Forssman")),
096    CAR(LipidCategory.FA, "Fatty acyl carnitines [FA0707]", 2, "2", "", java.util.Arrays.asList("CAR")),
097    CATECHOL(LipidCategory.PK, "Alkyl catechols and derivatives [PK1502]", 2, "2", "", java.util.Arrays.asList("CATECHOL")),
098    CDPDAG(LipidCategory.GP, "CDP-diacylglycerols [GP1301]", 2, "2", "C12H19N3O13P2", java.util.Arrays.asList("CDPDAG", "CDPDG", "CDP-DG", "CDP-DAG")),
099    CER(LipidCategory.SP, "Ceramides [SP02]", 2, "2", "H", java.util.Arrays.asList("Cer", "Ceramide")),
100    CERP(LipidCategory.SP, "Ceramide 1-phosphates [SP0205]", 2, "2", "H2O3P", java.util.Arrays.asList("CerP", "C1P")),
101    CL(LipidCategory.GP, "Glycerophosphoglycerophosphoglycerols [GP12]", 4, "4", "C9H18O13P2", java.util.Arrays.asList("CL")),
102    COA(LipidCategory.FA, "Fatty acyl CoAs [FA0705]", 1, "1", "C21H35N7O16P3S", java.util.Arrays.asList("CoA")),
103    CPA(LipidCategory.GP, "Glycerophosphoinositolglycans [GP15]", 1, "1", "C3H6O5P", java.util.Arrays.asList("CPA")),
104    DAG(LipidCategory.GL, "Diacylglycerols [GL0201]", 3, "2", "C3H5O3", java.util.Arrays.asList("DAG", "DG")),
105    DAT(LipidCategory.SL, "Acyltrehaloses [SL03]", 2, "2", "C15H26O11", java.util.Arrays.asList("DAT")),
106    DGCC(LipidCategory.GL, "Other Glycerolipids [GL00]", 2, "2", "C10H19NO6", java.util.Arrays.asList("DGCC")),
107    DGDG(LipidCategory.GL, "Glycosyldiradylglycerols [GL05]", 2, "2", "C15H26O13", java.util.Arrays.asList("DGDG")),
108    DHA(LipidCategory.FA, "Unsaturated fatty acids [FA0103]", 0, "0", "C22H32O2", java.util.Arrays.asList("DHA", "Docosapentaenoic acid")),
109    DHDG(LipidCategory.GL, "Dihexosyldiacylglycerol", 2, "2", "C15H26O13", java.util.Arrays.asList("DHDG")),
110    DLCL(LipidCategory.GP, "Glycerophosphoglycerophosphoglycerols [GP12]", 4, "2", "C9H16O13P2", java.util.Arrays.asList("DLCL")),
111    DMPE(LipidCategory.GP, "Dimethylphosphatidylethanolamine", 2, "2", "C7H16NO6P", java.util.Arrays.asList("DMPE")),
112    DSGG(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C54H86N3O41", java.util.Arrays.asList("DSGG")),
113    EPA(LipidCategory.FA, "Unsaturated fatty acids [FA0103]", 0, "0", "C20H30O2", java.util.Arrays.asList("EPA", "Eicosapentaenoic acid")),
114    EPC(LipidCategory.SP, "Ceramide phosphoethanolamines [SP0302]", 2, "2", "C2H7NO3P", java.util.Arrays.asList("EPC", "PE-Cer")),
115    FA(LipidCategory.FA, "Fatty acids and conjugates [FA01]", 1, "1", "HO", java.util.Arrays.asList("FA")),
116    FAHFA(LipidCategory.FA, "Wax monoesters [FA0701]", 0, "0", "", java.util.Arrays.asList("FAHFA")),
117    FMC_5(LipidCategory.SP, "Simple Glc series [SP0501]", 2, "2", "C16H21O10", java.util.Arrays.asList("FMC-5")),
118    FMC_6(LipidCategory.SP, "Neutral glycosphingolipids [SP05]", 2, "2", "C9H18O11P", java.util.Arrays.asList("FMC-6")),
119    FORSSMAN(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C34H57N2O25", java.util.Arrays.asList("Forssman")),
120    FUC_BRANCHED_FORSSMAN(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C54H90N3O39", java.util.Arrays.asList("Fuc-Branched-Forssman")),
121    FUC_GA1(LipidCategory.SP, "Globoside", 2, "2", "C32H54NO24", java.util.Arrays.asList("Fuc-GA1")),
122    FUC_GD1B(LipidCategory.SP, "Globoside", 2, "2", "C54H86N3O40", java.util.Arrays.asList("Fuc-GD1b")),
123    FUC_GM1(LipidCategory.SP, "Globoside", 2, "2", "C43H70N2O32", java.util.Arrays.asList("Fuc-GM1")),
124    FUC_GM1_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C43H70N2O33", java.util.Arrays.asList("Fuc-GM1(NeuGc)")),
125    FUC_IGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C24H41O19", java.util.Arrays.asList("Fuc-iGb3Cer")),
126    FUC_GAL_GM1(LipidCategory.SP, "Acidic glycosphingolipids [SP06]", 2, "2", "C49H80N2O37", java.util.Arrays.asList("Fuc(Gal)-GM1")),
127    FUC_GAL_GAL_IGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C44H74NO34", java.util.Arrays.asList("Fuc(Gal)Gal-iGb4Cer")),
128    FUCGALGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C30H51O24", java.util.Arrays.asList("FucGalGb3Cer")),
129    GA1(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C26H44NO20", java.util.Arrays.asList("GA1")),
130    GA2(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C20H34NO15", java.util.Arrays.asList("GA2")),
131    GAL_GD1B(LipidCategory.SP, "Globoside", 2, "2", "C54H86N3O41", java.util.Arrays.asList("Gal-GD1b")),
132    GAL_IGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C32H54NO25", java.util.Arrays.asList("Gal-iGb4Cer")),
133    GAL_FUC_GA1(LipidCategory.SP, "Globoside", 2, "2", "C38H64NO29", java.util.Arrays.asList("Gal(Fuc)-GA1")),
134    GAL_FUC_GD1B(LipidCategory.SP, "Globoside", 2, "2", "C60H96N3O45", java.util.Arrays.asList("Gal(Fuc)-GD1b")),
135    GALGAL_GD1B(LipidCategory.SP, "Globoside", 2, "2", "C60H96N3O46", java.util.Arrays.asList("GalGal-GD1b")),
136    GALGALGALGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C36H61O30", java.util.Arrays.asList("GalGalGalGb3Cer")),
137    GALGALGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C30H51O25", java.util.Arrays.asList("GalGalGb3Cer")),
138    GALGALNAC_GM1B_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C51H83N3O39", java.util.Arrays.asList("GalGalNAc-GM1b(NeuGc)")),
139    GALGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C24H41O20", java.util.Arrays.asList("GalGb3Cer")),
140    GALGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C32H54NO25", java.util.Arrays.asList("GalGb4Cer")),
141    GALGLCNAC_GALGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C46H77N2O35", java.util.Arrays.asList("GalGlcNAc-GalGb4Cer")),
142    GALNAC_GD1A(LipidCategory.SP, "Globoside", 2, "2", "C56H89N4O41", java.util.Arrays.asList("GalNAc-GD1a")),
143    GALNAC_GD1A_NEUAC_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C56H89N4O42", java.util.Arrays.asList("GalNAc-GD1a(NeuAc/NeuGc)")),
144    GALNAC_GD1A_NEUGC_NEUAC(LipidCategory.SP, "Globoside", 2, "2", "C56H89N4O42", java.util.Arrays.asList("GalNAc-GD1a(NeuGc/NeuAc)")),
145    GALNAC_GM1(LipidCategory.SP, "Globoside", 2, "2", "C45H73N3O33", java.util.Arrays.asList("GalNAc-GM1")),
146    GALNAC_GM1B(LipidCategory.SP, "Globoside", 2, "2", "C45H73N3O33", java.util.Arrays.asList("GalNAc-GM1b")),
147    GALNAC_GM1B_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C45H73N3O34", java.util.Arrays.asList("GalNAc-GM1b(NeuGc)")),
148    GALNACGAL_FUC_GA1(LipidCategory.SP, "Globoside", 2, "2", "C46H77N2O34", java.util.Arrays.asList("GalNAcGal(Fuc)-GA1")),
149    GALNACGALGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C32H54NO25", java.util.Arrays.asList("GalNAcGalGb3Cer")),
150    GB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C18H31O15", java.util.Arrays.asList("GB3Cer", "Gb3Cer")),
151    GB4(LipidCategory.SP, "Neutral glycosphingolipids [SP05]", 2, "2", "C26H44NO20", java.util.Arrays.asList("GB4", "Gb4")),
152    GB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C26H44NO20", java.util.Arrays.asList("GB4Cer", "Tetrahexosylceramide", "Gb4Cer")),
153    GD1(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C48H76N3O36", java.util.Arrays.asList("GD1")),
154    GD1A(LipidCategory.SP, "Ganglioside GD1a(d18:1(4E))", 2, "2", "C48H76N3O36", java.util.Arrays.asList("GD1a")),
155    GD1A_ALPHA(LipidCategory.SP, "Ganglioside GD1a alpha(d18:1(4E))", 2, "2", "C48H76N3O36", java.util.Arrays.asList("GD1a alpha")),
156    GD1A_NEUAC_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C48H76N3O36", java.util.Arrays.asList("GD1a(NeuAc/NeuGc)")),
157    GD1A_NEUGC_NEUAC(LipidCategory.SP, "Globoside", 2, "2", "C48H76N3O37", java.util.Arrays.asList("GD1a(NeuGc/NeuAc)")),
158    GD1A_NEUGC_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C48H76N3O38", java.util.Arrays.asList("GD1a(NeuGc/NeuGc)")),
159    GD1B(LipidCategory.SP, "Ganglioside GD1b(d18:1(4E))", 2, "2", "C48H76N3O36", java.util.Arrays.asList("GD1b")),
160    GD1C(LipidCategory.SP, "Ganglioside GD1c(d18:1(4E))", 2, "2", "C48H76N3O36", java.util.Arrays.asList("GD1c")),
161    GD1C_NEUGC_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C48H76N3O38", java.util.Arrays.asList("GD1c(NeuGc/NeuGc)")),
162    GD2(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C42H66N3O31", java.util.Arrays.asList("GD2")),
163    GD3(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C34H55N2O26", java.util.Arrays.asList("GD3")),
164    GLC_DG(LipidCategory.GL, "Glycosyldiradylglycerols [GL05]", 2, "2", "", java.util.Arrays.asList("Glc-DG")),
165    GLC_GP(LipidCategory.GP, "Diacylglycosylglycerophospholipids [GP1401]", 2, "2", "C9H17O11P", java.util.Arrays.asList("Glc-GP")),
166    GLCNAC_GALGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C40H67N2O30", java.util.Arrays.asList("GlcNAc-GalGb4Cer")),
167    GLCNACGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C26H44NO20", java.util.Arrays.asList("GlcNAcGb3Cer")),
168    GLOBO_A(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C46H77N2O34", java.util.Arrays.asList("Globo-A")),
169    GLOBO_B(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C44H74NO34", java.util.Arrays.asList("Globo-B")),
170    GLOBO_H(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C38H64NO29", java.util.Arrays.asList("Globo-H")),
171    GLOBO_LEX_9(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C52H87N2O39", java.util.Arrays.asList("Globo-Lex-9")),
172    GM1(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C37H60N2O28", java.util.Arrays.asList("GM1")),
173    GM1_ALPHA(LipidCategory.SP, "Globoside", 2, "2", "C37H60N2O28", java.util.Arrays.asList("GM1 alpha")),
174    GM1_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C37H60N2O28", java.util.Arrays.asList("GM1(NeuGc)")),
175    GM1B(LipidCategory.SP, "Ganglioside GM1b(d18:1(4E))", 2, "2", "C37H60N2O28", java.util.Arrays.asList("GM1b")),
176    GM1B_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C37H60N2O29", java.util.Arrays.asList("GM1b(NeuGc)")),
177    GM2(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C31H50N2O23", java.util.Arrays.asList("GM2")),
178    GM2_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C31H50N2O24", java.util.Arrays.asList("GM2(NeuGc)")),
179    GM3(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C23H38NO18", java.util.Arrays.asList("GM3")),
180    GM4(LipidCategory.SP, "Gangliosides [SP0601]", 2, "2", "C17H28NO13", java.util.Arrays.asList("GM4")),
181    GP_NAE(LipidCategory.FA, "Glycerophosphoethanolamine", 0, "0", "C5H12NO6P", java.util.Arrays.asList("GP-NAE")),
182    GP1(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C81H124N6O60", java.util.Arrays.asList("GP1")),
183    GP1C(LipidCategory.SP, "Ganglioside GP1c(d18:1(4E))", 2, "2", "C81H124N6O60", java.util.Arrays.asList("GP1c")),
184    GP1C_ALPHA(LipidCategory.SP, "Ganglioside GP1c alpha(d18:1(4E))", 2, "2", "C81H124N6O60", java.util.Arrays.asList("GP1c alpha")),
185    GQ1(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C70H108N5O52", java.util.Arrays.asList("GQ1")),
186    GQ1B(LipidCategory.SP, "Ganglioside GQ1b(d18:1(4E))", 2, "2", "C70H108N5O52", java.util.Arrays.asList("GQ1b")),
187    GQ1B_ALPHA(LipidCategory.SP, "Ganglioside GQ1b alpha(d18:1(4E))", 2, "2", "C70H108N5O52", java.util.Arrays.asList("GQ1b alpha")),
188    GQ1C(LipidCategory.SP, "Ganglioside GQ1c(d18:1(4E))", 2, "2", "C70H108N5O52", java.util.Arrays.asList("GQ1c")),
189    GT1(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C59H92N4O44", java.util.Arrays.asList("GT1")),
190    GT1A(LipidCategory.SP, "Ganglioside GT1a(d18:1(4E))", 2, "2", "C59H92N4O44", java.util.Arrays.asList("GT1a")),
191    GT1A_ALPHA(LipidCategory.SP, "Ganglioside GT1a alpha(d18:1(4E))", 2, "2", "C59H92N4O44", java.util.Arrays.asList("GT1a alpha")),
192    GT1B(LipidCategory.SP, "Ganglioside GT1b(d18:1(4E))", 2, "2", "C59H92N4O44", java.util.Arrays.asList("GT1b")),
193    GT1B_ALPHA(LipidCategory.SP, "Globoside", 2, "2", "C59H92N4O44", java.util.Arrays.asList("GT1b alpha")),
194    GT1B_ALPHA_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C59H92N4O45", java.util.Arrays.asList("GT1b alpha(NeuGc)")),
195    GT1C(LipidCategory.SP, "Ganglioside GT1c(d18:1(4E))", 2, "2", "C59H92N4O44", java.util.Arrays.asList("GT1c")),
196    GT2(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C53H82N4O39", java.util.Arrays.asList("GT2")),
197    GT3(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C45H69N3O34", java.util.Arrays.asList("GT3")),
198    HEX2CER(LipidCategory.SP, "Neutral glycosphingolipids [SP05]", 2, "2", "C12H21O10", java.util.Arrays.asList("Hex2Cer", "LacCer")),
199    HEX3CER(LipidCategory.SP, "Neutral glycosphingolipids [SP05]", 2, "2", "C18H31O15", java.util.Arrays.asList("Hex3Cer", "GB3", "Gb3")),
200    HEXCER(LipidCategory.SP, "Neutral glycosphingolipids [SP05]", 2, "2", "C6H11O5", java.util.Arrays.asList("HexCer", "GalCer", "GlcCer", "Glucosylceramide")),
201    I_FORSSMAN(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C34H57N2O25", java.util.Arrays.asList("i-Forssman")),
202    IGB3CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C18H31O15", java.util.Arrays.asList("iGb3Cer")),
203    IGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C26H44NO20", java.util.Arrays.asList("iGb4Cer")),
204    IPC(LipidCategory.SP, "Ceramide phosphoinositols [SP0303]", 2, "2", "C6H12O8P", java.util.Arrays.asList("IPC", "PI-Cer")),
205    LBPA(LipidCategory.GP, "Monoacylglycerophosphomonoradylglycerols [GP0410]", 4, "2", "C6H11O8P", java.util.Arrays.asList("LBPA")),
206    LCB(LipidCategory.SP, "Sphingoid base homologs and variants [SP0104]", 2, "1", "H", java.util.Arrays.asList("LCB", "Sphingosine", "So", "Sphinganine", "Sa", "SPH", "Sph")),
207    LCBP(LipidCategory.SP, "Sphingoid base 1-phosphates [SP0105]", 2, "1", "H2O3P", java.util.Arrays.asList("LCBP", "Sphingosine-1-phosphate", "S1P", "SPH-P", "SIP", "Sphinganine-1-phosphate", "Sa1P")),
208    LCDPDAG(LipidCategory.GP, "Lyso-CDP-diacylglycerol", 2, "1", "", java.util.Arrays.asList("LCDPDAG")),
209    LDMPE(LipidCategory.GP, "Lysodimethylphosphatidylethanolamine", 2, "1", "", java.util.Arrays.asList("LDMPE")),
210    LEX_GM1(LipidCategory.SP, "Globoside", 2, "2", "C57H93N3O42", java.util.Arrays.asList("Lex-GM1")),
211    LHEXCER(LipidCategory.SP, "Hexosylsphingosine", 2, "1", "C6H11O5", java.util.Arrays.asList("LHexCer", "HexSph")),
212    LINOLEIC_ACID(LipidCategory.FA, "Unsaturated fatty acids [FA0103]", 0, "0", "C18H32O2", java.util.Arrays.asList("Linoleic acid")),
213    LMMPE(LipidCategory.GP, "Lysomonomethylphosphatidylethanolamine", 2, "1", "C6H14NO6P", java.util.Arrays.asList("LMMPE")),
214    LPA(LipidCategory.GP, "Monoacylglycerophosphates [GP1005]", 2, "1", "C3H7O6P", java.util.Arrays.asList("LPA", "LysoPA")),
215    LPC(LipidCategory.GP, "Monoacylglycerophosphocholines [GP0105]", 2, "1", "C8H18NO6P", java.util.Arrays.asList("LPC", "LysoPC")),
216    LPE(LipidCategory.GP, "Monoacylglycerophosphoethanolamines [GP0205]", 2, "1", "C5H12NO6P", java.util.Arrays.asList("LPE", "LysoPE")),
217    LPG(LipidCategory.GP, "Monoacylglycerophosphoglycerols [GP0405]", 2, "1", "C6H13O8P", java.util.Arrays.asList("LPG", "LysoPG")),
218    LPI(LipidCategory.GP, "Monoacylglycerophosphoinositols [GP0605]", 2, "1", "C9H17O11P", java.util.Arrays.asList("LPI", "LysoPI")),
219    LPIM1(LipidCategory.GP, "Monoacylglycerophosphoinositolglycans [GP1504]", 2, "1", "C15H27O16P", java.util.Arrays.asList("LPIM1")),
220    LPIM2(LipidCategory.GP, "Monoacylglycerophosphoinositolglycans [GP1504]", 2, "1", "C21H37O21P", java.util.Arrays.asList("LPIM2")),
221    LPIM3(LipidCategory.GP, "Monoacylglycerophosphoinositolglycans [GP1504]", 2, "1", "C27H47O26P", java.util.Arrays.asList("LPIM3")),
222    LPIM4(LipidCategory.GP, "Monoacylglycerophosphoinositolglycans [GP1504]", 2, "1", "C34H59O30P", java.util.Arrays.asList("LPIM4")),
223    LPIM5(LipidCategory.GP, "Monoacylglycerophosphoinositolglycans [GP1504]", 2, "1", "C39H67O36P", java.util.Arrays.asList("LPIM5")),
224    LPIM6(LipidCategory.GP, "Monoacylglycerophosphoinositolglycans [GP1504]", 2, "1", "C45H77O41P", java.util.Arrays.asList("LPIM6")),
225    LPIMIP(LipidCategory.GP, "Lysophosphatidylinositol- mannosideinositolphosphate", 2, "1", "", java.util.Arrays.asList("LPIMIP")),
226    LPIN(LipidCategory.GP, "Lysophosphatidylinositol-glucosamine", 2, "1", "", java.util.Arrays.asList("LPIN")),
227    LPS(LipidCategory.GP, "Monoacylglycerophosphoserines [GP0305]", 2, "1", "C6H12NO8P", java.util.Arrays.asList("LPS", "LysoPS")),
228    LSM(LipidCategory.SP, "Ceramides [SP02]", 2, "1", "C5H13NO3P", java.util.Arrays.asList("LSM", "SPC", "LysoSM")),
229    LTB4(LipidCategory.FA, "Leukotrienes [FA0302]", 0, "0", "C20H32O4", java.util.Arrays.asList("LTB4")),
230    LTC4(LipidCategory.FA, "Eicosanoid derivatives", 0, "0", "C30H47N3O9S", java.util.Arrays.asList("LTC4")),
231    LTD4(LipidCategory.FA, "Leukotrienes [FA0302]", 0, "0", "C25H40N2O6S", java.util.Arrays.asList("LTD4")),
232    M_IP_2C(LipidCategory.SP, "Phosphosphingolipids [SP03]", 2, "2", "C18H33O21P2", java.util.Arrays.asList("M(IP)2C")),
233    MAG(LipidCategory.GL, "Monoacylglycerols [GL0101]", 3, "1", "C3H5O3", java.util.Arrays.asList("MAG", "MG")),
234    MARESIN_1(LipidCategory.FA, "Maresins [FA0405]", 0, "0", "C22H32O4", java.util.Arrays.asList("Maresin 1")),
235    MGDG(LipidCategory.GL, "Glycosyldiacylglycerols [GL0501]", 2, "2", "C9H16O8", java.util.Arrays.asList("MGDG")),
236    MHDG(LipidCategory.GL, "Monohexosyldiacylglycerol", 2, "2", "C9H16O8", java.util.Arrays.asList("MHDG")),
237    MIPC(LipidCategory.SP, "Phosphosphingolipids [SP03]", 2, "2", "C12H22O13P", java.util.Arrays.asList("MIPC")),
238    MLCL(LipidCategory.GP, "Glycerophosphoglycerophosphoglycerols [GP12]", 4, "3", "C9H18O13P2", java.util.Arrays.asList("MLCL")),
239    MMPE(LipidCategory.GP, "Monomethylphosphatidylethanolamine", 2, "2|4", "C6H14NO6P", java.util.Arrays.asList("MMPE")),
240    MSGG(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C43H70N2O33", java.util.Arrays.asList("MSGG")),
241    NAE(LipidCategory.FA, "Fatty amides", 0, "0", "C2H6NO", java.util.Arrays.asList("NAE")),
242    NAPE(LipidCategory.GP, "Diacylglycerophosphoethanolamines [GP0201]", 3, "3", "C5H11NO6P", java.util.Arrays.asList("NAPE")),
243    NEUAC_ALPHA2_6_MSGG(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C54H86N3O41", java.util.Arrays.asList("NeuAc(alpha2-6)-MSGG")),
244    NEUAC_ALPHA2_8_MSGG(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C54H86N3O41", java.util.Arrays.asList("NeuAc(alpha2-8)-MSGG")),
245    NEUACGAL_IGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C43H70N2O33", java.util.Arrays.asList("NeuAcGal-iGb4Cer")),
246    NEUGC_GALGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C43H70N2O34", java.util.Arrays.asList("NeuGc-GalGb4Cer")),
247    NEUGC_LACNAC_GM1_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C62H99N4O48", java.util.Arrays.asList("NeuGc-LacNAc-GM1(NeuGc)")),
248    NEUGCNEUGC_GALGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C54H86N3O43", java.util.Arrays.asList("NeuGcNeuGc-GalGb4Cer")),
249    NOR1(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C32H54NO25", java.util.Arrays.asList("NOR1")),
250    NOR2(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C46H77N2O35", java.util.Arrays.asList("NOR2")),
251    NORINT(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C40H67N2O30", java.util.Arrays.asList("NORint")),
252    PA(LipidCategory.GP, "Glycerophosphates [GP10]", 2, "2", "C3H7O6P", java.util.Arrays.asList("PA")),
253    PALMITIC_ACID(LipidCategory.FA, "Straight chain fatty acids [FA0101]", 0, "0", "C16H32O2", java.util.Arrays.asList("Palmitic acid")),
254    PARA_FORSSMAN(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C34H57N2O25", java.util.Arrays.asList("Para-Forssman")),
255    PAT16(LipidCategory.SL, "Acyltrehaloses [SL03]", 4, "4", "", java.util.Arrays.asList("PAT16")),
256    PAT18(LipidCategory.SL, "Acyltrehaloses [SL03]", 4, "4", "", java.util.Arrays.asList("PAT18")),
257    PC(LipidCategory.GP, "Glycerophosphocholines [GP01]", 2, "2", "C8H18NO6P", java.util.Arrays.asList("PC")),
258    PE(LipidCategory.GP, "Glycerophosphoethanolamines [GP02]", 2, "2", "C5H12NO6P", java.util.Arrays.asList("PE")),
259    PE_GLCDG(LipidCategory.GL, "Glycosylalkylacylglycerols [GL0502]", 2, "2", "C11H22NO11P", java.util.Arrays.asList("PE-GlcDG")),
260    PE_NME(LipidCategory.GP, "Diacylglycerophosphoethanolamines [GP0201]", 2, "2", "C6H14NO6P", java.util.Arrays.asList("PE-NMe")),
261    PE_NME2(LipidCategory.GP, "Diacylglycerophosphoethanolamines [GP0201]", 2, "2", "C7H16NO6P", java.util.Arrays.asList("PE-NMe2")),
262    PET(LipidCategory.GP, "Glycerophosphoethanolamines [GP02]", 2, "2", "C5H11O6P", java.util.Arrays.asList("PEt")),
263    PG(LipidCategory.GP, "Glycerophosphoglycerols [GP04]", 2, "2", "C6H13O8P", java.util.Arrays.asList("PG")),
264    PGB2(LipidCategory.FA, "Prostaglandins [FA0301]", 0, "0", "C20H30O4", java.util.Arrays.asList("PGB2")),
265    PGD2(LipidCategory.FA, "Prostaglandins [FA0301]", 0, "0", "C20H32O5", java.util.Arrays.asList("PGD2")),
266    PGE2(LipidCategory.FA, "Prostaglandins [FA0301]", 0, "0", "C20H32O5", java.util.Arrays.asList("PGE2")),
267    PGF2ALPHA(LipidCategory.FA, "Prostaglandins [FA0301]", 0, "0", "C20H34O5", java.util.Arrays.asList("PGF2alpha")),
268    PGI2(LipidCategory.FA, "Prostaglandins [FA0301]", 0, "0", "C20H32O5", java.util.Arrays.asList("PGI2")),
269    PGP(LipidCategory.GP, "Glycerophosphoglycerophosphates [GP05]", 2, "2", "C6H14O11P2", java.util.Arrays.asList("PGP")),
270    PHENOL(LipidCategory.PK, "Alkyl phenols and derivatives [PK1501]", 2, "2", "", java.util.Arrays.asList("PHENOL")),
271    PI(LipidCategory.GP, "Glycerophosphoinositols [GP06]", 2, "2", "C9H17O11P", java.util.Arrays.asList("PI")),
272    PIM1(LipidCategory.GP, "Glycerophosphoinositolglycans [GP15]", 2, "2", "C15H27O16P", java.util.Arrays.asList("PIM1")),
273    PIM2(LipidCategory.GP, "Glycerophosphoinositolglycans [GP15]", 2, "2", "C21H37O21P", java.util.Arrays.asList("PIM2")),
274    PIM3(LipidCategory.GP, "Glycerophosphoinositolglycans [GP15]", 2, "2", "C27H47O26P", java.util.Arrays.asList("PIM3")),
275    PIM4(LipidCategory.GP, "Glycerophosphoinositolglycans [GP15]", 2, "2", "C33H57O31P", java.util.Arrays.asList("PIM4")),
276    PIM5(LipidCategory.GP, "Glycerophosphoinositolglycans [GP15]", 2, "2", "C39H67O36P", java.util.Arrays.asList("PIM5")),
277    PIM6(LipidCategory.GP, "Glycerophosphoinositolglycans [GP15]", 2, "2", "C45H77O41P", java.util.Arrays.asList("PIM6")),
278    PIMIP(LipidCategory.GP, "Phosphatidylinositol mannoside inositol phosphate", 2, "2", "", java.util.Arrays.asList("PIMIP")),
279    PIP(LipidCategory.GP, "Diacylglycerophosphoinositol monophosphates [GP0701]", 2, "2", "C9H18O14P2", java.util.Arrays.asList("PIP")),
280    PIP_3P(LipidCategory.GP, "Diacylglycerophosphoinositol monophosphates [GP0701]", 2, "2", "C9H18O14P2", java.util.Arrays.asList("PIP[3']", "PIP[3]")),
281    PIP_4P(LipidCategory.GP, "Diacylglycerophosphoinositol monophosphates [GP0701]", 2, "2", "C9H18O14P2", java.util.Arrays.asList("PIP[4']", "PIP[4]")),
282    PIP_5P(LipidCategory.GP, "Diacylglycerophosphoinositol monophosphates [GP0701]", 2, "2", "C9H18O14P2", java.util.Arrays.asList("PIP[5']", "PIP[5]")),
283    PIP2(LipidCategory.GP, "Diacylglycerophosphoinositol bisphosphates [GP0801]", 2, "2", "C9H19O17P3", java.util.Arrays.asList("PIP2")),
284    PIP2_3P_4P(LipidCategory.GP, "Diacylglycerophosphoinositol bisphosphates [GP0801]", 2, "2", "C9H19O17P3", java.util.Arrays.asList("PIP2[3',4']", "PIP2[3,4]")),
285    PIP2_3P_5P(LipidCategory.GP, "Diacylglycerophosphoinositol bisphosphates [GP0801]", 2, "2", "C9H19O17P3", java.util.Arrays.asList("PIP2[3',5']", "PIP2[3,5]")),
286    PIP2_4P_5P(LipidCategory.GP, "Diacylglycerophosphoinositol bisphosphates [GP0801]", 2, "2", "C9H19O17P3", java.util.Arrays.asList("PIP2[4',5']", "PIP2[4,5]")),
287    PIP3(LipidCategory.GP, "Diacylglycerophosphoinositol trisphosphates [GP0901]", 2, "2", "C9H20O20P4", java.util.Arrays.asList("PIP3")),
288    PIP3_3P_4P_5P(LipidCategory.GP, "Diacylglycerophosphoinositol trisphosphates [GP0901]", 2, "2", "C9H20O20P4", java.util.Arrays.asList("PIP3[3',4',5']", "PIP3[3,4,5]")),
289    PNC(LipidCategory.GP, "Glycerophosphonocholines [GP16]", 2, "2", "C8H18NO5P", java.util.Arrays.asList("PnC")),
290    PNE(LipidCategory.GP, "Glycerophosphoinositolglycans [GP15]", 2, "2", "C5H12NO5P", java.util.Arrays.asList("PnE")),
291    PPA(LipidCategory.GP, "Diacylglyceropyrophosphates [GP1101]", 2, "2", "C3H8O9P2", java.util.Arrays.asList("PPA")),
292    PS(LipidCategory.GP, "Glycerophosphoserines [GP03]", 2, "2", "C6H12NO8P", java.util.Arrays.asList("PS")),
293    PS_NAC(LipidCategory.GP, "Diacylglycerophosphoserines [GP0301]", 3, "3", "C6H11NO8P", java.util.Arrays.asList("PS-NAc")),
294    PT(LipidCategory.GP, "Other Glycerophospholipids [GP00]", 2, "2", "C7H14NO8P", java.util.Arrays.asList("PT")),
295    RESOLVIN_D1(LipidCategory.FA, "Resolvin Ds [FA0403]", 0, "0", "C22H32O5", java.util.Arrays.asList("Resolvin D1")),
296    RESOLVIN_D2(LipidCategory.FA, "Resolvin Ds [FA0403]", 0, "0", "C22H32O5", java.util.Arrays.asList("Resolvin D2")),
297    RESOLVIN_D3(LipidCategory.FA, "Resolvin Ds [FA0403]", 0, "0", "C22H32O5", java.util.Arrays.asList("Resolvin D3")),
298    RESOLVIN_D5(LipidCategory.FA, "Resolvin Ds [FA0403]", 0, "0", "C22H32O4", java.util.Arrays.asList("Resolvin D5")),
299    RESORCINOL(LipidCategory.PK, "Alkyl resorcinols and derivatives [PK1503]", 2, "2", "", java.util.Arrays.asList("RESORCINOL")),
300    SB1A(LipidCategory.SP, "Globoside", 2, "2", "C26H42NO26S2", java.util.Arrays.asList("SB1a")),
301    SE_27_1(LipidCategory.ST, "Sterol esters [ST0102]", 1, "1", "C27H45O", java.util.Arrays.asList("SE 27:1", "ChE", "CE", "Cholesteryl ester", "Cholesterol ester", "SE", "Sterol ester")),
302    SE_27_2(LipidCategory.ST, "Sterol esters [ST0102]", 1, "1", "C27H43O", java.util.Arrays.asList("SE 27:2", "Desmosterol ester")),
303    SE_28_2(LipidCategory.ST, "Sterol esters [ST0102]", 1, "1", "C28H45O", java.util.Arrays.asList("SE 28:2", "Ergostadienol ester")),
304    SE_28_3(LipidCategory.ST, "Sterol esters [ST0102]", 1, "1", "C28H43O", java.util.Arrays.asList("SE 28:3", "Ergosterol ester")),
305    SE_29_2(LipidCategory.ST, "Sterol esters [ST0102]", 1, "1", "C29H47O", java.util.Arrays.asList("SE 29:2", "Stigmasterol ester")),
306    SE_30_2(LipidCategory.ST, "Sterol esters [ST0102]", 1, "1", "C30H49O", java.util.Arrays.asList("SE 30:2", "Lanosterol ester")),
307    SHEX2CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C12H19O14S", java.util.Arrays.asList("SHex2Cer", "SulfoHex2Cer")),
308    SHEXCER(LipidCategory.SP, "Sulfoglycosphingolipids (sulfatides) [SP0602]", 2, "2", "C6H11O8S", java.util.Arrays.asList("SHexCer", "SulfoHexCer", "(3'-sulfo)Galbeta-Cer", "(3'-sulfo)GalCer")),
309    SLBPA(LipidCategory.GP, "Diacylglycerophosphomonoradylglycerols [GP0409]", 4, "3", "C6H11O8P", java.util.Arrays.asList("SLBPA")),
310    SM(LipidCategory.SP, "Ceramide phosphocholines (sphingomyelins) [SP0301]", 2, "2", "C5H13NO3P", java.util.Arrays.asList("SM")),
311    SM1A(LipidCategory.SP, "Globoside", 2, "2", "C26H43NO23S", java.util.Arrays.asList("SM1a")),
312    SM1B(LipidCategory.SP, "Globoside", 2, "2", "C26H43NO23S", java.util.Arrays.asList("SM1b")),
313    SO3_GAL_IGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C34H56N2O28S", java.util.Arrays.asList("SO3-Gal-iGb4Cer")),
314    SO3_GALGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C32H53NO28S", java.util.Arrays.asList("SO3-GalGb4Cer")),
315    SO3_GB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C26H43NO23S", java.util.Arrays.asList("SO3-Gb4Cer")),
316    SO3_GM1_NEUGC(LipidCategory.SP, "Globoside", 2, "2", "C37H59N2O32S", java.util.Arrays.asList("SO3-GM1(NeuGc)")),
317    SO3_IGB4CER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C26H43NO23S", java.util.Arrays.asList("SO3-iGb4Cer")),
318    SQDG(LipidCategory.GL, "Glycosyldiradylglycerols [GL05]", 2, "2", "C9H16O10S", java.util.Arrays.asList("SQDG")),
319    SQMG(LipidCategory.GL, "Glycosylmonoacylglycerols [GL0401]", 2, "1", "C9H16O10S", java.util.Arrays.asList("SQMG")),
320    ST_27_1_1(LipidCategory.ST, "Cholesterol and derivatives [ST0101]", 0, "0", "C27H46O", java.util.Arrays.asList("ST 27:1;1", "CH", "FC", "Cholesterol", "Ch", "ST")),
321    ST_27_2_1(LipidCategory.ST, "Cholesterol and derivatives [ST0101]", 0, "0", "C27H44O", java.util.Arrays.asList("ST 27:2;1", "Desmosterol")),
322    ST_28_2_1(LipidCategory.ST, "Ergosterols and C24-methyl derivatives [ST0103]", 0, "0", "C28H46O", java.util.Arrays.asList("ST 28:2;1", "Ergostadienol")),
323    ST_28_3_1(LipidCategory.ST, "Ergosterols and C24-methyl derivatives [ST0103]", 0, "0", "C28H44O", java.util.Arrays.asList("ST 28:3;1", "Ergosterol")),
324    ST_29_2_1(LipidCategory.ST, "Stigmasterols and C24-ethyl derivatives [ST0104]", 0, "0", "C29H48O", java.util.Arrays.asList("ST 29:2;1", "Stigmasterol")),
325    ST_30_2_1(LipidCategory.ST, "Cholesterol and derivatives [ST0101]", 0, "0", "C30H50O", java.util.Arrays.asList("ST 30:2;1", "Lanosterol")),
326    SULFOGALCER(LipidCategory.SP, "Glycosphingolipids", 2, "2", "C6H11O8S", java.util.Arrays.asList("SulfoGalCer")),
327    TAG(LipidCategory.GL, "Triacylglycerols [GL0301]", 3, "3", "C3H5O3", java.util.Arrays.asList("TAG", "TG")),
328    TETRANOR_12_HETE(LipidCategory.FA, "Hydroxy/hydroperoxyeicosatetraenoic acids [FA0306]", 0, "0", "C16H26O3", java.util.Arrays.asList("tetranor-12-HETE")),
329    TXB1(LipidCategory.FA, "Thromboxanes [FA0303]", 0, "0", "C20H36O6", java.util.Arrays.asList("TXB1")),
330    TXB2(LipidCategory.FA, "Thromboxanes [FA0303]", 0, "0", "C20H34O6", java.util.Arrays.asList("TXB2")),
331    TXB3(LipidCategory.FA, "Thromboxanes [FA0303]", 0, "0", "C20H32O6", java.util.Arrays.asList("TXB3")),
332    UNDEFINED(LipidCategory.UNDEFINED, "Undefined lipid class", 0, "0", "", java.util.Arrays.asList("UNDEFINED")),
333    WE(LipidCategory.FA, "Fatty esters [FA07]", 2, "2", "", java.util.Arrays.asList("WE"));
334
335    private final LipidCategory category;
336
337    private final String lipidMapsClassName;
338
339    private final String allowedNumFaStr;
340
341    private final List<Integer> allowedNumFa;
342
343    private final Integer maxNumFa;
344
345    private final String sumFormula;
346
347    private final ElementTable elementTable;
348
349    private final List<String> synonyms;
350
351    private LipidClass(LipidCategory category, String lipidMapsClassName, Integer maxNumFa,
352            String allowedNumFaStr, String sumFormula, List<String> synonyms) {
353        this.category = category;
354        this.lipidMapsClassName = lipidMapsClassName;
355        this.maxNumFa = maxNumFa;
356        this.allowedNumFaStr = allowedNumFaStr;
357        this.sumFormula = sumFormula;
358        ElementTable et = new ElementTable();
359        if (this.sumFormula != null && !this.sumFormula.isEmpty()) {
360            try {
361                et = new ElementTable(this.sumFormula);
362            } catch (de.isas.lipidomics.palinom.exceptions.ParsingException ex) {
363                et = new ElementTable();
364            }
365        }
366        this.elementTable = et;;
367        if (synonyms.isEmpty()) {
368            throw new IllegalArgumentException("Must supply at least one synonym!");
369        };
370        this.allowedNumFa = Arrays.asList(allowedNumFaStr.split("\\|")).stream().map((t) -> {
371            return Integer.parseInt(t);
372        }).collect(java.util.stream.Collectors.toList());
373        this.synonyms = synonyms;
374    }
375
376    public LipidCategory getCategory() {
377        return this.category;
378    }
379
380    public String getAbbreviation() {
381        return this.synonyms.get(0);
382    }
383
384    public String getLipidMapsClassName() {
385        return this.lipidMapsClassName;
386    }
387
388    public Integer getMaxNumFa() {
389        return this.maxNumFa;
390    }
391
392    public List<Integer> getAllowedNumFa() {
393        return this.allowedNumFa;
394    }
395
396    public String getSumFormula() {
397        return this.elementTable.getSumFormula();
398    }
399
400    public ElementTable getElements() {
401        return this.elementTable.copy();
402    }
403
404    public List<String> getSynonyms() {
405        return this.synonyms;
406    }
407
408    public boolean matchesAbbreviation(String headGroup) {
409        return this.synonyms.stream().anyMatch((synonym) -> {
410            return synonym.equals(headGroup);
411        });
412    }
413
414    public String getLysoAbbreviation(LipidClass lipidClass) {
415        if (lipidClass.getCategory() == LipidCategory.GP) {
416            return "L" + lipidClass.getAbbreviation();
417        }
418        throw new ConstraintViolationException("Lipid category must be " + LipidCategory.GP + " for lyso-classes!");
419    }
420
421    public static Optional<LipidClass> forHeadGroup(String headGroup) {
422        return Arrays.asList(values()).stream().filter((lipidClass) -> {
423            return lipidClass.matchesAbbreviation(headGroup.trim());
424        }).findFirst();
425    }
426}