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.Assay;
022import de.isas.mztab2.model.CV;
023import de.isas.mztab2.model.ColumnParameterMapping;
024import de.isas.mztab2.model.Contact;
025import de.isas.mztab2.model.Database;
026import de.isas.mztab2.model.Instrument;
027import de.isas.mztab2.model.MsRun;
028import de.isas.mztab2.model.Parameter;
029import de.isas.mztab2.model.Publication;
030import de.isas.mztab2.model.Sample;
031import de.isas.mztab2.model.SampleProcessing;
032import de.isas.mztab2.model.Software;
033import de.isas.mztab2.model.StudyVariable;
034import de.isas.mztab2.model.Uri;
035import io.swagger.annotations.ApiModel;
036import io.swagger.annotations.ApiModelProperty;
037import java.util.ArrayList;
038import java.util.List;
039import com.fasterxml.jackson.dataformat.xml.annotation.*;
040import javax.xml.bind.annotation.*;
041import javax.validation.constraints.*;
042import javax.validation.Valid;
043import de.isas.lipidomics.mztab2.validation.constraints.*;
044/**
045 * 
046 * The metadata section provides additional information about the dataset(s) reported in the mzTab file. All fields in the metadata section are optional apart from those noted as mandatory. The fields in the metadata section MUST be reported in order of the various fields listed here. The field’s name and value MUST be separated by a tab character. 
047
048 * 
049 *
050 * <p>mzTab-M specification example(s):</p>
051 * <pre><code>MTD       mzTab-version   2.0.0-M
052MTD     mzTab-ID        MTBL1234
053MTD     title   Effects of Rapamycin on metabolite profile
054...
055</code></pre>
056 * 
057 *
058 */
059@ApiModel(description = "The metadata section provides additional information about the dataset(s) reported in the mzTab file. All fields in the metadata section are optional apart from those noted as mandatory. The fields in the metadata section MUST be reported in order of the various fields listed here. The field’s name and value MUST be separated by a tab character.  ")
060@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2021-01-02T19:26:21.550+01:00")
061@XmlRootElement(name = "Metadata")
062@XmlAccessorType(XmlAccessType.FIELD)
063@JacksonXmlRootElement(localName = "Metadata")
064public class Metadata {
065
066  /**
067   * Property enumeration for Metadata.
068   */
069  public static enum Properties {
070      prefix("prefix"), 
071      mzTabVersion("mzTab-version"), 
072      mzTabID("mzTab-ID"), 
073      title("title"), 
074      description("description"), 
075      contact("contact"), 
076      publication("publication"), 
077      uri("uri"), 
078      externalStudyUri("external_study_uri"), 
079      instrument("instrument"), 
080      quantificationMethod("quantification_method"), 
081      sample("sample"), 
082      sampleProcessing("sample_processing"), 
083      software("software"), 
084      derivatizationAgent("derivatization_agent"), 
085      msRun("ms_run"), 
086      assay("assay"), 
087      studyVariable("study_variable"), 
088      custom("custom"), 
089      cv("cv"), 
090      smallMoleculeQuantificationUnit("small_molecule-quantification_unit"), 
091      smallMoleculeFeatureQuantificationUnit("small_molecule_feature-quantification_unit"), 
092      smallMoleculeIdentificationReliability("small_molecule-identification_reliability"), 
093      database("database"), 
094      idConfidenceMeasure("id_confidence_measure"), 
095      colunitSmallMolecule("colunit-small_molecule"), 
096      colunitSmallMoleculeFeature("colunit-small_molecule_feature"), 
097      colunitSmallMoleculeEvidence("colunit-small_molecule_evidence");
098
099    private final String propertyName;
100
101    private Properties(String propertyName) {
102      this.propertyName = propertyName;
103    }
104
105    public String getPropertyName() {
106      return propertyName;
107    }
108
109    public String toString() {
110      return propertyName;
111    }
112
113    public String toUpper() {
114      return propertyName.toUpperCase();
115    }
116
117    public static Properties of(String value) {
118      if(value==null) {
119        throw new NullPointerException("Argument value must not be null!");
120      }
121      return Arrays.asList(Properties.values()).stream().filter(m -> m.propertyName.equals(value.toLowerCase())).findAny().orElseThrow(IllegalArgumentException::new);
122    }
123  };
124  
125  /**
126   * The metadata section prefix. MUST always be MTD.
127
128   */
129  public enum PrefixEnum {
130    MTD("MTD");
131
132    private String value;
133
134    PrefixEnum(String value) {
135      this.value = value;
136    }
137
138    @JsonValue
139    public String getValue() {
140      return value;
141    }
142
143    @Override
144    public String toString() {
145      return String.valueOf(value);
146    }
147
148    @JsonCreator
149    public static PrefixEnum fromValue(String text) {
150      for (PrefixEnum b : PrefixEnum.values()) {
151        if (String.valueOf(b.value).equals(text)) {
152          return b;
153        }
154      }
155      return null;
156    }
157  }
158
159  @JsonProperty("prefix")
160  @JacksonXmlProperty(localName = "prefix")
161  @XmlElement(name = "prefix")
162  private PrefixEnum prefix = PrefixEnum.MTD;
163  @JsonProperty("mzTab-version")
164  @JacksonXmlProperty(localName = "mzTab-version")
165  @XmlElement(name = "mzTab-version")
166  private String mzTabVersion = null;
167  @JsonProperty("mzTab-ID")
168  @JacksonXmlProperty(localName = "mzTab-ID")
169  @XmlElement(name = "mzTab-ID")
170  private String mzTabID = null;
171  @JsonProperty("title")
172  @JacksonXmlProperty(localName = "title")
173  @XmlElement(name = "title")
174  private String title = null;
175  @JsonProperty("description")
176  @JacksonXmlProperty(localName = "description")
177  @XmlElement(name = "description")
178  private String description = null;
179  @JsonProperty("contact")
180  // Is a container wrapped=false
181  // items.name=contact items.baseName=contact items.xmlName= items.xmlNamespace=
182  // items.example= items.type=Contact
183  @XmlElement(name = "contact")
184  private List<Contact> contact = null;
185  @JsonProperty("publication")
186  // Is a container wrapped=false
187  // items.name=publication items.baseName=publication items.xmlName= items.xmlNamespace=
188  // items.example= items.type=Publication
189  @XmlElement(name = "publication")
190  private List<Publication> publication = null;
191  @JsonProperty("uri")
192  // Is a container wrapped=false
193  // items.name=uri items.baseName=uri items.xmlName= items.xmlNamespace=
194  // items.example= items.type=Uri
195  @XmlElement(name = "uri")
196  private List<Uri> uri = null;
197  @JsonProperty("external_study_uri")
198  // Is a container wrapped=false
199  // items.name=externalStudyUri items.baseName=externalStudyUri items.xmlName= items.xmlNamespace=
200  // items.example= items.type=Uri
201  @XmlElement(name = "externalStudyUri")
202  private List<Uri> externalStudyUri = null;
203  @JsonProperty("instrument")
204  // Is a container wrapped=false
205  // items.name=instrument items.baseName=instrument items.xmlName= items.xmlNamespace=
206  // items.example= items.type=Instrument
207  @XmlElement(name = "instrument")
208  private List<Instrument> instrument = null;
209  @JsonProperty("quantification_method")
210  @JacksonXmlProperty(localName = "quantification_method")
211  @XmlElement(name = "quantification_method")
212  private Parameter quantificationMethod = null;
213  @JsonProperty("sample")
214  // Is a container wrapped=false
215  // items.name=sample items.baseName=sample items.xmlName= items.xmlNamespace=
216  // items.example= items.type=Sample
217  @XmlElement(name = "sample")
218  private List<Sample> sample = null;
219  @JsonProperty("sample_processing")
220  // Is a container wrapped=false
221  // items.name=sampleProcessing items.baseName=sampleProcessing items.xmlName= items.xmlNamespace=
222  // items.example= items.type=SampleProcessing
223  @XmlElement(name = "sampleProcessing")
224  private List<SampleProcessing> sampleProcessing = null;
225  @JsonProperty("software")
226  // Is a container wrapped=false
227  // items.name=software items.baseName=software items.xmlName= items.xmlNamespace=
228  // items.example= items.type=Software
229  @XmlElement(name = "software")
230  private List<Software> software = new ArrayList<>();
231  @JsonProperty("derivatization_agent")
232  // Is a container wrapped=false
233  // items.name=derivatizationAgent items.baseName=derivatizationAgent items.xmlName= items.xmlNamespace=
234  // items.example= items.type=Parameter
235  @XmlElement(name = "derivatizationAgent")
236  private List<Parameter> derivatizationAgent = null;
237  @JsonProperty("ms_run")
238  // Is a container wrapped=false
239  // items.name=msRun items.baseName=msRun items.xmlName= items.xmlNamespace=
240  // items.example= items.type=MsRun
241  @XmlElement(name = "msRun")
242  private List<MsRun> msRun = new ArrayList<>();
243  @JsonProperty("assay")
244  // Is a container wrapped=false
245  // items.name=assay items.baseName=assay items.xmlName= items.xmlNamespace=
246  // items.example= items.type=Assay
247  @XmlElement(name = "assay")
248  private List<Assay> assay = new ArrayList<>();
249  @JsonProperty("study_variable")
250  // Is a container wrapped=false
251  // items.name=studyVariable items.baseName=studyVariable items.xmlName= items.xmlNamespace=
252  // items.example= items.type=StudyVariable
253  @XmlElement(name = "studyVariable")
254  private List<StudyVariable> studyVariable = new ArrayList<>();
255  @JsonProperty("custom")
256  // Is a container wrapped=false
257  // items.name=custom items.baseName=custom items.xmlName= items.xmlNamespace=
258  // items.example= items.type=Parameter
259  @XmlElement(name = "custom")
260  private List<Parameter> custom = null;
261  @JsonProperty("cv")
262  // Is a container wrapped=false
263  // items.name=cv items.baseName=cv items.xmlName= items.xmlNamespace=
264  // items.example= items.type=CV
265  @XmlElement(name = "cv")
266  private List<CV> cv = new ArrayList<>();
267  @JsonProperty("small_molecule-quantification_unit")
268  @JacksonXmlProperty(localName = "small_molecule-quantification_unit")
269  @XmlElement(name = "small_molecule-quantification_unit")
270  private Parameter smallMoleculeQuantificationUnit = null;
271  @JsonProperty("small_molecule_feature-quantification_unit")
272  @JacksonXmlProperty(localName = "small_molecule_feature-quantification_unit")
273  @XmlElement(name = "small_molecule_feature-quantification_unit")
274  private Parameter smallMoleculeFeatureQuantificationUnit = null;
275  @JsonProperty("small_molecule-identification_reliability")
276  @JacksonXmlProperty(localName = "small_molecule-identification_reliability")
277  @XmlElement(name = "small_molecule-identification_reliability")
278  private Parameter smallMoleculeIdentificationReliability = null;
279  @JsonProperty("database")
280  // Is a container wrapped=false
281  // items.name=database items.baseName=database items.xmlName= items.xmlNamespace=
282  // items.example= items.type=Database
283  @XmlElement(name = "database")
284  private List<Database> database = new ArrayList<>();
285  @JsonProperty("id_confidence_measure")
286  // Is a container wrapped=false
287  // items.name=idConfidenceMeasure items.baseName=idConfidenceMeasure items.xmlName= items.xmlNamespace=
288  // items.example= items.type=Parameter
289  @XmlElement(name = "idConfidenceMeasure")
290  private List<Parameter> idConfidenceMeasure = new ArrayList<>();
291  @JsonProperty("colunit-small_molecule")
292  // Is a container wrapped=false
293  // items.name=colunitSmallMolecule items.baseName=colunitSmallMolecule items.xmlName= items.xmlNamespace=
294  // items.example= items.type=ColumnParameterMapping
295  @XmlElement(name = "colunitSmallMolecule")
296  private List<ColumnParameterMapping> colunitSmallMolecule = null;
297  @JsonProperty("colunit-small_molecule_feature")
298  // Is a container wrapped=false
299  // items.name=colunitSmallMoleculeFeature items.baseName=colunitSmallMoleculeFeature items.xmlName= items.xmlNamespace=
300  // items.example= items.type=ColumnParameterMapping
301  @XmlElement(name = "colunitSmallMoleculeFeature")
302  private List<ColumnParameterMapping> colunitSmallMoleculeFeature = null;
303  @JsonProperty("colunit-small_molecule_evidence")
304  // Is a container wrapped=false
305  // items.name=colunitSmallMoleculeEvidence items.baseName=colunitSmallMoleculeEvidence items.xmlName= items.xmlNamespace=
306  // items.example= items.type=ColumnParameterMapping
307  @XmlElement(name = "colunitSmallMoleculeEvidence")
308  private List<ColumnParameterMapping> colunitSmallMoleculeEvidence = null;
309
310 /**
311   * Builder method for prefix.
312   *
313   * @see Metadata#setPrefix Metadata#setPrefix for specification examples
314   * @see Metadata#getPrefix Metadata#getPrefix for validation constraints
315   * @param prefix a {@code PrefixEnum} parameter.
316   * @return Metadata
317  **/
318  public Metadata prefix(PrefixEnum prefix) {
319   this.prefix = prefix;
320   return this;
321  }
322
323   /**
324   * The metadata section prefix. MUST always be MTD.
325
326   *
327   * @return prefix
328  **/
329  @NotNull
330  @ApiModelProperty(example = "MTD", required = true, value = "The metadata section prefix. MUST always be MTD. ")
331  public PrefixEnum getPrefix() {
332    return prefix;
333  }
334
335 /**
336   * Set prefix.
337   *
338   * 
339   * 
340   * @see #getPrefix Metadata#getPrefix for validation constraints
341   * @param prefix a {@code PrefixEnum} parameter.
342  **/
343  public void setPrefix(PrefixEnum prefix) {
344    this.prefix = prefix;
345  }
346
347
348 /**
349   * Builder method for mzTabVersion.
350   *
351   * @see Metadata#setMzTabVersion Metadata#setMzTabVersion for specification examples
352   * @see Metadata#getMzTabVersion Metadata#getMzTabVersion for validation constraints
353   * @param mzTabVersion a {@code String} parameter.
354   * @return Metadata
355  **/
356  public Metadata mzTabVersion(String mzTabVersion) {
357   this.mzTabVersion = mzTabVersion;
358   return this;
359  }
360
361   /**
362   * The version of the mzTab file. The suffix MUST be &quot;-M&quot; for mzTab for metabolomics (mzTab-M).
363
364   *
365   * @return mzTabVersion
366  **/
367  @NotNull
368 @Pattern(regexp="^\\d{1}\\.\\d{1}\\.\\d{1}-[A-Z]{1}$")  @ApiModelProperty(required = true, value = "The version of the mzTab file. The suffix MUST be \"-M\" for mzTab for metabolomics (mzTab-M). ")
369  public String getMzTabVersion() {
370    return mzTabVersion;
371  }
372
373 /**
374   * Set mzTabVersion.
375   *
376   * <p>mzTab-M specification example(s):</p>
377   * <pre><code>MTD     mzTab-version   2.0.0-M
378MTD     mzTab-version   2.0.1-M
379</code></pre>
380   * 
381   * 
382   * @see #getMzTabVersion Metadata#getMzTabVersion for validation constraints
383   * @param mzTabVersion a {@code String} parameter.
384  **/
385  public void setMzTabVersion(String mzTabVersion) {
386    this.mzTabVersion = mzTabVersion;
387  }
388
389
390 /**
391   * Builder method for mzTabID.
392   *
393   * @see Metadata#setMzTabID Metadata#setMzTabID for specification examples
394   * @see Metadata#getMzTabID Metadata#getMzTabID for validation constraints
395   * @param mzTabID a {@code String} parameter.
396   * @return Metadata
397  **/
398  public Metadata mzTabID(String mzTabID) {
399   this.mzTabID = mzTabID;
400   return this;
401  }
402
403   /**
404   * The ID of the mzTab file, this could be supplied by the repository from which it is downloaded or a local identifier from the lab producing the file. It is not intended to be a globally unique ID but carry some locally useful meaning.
405
406   *
407   * @return mzTabID
408  **/
409  @NotNull
410  @ApiModelProperty(example = "MTD mzTab-ID MTBLS214", required = true, value = "The ID of the mzTab file, this could be supplied by the repository from which it is downloaded or a local identifier from the lab producing the file. It is not intended to be a globally unique ID but carry some locally useful meaning. ")
411  public String getMzTabID() {
412    return mzTabID;
413  }
414
415 /**
416   * Set mzTabID.
417   *
418   * 
419   * 
420   * @see #getMzTabID Metadata#getMzTabID for validation constraints
421   * @param mzTabID a {@code String} parameter.
422  **/
423  public void setMzTabID(String mzTabID) {
424    this.mzTabID = mzTabID;
425  }
426
427
428 /**
429   * Builder method for title.
430   *
431   * @see Metadata#setTitle Metadata#setTitle for specification examples
432   * @see Metadata#getTitle Metadata#getTitle for validation constraints
433   * @param title a {@code String} parameter.
434   * @return Metadata
435  **/
436  public Metadata title(String title) {
437   this.title = title;
438   return this;
439  }
440
441   /**
442   * The file’s human readable title.
443
444   *
445   * @return title
446  **/
447  @ApiModelProperty(example = "MTD title My first test experiment", value = "The file’s human readable title. ")
448  public String getTitle() {
449    return title;
450  }
451
452 /**
453   * Set title.
454   *
455   * 
456   * 
457   * @see #getTitle Metadata#getTitle for validation constraints
458   * @param title a {@code String} parameter.
459  **/
460  public void setTitle(String title) {
461    this.title = title;
462  }
463
464
465 /**
466   * Builder method for description.
467   *
468   * @see Metadata#setDescription Metadata#setDescription for specification examples
469   * @see Metadata#getDescription Metadata#getDescription for validation constraints
470   * @param description a {@code String} parameter.
471   * @return Metadata
472  **/
473  public Metadata description(String description) {
474   this.description = description;
475   return this;
476  }
477
478   /**
479   * The file’s human readable description.
480
481   *
482   * @return description
483  **/
484  @ApiModelProperty(example = "MTD description An experiment investigating the effects of Il-6.", value = "The file’s human readable description. ")
485  public String getDescription() {
486    return description;
487  }
488
489 /**
490   * Set description.
491   *
492   * 
493   * 
494   * @see #getDescription Metadata#getDescription for validation constraints
495   * @param description a {@code String} parameter.
496  **/
497  public void setDescription(String description) {
498    this.description = description;
499  }
500
501
502 /**
503   * Builder method for contact.
504   *
505   * @see Metadata#setContact Metadata#setContact for specification examples
506   * @see Metadata#getContact Metadata#getContact for validation constraints
507   * @param contact a {@code List<Contact>} parameter.
508   * @return Metadata
509  **/
510  public Metadata contact(List<Contact> contact) {
511   this.contact = contact;
512   return this;
513  }
514
515  /**
516   * Add a single contactItem to the contact collection.
517   *
518   * @see Metadata#getContact Metadata#getContact for validation constraints
519   * @param contactItem a {@code Contact} parameter.
520   * @return Metadata
521   */
522  public Metadata addContactItem(Contact contactItem) {
523    if (this.contact == null) {
524      this.contact = new ArrayList<>();
525    }
526    this.contact.add(contactItem);
527    return this;
528  }
529
530   /**
531   * The contact’s name, affiliation and e-mail. Several contacts can be given by indicating the number in the square brackets after &quot;contact&quot;. A contact has to be supplied in the format [first name] [initials] [last name].
532   *
533   * @return contact
534  **/
535  @Valid
536  @ApiModelProperty(value = "The contact’s name, affiliation and e-mail. Several contacts can be given by indicating the number in the square brackets after \"contact\". A contact has to be supplied in the format [first name] [initials] [last name].")
537  public List<Contact> getContact() {
538    return contact;
539  }
540
541 /**
542   * Set contact.
543   *
544   * <p>mzTab-M specification example(s):</p>
545   * <pre><code>MTD     contact[1]-name James D. Watson
546MTD     contact[1]-affiliation  Cambridge University, UK
547MTD     contact[1]-email        watson@cam.ac.uk
548MTD     contact[2]-name Francis Crick
549MTD     contact[2]-affiliation  Cambridge University, UK
550MTD     contact[2]-email        crick@cam.ac.uk
551</code></pre>
552   * 
553   * 
554   * @see #getContact Metadata#getContact for validation constraints
555   * @param contact a {@code List<Contact>} parameter.
556  **/
557  public void setContact(List<Contact> contact) {
558    this.contact = contact;
559  }
560
561
562 /**
563   * Builder method for publication.
564   *
565   * @see Metadata#setPublication Metadata#setPublication for specification examples
566   * @see Metadata#getPublication Metadata#getPublication for validation constraints
567   * @param publication a {@code List<Publication>} parameter.
568   * @return Metadata
569  **/
570  public Metadata publication(List<Publication> publication) {
571   this.publication = publication;
572   return this;
573  }
574
575  /**
576   * Add a single publicationItem to the publication collection.
577   *
578   * @see Metadata#getPublication Metadata#getPublication for validation constraints
579   * @param publicationItem a {@code Publication} parameter.
580   * @return Metadata
581   */
582  public Metadata addPublicationItem(Publication publicationItem) {
583    if (this.publication == null) {
584      this.publication = new ArrayList<>();
585    }
586    this.publication.add(publicationItem);
587    return this;
588  }
589
590   /**
591   * A publication associated with this file. Several publications can be given by indicating the number in the square brackets after “publication”. PubMed ids must be prefixed by “pubmed:”, DOIs by “doi:”. Multiple identifiers MUST be separated by “|”.
592   *
593   * @return publication
594  **/
595  @Valid
596  @ApiModelProperty(value = "A publication associated with this file. Several publications can be given by indicating the number in the square brackets after “publication”. PubMed ids must be prefixed by “pubmed:”, DOIs by “doi:”. Multiple identifiers MUST be separated by “|”.")
597  public List<Publication> getPublication() {
598    return publication;
599  }
600
601 /**
602   * Set publication.
603   *
604   * <p>mzTab-M specification example(s):</p>
605   * <pre><code>MTD     publication[1]  pubmed:21063943|doi:10.1007/978-1-60761-987-1_6
606MTD     publication[2]  pubmed:20615486|doi:10.1016/j.jprot.2010.06.008
607</code></pre>
608   * 
609   * 
610   * @see #getPublication Metadata#getPublication for validation constraints
611   * @param publication a {@code List<Publication>} parameter.
612  **/
613  public void setPublication(List<Publication> publication) {
614    this.publication = publication;
615  }
616
617
618 /**
619   * Builder method for uri.
620   *
621   * @see Metadata#setUri Metadata#setUri for specification examples
622   * @see Metadata#getUri Metadata#getUri for validation constraints
623   * @param uri a {@code List<Uri>} parameter.
624   * @return Metadata
625  **/
626  public Metadata uri(List<Uri> uri) {
627   this.uri = uri;
628   return this;
629  }
630
631  /**
632   * Add a single uriItem to the uri collection.
633   *
634   * @see Metadata#getUri Metadata#getUri for validation constraints
635   * @param uriItem a {@code Uri} parameter.
636   * @return Metadata
637   */
638  public Metadata addUriItem(Uri uriItem) {
639    if (this.uri == null) {
640      this.uri = new ArrayList<>();
641    }
642    this.uri.add(uriItem);
643    return this;
644  }
645
646   /**
647   * A URI pointing to the file’s source data (e.g., a MetaboLights records).
648   *
649   * @return uri
650  **/
651  @Valid
652  @ApiModelProperty(value = "A URI pointing to the file’s source data (e.g., a MetaboLights records).")
653  public List<Uri> getUri() {
654    return uri;
655  }
656
657 /**
658   * Set uri.
659   *
660   * <p>mzTab-M specification example(s):</p>
661   * <pre><code>MTD     uri[1]  https://www.ebi.ac.uk/metabolights/MTBLS517
662</code></pre>
663   * 
664   * 
665   * @see #getUri Metadata#getUri for validation constraints
666   * @param uri a {@code List<Uri>} parameter.
667  **/
668  public void setUri(List<Uri> uri) {
669    this.uri = uri;
670  }
671
672
673 /**
674   * Builder method for externalStudyUri.
675   *
676   * @see Metadata#setExternalStudyUri Metadata#setExternalStudyUri for specification examples
677   * @see Metadata#getExternalStudyUri Metadata#getExternalStudyUri for validation constraints
678   * @param externalStudyUri a {@code List<Uri>} parameter.
679   * @return Metadata
680  **/
681  public Metadata externalStudyUri(List<Uri> externalStudyUri) {
682   this.externalStudyUri = externalStudyUri;
683   return this;
684  }
685
686  /**
687   * Add a single externalStudyUriItem to the externalStudyUri collection.
688   *
689   * @see Metadata#getExternalStudyUri Metadata#getExternalStudyUri for validation constraints
690   * @param externalStudyUriItem a {@code Uri} parameter.
691   * @return Metadata
692   */
693  public Metadata addExternalStudyUriItem(Uri externalStudyUriItem) {
694    if (this.externalStudyUri == null) {
695      this.externalStudyUri = new ArrayList<>();
696    }
697    this.externalStudyUri.add(externalStudyUriItem);
698    return this;
699  }
700
701   /**
702   * A URI pointing to an external file with more details about the study design (e.g., an ISA-TAB file).
703   *
704   * @return externalStudyUri
705  **/
706  @Valid
707  @ApiModelProperty(value = "A URI pointing to an external file with more details about the study design (e.g., an ISA-TAB file).")
708  public List<Uri> getExternalStudyUri() {
709    return externalStudyUri;
710  }
711
712 /**
713   * Set externalStudyUri.
714   *
715   * <p>mzTab-M specification example(s):</p>
716   * <pre><code>MTD     external_study_uri[1]   https://www.ebi.ac.uk/metabolights/MTBLS517/files/i_Investigation.txt
717</code></pre>
718   * 
719   * 
720   * @see #getExternalStudyUri Metadata#getExternalStudyUri for validation constraints
721   * @param externalStudyUri a {@code List<Uri>} parameter.
722  **/
723  public void setExternalStudyUri(List<Uri> externalStudyUri) {
724    this.externalStudyUri = externalStudyUri;
725  }
726
727
728 /**
729   * Builder method for instrument.
730   *
731   * @see Metadata#setInstrument Metadata#setInstrument for specification examples
732   * @see Metadata#getInstrument Metadata#getInstrument for validation constraints
733   * @param instrument a {@code List<Instrument>} parameter.
734   * @return Metadata
735  **/
736  public Metadata instrument(List<Instrument> instrument) {
737   this.instrument = instrument;
738   return this;
739  }
740
741  /**
742   * Add a single instrumentItem to the instrument collection.
743   *
744   * @see Metadata#getInstrument Metadata#getInstrument for validation constraints
745   * @param instrumentItem a {@code Instrument} parameter.
746   * @return Metadata
747   */
748  public Metadata addInstrumentItem(Instrument instrumentItem) {
749    if (this.instrument == null) {
750      this.instrument = new ArrayList<>();
751    }
752    this.instrument.add(instrumentItem);
753    return this;
754  }
755
756   /**
757   * The name, source, analyzer and detector of the instruments used in the experiment. Multiple instruments are numbered [1-n].
758   *
759   * @return instrument
760  **/
761  @Valid
762  @ApiModelProperty(value = "The name, source, analyzer and detector of the instruments used in the experiment. Multiple instruments are numbered [1-n].")
763  public List<Instrument> getInstrument() {
764    return instrument;
765  }
766
767 /**
768   * Set instrument.
769   *
770   * <p>mzTab-M specification example(s):</p>
771   * <pre><code>MTD     instrument[1]-name      [MS, MS:1000449, LTQ Orbitrap,]
772MTD     instrument[1]-source    [MS, MS:1000073, ESI,]
773
774MTD     instrument[2]-source    [MS, MS:1000598, ETD,]
775MTD     instrument[1]-analyzer[1]       [MS, MS:1000291, linear ion trap,]
776
777MTD     instrument[2]-analyzer[1]       [MS, MS:1000484, orbitrap,]
778MTD     instrument[1]-detector  [MS, MS:1000253, electron multiplier,]
779
780MTD     instrument[2]-detector  [MS, MS:1000348, focal plane collector,]
781</code></pre>
782   * 
783   * 
784   * @see #getInstrument Metadata#getInstrument for validation constraints
785   * @param instrument a {@code List<Instrument>} parameter.
786  **/
787  public void setInstrument(List<Instrument> instrument) {
788    this.instrument = instrument;
789  }
790
791
792 /**
793   * Builder method for quantificationMethod.
794   *
795   * @see Metadata#setQuantificationMethod Metadata#setQuantificationMethod for specification examples
796   * @see Metadata#getQuantificationMethod Metadata#getQuantificationMethod for validation constraints
797   * @param quantificationMethod a {@code Parameter} parameter.
798   * @return Metadata
799  **/
800  public Metadata quantificationMethod(Parameter quantificationMethod) {
801   this.quantificationMethod = quantificationMethod;
802   return this;
803  }
804
805   /**
806   * The quantification method used in the experiment reported in the file.
807   *
808   * @return quantificationMethod
809  **/
810  @NotNull
811  @Valid
812  @ApiModelProperty(required = true, value = "The quantification method used in the experiment reported in the file.")
813  public Parameter getQuantificationMethod() {
814    return quantificationMethod;
815  }
816
817 /**
818   * Set quantificationMethod.
819   *
820   * 
821   * 
822   * @see #getQuantificationMethod Metadata#getQuantificationMethod for validation constraints
823   * @param quantificationMethod a {@code Parameter} parameter.
824  **/
825  public void setQuantificationMethod(Parameter quantificationMethod) {
826    this.quantificationMethod = quantificationMethod;
827  }
828
829
830 /**
831   * Builder method for sample.
832   *
833   * @see Metadata#setSample Metadata#setSample for specification examples
834   * @see Metadata#getSample Metadata#getSample for validation constraints
835   * @param sample a {@code List<Sample>} parameter.
836   * @return Metadata
837  **/
838  public Metadata sample(List<Sample> sample) {
839   this.sample = sample;
840   return this;
841  }
842
843  /**
844   * Add a single sampleItem to the sample collection.
845   *
846   * @see Metadata#getSample Metadata#getSample for validation constraints
847   * @param sampleItem a {@code Sample} parameter.
848   * @return Metadata
849   */
850  public Metadata addSampleItem(Sample sampleItem) {
851    if (this.sample == null) {
852      this.sample = new ArrayList<>();
853    }
854    this.sample.add(sampleItem);
855    return this;
856  }
857
858   /**
859   * Specification of sample.
860(empty) name: A name for each sample to serve as a list of the samples that MUST be reported in the following tables. Samples MUST be reported if a statistical design is being captured (i.e. bio or tech replicates). If the type of replicates are not known, samples SHOULD NOT be reported. 
861species: The respective species of the samples analysed. For more complex cases, such as metagenomics, optional columns and userParams should be used. 
862tissue: The respective tissue(s) of the sample. 
863cell_type: The respective cell type(s) of the sample. 
864disease: The respective disease(s) of the sample. 
865description: A human readable description of the sample. 
866custom: Custom parameters describing the sample’s additional properties. Dates MUST be provided in ISO-8601 format.
867
868   *
869   * @return sample
870  **/
871  @Valid
872  @ApiModelProperty(value = "Specification of sample. (empty) name: A name for each sample to serve as a list of the samples that MUST be reported in the following tables. Samples MUST be reported if a statistical design is being captured (i.e. bio or tech replicates). If the type of replicates are not known, samples SHOULD NOT be reported.  species: The respective species of the samples analysed. For more complex cases, such as metagenomics, optional columns and userParams should be used.  tissue: The respective tissue(s) of the sample.  cell_type: The respective cell type(s) of the sample.  disease: The respective disease(s) of the sample.  description: A human readable description of the sample.  custom: Custom parameters describing the sample’s additional properties. Dates MUST be provided in ISO-8601 format. ")
873  public List<Sample> getSample() {
874    return sample;
875  }
876
877 /**
878   * Set sample.
879   *
880   * <p>mzTab-M specification example(s):</p>
881   * <pre><code>COM     Experiment where all samples consisted of the same two species
882MTD     sample[1]       individual number 1
883MTD     sample[1]-species[1]    [NCBITaxon, NCBITaxon:9606, Homo sapiens, ]
884MTD     sample[1]-tissue[1]     [BTO, BTO:0000759, liver, ]
885MTD     sample[1]-cell_type[1]  [CL, CL:0000182, hepatocyte, ]
886MTD     sample[1]-disease[1]    [DOID, DOID:684, hepatocellular carcinoma, ]
887MTD     sample[1]-disease[2]    [DOID, DOID:9451, alcoholic fatty liver, ]
888MTD     sample[1]-description   Hepatocellular carcinoma samples.
889MTD     sample[1]-custom[1]     [,,Extraction date, 2011-12-21]
890MTD     sample[1]-custom[2]     [,,Extraction reason, liver biopsy]
891MTD     sample[2]       individual number 2
892MTD     sample[2]-species[1]    [NCBITaxon, NCBITaxon:9606, Homo sapiens, ]
893MTD     sample[2]-tissue[1]     [BTO, BTO:0000759, liver, ]
894MTD     sample[2]-cell_type[1]  [CL, CL:0000182, hepatocyte, ]
895MTD     sample[2]-description   Healthy control samples.
896</code></pre>
897   * 
898   * 
899   * @see #getSample Metadata#getSample for validation constraints
900   * @param sample a {@code List<Sample>} parameter.
901  **/
902  public void setSample(List<Sample> sample) {
903    this.sample = sample;
904  }
905
906
907 /**
908   * Builder method for sampleProcessing.
909   *
910   * @see Metadata#setSampleProcessing Metadata#setSampleProcessing for specification examples
911   * @see Metadata#getSampleProcessing Metadata#getSampleProcessing for validation constraints
912   * @param sampleProcessing a {@code List<SampleProcessing>} parameter.
913   * @return Metadata
914  **/
915  public Metadata sampleProcessing(List<SampleProcessing> sampleProcessing) {
916   this.sampleProcessing = sampleProcessing;
917   return this;
918  }
919
920  /**
921   * Add a single sampleProcessingItem to the sampleProcessing collection.
922   *
923   * @see Metadata#getSampleProcessing Metadata#getSampleProcessing for validation constraints
924   * @param sampleProcessingItem a {@code SampleProcessing} parameter.
925   * @return Metadata
926   */
927  public Metadata addSampleProcessingItem(SampleProcessing sampleProcessingItem) {
928    if (this.sampleProcessing == null) {
929      this.sampleProcessing = new ArrayList<>();
930    }
931    this.sampleProcessing.add(sampleProcessingItem);
932    return this;
933  }
934
935   /**
936   * A list of parameters describing a sample processing, preparation or handling step similar to a biological or analytical methods report. The order of the sample_processing items should reflect the order these processing steps were performed in. If multiple parameters are given for a step these MUST be separated by a “|”. If derivatization was performed, it MUST be reported here as a general step, e.g. &#39;silylation&#39; and the actual derivatization agens MUST be specified in the Section 6.2.54 part.
937
938   *
939   * @return sampleProcessing
940  **/
941  @Valid
942  @ApiModelProperty(value = "A list of parameters describing a sample processing, preparation or handling step similar to a biological or analytical methods report. The order of the sample_processing items should reflect the order these processing steps were performed in. If multiple parameters are given for a step these MUST be separated by a “|”. If derivatization was performed, it MUST be reported here as a general step, e.g. 'silylation' and the actual derivatization agens MUST be specified in the Section 6.2.54 part. ")
943  public List<SampleProcessing> getSampleProcessing() {
944    return sampleProcessing;
945  }
946
947 /**
948   * Set sampleProcessing.
949   *
950   * <p>mzTab-M specification example(s):</p>
951   * <pre><code>MTD     sample_processing[1]    [MSIO, MSIO:0000107, metabolism quenching using precooled 60 percent methanol ammonium bicarbonate buffer,]
952MTD     sample_processing[2]    [MSIO, MSIO:0000146, centrifugation,]
953MTD     sample_processing[3]    [MSIO, MSIO:0000141, metabolite extraction,]
954MTD     sample_processing[4]    [MSIO, MSIO:0000141, silylation,]
955</code></pre>
956   * 
957   * 
958   * @see #getSampleProcessing Metadata#getSampleProcessing for validation constraints
959   * @param sampleProcessing a {@code List<SampleProcessing>} parameter.
960  **/
961  public void setSampleProcessing(List<SampleProcessing> sampleProcessing) {
962    this.sampleProcessing = sampleProcessing;
963  }
964
965
966 /**
967   * Builder method for software.
968   *
969   * @see Metadata#setSoftware Metadata#setSoftware for specification examples
970   * @see Metadata#getSoftware Metadata#getSoftware for validation constraints
971   * @param software a {@code List<Software>} parameter.
972   * @return Metadata
973  **/
974  public Metadata software(List<Software> software) {
975   this.software = software;
976   return this;
977  }
978
979  /**
980   * Add a single softwareItem to the software collection.
981   *
982   * @see Metadata#getSoftware Metadata#getSoftware for validation constraints
983   * @param softwareItem a {@code Software} parameter.
984   * @return Metadata
985   */
986  public Metadata addSoftwareItem(Software softwareItem) {
987    this.software.add(softwareItem);
988    return this;
989  }
990
991   /**
992   * Software used to analyze the data and obtain the reported results. The parameter’s value SHOULD contain the software’s version. The order (numbering) should reflect the order in which the tools were used. A software setting used. This field MAY occur multiple times for a single software. The value of this field is deliberately set as a String, since there currently do not exist CV terms for every possible setting.
993   *
994   * @return software
995  **/
996  @NotNull
997  @Valid
998  @ApiModelProperty(required = true, value = "Software used to analyze the data and obtain the reported results. The parameter’s value SHOULD contain the software’s version. The order (numbering) should reflect the order in which the tools were used. A software setting used. This field MAY occur multiple times for a single software. The value of this field is deliberately set as a String, since there currently do not exist CV terms for every possible setting.")
999  public List<Software> getSoftware() {
1000    return software;
1001  }
1002
1003 /**
1004   * Set software.
1005   *
1006   * <p>mzTab-M specification example(s):</p>
1007   * <pre><code>MTD     software[1]     [MS, MS:1002879, Progenesis QI, 3.0]
1008MTD     software[1]-setting     Fragment tolerance = 0.1 Da
1009
1010MTD     software[2]-setting     Parent tolerance = 0.5 Da
1011</code></pre>
1012   * 
1013   * 
1014   * @see #getSoftware Metadata#getSoftware for validation constraints
1015   * @param software a {@code List<Software>} parameter.
1016  **/
1017  public void setSoftware(List<Software> software) {
1018    this.software = software;
1019  }
1020
1021
1022 /**
1023   * Builder method for derivatizationAgent.
1024   *
1025   * @see Metadata#setDerivatizationAgent Metadata#setDerivatizationAgent for specification examples
1026   * @see Metadata#getDerivatizationAgent Metadata#getDerivatizationAgent for validation constraints
1027   * @param derivatizationAgent a {@code List<Parameter>} parameter.
1028   * @return Metadata
1029  **/
1030  public Metadata derivatizationAgent(List<Parameter> derivatizationAgent) {
1031   this.derivatizationAgent = derivatizationAgent;
1032   return this;
1033  }
1034
1035  /**
1036   * Add a single derivatizationAgentItem to the derivatizationAgent collection.
1037   *
1038   * @see Metadata#getDerivatizationAgent Metadata#getDerivatizationAgent for validation constraints
1039   * @param derivatizationAgentItem a {@code Parameter} parameter.
1040   * @return Metadata
1041   */
1042  public Metadata addDerivatizationAgentItem(Parameter derivatizationAgentItem) {
1043    if (this.derivatizationAgent == null) {
1044      this.derivatizationAgent = new ArrayList<>();
1045    }
1046    this.derivatizationAgent.add(derivatizationAgentItem);
1047    return this;
1048  }
1049
1050   /**
1051   * A description of derivatization agents applied to small molecules, using userParams or CV terms where possible.
1052   *
1053   * @return derivatizationAgent
1054  **/
1055  @Valid
1056  @ApiModelProperty(value = "A description of derivatization agents applied to small molecules, using userParams or CV terms where possible.")
1057  public List<Parameter> getDerivatizationAgent() {
1058    return derivatizationAgent;
1059  }
1060
1061 /**
1062   * Set derivatizationAgent.
1063   *
1064   * <p>mzTab-M specification example(s):</p>
1065   * <pre><code>MTD     derivatization_agent[1] [XLMOD, XLMOD:07014, N-methyl-N-t-butyldimethylsilyltrifluoroacetamide, ]
1066</code></pre>
1067   * 
1068   * 
1069   * @see #getDerivatizationAgent Metadata#getDerivatizationAgent for validation constraints
1070   * @param derivatizationAgent a {@code List<Parameter>} parameter.
1071  **/
1072  public void setDerivatizationAgent(List<Parameter> derivatizationAgent) {
1073    this.derivatizationAgent = derivatizationAgent;
1074  }
1075
1076
1077 /**
1078   * Builder method for msRun.
1079   *
1080   * @see Metadata#setMsRun Metadata#setMsRun for specification examples
1081   * @see Metadata#getMsRun Metadata#getMsRun for validation constraints
1082   * @param msRun a {@code List<MsRun>} parameter.
1083   * @return Metadata
1084  **/
1085  public Metadata msRun(List<MsRun> msRun) {
1086   this.msRun = msRun;
1087   return this;
1088  }
1089
1090  /**
1091   * Add a single msRunItem to the msRun collection.
1092   *
1093   * @see Metadata#getMsRun Metadata#getMsRun for validation constraints
1094   * @param msRunItem a {@code MsRun} parameter.
1095   * @return Metadata
1096   */
1097  public Metadata addMsRunItem(MsRun msRunItem) {
1098    this.msRun.add(msRunItem);
1099    return this;
1100  }
1101
1102   /**
1103   * Specification of ms_run. 
1104location: Location of the external data file e.g. raw files on which analysis has been performed. If the actual location of the MS run is unknown, a “null” MUST be used as a place holder value, since the [1-n] cardinality is referenced elsewhere. If pre-fractionation has been performed, then [1-n] ms_runs SHOULD be created per assay. 
1105instrument_ref: If different instruments are used in different runs, instrument_ref can be used to link a specific instrument to a specific run. 
1106format: Parameter specifying the data format of the external MS data file. If ms_run[1-n]-format is present, ms_run[1-n]-id_format SHOULD also be present, following the parameters specified in Table 1. 
1107id_format: Parameter specifying the id format used in the external data file. If ms_run[1-n]-id_format is present, ms_run[1-n]-format SHOULD also be present.
1108fragmentation_method: The type(s) of fragmentation used in a given ms run.
1109scan_polarity: The polarity mode of a given run. Usually only one value SHOULD be given here except for the case of mixed polarity runs.
1110hash: Hash value of the corresponding external MS data file defined in ms_run[1-n]-location. If ms_run[1-n]-hash is present, ms_run[1-n]-hash_method SHOULD also be present.
1111hash_method: A parameter specifying the hash methods used to generate the String in ms_run[1-n]-hash. Specifics of the hash method used MAY follow the definitions of the mzML format. If ms_run[1-n]-hash is present, ms_run[1-n]-hash_method SHOULD also be present.
1112
1113   *
1114   * @return msRun
1115  **/
1116  @NotNull
1117  @Valid
1118  @ApiModelProperty(required = true, value = "Specification of ms_run.  location: Location of the external data file e.g. raw files on which analysis has been performed. If the actual location of the MS run is unknown, a “null” MUST be used as a place holder value, since the [1-n] cardinality is referenced elsewhere. If pre-fractionation has been performed, then [1-n] ms_runs SHOULD be created per assay.  instrument_ref: If different instruments are used in different runs, instrument_ref can be used to link a specific instrument to a specific run.  format: Parameter specifying the data format of the external MS data file. If ms_run[1-n]-format is present, ms_run[1-n]-id_format SHOULD also be present, following the parameters specified in Table 1.  id_format: Parameter specifying the id format used in the external data file. If ms_run[1-n]-id_format is present, ms_run[1-n]-format SHOULD also be present. fragmentation_method: The type(s) of fragmentation used in a given ms run. scan_polarity: The polarity mode of a given run. Usually only one value SHOULD be given here except for the case of mixed polarity runs. hash: Hash value of the corresponding external MS data file defined in ms_run[1-n]-location. If ms_run[1-n]-hash is present, ms_run[1-n]-hash_method SHOULD also be present. hash_method: A parameter specifying the hash methods used to generate the String in ms_run[1-n]-hash. Specifics of the hash method used MAY follow the definitions of the mzML format. If ms_run[1-n]-hash is present, ms_run[1-n]-hash_method SHOULD also be present. ")
1119  public List<MsRun> getMsRun() {
1120    return msRun;
1121  }
1122
1123 /**
1124   * Set msRun.
1125   *
1126   * <p>mzTab-M specification example(s):</p>
1127   * <pre><code>COM     location can be a local or remote URI
1128MTD     ms_run[1]-location      file:///C:/path/to/my/file.mzML
1129MTD     ms_run[1]-instrument_ref        instrument[1]
1130MTD     ms_run[1]-format        [MS, MS:1000584, mzML file, ]
1131MTD     ms_run[1]-id_format     [MS, MS:1000530, mzML unique identifier, ]
1132MTD     ms_run[1]-fragmentation_method[1]       [MS, MS:1000133, CID, ]
1133COM     for mixed polarity scan scenarios
1134MTD     ms_run[1]-scan_polarity[1]      [MS, MS:1000130, positive scan, ]
1135MTD     ms_run[1]-scan_polarity[2]      [MS, MS:1000129, negative scan, ]
1136MTD     ms_run[1]-hash_method   [MS, MS:1000569, SHA-1, ]
1137MTD     ms_run[1]-hash  de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3
1138</code></pre>
1139   * 
1140   * 
1141   * @see #getMsRun Metadata#getMsRun for validation constraints
1142   * @param msRun a {@code List<MsRun>} parameter.
1143  **/
1144  public void setMsRun(List<MsRun> msRun) {
1145    this.msRun = msRun;
1146  }
1147
1148
1149 /**
1150   * Builder method for assay.
1151   *
1152   * @see Metadata#setAssay Metadata#setAssay for specification examples
1153   * @see Metadata#getAssay Metadata#getAssay for validation constraints
1154   * @param assay a {@code List<Assay>} parameter.
1155   * @return Metadata
1156  **/
1157  public Metadata assay(List<Assay> assay) {
1158   this.assay = assay;
1159   return this;
1160  }
1161
1162  /**
1163   * Add a single assayItem to the assay collection.
1164   *
1165   * @see Metadata#getAssay Metadata#getAssay for validation constraints
1166   * @param assayItem a {@code Assay} parameter.
1167   * @return Metadata
1168   */
1169  public Metadata addAssayItem(Assay assayItem) {
1170    this.assay.add(assayItem);
1171    return this;
1172  }
1173
1174   /**
1175   * Specification of assay.
1176(empty) name: A name for each assay, to serve as a list of the assays that MUST be reported in the following tables. 
1177custom: Additional custom parameters or values for a given assay. 
1178external_uri: An external reference uri to further information about the assay, for example via a reference to an object within an ISA-TAB file. 
1179sample_ref: An association from a given assay to the sample analysed. 
1180ms_run_ref: An association from a given assay to the source MS run. All assays MUST reference exactly one ms_run unless a workflow with pre-fractionation is being encoded, in which case each assay MUST reference n ms_runs where n fractions have been collected. Multiple assays SHOULD reference the same ms_run to capture multiplexed experimental designs.
1181
1182   *
1183   * @return assay
1184  **/
1185  @NotNull
1186  @Valid
1187  @ApiModelProperty(required = true, value = "Specification of assay. (empty) name: A name for each assay, to serve as a list of the assays that MUST be reported in the following tables.  custom: Additional custom parameters or values for a given assay.  external_uri: An external reference uri to further information about the assay, for example via a reference to an object within an ISA-TAB file.  sample_ref: An association from a given assay to the sample analysed.  ms_run_ref: An association from a given assay to the source MS run. All assays MUST reference exactly one ms_run unless a workflow with pre-fractionation is being encoded, in which case each assay MUST reference n ms_runs where n fractions have been collected. Multiple assays SHOULD reference the same ms_run to capture multiplexed experimental designs. ")
1188  public List<Assay> getAssay() {
1189    return assay;
1190  }
1191
1192 /**
1193   * Set assay.
1194   *
1195   * <p>mzTab-M specification example(s):</p>
1196   * <pre><code>MTD     assay[1]        first assay
1197MTD     assay[1]-custom[1]      [MS, , Assay operator, Fred Blogs]
1198MTD     assay[1]-sample_ref     sample[1]
1199MTD     assay[1]-ms_run_ref     ms_run[1]
1200MTD     assay[1]-external_uri   https://www.ebi.ac.uk/metabolights/MTBLS517/files/i_Investigation.txt?STUDYASSAY=a_e04_c18pos.txt
1201MTD     assay[2]        second assay
1202MTD     assay[2]-sample_ref     sample[2]
1203</code></pre>
1204   * 
1205   * 
1206   * @see #getAssay Metadata#getAssay for validation constraints
1207   * @param assay a {@code List<Assay>} parameter.
1208  **/
1209  public void setAssay(List<Assay> assay) {
1210    this.assay = assay;
1211  }
1212
1213
1214 /**
1215   * Builder method for studyVariable.
1216   *
1217   * @see Metadata#setStudyVariable Metadata#setStudyVariable for specification examples
1218   * @see Metadata#getStudyVariable Metadata#getStudyVariable for validation constraints
1219   * @param studyVariable a {@code List<StudyVariable>} parameter.
1220   * @return Metadata
1221  **/
1222  public Metadata studyVariable(List<StudyVariable> studyVariable) {
1223   this.studyVariable = studyVariable;
1224   return this;
1225  }
1226
1227  /**
1228   * Add a single studyVariableItem to the studyVariable collection.
1229   *
1230   * @see Metadata#getStudyVariable Metadata#getStudyVariable for validation constraints
1231   * @param studyVariableItem a {@code StudyVariable} parameter.
1232   * @return Metadata
1233   */
1234  public Metadata addStudyVariableItem(StudyVariable studyVariableItem) {
1235    this.studyVariable.add(studyVariableItem);
1236    return this;
1237  }
1238
1239   /**
1240   * Specification of study_variable.
1241(empty) name: A name for each study variable (experimental condition or factor), to serve as a list of the study variables that MUST be reported in the following tables. For software that does not capture study variables, a single study variable MUST be reported, linking to all assays. This single study variable MUST have the identifier “undefined“.
1242assay_refs: Bar-separated references to the IDs of assays grouped in the study variable.
1243average_function: The function used to calculate the study variable quantification value and the operation used is not arithmetic mean (default) e.g. “geometric mean”, “median”. The 1-n refers to different study variables.
1244variation_function: The function used to calculate the study variable quantification variation value if it is reported and the operation used is not coefficient of variation (default) e.g. “standard error”.
1245description: A textual description of the study variable.
1246factors: Additional parameters or factors, separated by bars, that are known about study variables allowing the capture of more complex, such as nested designs.
1247
1248   *
1249   * @return studyVariable
1250  **/
1251  @NotNull
1252  @Valid
1253  @ApiModelProperty(required = true, value = "Specification of study_variable. (empty) name: A name for each study variable (experimental condition or factor), to serve as a list of the study variables that MUST be reported in the following tables. For software that does not capture study variables, a single study variable MUST be reported, linking to all assays. This single study variable MUST have the identifier “undefined“. assay_refs: Bar-separated references to the IDs of assays grouped in the study variable. average_function: The function used to calculate the study variable quantification value and the operation used is not arithmetic mean (default) e.g. “geometric mean”, “median”. The 1-n refers to different study variables. variation_function: The function used to calculate the study variable quantification variation value if it is reported and the operation used is not coefficient of variation (default) e.g. “standard error”. description: A textual description of the study variable. factors: Additional parameters or factors, separated by bars, that are known about study variables allowing the capture of more complex, such as nested designs. ")
1254  public List<StudyVariable> getStudyVariable() {
1255    return studyVariable;
1256  }
1257
1258 /**
1259   * Set studyVariable.
1260   *
1261   * <p>mzTab-M specification example(s):</p>
1262   * <pre><code>MTD     study_variable[1]       control
1263MTD     study_variable[1]-assay_refs    assay[1]| assay[2]| assay[3]
1264MTD     study_variable-average_function [MS, MS:1002883, median, ]
1265MTD     study_variable-variation_function       [MS, MS:1002885, standard error, ]
1266MTD     study_variable[1]-description   Group B (spike-in 0.74 fmol/uL)
1267MTD     study_variable[1]-factors       [,,rapamycin dose,0.5mg]
1268MTD     study_variable[2]       1 minute
1269</code></pre>
1270   * 
1271   * 
1272   * @see #getStudyVariable Metadata#getStudyVariable for validation constraints
1273   * @param studyVariable a {@code List<StudyVariable>} parameter.
1274  **/
1275  public void setStudyVariable(List<StudyVariable> studyVariable) {
1276    this.studyVariable = studyVariable;
1277  }
1278
1279
1280 /**
1281   * Builder method for custom.
1282   *
1283   * @see Metadata#setCustom Metadata#setCustom for specification examples
1284   * @see Metadata#getCustom Metadata#getCustom for validation constraints
1285   * @param custom a {@code List<Parameter>} parameter.
1286   * @return Metadata
1287  **/
1288  public Metadata custom(List<Parameter> custom) {
1289   this.custom = custom;
1290   return this;
1291  }
1292
1293  /**
1294   * Add a single customItem to the custom collection.
1295   *
1296   * @see Metadata#getCustom Metadata#getCustom for validation constraints
1297   * @param customItem a {@code Parameter} parameter.
1298   * @return Metadata
1299   */
1300  public Metadata addCustomItem(Parameter customItem) {
1301    if (this.custom == null) {
1302      this.custom = new ArrayList<>();
1303    }
1304    this.custom.add(customItem);
1305    return this;
1306  }
1307
1308   /**
1309   * Any additional parameters describing the analysis reported.
1310   *
1311   * @return custom
1312  **/
1313  @Valid
1314  @ApiModelProperty(value = "Any additional parameters describing the analysis reported.")
1315  public List<Parameter> getCustom() {
1316    return custom;
1317  }
1318
1319 /**
1320   * Set custom.
1321   *
1322   * <p>mzTab-M specification example(s):</p>
1323   * <pre><code>MTD custom[1] [,,MS operator, Florian]
1324</code></pre>
1325   * 
1326   * 
1327   * @see #getCustom Metadata#getCustom for validation constraints
1328   * @param custom a {@code List<Parameter>} parameter.
1329  **/
1330  public void setCustom(List<Parameter> custom) {
1331    this.custom = custom;
1332  }
1333
1334
1335 /**
1336   * Builder method for cv.
1337   *
1338   * @see Metadata#setCv Metadata#setCv for specification examples
1339   * @see Metadata#getCv Metadata#getCv for validation constraints
1340   * @param cv a {@code List<CV>} parameter.
1341   * @return Metadata
1342  **/
1343  public Metadata cv(List<CV> cv) {
1344   this.cv = cv;
1345   return this;
1346  }
1347
1348  /**
1349   * Add a single cvItem to the cv collection.
1350   *
1351   * @see Metadata#getCv Metadata#getCv for validation constraints
1352   * @param cvItem a {@code CV} parameter.
1353   * @return Metadata
1354   */
1355  public Metadata addCvItem(CV cvItem) {
1356    this.cv.add(cvItem);
1357    return this;
1358  }
1359
1360   /**
1361   * Specification of controlled vocabularies.
1362label: A string describing the labels of the controlled vocabularies/ontologies used in the mzTab file as a short-hand e.g. &quot;MS&quot; for PSI-MS.
1363full_name: A string describing the full names of the controlled vocabularies/ontologies used in the mzTab file.
1364version: A string describing the version of the controlled vocabularies/ontologies used in the mzTab file.
1365uri: A string containing the URIs of the controlled vocabularies/ontologies used in the mzTab file.
1366
1367   *
1368   * @return cv
1369  **/
1370  @NotNull
1371  @Valid
1372  @ApiModelProperty(required = true, value = "Specification of controlled vocabularies. label: A string describing the labels of the controlled vocabularies/ontologies used in the mzTab file as a short-hand e.g. \"MS\" for PSI-MS. full_name: A string describing the full names of the controlled vocabularies/ontologies used in the mzTab file. version: A string describing the version of the controlled vocabularies/ontologies used in the mzTab file. uri: A string containing the URIs of the controlled vocabularies/ontologies used in the mzTab file. ")
1373  public List<CV> getCv() {
1374    return cv;
1375  }
1376
1377 /**
1378   * Set cv.
1379   *
1380   * <p>mzTab-M specification example(s):</p>
1381   * <pre><code>MTD     cv[1]-label     MS
1382MTD     cv[1]-full_name PSI-MS controlled vocabulary
1383MTD     cv[1]-version   4.1.11
1384MTD     cv[1]-uri       https://raw.githubusercontent.com/HUPO-PSI/psi-ms-CV/master/psi-ms.obo
1385</code></pre>
1386   * 
1387   * 
1388   * @see #getCv Metadata#getCv for validation constraints
1389   * @param cv a {@code List<CV>} parameter.
1390  **/
1391  public void setCv(List<CV> cv) {
1392    this.cv = cv;
1393  }
1394
1395
1396 /**
1397   * Builder method for smallMoleculeQuantificationUnit.
1398   *
1399   * @see Metadata#setSmallMoleculeQuantificationUnit Metadata#setSmallMoleculeQuantificationUnit for specification examples
1400   * @see Metadata#getSmallMoleculeQuantificationUnit Metadata#getSmallMoleculeQuantificationUnit for validation constraints
1401   * @param smallMoleculeQuantificationUnit a {@code Parameter} parameter.
1402   * @return Metadata
1403  **/
1404  public Metadata smallMoleculeQuantificationUnit(Parameter smallMoleculeQuantificationUnit) {
1405   this.smallMoleculeQuantificationUnit = smallMoleculeQuantificationUnit;
1406   return this;
1407  }
1408
1409   /**
1410   * Defines what type of units are reported in the small molecule summary quantification / abundance fields.
1411   *
1412   * @return smallMoleculeQuantificationUnit
1413  **/
1414  @NotNull
1415  @Valid
1416  @ApiModelProperty(required = true, value = "Defines what type of units are reported in the small molecule summary quantification / abundance fields.")
1417  public Parameter getSmallMoleculeQuantificationUnit() {
1418    return smallMoleculeQuantificationUnit;
1419  }
1420
1421 /**
1422   * Set smallMoleculeQuantificationUnit.
1423   *
1424   * 
1425   * 
1426   * @see #getSmallMoleculeQuantificationUnit Metadata#getSmallMoleculeQuantificationUnit for validation constraints
1427   * @param smallMoleculeQuantificationUnit a {@code Parameter} parameter.
1428  **/
1429  public void setSmallMoleculeQuantificationUnit(Parameter smallMoleculeQuantificationUnit) {
1430    this.smallMoleculeQuantificationUnit = smallMoleculeQuantificationUnit;
1431  }
1432
1433
1434 /**
1435   * Builder method for smallMoleculeFeatureQuantificationUnit.
1436   *
1437   * @see Metadata#setSmallMoleculeFeatureQuantificationUnit Metadata#setSmallMoleculeFeatureQuantificationUnit for specification examples
1438   * @see Metadata#getSmallMoleculeFeatureQuantificationUnit Metadata#getSmallMoleculeFeatureQuantificationUnit for validation constraints
1439   * @param smallMoleculeFeatureQuantificationUnit a {@code Parameter} parameter.
1440   * @return Metadata
1441  **/
1442  public Metadata smallMoleculeFeatureQuantificationUnit(Parameter smallMoleculeFeatureQuantificationUnit) {
1443   this.smallMoleculeFeatureQuantificationUnit = smallMoleculeFeatureQuantificationUnit;
1444   return this;
1445  }
1446
1447   /**
1448   * Defines what type of units are reported in the small molecule feature quantification / abundance fields.
1449   *
1450   * @return smallMoleculeFeatureQuantificationUnit
1451  **/
1452  @NotNull
1453  @Valid
1454  @ApiModelProperty(required = true, value = "Defines what type of units are reported in the small molecule feature quantification / abundance fields.")
1455  public Parameter getSmallMoleculeFeatureQuantificationUnit() {
1456    return smallMoleculeFeatureQuantificationUnit;
1457  }
1458
1459 /**
1460   * Set smallMoleculeFeatureQuantificationUnit.
1461   *
1462   * 
1463   * 
1464   * @see #getSmallMoleculeFeatureQuantificationUnit Metadata#getSmallMoleculeFeatureQuantificationUnit for validation constraints
1465   * @param smallMoleculeFeatureQuantificationUnit a {@code Parameter} parameter.
1466  **/
1467  public void setSmallMoleculeFeatureQuantificationUnit(Parameter smallMoleculeFeatureQuantificationUnit) {
1468    this.smallMoleculeFeatureQuantificationUnit = smallMoleculeFeatureQuantificationUnit;
1469  }
1470
1471
1472 /**
1473   * Builder method for smallMoleculeIdentificationReliability.
1474   *
1475   * @see Metadata#setSmallMoleculeIdentificationReliability Metadata#setSmallMoleculeIdentificationReliability for specification examples
1476   * @see Metadata#getSmallMoleculeIdentificationReliability Metadata#getSmallMoleculeIdentificationReliability for validation constraints
1477   * @param smallMoleculeIdentificationReliability a {@code Parameter} parameter.
1478   * @return Metadata
1479  **/
1480  public Metadata smallMoleculeIdentificationReliability(Parameter smallMoleculeIdentificationReliability) {
1481   this.smallMoleculeIdentificationReliability = smallMoleculeIdentificationReliability;
1482   return this;
1483  }
1484
1485   /**
1486   * The system used for giving reliability / confidence codes to small molecule identifications MUST be specified if not using the default codes.
1487   *
1488   * @return smallMoleculeIdentificationReliability
1489  **/
1490  @Valid
1491  @ApiModelProperty(value = "The system used for giving reliability / confidence codes to small molecule identifications MUST be specified if not using the default codes.")
1492  public Parameter getSmallMoleculeIdentificationReliability() {
1493    return smallMoleculeIdentificationReliability;
1494  }
1495
1496 /**
1497   * Set smallMoleculeIdentificationReliability.
1498   *
1499   * 
1500   * 
1501   * @see #getSmallMoleculeIdentificationReliability Metadata#getSmallMoleculeIdentificationReliability for validation constraints
1502   * @param smallMoleculeIdentificationReliability a {@code Parameter} parameter.
1503  **/
1504  public void setSmallMoleculeIdentificationReliability(Parameter smallMoleculeIdentificationReliability) {
1505    this.smallMoleculeIdentificationReliability = smallMoleculeIdentificationReliability;
1506  }
1507
1508
1509 /**
1510   * Builder method for database.
1511   *
1512   * @see Metadata#setDatabase Metadata#setDatabase for specification examples
1513   * @see Metadata#getDatabase Metadata#getDatabase for validation constraints
1514   * @param database a {@code List<Database>} parameter.
1515   * @return Metadata
1516  **/
1517  public Metadata database(List<Database> database) {
1518   this.database = database;
1519   return this;
1520  }
1521
1522  /**
1523   * Add a single databaseItem to the database collection.
1524   *
1525   * @see Metadata#getDatabase Metadata#getDatabase for validation constraints
1526   * @param databaseItem a {@code Database} parameter.
1527   * @return Metadata
1528   */
1529  public Metadata addDatabaseItem(Database databaseItem) {
1530    this.database.add(databaseItem);
1531    return this;
1532  }
1533
1534   /**
1535   * Specification of databases.
1536(empty): The description of databases used. For cases, where a known database has not been used for identification, a userParam SHOULD be inserted to describe any identification performed e.g. de novo. If no identification has been performed at all then &quot;no database&quot; should be inserted followed by null.
1537prefix: The prefix used in the “identifier” column of data tables. For the “no database” case &quot;null&quot; must be used.
1538version: The database version is mandatory where identification has been performed. This may be a formal version number e.g. “1.4.1”, a date of access “2016-10-27” (ISO-8601 format) or “Unknown” if there is no suitable version that can be annotated.
1539uri: The URI to the database. For the “no database” case, &quot;null&quot; must be reported.
1540
1541   *
1542   * @return database
1543  **/
1544  @NotNull
1545  @Valid
1546  @ApiModelProperty(required = true, value = "Specification of databases. (empty): The description of databases used. For cases, where a known database has not been used for identification, a userParam SHOULD be inserted to describe any identification performed e.g. de novo. If no identification has been performed at all then \"no database\" should be inserted followed by null. prefix: The prefix used in the “identifier” column of data tables. For the “no database” case \"null\" must be used. version: The database version is mandatory where identification has been performed. This may be a formal version number e.g. “1.4.1”, a date of access “2016-10-27” (ISO-8601 format) or “Unknown” if there is no suitable version that can be annotated. uri: The URI to the database. For the “no database” case, \"null\" must be reported. ")
1547  public List<Database> getDatabase() {
1548    return database;
1549  }
1550
1551 /**
1552   * Set database.
1553   *
1554   * <p>mzTab-M specification example(s):</p>
1555   * <pre><code>MTD     database[1]     [MIRIAM, MIR:00100079, HMDB, ]
1556MTD     database[1]-prefix      hmdb
1557MTD     database[1]-version     3.6
1558MTD     database[1]-uri http://www.hmdb.ca/
1559MTD     database[2]     [,, "de novo", ]
1560MTD     database[2]-prefix      dn
1561MTD     database[2]-version     Unknown
1562MTD     database[2]-uri null
1563MTD     database[3]     [,, "no database", null ]
1564MTD     database[3]-prefix      null
1565MTD     database[3]-version     Unknown
1566MTD     database[3]-uri null
1567</code></pre>
1568   * 
1569   * 
1570   * @see #getDatabase Metadata#getDatabase for validation constraints
1571   * @param database a {@code List<Database>} parameter.
1572  **/
1573  public void setDatabase(List<Database> database) {
1574    this.database = database;
1575  }
1576
1577
1578 /**
1579   * Builder method for idConfidenceMeasure.
1580   *
1581   * @see Metadata#setIdConfidenceMeasure Metadata#setIdConfidenceMeasure for specification examples
1582   * @see Metadata#getIdConfidenceMeasure Metadata#getIdConfidenceMeasure for validation constraints
1583   * @param idConfidenceMeasure a {@code List<Parameter>} parameter.
1584   * @return Metadata
1585  **/
1586  public Metadata idConfidenceMeasure(List<Parameter> idConfidenceMeasure) {
1587   this.idConfidenceMeasure = idConfidenceMeasure;
1588   return this;
1589  }
1590
1591  /**
1592   * Add a single idConfidenceMeasureItem to the idConfidenceMeasure collection.
1593   *
1594   * @see Metadata#getIdConfidenceMeasure Metadata#getIdConfidenceMeasure for validation constraints
1595   * @param idConfidenceMeasureItem a {@code Parameter} parameter.
1596   * @return Metadata
1597   */
1598  public Metadata addIdConfidenceMeasureItem(Parameter idConfidenceMeasureItem) {
1599    this.idConfidenceMeasure.add(idConfidenceMeasureItem);
1600    return this;
1601  }
1602
1603   /**
1604   * The type of small molecule confidence measures or scores MUST be reported as a CV parameter [1-n]. The CV parameter definition should formally state whether the ordering is high to low or vice versa. The order of the scores SHOULD reflect their importance for the identification and be used to determine the identification’s rank.
1605   *
1606   * @return idConfidenceMeasure
1607  **/
1608  @NotNull
1609  @Valid
1610  @ApiModelProperty(required = true, value = "The type of small molecule confidence measures or scores MUST be reported as a CV parameter [1-n]. The CV parameter definition should formally state whether the ordering is high to low or vice versa. The order of the scores SHOULD reflect their importance for the identification and be used to determine the identification’s rank.")
1611  public List<Parameter> getIdConfidenceMeasure() {
1612    return idConfidenceMeasure;
1613  }
1614
1615 /**
1616   * Set idConfidenceMeasure.
1617   *
1618   * <p>mzTab-M specification example(s):</p>
1619   * <pre><code>MTD     id_confidence_measure[1]        [MS,MS:1002889,Progenesis MetaScope Score,]
1620MTD     id_confidence_measure[2]        [MS,MS:1002890,fragmentation score,]
1621MTD     id_confidence_measure[3]        [MS,MS:1002891,isotopic fit score,]
1622</code></pre>
1623   * 
1624   * 
1625   * @see #getIdConfidenceMeasure Metadata#getIdConfidenceMeasure for validation constraints
1626   * @param idConfidenceMeasure a {@code List<Parameter>} parameter.
1627  **/
1628  public void setIdConfidenceMeasure(List<Parameter> idConfidenceMeasure) {
1629    this.idConfidenceMeasure = idConfidenceMeasure;
1630  }
1631
1632
1633 /**
1634   * Builder method for colunitSmallMolecule.
1635   *
1636   * @see Metadata#setColunitSmallMolecule Metadata#setColunitSmallMolecule for specification examples
1637   * @see Metadata#getColunitSmallMolecule Metadata#getColunitSmallMolecule for validation constraints
1638   * @param colunitSmallMolecule a {@code List<ColumnParameterMapping>} parameter.
1639   * @return Metadata
1640  **/
1641  public Metadata colunitSmallMolecule(List<ColumnParameterMapping> colunitSmallMolecule) {
1642   this.colunitSmallMolecule = colunitSmallMolecule;
1643   return this;
1644  }
1645
1646  /**
1647   * Add a single colunitSmallMoleculeItem to the colunitSmallMolecule collection.
1648   *
1649   * @see Metadata#getColunitSmallMolecule Metadata#getColunitSmallMolecule for validation constraints
1650   * @param colunitSmallMoleculeItem a {@code ColumnParameterMapping} parameter.
1651   * @return Metadata
1652   */
1653  public Metadata addColunitSmallMoleculeItem(ColumnParameterMapping colunitSmallMoleculeItem) {
1654    if (this.colunitSmallMolecule == null) {
1655      this.colunitSmallMolecule = new ArrayList<>();
1656    }
1657    this.colunitSmallMolecule.add(colunitSmallMoleculeItem);
1658    return this;
1659  }
1660
1661   /**
1662   * Defines the used unit for a column in the small molecule section. The format of the value has to be \{column name}&#x3D;\{Parameter defining the unit}. This field MUST NOT be used to define a unit for quantification columns. The unit used for small molecule quantification values MUST be set in small_molecule-quantification_unit.
1663   *
1664   * @return colunitSmallMolecule
1665  **/
1666  @Valid
1667  @ApiModelProperty(value = "Defines the used unit for a column in the small molecule section. The format of the value has to be \\{column name}=\\{Parameter defining the unit}. This field MUST NOT be used to define a unit for quantification columns. The unit used for small molecule quantification values MUST be set in small_molecule-quantification_unit.")
1668  public List<ColumnParameterMapping> getColunitSmallMolecule() {
1669    return colunitSmallMolecule;
1670  }
1671
1672 /**
1673   * Set colunitSmallMolecule.
1674   *
1675   * <p>mzTab-M specification example(s):</p>
1676   * <pre><code>COM     colunit for optional small molecule summary column with the name 'opt_global_cv_MS:MS:1002954_collisional_cross_sectional_area'
1677MTD     colunit-small_molecule  opt_global_cv_MS:MS:1002954_collisional_cross_sectional_area=[UO,UO:00003241, square angstrom,]
1678</code></pre>
1679   * 
1680   * 
1681   * @see #getColunitSmallMolecule Metadata#getColunitSmallMolecule for validation constraints
1682   * @param colunitSmallMolecule a {@code List<ColumnParameterMapping>} parameter.
1683  **/
1684  public void setColunitSmallMolecule(List<ColumnParameterMapping> colunitSmallMolecule) {
1685    this.colunitSmallMolecule = colunitSmallMolecule;
1686  }
1687
1688
1689 /**
1690   * Builder method for colunitSmallMoleculeFeature.
1691   *
1692   * @see Metadata#setColunitSmallMoleculeFeature Metadata#setColunitSmallMoleculeFeature for specification examples
1693   * @see Metadata#getColunitSmallMoleculeFeature Metadata#getColunitSmallMoleculeFeature for validation constraints
1694   * @param colunitSmallMoleculeFeature a {@code List<ColumnParameterMapping>} parameter.
1695   * @return Metadata
1696  **/
1697  public Metadata colunitSmallMoleculeFeature(List<ColumnParameterMapping> colunitSmallMoleculeFeature) {
1698   this.colunitSmallMoleculeFeature = colunitSmallMoleculeFeature;
1699   return this;
1700  }
1701
1702  /**
1703   * Add a single colunitSmallMoleculeFeatureItem to the colunitSmallMoleculeFeature collection.
1704   *
1705   * @see Metadata#getColunitSmallMoleculeFeature Metadata#getColunitSmallMoleculeFeature for validation constraints
1706   * @param colunitSmallMoleculeFeatureItem a {@code ColumnParameterMapping} parameter.
1707   * @return Metadata
1708   */
1709  public Metadata addColunitSmallMoleculeFeatureItem(ColumnParameterMapping colunitSmallMoleculeFeatureItem) {
1710    if (this.colunitSmallMoleculeFeature == null) {
1711      this.colunitSmallMoleculeFeature = new ArrayList<>();
1712    }
1713    this.colunitSmallMoleculeFeature.add(colunitSmallMoleculeFeatureItem);
1714    return this;
1715  }
1716
1717   /**
1718   * Defines the used unit for a column in the small molecule feature section. The format of the value has to be \{column name}&#x3D;\{Parameter defining the unit}. This field MUST NOT be used to define a unit for quantification columns. The unit used for small molecule quantification values MUST be set in small_molecule_feature-quantification_unit.
1719   *
1720   * @return colunitSmallMoleculeFeature
1721  **/
1722  @Valid
1723  @ApiModelProperty(value = "Defines the used unit for a column in the small molecule feature section. The format of the value has to be \\{column name}=\\{Parameter defining the unit}. This field MUST NOT be used to define a unit for quantification columns. The unit used for small molecule quantification values MUST be set in small_molecule_feature-quantification_unit.")
1724  public List<ColumnParameterMapping> getColunitSmallMoleculeFeature() {
1725    return colunitSmallMoleculeFeature;
1726  }
1727
1728 /**
1729   * Set colunitSmallMoleculeFeature.
1730   *
1731   * <p>mzTab-M specification example(s):</p>
1732   * <pre><code>COM     colunit for optional small molecule feature column with the name 'opt_ms_run[1]_cv_MS:MS:1002476_ion_mobility_drift_time' referencing ms_run[1]
1733MTD     colunit-small_molecule_feature  opt_ms_run[1]_cv_MS:MS:1002476_ion_mobility_drift_time=[UO,UO:0000031, minute,]
1734</code></pre>
1735   * 
1736   * 
1737   * @see #getColunitSmallMoleculeFeature Metadata#getColunitSmallMoleculeFeature for validation constraints
1738   * @param colunitSmallMoleculeFeature a {@code List<ColumnParameterMapping>} parameter.
1739  **/
1740  public void setColunitSmallMoleculeFeature(List<ColumnParameterMapping> colunitSmallMoleculeFeature) {
1741    this.colunitSmallMoleculeFeature = colunitSmallMoleculeFeature;
1742  }
1743
1744
1745 /**
1746   * Builder method for colunitSmallMoleculeEvidence.
1747   *
1748   * @see Metadata#setColunitSmallMoleculeEvidence Metadata#setColunitSmallMoleculeEvidence for specification examples
1749   * @see Metadata#getColunitSmallMoleculeEvidence Metadata#getColunitSmallMoleculeEvidence for validation constraints
1750   * @param colunitSmallMoleculeEvidence a {@code List<ColumnParameterMapping>} parameter.
1751   * @return Metadata
1752  **/
1753  public Metadata colunitSmallMoleculeEvidence(List<ColumnParameterMapping> colunitSmallMoleculeEvidence) {
1754   this.colunitSmallMoleculeEvidence = colunitSmallMoleculeEvidence;
1755   return this;
1756  }
1757
1758  /**
1759   * Add a single colunitSmallMoleculeEvidenceItem to the colunitSmallMoleculeEvidence collection.
1760   *
1761   * @see Metadata#getColunitSmallMoleculeEvidence Metadata#getColunitSmallMoleculeEvidence for validation constraints
1762   * @param colunitSmallMoleculeEvidenceItem a {@code ColumnParameterMapping} parameter.
1763   * @return Metadata
1764   */
1765  public Metadata addColunitSmallMoleculeEvidenceItem(ColumnParameterMapping colunitSmallMoleculeEvidenceItem) {
1766    if (this.colunitSmallMoleculeEvidence == null) {
1767      this.colunitSmallMoleculeEvidence = new ArrayList<>();
1768    }
1769    this.colunitSmallMoleculeEvidence.add(colunitSmallMoleculeEvidenceItem);
1770    return this;
1771  }
1772
1773   /**
1774   * Defines the used unit for a column in the small molecule evidence section. The format of the value has to be \{column name}&#x3D;\{Parameter defining the unit}.
1775   *
1776   * @return colunitSmallMoleculeEvidence
1777  **/
1778  @Valid
1779  @ApiModelProperty(value = "Defines the used unit for a column in the small molecule evidence section. The format of the value has to be \\{column name}=\\{Parameter defining the unit}.")
1780  public List<ColumnParameterMapping> getColunitSmallMoleculeEvidence() {
1781    return colunitSmallMoleculeEvidence;
1782  }
1783
1784 /**
1785   * Set colunitSmallMoleculeEvidence.
1786   *
1787   * <p>mzTab-M specification example(s):</p>
1788   * <pre><code>COM     colunit for optional small molecule evidence column with the name 'opt_global_mass_error'
1789MTD     colunit-small_molecule_evidence opt_global_mass_error=[UO, UO:0000169, parts per million, ]
1790</code></pre>
1791   * 
1792   * 
1793   * @see #getColunitSmallMoleculeEvidence Metadata#getColunitSmallMoleculeEvidence for validation constraints
1794   * @param colunitSmallMoleculeEvidence a {@code List<ColumnParameterMapping>} parameter.
1795  **/
1796  public void setColunitSmallMoleculeEvidence(List<ColumnParameterMapping> colunitSmallMoleculeEvidence) {
1797    this.colunitSmallMoleculeEvidence = colunitSmallMoleculeEvidence;
1798  }
1799
1800
1801  @Override
1802  public boolean equals(java.lang.Object o) {
1803    if (this == o) {
1804      return true;
1805    }
1806    if (o == null || getClass() != o.getClass()) {
1807      return false;
1808    }
1809    Metadata metadata = (Metadata) o;
1810    return Objects.equals(this.prefix, metadata.prefix) &&
1811        Objects.equals(this.mzTabVersion, metadata.mzTabVersion) &&
1812        Objects.equals(this.mzTabID, metadata.mzTabID) &&
1813        Objects.equals(this.title, metadata.title) &&
1814        Objects.equals(this.description, metadata.description) &&
1815        Objects.equals(this.contact, metadata.contact) &&
1816        Objects.equals(this.publication, metadata.publication) &&
1817        Objects.equals(this.uri, metadata.uri) &&
1818        Objects.equals(this.externalStudyUri, metadata.externalStudyUri) &&
1819        Objects.equals(this.instrument, metadata.instrument) &&
1820        Objects.equals(this.quantificationMethod, metadata.quantificationMethod) &&
1821        Objects.equals(this.sample, metadata.sample) &&
1822        Objects.equals(this.sampleProcessing, metadata.sampleProcessing) &&
1823        Objects.equals(this.software, metadata.software) &&
1824        Objects.equals(this.derivatizationAgent, metadata.derivatizationAgent) &&
1825        Objects.equals(this.msRun, metadata.msRun) &&
1826        Objects.equals(this.assay, metadata.assay) &&
1827        Objects.equals(this.studyVariable, metadata.studyVariable) &&
1828        Objects.equals(this.custom, metadata.custom) &&
1829        Objects.equals(this.cv, metadata.cv) &&
1830        Objects.equals(this.smallMoleculeQuantificationUnit, metadata.smallMoleculeQuantificationUnit) &&
1831        Objects.equals(this.smallMoleculeFeatureQuantificationUnit, metadata.smallMoleculeFeatureQuantificationUnit) &&
1832        Objects.equals(this.smallMoleculeIdentificationReliability, metadata.smallMoleculeIdentificationReliability) &&
1833        Objects.equals(this.database, metadata.database) &&
1834        Objects.equals(this.idConfidenceMeasure, metadata.idConfidenceMeasure) &&
1835        Objects.equals(this.colunitSmallMolecule, metadata.colunitSmallMolecule) &&
1836        Objects.equals(this.colunitSmallMoleculeFeature, metadata.colunitSmallMoleculeFeature) &&
1837        Objects.equals(this.colunitSmallMoleculeEvidence, metadata.colunitSmallMoleculeEvidence);
1838  }
1839
1840  @Override
1841  public int hashCode() {
1842    return Objects.hash(prefix, mzTabVersion, mzTabID, title, description, contact, publication, uri, externalStudyUri, instrument, quantificationMethod, sample, sampleProcessing, software, derivatizationAgent, msRun, assay, studyVariable, custom, cv, smallMoleculeQuantificationUnit, smallMoleculeFeatureQuantificationUnit, smallMoleculeIdentificationReliability, database, idConfidenceMeasure, colunitSmallMolecule, colunitSmallMoleculeFeature, colunitSmallMoleculeEvidence);
1843  }
1844
1845
1846  @Override
1847  public String toString() {
1848    StringBuilder sb = new StringBuilder();
1849    sb.append("class Metadata {\n");
1850    
1851    sb.append("    prefix: ").append(toIndentedString(prefix)).append("\n");
1852    sb.append("    mzTabVersion: ").append(toIndentedString(mzTabVersion)).append("\n");
1853    sb.append("    mzTabID: ").append(toIndentedString(mzTabID)).append("\n");
1854    sb.append("    title: ").append(toIndentedString(title)).append("\n");
1855    sb.append("    description: ").append(toIndentedString(description)).append("\n");
1856    sb.append("    contact: ").append(toIndentedString(contact)).append("\n");
1857    sb.append("    publication: ").append(toIndentedString(publication)).append("\n");
1858    sb.append("    uri: ").append(toIndentedString(uri)).append("\n");
1859    sb.append("    externalStudyUri: ").append(toIndentedString(externalStudyUri)).append("\n");
1860    sb.append("    instrument: ").append(toIndentedString(instrument)).append("\n");
1861    sb.append("    quantificationMethod: ").append(toIndentedString(quantificationMethod)).append("\n");
1862    sb.append("    sample: ").append(toIndentedString(sample)).append("\n");
1863    sb.append("    sampleProcessing: ").append(toIndentedString(sampleProcessing)).append("\n");
1864    sb.append("    software: ").append(toIndentedString(software)).append("\n");
1865    sb.append("    derivatizationAgent: ").append(toIndentedString(derivatizationAgent)).append("\n");
1866    sb.append("    msRun: ").append(toIndentedString(msRun)).append("\n");
1867    sb.append("    assay: ").append(toIndentedString(assay)).append("\n");
1868    sb.append("    studyVariable: ").append(toIndentedString(studyVariable)).append("\n");
1869    sb.append("    custom: ").append(toIndentedString(custom)).append("\n");
1870    sb.append("    cv: ").append(toIndentedString(cv)).append("\n");
1871    sb.append("    smallMoleculeQuantificationUnit: ").append(toIndentedString(smallMoleculeQuantificationUnit)).append("\n");
1872    sb.append("    smallMoleculeFeatureQuantificationUnit: ").append(toIndentedString(smallMoleculeFeatureQuantificationUnit)).append("\n");
1873    sb.append("    smallMoleculeIdentificationReliability: ").append(toIndentedString(smallMoleculeIdentificationReliability)).append("\n");
1874    sb.append("    database: ").append(toIndentedString(database)).append("\n");
1875    sb.append("    idConfidenceMeasure: ").append(toIndentedString(idConfidenceMeasure)).append("\n");
1876    sb.append("    colunitSmallMolecule: ").append(toIndentedString(colunitSmallMolecule)).append("\n");
1877    sb.append("    colunitSmallMoleculeFeature: ").append(toIndentedString(colunitSmallMoleculeFeature)).append("\n");
1878    sb.append("    colunitSmallMoleculeEvidence: ").append(toIndentedString(colunitSmallMoleculeEvidence)).append("\n");
1879    sb.append("}");
1880    return sb.toString();
1881  }
1882
1883  /**
1884   * Convert the given object to string with each line indented by 4 spaces
1885   * (except the first line).
1886   */
1887  private String toIndentedString(java.lang.Object o) {
1888    if (o == null) {
1889      return "null";
1890    }
1891    return o.toString().replace("\n", "\n    ");
1892  }
1893
1894}
1895