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.Metadata; 023import de.isas.mztab2.model.SmallMoleculeEvidence; 024import de.isas.mztab2.model.SmallMoleculeFeature; 025import de.isas.mztab2.model.SmallMoleculeSummary; 026import io.swagger.annotations.ApiModel; 027import io.swagger.annotations.ApiModelProperty; 028import java.util.ArrayList; 029import java.util.List; 030import com.fasterxml.jackson.dataformat.xml.annotation.*; 031import javax.xml.bind.annotation.*; 032import javax.validation.constraints.*; 033import javax.validation.Valid; 034import de.isas.lipidomics.mztab2.validation.constraints.*; 035/** 036 * 037 * mzTab-M is intended as a reporting standard for quantitative results from metabolomics/lipodomics approaches. 038 039This format is further intended to provide local LIMS systems as well as MS metabolomics repositories a simple way to share and combine basic information. 040 041The mzTab-M format consists of four cross-referenced data tables: 042 043 * Metadata (MTD), 044 * Small Molecule (SML), 045 * Small Molecule Feature (SMF) and the 046 * Small Molecule Evidence (SME). 047 048The MTD and SML tables are mandatory, and for a file to contain any evidence about how molecules were quantified or identified by software, then all four tables must be present. The tables must follow the order MTD, SML, SMF and SME, with a blank line separating each table. 049 050The structure of each table, in terms of the rows and columns that must be present is tightly specified and formally defined and explained in the mzTab-M specification document. 051mzTab-M files MUST have one Metadata (MTD) section and one Small Molecule (SML) Section. In practice, we expect that most files SHOULD also include one Small Molecule Feature (SMF) section, and one Small Molecule Evidence (SME) Section. 052Files lacking SMF and SME sections can only present summary data about quantified molecules, without any evidence trail for how those values were derived. It will be left to reading software to determine whether additional validation will be requested such that SMF and SME tables MUST be present. 053 054 * 055 * 056 * 057 * 058 */ 059@ApiModel(description = "mzTab-M is intended as a reporting standard for quantitative results from metabolomics/lipodomics approaches. This format is further intended to provide local LIMS systems as well as MS metabolomics repositories a simple way to share and combine basic information. The mzTab-M format consists of four cross-referenced data tables: * Metadata (MTD), * Small Molecule (SML), * Small Molecule Feature (SMF) and the * Small Molecule Evidence (SME). The MTD and SML tables are mandatory, and for a file to contain any evidence about how molecules were quantified or identified by software, then all four tables must be present. The tables must follow the order MTD, SML, SMF and SME, with a blank line separating each table. The structure of each table, in terms of the rows and columns that must be present is tightly specified and formally defined and explained in the mzTab-M specification document. mzTab-M files MUST have one Metadata (MTD) section and one Small Molecule (SML) Section. In practice, we expect that most files SHOULD also include one Small Molecule Feature (SMF) section, and one Small Molecule Evidence (SME) Section. Files lacking SMF and SME sections can only present summary data about quantified molecules, without any evidence trail for how those values were derived. It will be left to reading software to determine whether additional validation will be requested such that SMF and SME tables MUST be present. ") 060@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2021-01-02T19:25:37.430+01:00") 061@XmlRootElement(name = "MzTab") 062@XmlAccessorType(XmlAccessType.FIELD) 063@JacksonXmlRootElement(localName = "MzTab") 064public class MzTab { 065 066 /** 067 * Property enumeration for MzTab. 068 */ 069 public static enum Properties { 070 metadata("metadata"), 071 smallMoleculeSummary("smallMoleculeSummary"), 072 smallMoleculeFeature("smallMoleculeFeature"), 073 smallMoleculeEvidence("smallMoleculeEvidence"), 074 comment("comment"); 075 076 private final String propertyName; 077 078 private Properties(String propertyName) { 079 this.propertyName = propertyName; 080 } 081 082 public String getPropertyName() { 083 return propertyName; 084 } 085 086 public String toString() { 087 return propertyName; 088 } 089 090 public String toUpper() { 091 return propertyName.toUpperCase(); 092 } 093 094 public static Properties of(String value) { 095 if(value==null) { 096 throw new NullPointerException("Argument value must not be null!"); 097 } 098 return Arrays.asList(Properties.values()).stream().filter(m -> m.propertyName.equals(value.toLowerCase())).findAny().orElseThrow(IllegalArgumentException::new); 099 } 100 }; 101 102 @JsonProperty("metadata") 103 @JacksonXmlProperty(localName = "metadata") 104 @XmlElement(name = "metadata") 105 private Metadata metadata = null; 106 @JsonProperty("smallMoleculeSummary") 107 // Is a container wrapped=false 108 // items.name=smallMoleculeSummary items.baseName=smallMoleculeSummary items.xmlName= items.xmlNamespace= 109 // items.example= items.type=SmallMoleculeSummary 110 @XmlElement(name = "smallMoleculeSummary") 111 private List<SmallMoleculeSummary> smallMoleculeSummary = new ArrayList<>(); 112 @JsonProperty("smallMoleculeFeature") 113 // Is a container wrapped=false 114 // items.name=smallMoleculeFeature items.baseName=smallMoleculeFeature items.xmlName= items.xmlNamespace= 115 // items.example= items.type=SmallMoleculeFeature 116 @XmlElement(name = "smallMoleculeFeature") 117 private List<SmallMoleculeFeature> smallMoleculeFeature = new ArrayList<>(); 118 @JsonProperty("smallMoleculeEvidence") 119 // Is a container wrapped=false 120 // items.name=smallMoleculeEvidence items.baseName=smallMoleculeEvidence items.xmlName= items.xmlNamespace= 121 // items.example= items.type=SmallMoleculeEvidence 122 @XmlElement(name = "smallMoleculeEvidence") 123 private List<SmallMoleculeEvidence> smallMoleculeEvidence = new ArrayList<>(); 124 @JsonProperty("comment") 125 // Is a container wrapped=false 126 // items.name=comment items.baseName=comment items.xmlName= items.xmlNamespace= 127 // items.example= items.type=Comment 128 @XmlElement(name = "comment") 129 private List<Comment> comment = null; 130 131 /** 132 * Builder method for metadata. 133 * 134 * @see MzTab#setMetadata MzTab#setMetadata for specification examples 135 * @see MzTab#getMetadata MzTab#getMetadata for validation constraints 136 * @param metadata a {@code Metadata} parameter. 137 * @return MzTab 138 **/ 139 public MzTab metadata(Metadata metadata) { 140 this.metadata = metadata; 141 return this; 142 } 143 144 /** 145 * <p>Get metadata.</p> 146 * 147 * @return metadata 148 **/ 149 @NotNull 150 @Valid 151 @ApiModelProperty(required = true, value = "") 152 public Metadata getMetadata() { 153 return metadata; 154 } 155 156 /** 157 * Set metadata. 158 * 159 * 160 * 161 * @see #getMetadata MzTab#getMetadata for validation constraints 162 * @param metadata a {@code Metadata} parameter. 163 **/ 164 public void setMetadata(Metadata metadata) { 165 this.metadata = metadata; 166 } 167 168 169 /** 170 * Builder method for smallMoleculeSummary. 171 * 172 * @see MzTab#setSmallMoleculeSummary MzTab#setSmallMoleculeSummary for specification examples 173 * @see MzTab#getSmallMoleculeSummary MzTab#getSmallMoleculeSummary for validation constraints 174 * @param smallMoleculeSummary a {@code List<SmallMoleculeSummary>} parameter. 175 * @return MzTab 176 **/ 177 public MzTab smallMoleculeSummary(List<SmallMoleculeSummary> smallMoleculeSummary) { 178 this.smallMoleculeSummary = smallMoleculeSummary; 179 return this; 180 } 181 182 /** 183 * Add a single smallMoleculeSummaryItem to the smallMoleculeSummary collection. 184 * 185 * @see MzTab#getSmallMoleculeSummary MzTab#getSmallMoleculeSummary for validation constraints 186 * @param smallMoleculeSummaryItem a {@code SmallMoleculeSummary} parameter. 187 * @return MzTab 188 */ 189 public MzTab addSmallMoleculeSummaryItem(SmallMoleculeSummary smallMoleculeSummaryItem) { 190 this.smallMoleculeSummary.add(smallMoleculeSummaryItem); 191 return this; 192 } 193 194 /** 195 * The small molecule section is table-based. 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”. 196 197Each 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. 198 199The order of columns MUST follow the order specified below. 200 201All columns are MANDATORY except for “opt_” columns. 202 203 * 204 * @return smallMoleculeSummary 205 **/ 206 @NotNull 207 @Valid 208 @Size(min=1) @ApiModelProperty(required = true, value = "The small molecule section is table-based. 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. ") 209 public List<SmallMoleculeSummary> getSmallMoleculeSummary() { 210 return smallMoleculeSummary; 211 } 212 213 /** 214 * Set smallMoleculeSummary. 215 * 216 * 217 * 218 * @see #getSmallMoleculeSummary MzTab#getSmallMoleculeSummary for validation constraints 219 * @param smallMoleculeSummary a {@code List<SmallMoleculeSummary>} parameter. 220 **/ 221 public void setSmallMoleculeSummary(List<SmallMoleculeSummary> smallMoleculeSummary) { 222 this.smallMoleculeSummary = smallMoleculeSummary; 223 } 224 225 226 /** 227 * Builder method for smallMoleculeFeature. 228 * 229 * @see MzTab#setSmallMoleculeFeature MzTab#setSmallMoleculeFeature for specification examples 230 * @see MzTab#getSmallMoleculeFeature MzTab#getSmallMoleculeFeature for validation constraints 231 * @param smallMoleculeFeature a {@code List<SmallMoleculeFeature>} parameter. 232 * @return MzTab 233 **/ 234 public MzTab smallMoleculeFeature(List<SmallMoleculeFeature> smallMoleculeFeature) { 235 this.smallMoleculeFeature = smallMoleculeFeature; 236 return this; 237 } 238 239 /** 240 * Add a single smallMoleculeFeatureItem to the smallMoleculeFeature collection. 241 * 242 * @see MzTab#getSmallMoleculeFeature MzTab#getSmallMoleculeFeature for validation constraints 243 * @param smallMoleculeFeatureItem a {@code SmallMoleculeFeature} parameter. 244 * @return MzTab 245 */ 246 public MzTab addSmallMoleculeFeatureItem(SmallMoleculeFeature smallMoleculeFeatureItem) { 247 this.smallMoleculeFeature.add(smallMoleculeFeatureItem); 248 return this; 249 } 250 251 /** 252 * The small molecule feature section is table-based, representing individual MS regions (generally considered to be the elution profile for all isotopomers formed from a single charge state of a molecule), that have been measured/quantified. However, for approaches that quantify individual isotopomers e.g. stable isotope labelling/flux studies, then each SMF row SHOULD represent a single isotopomer. 253 254Different adducts or derivatives and different charge states of individual molecules should be reported as separate SMF rows. 255 256The small molecule feature section MUST always come after the Small Molecule Table. All table columns MUST be Tab separated. There MUST NOT be any empty cells. Missing values MUST be reported using “null”. 257 258The order of columns MUST follow the order specified below. 259 260All columns are MANDATORY except for “opt_” columns. 261 262 * 263 * @return smallMoleculeFeature 264 **/ 265 @NotNull 266 @Valid 267 @ApiModelProperty(required = true, value = "The small molecule feature section is table-based, representing individual MS regions (generally considered to be the elution profile for all isotopomers formed from a single charge state of a molecule), that have been measured/quantified. However, for approaches that quantify individual isotopomers e.g. stable isotope labelling/flux studies, then each SMF row SHOULD represent a single isotopomer. Different adducts or derivatives and different charge states of individual molecules should be reported as separate SMF rows. The small molecule feature section MUST always come after the Small Molecule Table. All table columns MUST be Tab separated. There MUST NOT be any empty cells. Missing values MUST be reported using “null”. The order of columns MUST follow the order specified below. All columns are MANDATORY except for “opt_” columns. ") 268 public List<SmallMoleculeFeature> getSmallMoleculeFeature() { 269 return smallMoleculeFeature; 270 } 271 272 /** 273 * Set smallMoleculeFeature. 274 * 275 * 276 * 277 * @see #getSmallMoleculeFeature MzTab#getSmallMoleculeFeature for validation constraints 278 * @param smallMoleculeFeature a {@code List<SmallMoleculeFeature>} parameter. 279 **/ 280 public void setSmallMoleculeFeature(List<SmallMoleculeFeature> smallMoleculeFeature) { 281 this.smallMoleculeFeature = smallMoleculeFeature; 282 } 283 284 285 /** 286 * Builder method for smallMoleculeEvidence. 287 * 288 * @see MzTab#setSmallMoleculeEvidence MzTab#setSmallMoleculeEvidence for specification examples 289 * @see MzTab#getSmallMoleculeEvidence MzTab#getSmallMoleculeEvidence for validation constraints 290 * @param smallMoleculeEvidence a {@code List<SmallMoleculeEvidence>} parameter. 291 * @return MzTab 292 **/ 293 public MzTab smallMoleculeEvidence(List<SmallMoleculeEvidence> smallMoleculeEvidence) { 294 this.smallMoleculeEvidence = smallMoleculeEvidence; 295 return this; 296 } 297 298 /** 299 * Add a single smallMoleculeEvidenceItem to the smallMoleculeEvidence collection. 300 * 301 * @see MzTab#getSmallMoleculeEvidence MzTab#getSmallMoleculeEvidence for validation constraints 302 * @param smallMoleculeEvidenceItem a {@code SmallMoleculeEvidence} parameter. 303 * @return MzTab 304 */ 305 public MzTab addSmallMoleculeEvidenceItem(SmallMoleculeEvidence smallMoleculeEvidenceItem) { 306 this.smallMoleculeEvidence.add(smallMoleculeEvidenceItem); 307 return this; 308 } 309 310 /** 311 * The small molecule evidence section is table-based, representing evidence for identifications of small molecules/features, from database search or any other process used to give putative identifications to molecules. In a typical case, each row represents one result from a single search or intepretation of a piece of evidence e.g. a database search with a fragmentation spectrum. Multiple results from a given input data item (e.g. one fragment spectrum) SHOULD share the same value under evidence_input_id. 312 313The small molecule evidence section MUST always come after the Small Molecule Feature Table. All table columns MUST be Tab separated. There MUST NOT be any empty cells. Missing values MUST be reported using “null”. 314 315The order of columns MUST follow the order specified below. 316 317All columns are MANDATORY except for “opt_” columns. 318 319 * 320 * @return smallMoleculeEvidence 321 **/ 322 @NotNull 323 @Valid 324 @ApiModelProperty(required = true, value = "The small molecule evidence section is table-based, representing evidence for identifications of small molecules/features, from database search or any other process used to give putative identifications to molecules. In a typical case, each row represents one result from a single search or intepretation of a piece of evidence e.g. a database search with a fragmentation spectrum. Multiple results from a given input data item (e.g. one fragment spectrum) SHOULD share the same value under evidence_input_id. The small molecule evidence section MUST always come after the Small Molecule Feature Table. All table columns MUST be Tab separated. There MUST NOT be any empty cells. Missing values MUST be reported using “null”. The order of columns MUST follow the order specified below. All columns are MANDATORY except for “opt_” columns. ") 325 public List<SmallMoleculeEvidence> getSmallMoleculeEvidence() { 326 return smallMoleculeEvidence; 327 } 328 329 /** 330 * Set smallMoleculeEvidence. 331 * 332 * 333 * 334 * @see #getSmallMoleculeEvidence MzTab#getSmallMoleculeEvidence for validation constraints 335 * @param smallMoleculeEvidence a {@code List<SmallMoleculeEvidence>} parameter. 336 **/ 337 public void setSmallMoleculeEvidence(List<SmallMoleculeEvidence> smallMoleculeEvidence) { 338 this.smallMoleculeEvidence = smallMoleculeEvidence; 339 } 340 341 342 /** 343 * Builder method for comment. 344 * 345 * @see MzTab#setComment MzTab#setComment for specification examples 346 * @see MzTab#getComment MzTab#getComment for validation constraints 347 * @param comment a {@code List<Comment>} parameter. 348 * @return MzTab 349 **/ 350 public MzTab comment(List<Comment> comment) { 351 this.comment = comment; 352 return this; 353 } 354 355 /** 356 * Add a single commentItem to the comment collection. 357 * 358 * @see MzTab#getComment MzTab#getComment for validation constraints 359 * @param commentItem a {@code Comment} parameter. 360 * @return MzTab 361 */ 362 public MzTab addCommentItem(Comment commentItem) { 363 if (this.comment == null) { 364 this.comment = new ArrayList<>(); 365 } 366 this.comment.add(commentItem); 367 return this; 368 } 369 370 /** 371 * Comment lines can be placed anywhere in an mzTab file. These lines must start with the three-letter code COM and are ignored by most parsers. Empty lines can also occur anywhere in an mzTab file and are ignored. 372 373 * 374 * @return comment 375 **/ 376 @Valid 377 @ApiModelProperty(value = "Comment lines can be placed anywhere in an mzTab file. These lines must start with the three-letter code COM and are ignored by most parsers. Empty lines can also occur anywhere in an mzTab file and are ignored. ") 378 public List<Comment> getComment() { 379 return comment; 380 } 381 382 /** 383 * Set comment. 384 * 385 * 386 * 387 * @see #getComment MzTab#getComment for validation constraints 388 * @param comment a {@code List<Comment>} parameter. 389 **/ 390 public void setComment(List<Comment> comment) { 391 this.comment = comment; 392 } 393 394 395 @Override 396 public boolean equals(java.lang.Object o) { 397 if (this == o) { 398 return true; 399 } 400 if (o == null || getClass() != o.getClass()) { 401 return false; 402 } 403 MzTab mzTab = (MzTab) o; 404 return Objects.equals(this.metadata, mzTab.metadata) && 405 Objects.equals(this.smallMoleculeSummary, mzTab.smallMoleculeSummary) && 406 Objects.equals(this.smallMoleculeFeature, mzTab.smallMoleculeFeature) && 407 Objects.equals(this.smallMoleculeEvidence, mzTab.smallMoleculeEvidence) && 408 Objects.equals(this.comment, mzTab.comment); 409 } 410 411 @Override 412 public int hashCode() { 413 return Objects.hash(metadata, smallMoleculeSummary, smallMoleculeFeature, smallMoleculeEvidence, comment); 414 } 415 416 417 @Override 418 public String toString() { 419 StringBuilder sb = new StringBuilder(); 420 sb.append("class MzTab {\n"); 421 422 sb.append(" metadata: ").append(toIndentedString(metadata)).append("\n"); 423 sb.append(" smallMoleculeSummary: ").append(toIndentedString(smallMoleculeSummary)).append("\n"); 424 sb.append(" smallMoleculeFeature: ").append(toIndentedString(smallMoleculeFeature)).append("\n"); 425 sb.append(" smallMoleculeEvidence: ").append(toIndentedString(smallMoleculeEvidence)).append("\n"); 426 sb.append(" comment: ").append(toIndentedString(comment)).append("\n"); 427 sb.append("}"); 428 return sb.toString(); 429 } 430 431 /** 432 * Convert the given object to string with each line indented by 4 spaces 433 * (except the first line). 434 */ 435 private String toIndentedString(java.lang.Object o) { 436 if (o == null) { 437 return "null"; 438 } 439 return o.toString().replace("\n", "\n "); 440 } 441 442} 443