001/*
002 * mzTab-M reference implementation and validation API.
003 * This is the mzTab-M reference implementation and validation API service.
004 *
005 * OpenAPI spec version: 2.0.0
006 * Contact: nils.hoffmann@isas.de
007 *
008 * NOTE: This class is auto generated by the swagger code generator program.
009 * https://github.com/swagger-api/swagger-codegen.git
010 * Do not edit the class manually.
011 */
012
013
014package de.isas.mztab2.model;
015
016import java.util.Objects;
017import java.util.Arrays;
018import com.fasterxml.jackson.annotation.JsonProperty;
019import com.fasterxml.jackson.annotation.JsonCreator;
020import com.fasterxml.jackson.annotation.JsonValue;
021import de.isas.mztab2.model.Comment;
022import de.isas.mztab2.model.OptColumnMapping;
023import de.isas.mztab2.model.Parameter;
024import io.swagger.annotations.ApiModel;
025import io.swagger.annotations.ApiModelProperty;
026import java.util.ArrayList;
027import java.util.List;
028import com.fasterxml.jackson.dataformat.xml.annotation.*;
029import javax.xml.bind.annotation.*;
030import javax.validation.constraints.*;
031import javax.validation.Valid;
032import de.isas.lipidomics.mztab2.validation.constraints.*;
033/**
034 * 
035 * The small molecule summary section is table-based, represented summarized quantitative information across assays and study variables, grouped by identification in rows. The small molecule section MUST always come after the metadata section. All table columns MUST be Tab separated. There MUST NOT be any empty cells; missing values MUST be reported using “null” for columns where Is Nullable = “True”.
036
037Each row of the small molecule section is intended to report one final result to be communicated in terms of a molecule that has been quantified. In many cases, this may be the molecule of biological interest, although in some cases, the final result could be a derivatized form as appropriate – although it is desirable for the database identifier(s) to reference to the biological (non-derivatized) form. In general, different adduct forms would generally be reported in the Small Molecule Feature section.
038
039The order of columns MUST follow the order specified below.
040
041All columns are MANDATORY except for “opt_” columns.
042
043 * 
044 *
045 * 
046 *
047 */
048@ApiModel(description = "The small molecule summary section is table-based, represented summarized quantitative information across assays and study variables, grouped by identification in rows. The small molecule section MUST always come after the metadata section. All table columns MUST be Tab separated. There MUST NOT be any empty cells; missing values MUST be reported using “null” for columns where Is Nullable = “True”.  Each row of the small molecule section is intended to report one final result to be communicated in terms of a molecule that has been quantified. In many cases, this may be the molecule of biological interest, although in some cases, the final result could be a derivatized form as appropriate – although it is desirable for the database identifier(s) to reference to the biological (non-derivatized) form. In general, different adduct forms would generally be reported in the Small Molecule Feature section.  The order of columns MUST follow the order specified below.  All columns are MANDATORY except for “opt_” columns. ")
049@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2019-08-07T11:09:24.487+02:00")
050@XmlRootElement(name = "SmallMoleculeSummary")
051@XmlAccessorType(XmlAccessType.FIELD)
052@JacksonXmlRootElement(localName = "SmallMoleculeSummary")
053public class SmallMoleculeSummary {
054
055  /**
056   * Property enumeration for SmallMoleculeSummary.
057   */
058  public static enum Properties {
059      prefix("prefix"), 
060      headerPrefix("header_prefix"), 
061      smlId("sml_id"), 
062      smfIdRefs("smf_id_refs"), 
063      databaseIdentifier("database_identifier"), 
064      chemicalFormula("chemical_formula"), 
065      smiles("smiles"), 
066      inchi("inchi"), 
067      chemicalName("chemical_name"), 
068      uri("uri"), 
069      theoreticalNeutralMass("theoretical_neutral_mass"), 
070      adductIons("adduct_ions"), 
071      reliability("reliability"), 
072      bestIdConfidenceMeasure("best_id_confidence_measure"), 
073      bestIdConfidenceValue("best_id_confidence_value"), 
074      abundanceAssay("abundance_assay"), 
075      abundanceStudyVariable("abundance_study_variable"), 
076      abundanceVariationStudyVariable("abundance_variation_study_variable"), 
077      opt("opt"), 
078      comment("comment");
079
080    private final String propertyName;
081
082    private Properties(String propertyName) {
083      this.propertyName = propertyName;
084    }
085
086    public String getPropertyName() {
087      return propertyName;
088    }
089
090    public String toString() {
091      return propertyName;
092    }
093
094    public String toUpper() {
095      return propertyName.toUpperCase();
096    }
097
098    public static Properties of(String value) {
099      if(value==null) {
100        throw new NullPointerException("Argument value must not be null!");
101      }
102      return Arrays.asList(Properties.values()).stream().filter(m -> m.propertyName.equals(value.toLowerCase())).findAny().orElseThrow(IllegalArgumentException::new);
103    }
104  };
105  
106  /**
107   * The small molecule table row prefix. SML MUST be used for rows of the small molecule table.
108   */
109  public enum PrefixEnum {
110    SML("SML");
111
112    private String value;
113
114    PrefixEnum(String value) {
115      this.value = value;
116    }
117
118    @JsonValue
119    public String getValue() {
120      return value;
121    }
122
123    @Override
124    public String toString() {
125      return String.valueOf(value);
126    }
127
128    @JsonCreator
129    public static PrefixEnum fromValue(String text) {
130      for (PrefixEnum b : PrefixEnum.values()) {
131        if (String.valueOf(b.value).equals(text)) {
132          return b;
133        }
134      }
135      return null;
136    }
137  }
138
139  @JsonProperty("prefix")
140  @JacksonXmlProperty(localName = "prefix")
141  @XmlElement(name = "prefix")
142  private PrefixEnum prefix = PrefixEnum.SML;
143  /**
144   * The small molecule table header prefix. SMH MUST be used for the small molecule table header line (the column labels).
145   */
146  public enum HeaderPrefixEnum {
147    SMH("SMH");
148
149    private String value;
150
151    HeaderPrefixEnum(String value) {
152      this.value = value;
153    }
154
155    @JsonValue
156    public String getValue() {
157      return value;
158    }
159
160    @Override
161    public String toString() {
162      return String.valueOf(value);
163    }
164
165    @JsonCreator
166    public static HeaderPrefixEnum fromValue(String text) {
167      for (HeaderPrefixEnum b : HeaderPrefixEnum.values()) {
168        if (String.valueOf(b.value).equals(text)) {
169          return b;
170        }
171      }
172      return null;
173    }
174  }
175
176  @JsonProperty("header_prefix")
177  @JacksonXmlProperty(localName = "header_prefix")
178  @XmlElement(name = "header_prefix")
179  private HeaderPrefixEnum headerPrefix = HeaderPrefixEnum.SMH;
180  @JsonProperty("sml_id")
181  @JacksonXmlProperty(localName = "sml_id")
182  @XmlElement(name = "sml_id")
183  private Integer smlId = null;
184  @JsonProperty("smf_id_refs")
185  // Is a container wrapped=false
186  // items.name=smfIdRefs items.baseName=smfIdRefs items.xmlName= items.xmlNamespace=
187  // items.example= items.type=Integer
188  @XmlElement(name = "smfIdRefs")
189  private List<Integer> smfIdRefs = null;
190  @JsonProperty("database_identifier")
191  // Is a container wrapped=false
192  // items.name=databaseIdentifier items.baseName=databaseIdentifier items.xmlName= items.xmlNamespace=
193  // items.example= items.type=String
194  @XmlElement(name = "databaseIdentifier")
195  private List<String> databaseIdentifier = null;
196  @JsonProperty("chemical_formula")
197  // Is a container wrapped=false
198  // items.name=chemicalFormula items.baseName=chemicalFormula items.xmlName= items.xmlNamespace=
199  // items.example= items.type=String
200  @XmlElement(name = "chemicalFormula")
201  private List<String> chemicalFormula = null;
202  @JsonProperty("smiles")
203  // Is a container wrapped=false
204  // items.name=smiles items.baseName=smiles items.xmlName= items.xmlNamespace=
205  // items.example= items.type=String
206  @XmlElement(name = "smiles")
207  private List<String> smiles = null;
208  @JsonProperty("inchi")
209  // Is a container wrapped=false
210  // items.name=inchi items.baseName=inchi items.xmlName= items.xmlNamespace=
211  // items.example= items.type=String
212  @XmlElement(name = "inchi")
213  private List<String> inchi = null;
214  @JsonProperty("chemical_name")
215  // Is a container wrapped=false
216  // items.name=chemicalName items.baseName=chemicalName items.xmlName= items.xmlNamespace=
217  // items.example= items.type=String
218  @XmlElement(name = "chemicalName")
219  private List<String> chemicalName = null;
220  @JsonProperty("uri")
221  // Is a container wrapped=false
222  // items.name=uri items.baseName=uri items.xmlName= items.xmlNamespace=
223  // items.example= items.type=String
224  @XmlElement(name = "uri")
225  private List<String> uri = null;
226  @JsonProperty("theoretical_neutral_mass")
227  // Is a container wrapped=false
228  // items.name=theoreticalNeutralMass items.baseName=theoreticalNeutralMass items.xmlName= items.xmlNamespace=
229  // items.example= items.type=Double
230  @XmlElement(name = "theoreticalNeutralMass")
231  private List<Double> theoreticalNeutralMass = null;
232  @JsonProperty("adduct_ions")
233  // Is a container wrapped=false
234  // items.name=adductIons items.baseName=adductIons items.xmlName= items.xmlNamespace=
235  // items.example= items.type=String
236  @XmlElement(name = "adductIons")
237  private List<String> adductIons = null;
238  @JsonProperty("reliability")
239  @JacksonXmlProperty(localName = "reliability")
240  @XmlElement(name = "reliability")
241  private String reliability = null;
242  @JsonProperty("best_id_confidence_measure")
243  @JacksonXmlProperty(localName = "best_id_confidence_measure")
244  @XmlElement(name = "best_id_confidence_measure")
245  private Parameter bestIdConfidenceMeasure = null;
246  @JsonProperty("best_id_confidence_value")
247  @JacksonXmlProperty(localName = "best_id_confidence_value")
248  @XmlElement(name = "best_id_confidence_value")
249  private Double bestIdConfidenceValue = null;
250  @JsonProperty("abundance_assay")
251  // Is a container wrapped=false
252  // items.name=abundanceAssay items.baseName=abundanceAssay items.xmlName= items.xmlNamespace=
253  // items.example= items.type=Double
254  @XmlElement(name = "abundanceAssay")
255  private List<Double> abundanceAssay = null;
256  @JsonProperty("abundance_study_variable")
257  // Is a container wrapped=false
258  // items.name=abundanceStudyVariable items.baseName=abundanceStudyVariable items.xmlName= items.xmlNamespace=
259  // items.example= items.type=Double
260  @XmlElement(name = "abundanceStudyVariable")
261  private List<Double> abundanceStudyVariable = null;
262  @JsonProperty("abundance_variation_study_variable")
263  // Is a container wrapped=false
264  // items.name=abundanceVariationStudyVariable items.baseName=abundanceVariationStudyVariable items.xmlName= items.xmlNamespace=
265  // items.example= items.type=Double
266  @XmlElement(name = "abundanceVariationStudyVariable")
267  private List<Double> abundanceVariationStudyVariable = null;
268  @JsonProperty("opt")
269  // Is a container wrapped=false
270  // items.name=opt items.baseName=opt items.xmlName= items.xmlNamespace=
271  // items.example= items.type=OptColumnMapping
272  @XmlElement(name = "opt")
273  private List<OptColumnMapping> opt = null;
274  @JsonProperty("comment")
275  // Is a container wrapped=false
276  // items.name=comment items.baseName=comment items.xmlName= items.xmlNamespace=
277  // items.example= items.type=Comment
278  @XmlElement(name = "comment")
279  private List<Comment> comment = null;
280   /**
281   * The small molecule table row prefix. SML MUST be used for rows of the small molecule table.
282   *
283   * @return prefix
284  **/
285  @ApiModelProperty(value = "The small molecule table row prefix. SML MUST be used for rows of the small molecule table.")
286  public PrefixEnum getPrefix() {
287    return prefix;
288  }
289
290   /**
291   * The small molecule table header prefix. SMH MUST be used for the small molecule table header line (the column labels).
292   *
293   * @return headerPrefix
294  **/
295  @ApiModelProperty(value = "The small molecule table header prefix. SMH MUST be used for the small molecule table header line (the column labels).")
296  public HeaderPrefixEnum getHeaderPrefix() {
297    return headerPrefix;
298  }
299
300
301 /**
302   * Builder method for smlId.
303   *
304   * @see SmallMoleculeSummary#setSmlId SmallMoleculeSummary#setSmlId for specification examples
305   * @see SmallMoleculeSummary#getSmlId SmallMoleculeSummary#getSmlId for validation constraints
306   * @param smlId a {@code Integer} parameter.
307   * @return SmallMoleculeSummary
308  **/
309  public SmallMoleculeSummary smlId(Integer smlId) {
310   this.smlId = smlId;
311   return this;
312  }
313
314   /**
315   * A within file unique identifier for the small molecule.
316   *
317   * @return smlId
318  **/
319  @NotNull
320  @ApiModelProperty(required = true, value = "A within file unique identifier for the small molecule.")
321  public Integer getSmlId() {
322    return smlId;
323  }
324
325 /**
326   * Set smlId.
327   *
328   * <p>mzTab-M specification example(s):</p>
329   * <pre><code>SMH     SML_ID  …
330SML     1       …
331SML     2       …
332</code></pre>
333   * 
334   * 
335   * @see #getSmlId SmallMoleculeSummary#getSmlId for validation constraints
336   * @param smlId a {@code Integer} parameter.
337  **/
338  public void setSmlId(Integer smlId) {
339    this.smlId = smlId;
340  }
341
342
343 /**
344   * Builder method for smfIdRefs.
345   *
346   * @see SmallMoleculeSummary#setSmfIdRefs SmallMoleculeSummary#setSmfIdRefs for specification examples
347   * @see SmallMoleculeSummary#getSmfIdRefs SmallMoleculeSummary#getSmfIdRefs for validation constraints
348   * @param smfIdRefs a {@code List<Integer>} parameter.
349   * @return SmallMoleculeSummary
350  **/
351  public SmallMoleculeSummary smfIdRefs(List<Integer> smfIdRefs) {
352   this.smfIdRefs = smfIdRefs;
353   return this;
354  }
355
356  /**
357   * Add a single smfIdRefsItem to the smfIdRefs collection.
358   *
359   * @see SmallMoleculeSummary#getSmfIdRefs SmallMoleculeSummary#getSmfIdRefs for validation constraints
360   * @param smfIdRefsItem a {@code Integer} parameter.
361   * @return SmallMoleculeSummary
362   */
363  public SmallMoleculeSummary addSmfIdRefsItem(Integer smfIdRefsItem) {
364    if (this.smfIdRefs == null) {
365      this.smfIdRefs = new ArrayList<>();
366    }
367    this.smfIdRefs.add(smfIdRefsItem);
368    return this;
369  }
370
371   /**
372   * References to all the features on which quantitation has been based (SMF elements) via referencing SMF_ID values. Multiple values SHOULD be provided as a “|” separated list. This MAY be null only if this is a Summary file.
373   *
374   * @return smfIdRefs
375  **/
376  @ApiModelProperty(value = "References to all the features on which quantitation has been based (SMF elements) via referencing SMF_ID values. Multiple values SHOULD be provided as a “|” separated list. This MAY be null only if this is a Summary file.")
377  public List<Integer> getSmfIdRefs() {
378    return smfIdRefs;
379  }
380
381 /**
382   * Set smfIdRefs.
383   *
384   * <p>mzTab-M specification example(s):</p>
385   * <pre><code>SMH     SML_ID  SMF_ID_REFS
386SML     1       2|3|11…
387</code></pre>
388   * 
389   * 
390   * @see #getSmfIdRefs SmallMoleculeSummary#getSmfIdRefs for validation constraints
391   * @param smfIdRefs a {@code List<Integer>} parameter.
392  **/
393  public void setSmfIdRefs(List<Integer> smfIdRefs) {
394    this.smfIdRefs = smfIdRefs;
395  }
396
397
398 /**
399   * Builder method for databaseIdentifier.
400   *
401   * @see SmallMoleculeSummary#setDatabaseIdentifier SmallMoleculeSummary#setDatabaseIdentifier for specification examples
402   * @see SmallMoleculeSummary#getDatabaseIdentifier SmallMoleculeSummary#getDatabaseIdentifier for validation constraints
403   * @param databaseIdentifier a {@code List<String>} parameter.
404   * @return SmallMoleculeSummary
405  **/
406  public SmallMoleculeSummary databaseIdentifier(List<String> databaseIdentifier) {
407   this.databaseIdentifier = databaseIdentifier;
408   return this;
409  }
410
411  /**
412   * Add a single databaseIdentifierItem to the databaseIdentifier collection.
413   *
414   * @see SmallMoleculeSummary#getDatabaseIdentifier SmallMoleculeSummary#getDatabaseIdentifier for validation constraints
415   * @param databaseIdentifierItem a {@code String} parameter.
416   * @return SmallMoleculeSummary
417   */
418  public SmallMoleculeSummary addDatabaseIdentifierItem(String databaseIdentifierItem) {
419    if (this.databaseIdentifier == null) {
420      this.databaseIdentifier = new ArrayList<>();
421    }
422    this.databaseIdentifier.add(databaseIdentifierItem);
423    return this;
424  }
425
426   /**
427   * A list of “|” separated possible identifiers for the small molecule; multiple values MUST only be provided to indicate ambiguity in the identification of the molecule and not to demonstrate different identifier types for the same molecule. Alternative identifiers for the same molecule MAY be provided as optional columns.
428
429The database identifier must be preceded by the resource description (prefix) followed by a colon, as specified in the metadata section.    
430
431A null value MAY be provided if the identification is sufficiently ambiguous as to be meaningless for reporting or the small molecule has not been identified.
432
433   *
434   * @return databaseIdentifier
435  **/
436  @ApiModelProperty(value = "A list of “|” separated possible identifiers for the small molecule; multiple values MUST only be provided to indicate ambiguity in the identification of the molecule and not to demonstrate different identifier types for the same molecule. Alternative identifiers for the same molecule MAY be provided as optional columns.  The database identifier must be preceded by the resource description (prefix) followed by a colon, as specified in the metadata section.      A null value MAY be provided if the identification is sufficiently ambiguous as to be meaningless for reporting or the small molecule has not been identified. ")
437  public List<String> getDatabaseIdentifier() {
438    return databaseIdentifier;
439  }
440
441 /**
442   * Set databaseIdentifier.
443   *
444   * <p>mzTab-M specification example(s):</p>
445   * <pre><code>A list of “|” separated possible identifiers for the small molecule; multiple values MUST only be provided to indicate ambiguity in the identification of the molecule and not to demonstrate different identifier types for the same molecule. Alternative identifiers for the same molecule MAY be provided as optional columns.
446
447The database identifier must be preceded by the resource description (prefix) followed by a colon, as specified in the metadata section.
448
449A null value MAY be provided if the identification is sufficiently ambiguous as to be meaningless for reporting or the small molecule has not been identified.
450</code></pre>
451   * 
452   * 
453   * @see #getDatabaseIdentifier SmallMoleculeSummary#getDatabaseIdentifier for validation constraints
454   * @param databaseIdentifier a {@code List<String>} parameter.
455  **/
456  public void setDatabaseIdentifier(List<String> databaseIdentifier) {
457    this.databaseIdentifier = databaseIdentifier;
458  }
459
460
461 /**
462   * Builder method for chemicalFormula.
463   *
464   * @see SmallMoleculeSummary#setChemicalFormula SmallMoleculeSummary#setChemicalFormula for specification examples
465   * @see SmallMoleculeSummary#getChemicalFormula SmallMoleculeSummary#getChemicalFormula for validation constraints
466   * @param chemicalFormula a {@code List<String>} parameter.
467   * @return SmallMoleculeSummary
468  **/
469  public SmallMoleculeSummary chemicalFormula(List<String> chemicalFormula) {
470   this.chemicalFormula = chemicalFormula;
471   return this;
472  }
473
474  /**
475   * Add a single chemicalFormulaItem to the chemicalFormula collection.
476   *
477   * @see SmallMoleculeSummary#getChemicalFormula SmallMoleculeSummary#getChemicalFormula for validation constraints
478   * @param chemicalFormulaItem a {@code String} parameter.
479   * @return SmallMoleculeSummary
480   */
481  public SmallMoleculeSummary addChemicalFormulaItem(String chemicalFormulaItem) {
482    if (this.chemicalFormula == null) {
483      this.chemicalFormula = new ArrayList<>();
484    }
485    this.chemicalFormula.add(chemicalFormulaItem);
486    return this;
487  }
488
489   /**
490   * A list of “|” separated potential chemical formulae of the reported compound. The number of values provided MUST match the number of entities reported under “database_identifier”, even if this leads to redundant reporting of information (i.e. if ambiguity can be resolved in the chemical formula), and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed.
491
492This should be specified in Hill notation (EA Hill 1900), i.e. elements in the order C, H and then alphabetically all other elements. Counts of one may be omitted. Elements should be capitalized properly to avoid confusion (e.g., “CO” vs. “Co”). The chemical formula reported should refer to the neutral form.
493
494Example: N-acetylglucosamine would be encoded by the string “C8H15NO6”.
495
496   *
497   * @return chemicalFormula
498  **/
499  @ApiModelProperty(value = "A list of “|” separated potential chemical formulae of the reported compound. The number of values provided MUST match the number of entities reported under “database_identifier”, even if this leads to redundant reporting of information (i.e. if ambiguity can be resolved in the chemical formula), and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed.  This should be specified in Hill notation (EA Hill 1900), i.e. elements in the order C, H and then alphabetically all other elements. Counts of one may be omitted. Elements should be capitalized properly to avoid confusion (e.g., “CO” vs. “Co”). The chemical formula reported should refer to the neutral form.  Example: N-acetylglucosamine would be encoded by the string “C8H15NO6”. ")
500  public List<String> getChemicalFormula() {
501    return chemicalFormula;
502  }
503
504 /**
505   * Set chemicalFormula.
506   *
507   * <p>mzTab-M specification example(s):</p>
508   * <pre><code>SMH     SML_ID  …       chemical_formula        …
509SML     1       …       C17H20N4O2      …
510</code></pre>
511   * 
512   * 
513   * @see #getChemicalFormula SmallMoleculeSummary#getChemicalFormula for validation constraints
514   * @param chemicalFormula a {@code List<String>} parameter.
515  **/
516  public void setChemicalFormula(List<String> chemicalFormula) {
517    this.chemicalFormula = chemicalFormula;
518  }
519
520
521 /**
522   * Builder method for smiles.
523   *
524   * @see SmallMoleculeSummary#setSmiles SmallMoleculeSummary#setSmiles for specification examples
525   * @see SmallMoleculeSummary#getSmiles SmallMoleculeSummary#getSmiles for validation constraints
526   * @param smiles a {@code List<String>} parameter.
527   * @return SmallMoleculeSummary
528  **/
529  public SmallMoleculeSummary smiles(List<String> smiles) {
530   this.smiles = smiles;
531   return this;
532  }
533
534  /**
535   * Add a single smilesItem to the smiles collection.
536   *
537   * @see SmallMoleculeSummary#getSmiles SmallMoleculeSummary#getSmiles for validation constraints
538   * @param smilesItem a {@code String} parameter.
539   * @return SmallMoleculeSummary
540   */
541  public SmallMoleculeSummary addSmilesItem(String smilesItem) {
542    if (this.smiles == null) {
543      this.smiles = new ArrayList<>();
544    }
545    this.smiles.add(smilesItem);
546    return this;
547  }
548
549   /**
550   * A list of “|” separated potential molecule structures in the simplified molecular-input line-entry system (SMILES) for the small molecule. The number of values provided MUST match the number of entities reported under “database_identifier”, and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed.
551   *
552   * @return smiles
553  **/
554  @ApiModelProperty(value = "A list of “|” separated potential molecule structures in the simplified molecular-input line-entry system (SMILES) for the small molecule. The number of values provided MUST match the number of entities reported under “database_identifier”, and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed.")
555  public List<String> getSmiles() {
556    return smiles;
557  }
558
559 /**
560   * Set smiles.
561   *
562   * <p>mzTab-M specification example(s):</p>
563   * <pre><code>SMH     SML_ID  …       chemical_formula        smiles  …
564SML     1       …       C17H20N4O2      C1=CC=C(C=C1)CCNC(=O)CCNNC(=O)C2=CC=NC=C2       …
565</code></pre>
566   * 
567   * 
568   * @see #getSmiles SmallMoleculeSummary#getSmiles for validation constraints
569   * @param smiles a {@code List<String>} parameter.
570  **/
571  public void setSmiles(List<String> smiles) {
572    this.smiles = smiles;
573  }
574
575
576 /**
577   * Builder method for inchi.
578   *
579   * @see SmallMoleculeSummary#setInchi SmallMoleculeSummary#setInchi for specification examples
580   * @see SmallMoleculeSummary#getInchi SmallMoleculeSummary#getInchi for validation constraints
581   * @param inchi a {@code List<String>} parameter.
582   * @return SmallMoleculeSummary
583  **/
584  public SmallMoleculeSummary inchi(List<String> inchi) {
585   this.inchi = inchi;
586   return this;
587  }
588
589  /**
590   * Add a single inchiItem to the inchi collection.
591   *
592   * @see SmallMoleculeSummary#getInchi SmallMoleculeSummary#getInchi for validation constraints
593   * @param inchiItem a {@code String} parameter.
594   * @return SmallMoleculeSummary
595   */
596  public SmallMoleculeSummary addInchiItem(String inchiItem) {
597    if (this.inchi == null) {
598      this.inchi = new ArrayList<>();
599    }
600    this.inchi.add(inchiItem);
601    return this;
602  }
603
604   /**
605   * A list of “|” separated potential standard IUPAC International Chemical Identifier (InChI) of the given substance.
606
607The number of values provided MUST match the number of entities reported under “database_identifier”, even if this leads to redundant information being reported (i.e. if ambiguity can be resolved in the InChi), and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed.
608
609   *
610   * @return inchi
611  **/
612  @ApiModelProperty(value = "A list of “|” separated potential standard IUPAC International Chemical Identifier (InChI) of the given substance.  The number of values provided MUST match the number of entities reported under “database_identifier”, even if this leads to redundant information being reported (i.e. if ambiguity can be resolved in the InChi), and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed. ")
613  public List<String> getInchi() {
614    return inchi;
615  }
616
617 /**
618   * Set inchi.
619   *
620   * <p>mzTab-M specification example(s):</p>
621   * <pre><code>SMH     SML_ID  …       chemical_formula        …       inchi   …
622SML     1       …       C17H20N4O2      …       InChI=1S/C17H20N4O2/c22-16(19-12-6-14-4-2-1-3-5-14)9-13-20-21-17(23)15-7-10-18-11-8-15/h1-5,7-8,10-11,20H,6,9,12-13H2,(H,19,22)(H,21,23)        …
623</code></pre>
624   * 
625   * 
626   * @see #getInchi SmallMoleculeSummary#getInchi for validation constraints
627   * @param inchi a {@code List<String>} parameter.
628  **/
629  public void setInchi(List<String> inchi) {
630    this.inchi = inchi;
631  }
632
633
634 /**
635   * Builder method for chemicalName.
636   *
637   * @see SmallMoleculeSummary#setChemicalName SmallMoleculeSummary#setChemicalName for specification examples
638   * @see SmallMoleculeSummary#getChemicalName SmallMoleculeSummary#getChemicalName for validation constraints
639   * @param chemicalName a {@code List<String>} parameter.
640   * @return SmallMoleculeSummary
641  **/
642  public SmallMoleculeSummary chemicalName(List<String> chemicalName) {
643   this.chemicalName = chemicalName;
644   return this;
645  }
646
647  /**
648   * Add a single chemicalNameItem to the chemicalName collection.
649   *
650   * @see SmallMoleculeSummary#getChemicalName SmallMoleculeSummary#getChemicalName for validation constraints
651   * @param chemicalNameItem a {@code String} parameter.
652   * @return SmallMoleculeSummary
653   */
654  public SmallMoleculeSummary addChemicalNameItem(String chemicalNameItem) {
655    if (this.chemicalName == null) {
656      this.chemicalName = new ArrayList<>();
657    }
658    this.chemicalName.add(chemicalNameItem);
659    return this;
660  }
661
662   /**
663   * A list of “|” separated possible chemical/common names for the small molecule, or general description if a chemical name is unavailable. Multiple names are only to demonstrate ambiguity in the identification. The number of values provided MUST match the number of entities reported under “database_identifier”, and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed.
664
665   *
666   * @return chemicalName
667  **/
668  @ApiModelProperty(value = "A list of “|” separated possible chemical/common names for the small molecule, or general description if a chemical name is unavailable. Multiple names are only to demonstrate ambiguity in the identification. The number of values provided MUST match the number of entities reported under “database_identifier”, and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed. ")
669  public List<String> getChemicalName() {
670    return chemicalName;
671  }
672
673 /**
674   * Set chemicalName.
675   *
676   * <p>mzTab-M specification example(s):</p>
677   * <pre><code>SMH     SML_ID  …       description     …
678SML     1       …       N-(2-phenylethyl)-3-[2-(pyridine-4-carbonyl)hydrazinyl]propanamide      …
679</code></pre>
680   * 
681   * 
682   * @see #getChemicalName SmallMoleculeSummary#getChemicalName for validation constraints
683   * @param chemicalName a {@code List<String>} parameter.
684  **/
685  public void setChemicalName(List<String> chemicalName) {
686    this.chemicalName = chemicalName;
687  }
688
689
690 /**
691   * Builder method for uri.
692   *
693   * @see SmallMoleculeSummary#setUri SmallMoleculeSummary#setUri for specification examples
694   * @see SmallMoleculeSummary#getUri SmallMoleculeSummary#getUri for validation constraints
695   * @param uri a {@code List<String>} parameter.
696   * @return SmallMoleculeSummary
697  **/
698  public SmallMoleculeSummary uri(List<String> uri) {
699   this.uri = uri;
700   return this;
701  }
702
703  /**
704   * Add a single uriItem to the uri collection.
705   *
706   * @see SmallMoleculeSummary#getUri SmallMoleculeSummary#getUri for validation constraints
707   * @param uriItem a {@code String} parameter.
708   * @return SmallMoleculeSummary
709   */
710  public SmallMoleculeSummary addUriItem(String uriItem) {
711    if (this.uri == null) {
712      this.uri = new ArrayList<>();
713    }
714    this.uri.add(uriItem);
715    return this;
716  }
717
718   /**
719   * A URI pointing to the small molecule’s entry in a reference database (e.g., the small molecule’s HMDB or KEGG entry). The number of values provided MUST match the number of entities reported under “database_identifier”, and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed.
720   *
721   * @return uri
722  **/
723  @ApiModelProperty(value = "A URI pointing to the small molecule’s entry in a reference database (e.g., the small molecule’s HMDB or KEGG entry). The number of values provided MUST match the number of entities reported under “database_identifier”, and the validation software will throw an error if the number of “|” symbols does not match. “null” values between bars are allowed.")
724  public List<String> getUri() {
725    return uri;
726  }
727
728 /**
729   * Set uri.
730   *
731   * <p>mzTab-M specification example(s):</p>
732   * <pre><code>SMH     SML_ID  …       uri     …
733SML     1       …       http://www.genome.jp/dbget-bin/www_bget?cpd:C00031      …
734SML     2       …       http://www.hmdb.ca/metabolites/HMDB0001847      …
735SML     3       …       http://identifiers.org/hmdb/HMDB0001847 …
736</code></pre>
737   * 
738   * 
739   * @see #getUri SmallMoleculeSummary#getUri for validation constraints
740   * @param uri a {@code List<String>} parameter.
741  **/
742  public void setUri(List<String> uri) {
743    this.uri = uri;
744  }
745
746
747 /**
748   * Builder method for theoreticalNeutralMass.
749   *
750   * @see SmallMoleculeSummary#setTheoreticalNeutralMass SmallMoleculeSummary#setTheoreticalNeutralMass for specification examples
751   * @see SmallMoleculeSummary#getTheoreticalNeutralMass SmallMoleculeSummary#getTheoreticalNeutralMass for validation constraints
752   * @param theoreticalNeutralMass a {@code List<Double>} parameter.
753   * @return SmallMoleculeSummary
754  **/
755  public SmallMoleculeSummary theoreticalNeutralMass(List<Double> theoreticalNeutralMass) {
756   this.theoreticalNeutralMass = theoreticalNeutralMass;
757   return this;
758  }
759
760  /**
761   * Add a single theoreticalNeutralMassItem to the theoreticalNeutralMass collection.
762   *
763   * @see SmallMoleculeSummary#getTheoreticalNeutralMass SmallMoleculeSummary#getTheoreticalNeutralMass for validation constraints
764   * @param theoreticalNeutralMassItem a {@code Double} parameter.
765   * @return SmallMoleculeSummary
766   */
767  public SmallMoleculeSummary addTheoreticalNeutralMassItem(Double theoreticalNeutralMassItem) {
768    if (this.theoreticalNeutralMass == null) {
769      this.theoreticalNeutralMass = new ArrayList<>();
770    }
771    this.theoreticalNeutralMass.add(theoreticalNeutralMassItem);
772    return this;
773  }
774
775   /**
776   * The small molecule’s precursor’s theoretical neutral mass.
777
778The number of values provided MUST match the number of entities reported under “database_identifier”, and the validation software will throw an error if the number of “|” symbols does not match. “null” values (in general and between bars) are allowed for molecules that have not been identified only, or for molecules where the neutral mass cannot be calculated. In these cases, the SML entry SHOULD reference features in which exp_mass_to_charge values are captured.
779
780   *
781   * @return theoreticalNeutralMass
782  **/
783  @ApiModelProperty(value = "The small molecule’s precursor’s theoretical neutral mass.  The number of values provided MUST match the number of entities reported under “database_identifier”, and the validation software will throw an error if the number of “|” symbols does not match. “null” values (in general and between bars) are allowed for molecules that have not been identified only, or for molecules where the neutral mass cannot be calculated. In these cases, the SML entry SHOULD reference features in which exp_mass_to_charge values are captured. ")
784  public List<Double> getTheoreticalNeutralMass() {
785    return theoreticalNeutralMass;
786  }
787
788 /**
789   * Set theoreticalNeutralMass.
790   *
791   * <p>mzTab-M specification example(s):</p>
792   * <pre><code>SMH     SML_ID  …       theoretical_neutral_mass        …
793SML     1       …       1234.5  …
794</code></pre>
795   * 
796   * 
797   * @see #getTheoreticalNeutralMass SmallMoleculeSummary#getTheoreticalNeutralMass for validation constraints
798   * @param theoreticalNeutralMass a {@code List<Double>} parameter.
799  **/
800  public void setTheoreticalNeutralMass(List<Double> theoreticalNeutralMass) {
801    this.theoreticalNeutralMass = theoreticalNeutralMass;
802  }
803
804
805 /**
806   * Builder method for adductIons.
807   *
808   * @see SmallMoleculeSummary#setAdductIons SmallMoleculeSummary#setAdductIons for specification examples
809   * @see SmallMoleculeSummary#getAdductIons SmallMoleculeSummary#getAdductIons for validation constraints
810   * @param adductIons a {@code List<String>} parameter.
811   * @return SmallMoleculeSummary
812  **/
813  public SmallMoleculeSummary adductIons(List<String> adductIons) {
814   this.adductIons = adductIons;
815   return this;
816  }
817
818  /**
819   * Add a single adductIonsItem to the adductIons collection.
820   *
821   * @see SmallMoleculeSummary#getAdductIons SmallMoleculeSummary#getAdductIons for validation constraints
822   * @param adductIonsItem a {@code String} parameter.
823   * @return SmallMoleculeSummary
824   */
825  public SmallMoleculeSummary addAdductIonsItem(String adductIonsItem) {
826    if (this.adductIons == null) {
827      this.adductIons = new ArrayList<>();
828    }
829    this.adductIons.add(adductIonsItem);
830    return this;
831  }
832
833   /**
834   * A “|” separated list of detected adducts for this this molecule, following the general style in the 2013 IUPAC recommendations on terms relating to MS e.g. [M+H]1+, [M+Na]1+, [M+NH4]1+, [M-H]1-, [M+Cl]1-, [M+H]1+. If the adduct classification is ambiguous with regards to identification evidence it MAY be null.
835
836   *
837   * @return adductIons
838  **/
839  @ApiModelProperty(value = "A “|” separated list of detected adducts for this this molecule, following the general style in the 2013 IUPAC recommendations on terms relating to MS e.g. [M+H]1+, [M+Na]1+, [M+NH4]1+, [M-H]1-, [M+Cl]1-, [M+H]1+. If the adduct classification is ambiguous with regards to identification evidence it MAY be null. ")
840  public List<String> getAdductIons() {
841    return adductIons;
842  }
843
844 /**
845   * Set adductIons.
846   *
847   * <p>mzTab-M specification example(s):</p>
848   * <pre><code>SMH     SML_ID  …       adduct_ions     …
849SML     1       …       [M+H]1+ | [M+Na]1+      …
850</code></pre>
851   * 
852   * 
853   * @see #getAdductIons SmallMoleculeSummary#getAdductIons for validation constraints
854   * @param adductIons a {@code List<String>} parameter.
855  **/
856  public void setAdductIons(List<String> adductIons) {
857    this.adductIons = adductIons;
858  }
859
860
861 /**
862   * Builder method for reliability.
863   *
864   * @see SmallMoleculeSummary#setReliability SmallMoleculeSummary#setReliability for specification examples
865   * @see SmallMoleculeSummary#getReliability SmallMoleculeSummary#getReliability for validation constraints
866   * @param reliability a {@code String} parameter.
867   * @return SmallMoleculeSummary
868  **/
869  public SmallMoleculeSummary reliability(String reliability) {
870   this.reliability = reliability;
871   return this;
872  }
873
874   /**
875   * The reliability of the given small molecule identification. This must be supplied by the resource and MUST be reported as an integer between 1-4:
876
877    identified metabolite (1)
878
879    putatively annotated compound (2)
880
881    putatively characterized compound class (3)
882
883    unknown compound (4)
884
885These MAY be replaced using a suitable CV term in the metadata section e.g. to use MSI recommendation levels (see Section 6.2.57 for details).
886
887The following CV terms are already available within the PSI MS CV. Future schemes may be implemented by extending the PSI MS CV with new terms and associated levels.
888
889The MSI has recently discussed an extension of the original four level scheme into a five level scheme MS:1002896 (compound identification confidence level) with levels
890
891    isolated, pure compound, full stereochemistry (0)
892
893    reference standard match or full 2D structure (1)
894
895    unambiguous diagnostic evidence (literature, database) (2)
896
897    most likely structure, including isomers, substance class or substructure match (3)
898
899    unknown compound (4)
900
901For high-resolution MS, the following term and its levels may be used: MS:1002955 (hr-ms compound identification confidence level) with levels
902
903    confirmed structure (1)
904
905    probable structure (2)
906
907        unambiguous ms library match (2a)
908
909        diagnostic evidence (2b)
910
911    tentative candidates (3)
912
913    unequivocal molecular formula (4)
914
915    exact mass (5)
916
917A String data type is set to allow for different systems to be specified in the metadata section.
918
919   *
920   * @return reliability
921  **/
922  @ApiModelProperty(value = "The reliability of the given small molecule identification. This must be supplied by the resource and MUST be reported as an integer between 1-4:      identified metabolite (1)      putatively annotated compound (2)      putatively characterized compound class (3)      unknown compound (4)  These MAY be replaced using a suitable CV term in the metadata section e.g. to use MSI recommendation levels (see Section 6.2.57 for details).  The following CV terms are already available within the PSI MS CV. Future schemes may be implemented by extending the PSI MS CV with new terms and associated levels.  The MSI has recently discussed an extension of the original four level scheme into a five level scheme MS:1002896 (compound identification confidence level) with levels      isolated, pure compound, full stereochemistry (0)      reference standard match or full 2D structure (1)      unambiguous diagnostic evidence (literature, database) (2)      most likely structure, including isomers, substance class or substructure match (3)      unknown compound (4)  For high-resolution MS, the following term and its levels may be used: MS:1002955 (hr-ms compound identification confidence level) with levels      confirmed structure (1)      probable structure (2)          unambiguous ms library match (2a)          diagnostic evidence (2b)      tentative candidates (3)      unequivocal molecular formula (4)      exact mass (5)  A String data type is set to allow for different systems to be specified in the metadata section. ")
923  public String getReliability() {
924    return reliability;
925  }
926
927 /**
928   * Set reliability.
929   *
930   * <p>mzTab-M specification example(s):</p>
931   * <pre><code>SMH     identifier      …       reliability     …
932SML     1       …       3       …
933
934or
935MTD     small_molecule-identification_reliability       [MS, MS:1002896, compound identification confidence level,]
936
937SMH     identifier      …       reliability     …
938SML     1       …       0       …
939
940or
941MTD     small_molecule-identification_reliability       [MS, MS:1002955, hr-ms compound identification confidence level,]
942
943SMH     identifier      …       reliability     …
944SML     1       …       2a      …
945</code></pre>
946   * 
947   * 
948   * @see #getReliability SmallMoleculeSummary#getReliability for validation constraints
949   * @param reliability a {@code String} parameter.
950  **/
951  public void setReliability(String reliability) {
952    this.reliability = reliability;
953  }
954
955
956 /**
957   * Builder method for bestIdConfidenceMeasure.
958   *
959   * @see SmallMoleculeSummary#setBestIdConfidenceMeasure SmallMoleculeSummary#setBestIdConfidenceMeasure for specification examples
960   * @see SmallMoleculeSummary#getBestIdConfidenceMeasure SmallMoleculeSummary#getBestIdConfidenceMeasure for validation constraints
961   * @param bestIdConfidenceMeasure a {@code Parameter} parameter.
962   * @return SmallMoleculeSummary
963  **/
964  public SmallMoleculeSummary bestIdConfidenceMeasure(Parameter bestIdConfidenceMeasure) {
965   this.bestIdConfidenceMeasure = bestIdConfidenceMeasure;
966   return this;
967  }
968
969   /**
970   * The approach or database search that identified this small molecule with highest confidence.
971   *
972   * @return bestIdConfidenceMeasure
973  **/
974  @Valid
975  @ApiModelProperty(value = "The approach or database search that identified this small molecule with highest confidence.")
976  public Parameter getBestIdConfidenceMeasure() {
977    return bestIdConfidenceMeasure;
978  }
979
980 /**
981   * Set bestIdConfidenceMeasure.
982   *
983   * 
984   * 
985   * @see #getBestIdConfidenceMeasure SmallMoleculeSummary#getBestIdConfidenceMeasure for validation constraints
986   * @param bestIdConfidenceMeasure a {@code Parameter} parameter.
987  **/
988  public void setBestIdConfidenceMeasure(Parameter bestIdConfidenceMeasure) {
989    this.bestIdConfidenceMeasure = bestIdConfidenceMeasure;
990  }
991
992
993 /**
994   * Builder method for bestIdConfidenceValue.
995   *
996   * @see SmallMoleculeSummary#setBestIdConfidenceValue SmallMoleculeSummary#setBestIdConfidenceValue for specification examples
997   * @see SmallMoleculeSummary#getBestIdConfidenceValue SmallMoleculeSummary#getBestIdConfidenceValue for validation constraints
998   * @param bestIdConfidenceValue a {@code Double} parameter.
999   * @return SmallMoleculeSummary
1000  **/
1001  public SmallMoleculeSummary bestIdConfidenceValue(Double bestIdConfidenceValue) {
1002   this.bestIdConfidenceValue = bestIdConfidenceValue;
1003   return this;
1004  }
1005
1006   /**
1007   * The best confidence measure in identification (for this type of score) for the given small molecule across all assays. The type of score MUST be defined in the metadata section. If the small molecule was not identified by the specified search engine, “null” MUST be reported. If the confidence measure does not report a numerical confidence value, “null” SHOULD be reported.
1008   *
1009   * @return bestIdConfidenceValue
1010  **/
1011  @ApiModelProperty(value = "The best confidence measure in identification (for this type of score) for the given small molecule across all assays. The type of score MUST be defined in the metadata section. If the small molecule was not identified by the specified search engine, “null” MUST be reported. If the confidence measure does not report a numerical confidence value, “null” SHOULD be reported.")
1012  public Double getBestIdConfidenceValue() {
1013    return bestIdConfidenceValue;
1014  }
1015
1016 /**
1017   * Set bestIdConfidenceValue.
1018   *
1019   * <p>mzTab-M specification example(s):</p>
1020   * <pre><code>SMH     SML_ID  …       best_id_confidence_value        …
1021SML     1       …       0.7     …
1022</code></pre>
1023   * 
1024   * 
1025   * @see #getBestIdConfidenceValue SmallMoleculeSummary#getBestIdConfidenceValue for validation constraints
1026   * @param bestIdConfidenceValue a {@code Double} parameter.
1027  **/
1028  public void setBestIdConfidenceValue(Double bestIdConfidenceValue) {
1029    this.bestIdConfidenceValue = bestIdConfidenceValue;
1030  }
1031
1032
1033 /**
1034   * Builder method for abundanceAssay.
1035   *
1036   * @see SmallMoleculeSummary#setAbundanceAssay SmallMoleculeSummary#setAbundanceAssay for specification examples
1037   * @see SmallMoleculeSummary#getAbundanceAssay SmallMoleculeSummary#getAbundanceAssay for validation constraints
1038   * @param abundanceAssay a {@code List<Double>} parameter.
1039   * @return SmallMoleculeSummary
1040  **/
1041  public SmallMoleculeSummary abundanceAssay(List<Double> abundanceAssay) {
1042   this.abundanceAssay = abundanceAssay;
1043   return this;
1044  }
1045
1046  /**
1047   * Add a single abundanceAssayItem to the abundanceAssay collection.
1048   *
1049   * @see SmallMoleculeSummary#getAbundanceAssay SmallMoleculeSummary#getAbundanceAssay for validation constraints
1050   * @param abundanceAssayItem a {@code Double} parameter.
1051   * @return SmallMoleculeSummary
1052   */
1053  public SmallMoleculeSummary addAbundanceAssayItem(Double abundanceAssayItem) {
1054    if (this.abundanceAssay == null) {
1055      this.abundanceAssay = new ArrayList<>();
1056    }
1057    this.abundanceAssay.add(abundanceAssayItem);
1058    return this;
1059  }
1060
1061   /**
1062   * The small molecule’s abundance in every assay described in the metadata section MUST be reported. Null or zero values may be reported as appropriate. &quot;null&quot; SHOULD be used to report missing quantities, while zero SHOULD be used to indicate a present but not reliably quantifiable value (e.g. below a minimum noise threshold).
1063   *
1064   * @return abundanceAssay
1065  **/
1066  @ApiModelProperty(value = "The small molecule’s abundance in every assay described in the metadata section MUST be reported. Null or zero values may be reported as appropriate. \"null\" SHOULD be used to report missing quantities, while zero SHOULD be used to indicate a present but not reliably quantifiable value (e.g. below a minimum noise threshold).")
1067  public List<Double> getAbundanceAssay() {
1068    return abundanceAssay;
1069  }
1070
1071 /**
1072   * Set abundanceAssay.
1073   *
1074   * <p>mzTab-M specification example(s):</p>
1075   * <pre><code>SMH     SML_ID  …       abundance_assay[1]      …
1076SML     1       …       0.3     …
1077</code></pre>
1078   * 
1079   * 
1080   * @see #getAbundanceAssay SmallMoleculeSummary#getAbundanceAssay for validation constraints
1081   * @param abundanceAssay a {@code List<Double>} parameter.
1082  **/
1083  public void setAbundanceAssay(List<Double> abundanceAssay) {
1084    this.abundanceAssay = abundanceAssay;
1085  }
1086
1087
1088 /**
1089   * Builder method for abundanceStudyVariable.
1090   *
1091   * @see SmallMoleculeSummary#setAbundanceStudyVariable SmallMoleculeSummary#setAbundanceStudyVariable for specification examples
1092   * @see SmallMoleculeSummary#getAbundanceStudyVariable SmallMoleculeSummary#getAbundanceStudyVariable for validation constraints
1093   * @param abundanceStudyVariable a {@code List<Double>} parameter.
1094   * @return SmallMoleculeSummary
1095  **/
1096  public SmallMoleculeSummary abundanceStudyVariable(List<Double> abundanceStudyVariable) {
1097   this.abundanceStudyVariable = abundanceStudyVariable;
1098   return this;
1099  }
1100
1101  /**
1102   * Add a single abundanceStudyVariableItem to the abundanceStudyVariable collection.
1103   *
1104   * @see SmallMoleculeSummary#getAbundanceStudyVariable SmallMoleculeSummary#getAbundanceStudyVariable for validation constraints
1105   * @param abundanceStudyVariableItem a {@code Double} parameter.
1106   * @return SmallMoleculeSummary
1107   */
1108  public SmallMoleculeSummary addAbundanceStudyVariableItem(Double abundanceStudyVariableItem) {
1109    if (this.abundanceStudyVariable == null) {
1110      this.abundanceStudyVariable = new ArrayList<>();
1111    }
1112    this.abundanceStudyVariable.add(abundanceStudyVariableItem);
1113    return this;
1114  }
1115
1116   /**
1117   * The small molecule’s abundance in all the study variables described in the metadata section (study_variable[1-n]_average_function), calculated using the method as described in the Metadata section (default &#x3D; arithmetic mean across assays). Null or zero values may be reported as appropriate. &quot;null&quot; SHOULD be used to report missing quantities, while zero SHOULD be used to indicate a present but not reliably quantifiable value (e.g. below a minimum noise threshold).
1118   *
1119   * @return abundanceStudyVariable
1120  **/
1121  @ApiModelProperty(value = "The small molecule’s abundance in all the study variables described in the metadata section (study_variable[1-n]_average_function), calculated using the method as described in the Metadata section (default = arithmetic mean across assays). Null or zero values may be reported as appropriate. \"null\" SHOULD be used to report missing quantities, while zero SHOULD be used to indicate a present but not reliably quantifiable value (e.g. below a minimum noise threshold).")
1122  public List<Double> getAbundanceStudyVariable() {
1123    return abundanceStudyVariable;
1124  }
1125
1126 /**
1127   * Set abundanceStudyVariable.
1128   *
1129   * <p>mzTab-M specification example(s):</p>
1130   * <pre><code>SMH     SML_ID  …       abundance_study_variable[1]     …
1131SML     1       …       0.3     …
1132</code></pre>
1133   * 
1134   * 
1135   * @see #getAbundanceStudyVariable SmallMoleculeSummary#getAbundanceStudyVariable for validation constraints
1136   * @param abundanceStudyVariable a {@code List<Double>} parameter.
1137  **/
1138  public void setAbundanceStudyVariable(List<Double> abundanceStudyVariable) {
1139    this.abundanceStudyVariable = abundanceStudyVariable;
1140  }
1141
1142
1143 /**
1144   * Builder method for abundanceVariationStudyVariable.
1145   *
1146   * @see SmallMoleculeSummary#setAbundanceVariationStudyVariable SmallMoleculeSummary#setAbundanceVariationStudyVariable for specification examples
1147   * @see SmallMoleculeSummary#getAbundanceVariationStudyVariable SmallMoleculeSummary#getAbundanceVariationStudyVariable for validation constraints
1148   * @param abundanceVariationStudyVariable a {@code List<Double>} parameter.
1149   * @return SmallMoleculeSummary
1150  **/
1151  public SmallMoleculeSummary abundanceVariationStudyVariable(List<Double> abundanceVariationStudyVariable) {
1152   this.abundanceVariationStudyVariable = abundanceVariationStudyVariable;
1153   return this;
1154  }
1155
1156  /**
1157   * Add a single abundanceVariationStudyVariableItem to the abundanceVariationStudyVariable collection.
1158   *
1159   * @see SmallMoleculeSummary#getAbundanceVariationStudyVariable SmallMoleculeSummary#getAbundanceVariationStudyVariable for validation constraints
1160   * @param abundanceVariationStudyVariableItem a {@code Double} parameter.
1161   * @return SmallMoleculeSummary
1162   */
1163  public SmallMoleculeSummary addAbundanceVariationStudyVariableItem(Double abundanceVariationStudyVariableItem) {
1164    if (this.abundanceVariationStudyVariable == null) {
1165      this.abundanceVariationStudyVariable = new ArrayList<>();
1166    }
1167    this.abundanceVariationStudyVariable.add(abundanceVariationStudyVariableItem);
1168    return this;
1169  }
1170
1171   /**
1172   * A measure of the variability of the study variable abundance measurement, calculated using the method as described in the metadata section (study_variable[1-n]_average_function), with a default &#x3D; arithmethic co-efficient of variation of the small molecule’s abundance in the given study variable.
1173   *
1174   * @return abundanceVariationStudyVariable
1175  **/
1176  @ApiModelProperty(value = "A measure of the variability of the study variable abundance measurement, calculated using the method as described in the metadata section (study_variable[1-n]_average_function), with a default = arithmethic co-efficient of variation of the small molecule’s abundance in the given study variable.")
1177  public List<Double> getAbundanceVariationStudyVariable() {
1178    return abundanceVariationStudyVariable;
1179  }
1180
1181 /**
1182   * Set abundanceVariationStudyVariable.
1183   *
1184   * <p>mzTab-M specification example(s):</p>
1185   * <pre><code>SMH     SML_ID  …       abundance_study_variable[1]     abundance_variation_study_variable[1]   …
1186SML     1       …       0.3     0.04    …
1187</code></pre>
1188   * 
1189   * 
1190   * @see #getAbundanceVariationStudyVariable SmallMoleculeSummary#getAbundanceVariationStudyVariable for validation constraints
1191   * @param abundanceVariationStudyVariable a {@code List<Double>} parameter.
1192  **/
1193  public void setAbundanceVariationStudyVariable(List<Double> abundanceVariationStudyVariable) {
1194    this.abundanceVariationStudyVariable = abundanceVariationStudyVariable;
1195  }
1196
1197
1198 /**
1199   * Builder method for opt.
1200   *
1201   * @see SmallMoleculeSummary#setOpt SmallMoleculeSummary#setOpt for specification examples
1202   * @see SmallMoleculeSummary#getOpt SmallMoleculeSummary#getOpt for validation constraints
1203   * @param opt a {@code List<OptColumnMapping>} parameter.
1204   * @return SmallMoleculeSummary
1205  **/
1206  public SmallMoleculeSummary opt(List<OptColumnMapping> opt) {
1207   this.opt = opt;
1208   return this;
1209  }
1210
1211  /**
1212   * Add a single optItem to the opt collection.
1213   *
1214   * @see SmallMoleculeSummary#getOpt SmallMoleculeSummary#getOpt for validation constraints
1215   * @param optItem a {@code OptColumnMapping} parameter.
1216   * @return SmallMoleculeSummary
1217   */
1218  public SmallMoleculeSummary addOptItem(OptColumnMapping optItem) {
1219    if (this.opt == null) {
1220      this.opt = new ArrayList<>();
1221    }
1222    this.opt.add(optItem);
1223    return this;
1224  }
1225
1226   /**
1227   * Additional columns can be added to the end of the small molecule table. These column headers MUST start with the prefix “opt_” followed by the {identifier} of the object they reference: assay, study variable, MS run or “global” (if the value relates to all replicates). Column names MUST only contain the following characters: ‘A’-‘Z’, ‘a’-‘z’, ‘0’-‘9’, ‘’, ‘-’, ‘[’, ‘]’, and ‘:’. CV parameter accessions MAY be used for optional columns following the format: opt{identifier}_cv_{accession}_\{parameter name}. Spaces within the parameter’s name MUST be replaced by ‘_’.
1228
1229   *
1230   * @return opt
1231  **/
1232  @Valid
1233  @ApiModelProperty(value = "Additional columns can be added to the end of the small molecule table. These column headers MUST start with the prefix “opt_” followed by the {identifier} of the object they reference: assay, study variable, MS run or “global” (if the value relates to all replicates). Column names MUST only contain the following characters: ‘A’-‘Z’, ‘a’-‘z’, ‘0’-‘9’, ‘’, ‘-’, ‘[’, ‘]’, and ‘:’. CV parameter accessions MAY be used for optional columns following the format: opt{identifier}_cv_{accession}_\\{parameter name}. Spaces within the parameter’s name MUST be replaced by ‘_’. ")
1234  public List<OptColumnMapping> getOpt() {
1235    return opt;
1236  }
1237
1238 /**
1239   * Set opt.
1240   *
1241   * <p>mzTab-M specification example(s):</p>
1242   * <pre><code>SMH     SML_ID  …       opt_assay[1]_my_value   …       opt_global_another_value
1243SML     1       …       My value        …       some other value
1244</code></pre>
1245   * 
1246   * 
1247   * @see #getOpt SmallMoleculeSummary#getOpt for validation constraints
1248   * @param opt a {@code List<OptColumnMapping>} parameter.
1249  **/
1250  public void setOpt(List<OptColumnMapping> opt) {
1251    this.opt = opt;
1252  }
1253
1254
1255 /**
1256   * Builder method for comment.
1257   *
1258   * @see SmallMoleculeSummary#setComment SmallMoleculeSummary#setComment for specification examples
1259   * @see SmallMoleculeSummary#getComment SmallMoleculeSummary#getComment for validation constraints
1260   * @param comment a {@code List<Comment>} parameter.
1261   * @return SmallMoleculeSummary
1262  **/
1263  public SmallMoleculeSummary comment(List<Comment> comment) {
1264   this.comment = comment;
1265   return this;
1266  }
1267
1268  /**
1269   * Add a single commentItem to the comment collection.
1270   *
1271   * @see SmallMoleculeSummary#getComment SmallMoleculeSummary#getComment for validation constraints
1272   * @param commentItem a {@code Comment} parameter.
1273   * @return SmallMoleculeSummary
1274   */
1275  public SmallMoleculeSummary addCommentItem(Comment commentItem) {
1276    if (this.comment == null) {
1277      this.comment = new ArrayList<>();
1278    }
1279    this.comment.add(commentItem);
1280    return this;
1281  }
1282
1283   /**
1284   * <p>Get comment.</p>
1285   *
1286   * @return comment
1287  **/
1288  @Valid
1289  @ApiModelProperty(value = "")
1290  public List<Comment> getComment() {
1291    return comment;
1292  }
1293
1294 /**
1295   * Set comment.
1296   *
1297   * 
1298   * 
1299   * @see #getComment SmallMoleculeSummary#getComment for validation constraints
1300   * @param comment a {@code List<Comment>} parameter.
1301  **/
1302  public void setComment(List<Comment> comment) {
1303    this.comment = comment;
1304  }
1305
1306
1307  @Override
1308  public boolean equals(java.lang.Object o) {
1309    if (this == o) {
1310      return true;
1311    }
1312    if (o == null || getClass() != o.getClass()) {
1313      return false;
1314    }
1315    SmallMoleculeSummary smallMoleculeSummary = (SmallMoleculeSummary) o;
1316    return Objects.equals(this.prefix, smallMoleculeSummary.prefix) &&
1317        Objects.equals(this.headerPrefix, smallMoleculeSummary.headerPrefix) &&
1318        Objects.equals(this.smlId, smallMoleculeSummary.smlId) &&
1319        Objects.equals(this.smfIdRefs, smallMoleculeSummary.smfIdRefs) &&
1320        Objects.equals(this.databaseIdentifier, smallMoleculeSummary.databaseIdentifier) &&
1321        Objects.equals(this.chemicalFormula, smallMoleculeSummary.chemicalFormula) &&
1322        Objects.equals(this.smiles, smallMoleculeSummary.smiles) &&
1323        Objects.equals(this.inchi, smallMoleculeSummary.inchi) &&
1324        Objects.equals(this.chemicalName, smallMoleculeSummary.chemicalName) &&
1325        Objects.equals(this.uri, smallMoleculeSummary.uri) &&
1326        Objects.equals(this.theoreticalNeutralMass, smallMoleculeSummary.theoreticalNeutralMass) &&
1327        Objects.equals(this.adductIons, smallMoleculeSummary.adductIons) &&
1328        Objects.equals(this.reliability, smallMoleculeSummary.reliability) &&
1329        Objects.equals(this.bestIdConfidenceMeasure, smallMoleculeSummary.bestIdConfidenceMeasure) &&
1330        Objects.equals(this.bestIdConfidenceValue, smallMoleculeSummary.bestIdConfidenceValue) &&
1331        Objects.equals(this.abundanceAssay, smallMoleculeSummary.abundanceAssay) &&
1332        Objects.equals(this.abundanceStudyVariable, smallMoleculeSummary.abundanceStudyVariable) &&
1333        Objects.equals(this.abundanceVariationStudyVariable, smallMoleculeSummary.abundanceVariationStudyVariable) &&
1334        Objects.equals(this.opt, smallMoleculeSummary.opt) &&
1335        Objects.equals(this.comment, smallMoleculeSummary.comment);
1336  }
1337
1338  @Override
1339  public int hashCode() {
1340    return Objects.hash(prefix, headerPrefix, smlId, smfIdRefs, databaseIdentifier, chemicalFormula, smiles, inchi, chemicalName, uri, theoreticalNeutralMass, adductIons, reliability, bestIdConfidenceMeasure, bestIdConfidenceValue, abundanceAssay, abundanceStudyVariable, abundanceVariationStudyVariable, opt, comment);
1341  }
1342
1343
1344  @Override
1345  public String toString() {
1346    StringBuilder sb = new StringBuilder();
1347    sb.append("class SmallMoleculeSummary {\n");
1348    
1349    sb.append("    prefix: ").append(toIndentedString(prefix)).append("\n");
1350    sb.append("    headerPrefix: ").append(toIndentedString(headerPrefix)).append("\n");
1351    sb.append("    smlId: ").append(toIndentedString(smlId)).append("\n");
1352    sb.append("    smfIdRefs: ").append(toIndentedString(smfIdRefs)).append("\n");
1353    sb.append("    databaseIdentifier: ").append(toIndentedString(databaseIdentifier)).append("\n");
1354    sb.append("    chemicalFormula: ").append(toIndentedString(chemicalFormula)).append("\n");
1355    sb.append("    smiles: ").append(toIndentedString(smiles)).append("\n");
1356    sb.append("    inchi: ").append(toIndentedString(inchi)).append("\n");
1357    sb.append("    chemicalName: ").append(toIndentedString(chemicalName)).append("\n");
1358    sb.append("    uri: ").append(toIndentedString(uri)).append("\n");
1359    sb.append("    theoreticalNeutralMass: ").append(toIndentedString(theoreticalNeutralMass)).append("\n");
1360    sb.append("    adductIons: ").append(toIndentedString(adductIons)).append("\n");
1361    sb.append("    reliability: ").append(toIndentedString(reliability)).append("\n");
1362    sb.append("    bestIdConfidenceMeasure: ").append(toIndentedString(bestIdConfidenceMeasure)).append("\n");
1363    sb.append("    bestIdConfidenceValue: ").append(toIndentedString(bestIdConfidenceValue)).append("\n");
1364    sb.append("    abundanceAssay: ").append(toIndentedString(abundanceAssay)).append("\n");
1365    sb.append("    abundanceStudyVariable: ").append(toIndentedString(abundanceStudyVariable)).append("\n");
1366    sb.append("    abundanceVariationStudyVariable: ").append(toIndentedString(abundanceVariationStudyVariable)).append("\n");
1367    sb.append("    opt: ").append(toIndentedString(opt)).append("\n");
1368    sb.append("    comment: ").append(toIndentedString(comment)).append("\n");
1369    sb.append("}");
1370    return sb.toString();
1371  }
1372
1373  /**
1374   * Convert the given object to string with each line indented by 4 spaces
1375   * (except the first line).
1376   */
1377  private String toIndentedString(java.lang.Object o) {
1378    if (o == null) {
1379      return "null";
1380    }
1381    return o.toString().replace("\n", "\n    ");
1382  }
1383
1384}
1385