001/* 002 * mzTab-M reference implementation and validation API. 003 * This is the mzTab-M reference implementation and validation API service. 004 * 005 * OpenAPI spec version: 2.0.0 006 * Contact: nils.hoffmann@isas.de 007 * 008 * NOTE: This class is auto generated by the swagger code generator program. 009 * https://github.com/swagger-api/swagger-codegen.git 010 * Do not edit the class manually. 011 */ 012 013 014package de.isas.mztab2.model; 015 016import java.util.Objects; 017import java.util.Arrays; 018import com.fasterxml.jackson.annotation.JsonProperty; 019import com.fasterxml.jackson.annotation.JsonCreator; 020import com.fasterxml.jackson.annotation.JsonValue; 021import de.isas.mztab2.model.Comment; 022import de.isas.mztab2.model.OptColumnMapping; 023import de.isas.mztab2.model.Parameter; 024import io.swagger.annotations.ApiModel; 025import io.swagger.annotations.ApiModelProperty; 026import java.util.ArrayList; 027import java.util.List; 028import com.fasterxml.jackson.dataformat.xml.annotation.*; 029import javax.xml.bind.annotation.*; 030import javax.validation.constraints.*; 031import javax.validation.Valid; 032import de.isas.lipidomics.mztab2.validation.constraints.*; 033/** 034 * 035 * The small molecule 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. 036 037Different adducts or derivatives and different charge states of individual molecules should be reported as separate SMF rows. 038 039The 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”. 040 041The order of columns MUST follow the order specified below. 042 043All columns are MANDATORY except for “opt_” columns. 044 045 * 046 * 047 * 048 * 049 */ 050@ApiModel(description = "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. ") 051@javax.annotation.Generated(value = "io.swagger.codegen.languages.JavaClientCodegen", date = "2021-01-02T19:25:37.430+01:00") 052@XmlRootElement(name = "SmallMoleculeFeature") 053@XmlAccessorType(XmlAccessType.FIELD) 054@JacksonXmlRootElement(localName = "SmallMoleculeFeature") 055public class SmallMoleculeFeature { 056 057 /** 058 * Property enumeration for SmallMoleculeFeature. 059 */ 060 public static enum Properties { 061 prefix("prefix"), 062 headerPrefix("header_prefix"), 063 smfId("smf_id"), 064 smeIdRefs("sme_id_refs"), 065 smeIdRefAmbiguityCode("sme_id_ref_ambiguity_code"), 066 adductIon("adduct_ion"), 067 isotopomer("isotopomer"), 068 expMassToCharge("exp_mass_to_charge"), 069 charge("charge"), 070 retentionTimeInSeconds("retention_time_in_seconds"), 071 retentionTimeInSecondsStart("retention_time_in_seconds_start"), 072 retentionTimeInSecondsEnd("retention_time_in_seconds_end"), 073 abundanceAssay("abundance_assay"), 074 opt("opt"), 075 comment("comment"); 076 077 private final String propertyName; 078 079 private Properties(String propertyName) { 080 this.propertyName = propertyName; 081 } 082 083 public String getPropertyName() { 084 return propertyName; 085 } 086 087 public String toString() { 088 return propertyName; 089 } 090 091 public String toUpper() { 092 return propertyName.toUpperCase(); 093 } 094 095 public static Properties of(String value) { 096 if(value==null) { 097 throw new NullPointerException("Argument value must not be null!"); 098 } 099 return Arrays.asList(Properties.values()).stream().filter(m -> m.propertyName.equals(value.toLowerCase())).findAny().orElseThrow(IllegalArgumentException::new); 100 } 101 }; 102 103 /** 104 * The small molecule feature table row prefix. SMF MUST be used for rows of the small molecule feature table. 105 */ 106 public enum PrefixEnum { 107 SMF("SMF"); 108 109 private String value; 110 111 PrefixEnum(String value) { 112 this.value = value; 113 } 114 115 @JsonValue 116 public String getValue() { 117 return value; 118 } 119 120 @Override 121 public String toString() { 122 return String.valueOf(value); 123 } 124 125 @JsonCreator 126 public static PrefixEnum fromValue(String text) { 127 for (PrefixEnum b : PrefixEnum.values()) { 128 if (String.valueOf(b.value).equals(text)) { 129 return b; 130 } 131 } 132 return null; 133 } 134 } 135 136 @JsonProperty("prefix") 137 @JacksonXmlProperty(localName = "prefix") 138 @XmlElement(name = "prefix") 139 private PrefixEnum prefix = PrefixEnum.SMF; 140 /** 141 * The small molecule feature table header prefix. SFH MUST be used for the small molecule feature table header line (the column labels). 142 */ 143 public enum HeaderPrefixEnum { 144 SFH("SFH"); 145 146 private String value; 147 148 HeaderPrefixEnum(String value) { 149 this.value = value; 150 } 151 152 @JsonValue 153 public String getValue() { 154 return value; 155 } 156 157 @Override 158 public String toString() { 159 return String.valueOf(value); 160 } 161 162 @JsonCreator 163 public static HeaderPrefixEnum fromValue(String text) { 164 for (HeaderPrefixEnum b : HeaderPrefixEnum.values()) { 165 if (String.valueOf(b.value).equals(text)) { 166 return b; 167 } 168 } 169 return null; 170 } 171 } 172 173 @JsonProperty("header_prefix") 174 @JacksonXmlProperty(localName = "header_prefix") 175 @XmlElement(name = "header_prefix") 176 private HeaderPrefixEnum headerPrefix = HeaderPrefixEnum.SFH; 177 @JsonProperty("smf_id") 178 @JacksonXmlProperty(localName = "smf_id") 179 @XmlElement(name = "smf_id") 180 private Integer smfId = null; 181 @JsonProperty("sme_id_refs") 182 // Is a container wrapped=false 183 // items.name=smeIdRefs items.baseName=smeIdRefs items.xmlName= items.xmlNamespace= 184 // items.example= items.type=Integer 185 @XmlElement(name = "smeIdRefs") 186 private List<Integer> smeIdRefs = null; 187 @JsonProperty("sme_id_ref_ambiguity_code") 188 @JacksonXmlProperty(localName = "sme_id_ref_ambiguity_code") 189 @XmlElement(name = "sme_id_ref_ambiguity_code") 190 private Integer smeIdRefAmbiguityCode = null; 191 @JsonProperty("adduct_ion") 192 @JacksonXmlProperty(localName = "adduct_ion") 193 @XmlElement(name = "adduct_ion") 194 private String adductIon = null; 195 @JsonProperty("isotopomer") 196 @JacksonXmlProperty(localName = "isotopomer") 197 @XmlElement(name = "isotopomer") 198 private Parameter isotopomer = null; 199 @JsonProperty("exp_mass_to_charge") 200 @JacksonXmlProperty(localName = "exp_mass_to_charge") 201 @XmlElement(name = "exp_mass_to_charge") 202 private Double expMassToCharge = null; 203 @JsonProperty("charge") 204 @JacksonXmlProperty(localName = "charge") 205 @XmlElement(name = "charge") 206 private Integer charge = null; 207 @JsonProperty("retention_time_in_seconds") 208 @JacksonXmlProperty(localName = "retention_time_in_seconds") 209 @XmlElement(name = "retention_time_in_seconds") 210 private Double retentionTimeInSeconds = null; 211 @JsonProperty("retention_time_in_seconds_start") 212 @JacksonXmlProperty(localName = "retention_time_in_seconds_start") 213 @XmlElement(name = "retention_time_in_seconds_start") 214 private Double retentionTimeInSecondsStart = null; 215 @JsonProperty("retention_time_in_seconds_end") 216 @JacksonXmlProperty(localName = "retention_time_in_seconds_end") 217 @XmlElement(name = "retention_time_in_seconds_end") 218 private Double retentionTimeInSecondsEnd = null; 219 @JsonProperty("abundance_assay") 220 // Is a container wrapped=false 221 // items.name=abundanceAssay items.baseName=abundanceAssay items.xmlName= items.xmlNamespace= 222 // items.example= items.type=Double 223 @XmlElement(name = "abundanceAssay") 224 private List<Double> abundanceAssay = null; 225 @JsonProperty("opt") 226 // Is a container wrapped=false 227 // items.name=opt items.baseName=opt items.xmlName= items.xmlNamespace= 228 // items.example= items.type=OptColumnMapping 229 @XmlElement(name = "opt") 230 private List<OptColumnMapping> opt = null; 231 @JsonProperty("comment") 232 // Is a container wrapped=false 233 // items.name=comment items.baseName=comment items.xmlName= items.xmlNamespace= 234 // items.example= items.type=Comment 235 @XmlElement(name = "comment") 236 private List<Comment> comment = null; 237 /** 238 * The small molecule feature table row prefix. SMF MUST be used for rows of the small molecule feature table. 239 * 240 * @return prefix 241 **/ 242 @ApiModelProperty(value = "The small molecule feature table row prefix. SMF MUST be used for rows of the small molecule feature table.") 243 public PrefixEnum getPrefix() { 244 return prefix; 245 } 246 247 /** 248 * The small molecule feature table header prefix. SFH MUST be used for the small molecule feature table header line (the column labels). 249 * 250 * @return headerPrefix 251 **/ 252 @ApiModelProperty(value = "The small molecule feature table header prefix. SFH MUST be used for the small molecule feature table header line (the column labels).") 253 public HeaderPrefixEnum getHeaderPrefix() { 254 return headerPrefix; 255 } 256 257 258 /** 259 * Builder method for smfId. 260 * 261 * @see SmallMoleculeFeature#setSmfId SmallMoleculeFeature#setSmfId for specification examples 262 * @see SmallMoleculeFeature#getSmfId SmallMoleculeFeature#getSmfId for validation constraints 263 * @param smfId a {@code Integer} parameter. 264 * @return SmallMoleculeFeature 265 **/ 266 public SmallMoleculeFeature smfId(Integer smfId) { 267 this.smfId = smfId; 268 return this; 269 } 270 271 /** 272 * A within file unique identifier for the small molecule feature. 273 * 274 * @return smfId 275 **/ 276 @NotNull 277 @ApiModelProperty(required = true, value = "A within file unique identifier for the small molecule feature.") 278 public Integer getSmfId() { 279 return smfId; 280 } 281 282 /** 283 * Set smfId. 284 * 285 * <p>mzTab-M specification example(s):</p> 286 * <pre><code>SFH SMF_ID … 287SMF 1 … 288SMF 2 … 289</code></pre> 290 * 291 * 292 * @see #getSmfId SmallMoleculeFeature#getSmfId for validation constraints 293 * @param smfId a {@code Integer} parameter. 294 **/ 295 public void setSmfId(Integer smfId) { 296 this.smfId = smfId; 297 } 298 299 300 /** 301 * Builder method for smeIdRefs. 302 * 303 * @see SmallMoleculeFeature#setSmeIdRefs SmallMoleculeFeature#setSmeIdRefs for specification examples 304 * @see SmallMoleculeFeature#getSmeIdRefs SmallMoleculeFeature#getSmeIdRefs for validation constraints 305 * @param smeIdRefs a {@code List<Integer>} parameter. 306 * @return SmallMoleculeFeature 307 **/ 308 public SmallMoleculeFeature smeIdRefs(List<Integer> smeIdRefs) { 309 this.smeIdRefs = smeIdRefs; 310 return this; 311 } 312 313 /** 314 * Add a single smeIdRefsItem to the smeIdRefs collection. 315 * 316 * @see SmallMoleculeFeature#getSmeIdRefs SmallMoleculeFeature#getSmeIdRefs for validation constraints 317 * @param smeIdRefsItem a {@code Integer} parameter. 318 * @return SmallMoleculeFeature 319 */ 320 public SmallMoleculeFeature addSmeIdRefsItem(Integer smeIdRefsItem) { 321 if (this.smeIdRefs == null) { 322 this.smeIdRefs = new ArrayList<>(); 323 } 324 this.smeIdRefs.add(smeIdRefsItem); 325 return this; 326 } 327 328 /** 329 * References to the identification evidence (SME elements) via referencing SME_ID values. Multiple values MAY be provided as a “|” separated list to indicate ambiguity in the identification or to indicate that different types of data supported the identifiction (see SME_ID_REF_ambiguity_code). For the case of a consensus approach where multiple adduct forms are used to infer the SML ID, different features should just reference the same SME_ID value(s). 330 * 331 * @return smeIdRefs 332 **/ 333 @ApiModelProperty(value = "References to the identification evidence (SME elements) via referencing SME_ID values. Multiple values MAY be provided as a “|” separated list to indicate ambiguity in the identification or to indicate that different types of data supported the identifiction (see SME_ID_REF_ambiguity_code). For the case of a consensus approach where multiple adduct forms are used to infer the SML ID, different features should just reference the same SME_ID value(s).") 334 public List<Integer> getSmeIdRefs() { 335 return smeIdRefs; 336 } 337 338 /** 339 * Set smeIdRefs. 340 * 341 * <p>mzTab-M specification example(s):</p> 342 * <pre><code>SFH SMF_ID SME_ID_REFS 343SMF 1 5|6|12… 344</code></pre> 345 * 346 * 347 * @see #getSmeIdRefs SmallMoleculeFeature#getSmeIdRefs for validation constraints 348 * @param smeIdRefs a {@code List<Integer>} parameter. 349 **/ 350 public void setSmeIdRefs(List<Integer> smeIdRefs) { 351 this.smeIdRefs = smeIdRefs; 352 } 353 354 355 /** 356 * Builder method for smeIdRefAmbiguityCode. 357 * 358 * @see SmallMoleculeFeature#setSmeIdRefAmbiguityCode SmallMoleculeFeature#setSmeIdRefAmbiguityCode for specification examples 359 * @see SmallMoleculeFeature#getSmeIdRefAmbiguityCode SmallMoleculeFeature#getSmeIdRefAmbiguityCode for validation constraints 360 * @param smeIdRefAmbiguityCode a {@code Integer} parameter. 361 * @return SmallMoleculeFeature 362 **/ 363 public SmallMoleculeFeature smeIdRefAmbiguityCode(Integer smeIdRefAmbiguityCode) { 364 this.smeIdRefAmbiguityCode = smeIdRefAmbiguityCode; 365 return this; 366 } 367 368 /** 369 * If multiple values are given under SME_ID_REFS, one of the following codes MUST be provided. 1=Ambiguous identification; 2=Only different evidence streams for the same molecule with no ambiguity; 3=Both ambiguous identification and multiple evidence streams. If there are no or one value under SME_ID_REFs, this MUST be reported as null. 370 * 371 * @return smeIdRefAmbiguityCode 372 **/ 373 @ApiModelProperty(value = "If multiple values are given under SME_ID_REFS, one of the following codes MUST be provided. 1=Ambiguous identification; 2=Only different evidence streams for the same molecule with no ambiguity; 3=Both ambiguous identification and multiple evidence streams. If there are no or one value under SME_ID_REFs, this MUST be reported as null.") 374 public Integer getSmeIdRefAmbiguityCode() { 375 return smeIdRefAmbiguityCode; 376 } 377 378 /** 379 * Set smeIdRefAmbiguityCode. 380 * 381 * <p>mzTab-M specification example(s):</p> 382 * <pre><code>SFH SMF_ID SME_ID_REFS SME_ID_REF_ambiguity_code 383SMF 1 5|6|12… 1 384</code></pre> 385 * 386 * 387 * @see #getSmeIdRefAmbiguityCode SmallMoleculeFeature#getSmeIdRefAmbiguityCode for validation constraints 388 * @param smeIdRefAmbiguityCode a {@code Integer} parameter. 389 **/ 390 public void setSmeIdRefAmbiguityCode(Integer smeIdRefAmbiguityCode) { 391 this.smeIdRefAmbiguityCode = smeIdRefAmbiguityCode; 392 } 393 394 395 /** 396 * Builder method for adductIon. 397 * 398 * @see SmallMoleculeFeature#setAdductIon SmallMoleculeFeature#setAdductIon for specification examples 399 * @see SmallMoleculeFeature#getAdductIon SmallMoleculeFeature#getAdductIon for validation constraints 400 * @param adductIon a {@code String} parameter. 401 * @return SmallMoleculeFeature 402 **/ 403 public SmallMoleculeFeature adductIon(String adductIon) { 404 this.adductIon = adductIon; 405 return this; 406 } 407 408 /** 409 * The assumed classification of this molecule’s adduct ion after detection, following the general style in the 2013 IUPAC recommendations on terms relating to MS e.g. [M+H]1+, [M+Na]1+, [M+NH4]1+, [M-H]1-, [M+Cl]1-, [M+H]1+. 410 * 411 * @return adductIon 412 **/ 413 @Pattern(regexp="^\\[\\d*M([+-][\\w]*)\\]\\d*[+-]$") @ApiModelProperty(value = "The assumed classification of this molecule’s adduct ion after detection, following the general style in the 2013 IUPAC recommendations on terms relating to MS e.g. [M+H]1+, [M+Na]1+, [M+NH4]1+, [M-H]1-, [M+Cl]1-, [M+H]1+.") 414 public String getAdductIon() { 415 return adductIon; 416 } 417 418 /** 419 * Set adductIon. 420 * 421 * <p>mzTab-M specification example(s):</p> 422 * <pre><code>SFH SMF_ID … adduct_ion … 423SMF 1 … [M+H]+ … 424SMF 2 … [M+2Na]2+ … 425</code></pre> 426 * 427 * 428 * @see #getAdductIon SmallMoleculeFeature#getAdductIon for validation constraints 429 * @param adductIon a {@code String} parameter. 430 **/ 431 public void setAdductIon(String adductIon) { 432 this.adductIon = adductIon; 433 } 434 435 436 /** 437 * Builder method for isotopomer. 438 * 439 * @see SmallMoleculeFeature#setIsotopomer SmallMoleculeFeature#setIsotopomer for specification examples 440 * @see SmallMoleculeFeature#getIsotopomer SmallMoleculeFeature#getIsotopomer for validation constraints 441 * @param isotopomer a {@code Parameter} parameter. 442 * @return SmallMoleculeFeature 443 **/ 444 public SmallMoleculeFeature isotopomer(Parameter isotopomer) { 445 this.isotopomer = isotopomer; 446 return this; 447 } 448 449 /** 450 * If de-isotoping has not been performed, then the isotopomer quantified MUST be reported here e.g. “+1”, “+2”, “13C peak” using CV terms, otherwise (i.e. for approaches where SMF rows are de-isotoped features) this MUST be null. 451 * 452 * @return isotopomer 453 **/ 454 @Valid 455 @ApiModelProperty(value = "If de-isotoping has not been performed, then the isotopomer quantified MUST be reported here e.g. “+1”, “+2”, “13C peak” using CV terms, otherwise (i.e. for approaches where SMF rows are de-isotoped features) this MUST be null.") 456 public Parameter getIsotopomer() { 457 return isotopomer; 458 } 459 460 /** 461 * Set isotopomer. 462 * 463 * 464 * 465 * @see #getIsotopomer SmallMoleculeFeature#getIsotopomer for validation constraints 466 * @param isotopomer a {@code Parameter} parameter. 467 **/ 468 public void setIsotopomer(Parameter isotopomer) { 469 this.isotopomer = isotopomer; 470 } 471 472 473 /** 474 * Builder method for expMassToCharge. 475 * 476 * @see SmallMoleculeFeature#setExpMassToCharge SmallMoleculeFeature#setExpMassToCharge for specification examples 477 * @see SmallMoleculeFeature#getExpMassToCharge SmallMoleculeFeature#getExpMassToCharge for validation constraints 478 * @param expMassToCharge a {@code Double} parameter. 479 * @return SmallMoleculeFeature 480 **/ 481 public SmallMoleculeFeature expMassToCharge(Double expMassToCharge) { 482 this.expMassToCharge = expMassToCharge; 483 return this; 484 } 485 486 /** 487 * The experimental mass/charge value for the feature, by default assumed to be the mean across assays or a representative value. For approaches that report isotopomers as SMF rows, then the m/z of the isotopomer MUST be reported here. 488 * 489 * @return expMassToCharge 490 **/ 491 @NotNull 492 @ApiModelProperty(required = true, value = "The experimental mass/charge value for the feature, by default assumed to be the mean across assays or a representative value. For approaches that report isotopomers as SMF rows, then the m/z of the isotopomer MUST be reported here.") 493 public Double getExpMassToCharge() { 494 return expMassToCharge; 495 } 496 497 /** 498 * Set expMassToCharge. 499 * 500 * <p>mzTab-M specification example(s):</p> 501 * <pre><code>SFH SMF_ID … exp_mass_to_charge … 502SMF 1 … 1234.5 … 503</code></pre> 504 * 505 * 506 * @see #getExpMassToCharge SmallMoleculeFeature#getExpMassToCharge for validation constraints 507 * @param expMassToCharge a {@code Double} parameter. 508 **/ 509 public void setExpMassToCharge(Double expMassToCharge) { 510 this.expMassToCharge = expMassToCharge; 511 } 512 513 514 /** 515 * Builder method for charge. 516 * 517 * @see SmallMoleculeFeature#setCharge SmallMoleculeFeature#setCharge for specification examples 518 * @see SmallMoleculeFeature#getCharge SmallMoleculeFeature#getCharge for validation constraints 519 * @param charge a {@code Integer} parameter. 520 * @return SmallMoleculeFeature 521 **/ 522 public SmallMoleculeFeature charge(Integer charge) { 523 this.charge = charge; 524 return this; 525 } 526 527 /** 528 * The feature’s charge value using positive integers both for positive and negative polarity modes. 529 * 530 * @return charge 531 **/ 532 @NotNull 533 @ApiModelProperty(required = true, value = "The feature’s charge value using positive integers both for positive and negative polarity modes.") 534 public Integer getCharge() { 535 return charge; 536 } 537 538 /** 539 * Set charge. 540 * 541 * <p>mzTab-M specification example(s):</p> 542 * <pre><code>SFH SMF_ID … charge … 543SMF 1 … 1 … 544</code></pre> 545 * 546 * 547 * @see #getCharge SmallMoleculeFeature#getCharge for validation constraints 548 * @param charge a {@code Integer} parameter. 549 **/ 550 public void setCharge(Integer charge) { 551 this.charge = charge; 552 } 553 554 555 /** 556 * Builder method for retentionTimeInSeconds. 557 * 558 * @see SmallMoleculeFeature#setRetentionTimeInSeconds SmallMoleculeFeature#setRetentionTimeInSeconds for specification examples 559 * @see SmallMoleculeFeature#getRetentionTimeInSeconds SmallMoleculeFeature#getRetentionTimeInSeconds for validation constraints 560 * @param retentionTimeInSeconds a {@code Double} parameter. 561 * @return SmallMoleculeFeature 562 **/ 563 public SmallMoleculeFeature retentionTimeInSeconds(Double retentionTimeInSeconds) { 564 this.retentionTimeInSeconds = retentionTimeInSeconds; 565 return this; 566 } 567 568 /** 569 * The apex of the feature on the retention time axis, in a Master or aggregate MS run. Retention time MUST be reported in seconds. Retention time values for individual MS runs (i.e. before alignment) MAY be reported as optional columns. Retention time SHOULD only be null in the case of direct infusion MS or other techniques where a retention time value is absent or unknown. Relative retention time or retention time index values MAY be reported as optional columns, and could be considered for inclusion in future versions of mzTab as appropriate. 570 * 571 * @return retentionTimeInSeconds 572 **/ 573 @ApiModelProperty(value = "The apex of the feature on the retention time axis, in a Master or aggregate MS run. Retention time MUST be reported in seconds. Retention time values for individual MS runs (i.e. before alignment) MAY be reported as optional columns. Retention time SHOULD only be null in the case of direct infusion MS or other techniques where a retention time value is absent or unknown. Relative retention time or retention time index values MAY be reported as optional columns, and could be considered for inclusion in future versions of mzTab as appropriate.") 574 public Double getRetentionTimeInSeconds() { 575 return retentionTimeInSeconds; 576 } 577 578 /** 579 * Set retentionTimeInSeconds. 580 * 581 * <p>mzTab-M specification example(s):</p> 582 * <pre><code>SFH SMF_ID … retention_time_in_seconds … 583SMF 1 … 1345.7 … 584</code></pre> 585 * 586 * 587 * @see #getRetentionTimeInSeconds SmallMoleculeFeature#getRetentionTimeInSeconds for validation constraints 588 * @param retentionTimeInSeconds a {@code Double} parameter. 589 **/ 590 public void setRetentionTimeInSeconds(Double retentionTimeInSeconds) { 591 this.retentionTimeInSeconds = retentionTimeInSeconds; 592 } 593 594 595 /** 596 * Builder method for retentionTimeInSecondsStart. 597 * 598 * @see SmallMoleculeFeature#setRetentionTimeInSecondsStart SmallMoleculeFeature#setRetentionTimeInSecondsStart for specification examples 599 * @see SmallMoleculeFeature#getRetentionTimeInSecondsStart SmallMoleculeFeature#getRetentionTimeInSecondsStart for validation constraints 600 * @param retentionTimeInSecondsStart a {@code Double} parameter. 601 * @return SmallMoleculeFeature 602 **/ 603 public SmallMoleculeFeature retentionTimeInSecondsStart(Double retentionTimeInSecondsStart) { 604 this.retentionTimeInSecondsStart = retentionTimeInSecondsStart; 605 return this; 606 } 607 608 /** 609 * The start time of the feature on the retention time axis, in a Master or aggregate MS run. Retention time MUST be reported in seconds. Retention time start and end SHOULD only be null in the case of direct infusion MS or other techniques where a retention time value is absent or unknown and MAY be reported in optional columns. 610 * 611 * @return retentionTimeInSecondsStart 612 **/ 613 @ApiModelProperty(value = "The start time of the feature on the retention time axis, in a Master or aggregate MS run. Retention time MUST be reported in seconds. Retention time start and end SHOULD only be null in the case of direct infusion MS or other techniques where a retention time value is absent or unknown and MAY be reported in optional columns.") 614 public Double getRetentionTimeInSecondsStart() { 615 return retentionTimeInSecondsStart; 616 } 617 618 /** 619 * Set retentionTimeInSecondsStart. 620 * 621 * <p>mzTab-M specification example(s):</p> 622 * <pre><code>SFH SMF_ID … retention_time_in_seconds_start … 623SMF 1 … 1327.0 … 624</code></pre> 625 * 626 * 627 * @see #getRetentionTimeInSecondsStart SmallMoleculeFeature#getRetentionTimeInSecondsStart for validation constraints 628 * @param retentionTimeInSecondsStart a {@code Double} parameter. 629 **/ 630 public void setRetentionTimeInSecondsStart(Double retentionTimeInSecondsStart) { 631 this.retentionTimeInSecondsStart = retentionTimeInSecondsStart; 632 } 633 634 635 /** 636 * Builder method for retentionTimeInSecondsEnd. 637 * 638 * @see SmallMoleculeFeature#setRetentionTimeInSecondsEnd SmallMoleculeFeature#setRetentionTimeInSecondsEnd for specification examples 639 * @see SmallMoleculeFeature#getRetentionTimeInSecondsEnd SmallMoleculeFeature#getRetentionTimeInSecondsEnd for validation constraints 640 * @param retentionTimeInSecondsEnd a {@code Double} parameter. 641 * @return SmallMoleculeFeature 642 **/ 643 public SmallMoleculeFeature retentionTimeInSecondsEnd(Double retentionTimeInSecondsEnd) { 644 this.retentionTimeInSecondsEnd = retentionTimeInSecondsEnd; 645 return this; 646 } 647 648 /** 649 * The end time of the feature on the retention time axis, in a Master or aggregate MS run. Retention time MUST be reported in seconds. Retention time start and end SHOULD only be null in the case of direct infusion MS or other techniques where a retention time value is absent or unknown and MAY be reported in optional columns.. 650 * 651 * @return retentionTimeInSecondsEnd 652 **/ 653 @ApiModelProperty(value = "The end time of the feature on the retention time axis, in a Master or aggregate MS run. Retention time MUST be reported in seconds. Retention time start and end SHOULD only be null in the case of direct infusion MS or other techniques where a retention time value is absent or unknown and MAY be reported in optional columns..") 654 public Double getRetentionTimeInSecondsEnd() { 655 return retentionTimeInSecondsEnd; 656 } 657 658 /** 659 * Set retentionTimeInSecondsEnd. 660 * 661 * <p>mzTab-M specification example(s):</p> 662 * <pre><code>SFH SMF_ID … retention_time_in_seconds_end … 663SMF 1 … 1327.8 … 664</code></pre> 665 * 666 * 667 * @see #getRetentionTimeInSecondsEnd SmallMoleculeFeature#getRetentionTimeInSecondsEnd for validation constraints 668 * @param retentionTimeInSecondsEnd a {@code Double} parameter. 669 **/ 670 public void setRetentionTimeInSecondsEnd(Double retentionTimeInSecondsEnd) { 671 this.retentionTimeInSecondsEnd = retentionTimeInSecondsEnd; 672 } 673 674 675 /** 676 * Builder method for abundanceAssay. 677 * 678 * @see SmallMoleculeFeature#setAbundanceAssay SmallMoleculeFeature#setAbundanceAssay for specification examples 679 * @see SmallMoleculeFeature#getAbundanceAssay SmallMoleculeFeature#getAbundanceAssay for validation constraints 680 * @param abundanceAssay a {@code List<Double>} parameter. 681 * @return SmallMoleculeFeature 682 **/ 683 public SmallMoleculeFeature abundanceAssay(List<Double> abundanceAssay) { 684 this.abundanceAssay = abundanceAssay; 685 return this; 686 } 687 688 /** 689 * Add a single abundanceAssayItem to the abundanceAssay collection. 690 * 691 * @see SmallMoleculeFeature#getAbundanceAssay SmallMoleculeFeature#getAbundanceAssay for validation constraints 692 * @param abundanceAssayItem a {@code Double} parameter. 693 * @return SmallMoleculeFeature 694 */ 695 public SmallMoleculeFeature addAbundanceAssayItem(Double abundanceAssayItem) { 696 if (this.abundanceAssay == null) { 697 this.abundanceAssay = new ArrayList<>(); 698 } 699 this.abundanceAssay.add(abundanceAssayItem); 700 return this; 701 } 702 703 /** 704 * The feature’s abundance in every assay described in the metadata section MUST be reported. Null or zero values may be reported as appropriate. 705 * 706 * @return abundanceAssay 707 **/ 708 @ApiModelProperty(value = "The feature’s abundance in every assay described in the metadata section MUST be reported. Null or zero values may be reported as appropriate.") 709 public List<Double> getAbundanceAssay() { 710 return abundanceAssay; 711 } 712 713 /** 714 * Set abundanceAssay. 715 * 716 * <p>mzTab-M specification example(s):</p> 717 * <pre><code>SMH SML_ID … abundance_assay[1] … 718SMF 1 … 38648 … 719</code></pre> 720 * 721 * 722 * @see #getAbundanceAssay SmallMoleculeFeature#getAbundanceAssay for validation constraints 723 * @param abundanceAssay a {@code List<Double>} parameter. 724 **/ 725 public void setAbundanceAssay(List<Double> abundanceAssay) { 726 this.abundanceAssay = abundanceAssay; 727 } 728 729 730 /** 731 * Builder method for opt. 732 * 733 * @see SmallMoleculeFeature#setOpt SmallMoleculeFeature#setOpt for specification examples 734 * @see SmallMoleculeFeature#getOpt SmallMoleculeFeature#getOpt for validation constraints 735 * @param opt a {@code List<OptColumnMapping>} parameter. 736 * @return SmallMoleculeFeature 737 **/ 738 public SmallMoleculeFeature opt(List<OptColumnMapping> opt) { 739 this.opt = opt; 740 return this; 741 } 742 743 /** 744 * Add a single optItem to the opt collection. 745 * 746 * @see SmallMoleculeFeature#getOpt SmallMoleculeFeature#getOpt for validation constraints 747 * @param optItem a {@code OptColumnMapping} parameter. 748 * @return SmallMoleculeFeature 749 */ 750 public SmallMoleculeFeature addOptItem(OptColumnMapping optItem) { 751 if (this.opt == null) { 752 this.opt = new ArrayList<>(); 753 } 754 this.opt.add(optItem); 755 return this; 756 } 757 758 /** 759 * Additional columns can be added to the end of the small molecule feature table. These column headers MUST start with the prefix “opt_” followed by the {identifier} of the object they reference: assay, study variable, MS run or “global” (if the value relates to all replicates). Column names MUST only contain the following characters: ‘A’-‘Z’, ‘a’-‘z’, ‘0’-‘9’, ‘’, ‘-’, ‘[’, ‘]’, and ‘:’. CV parameter accessions MAY be used for optional columns following the format: opt{identifier}_cv_{accession}_\{parameter name}. Spaces within the parameter’s name MUST be replaced by ‘_’. 760 761 * 762 * @return opt 763 **/ 764 @Valid 765 @ApiModelProperty(value = "Additional columns can be added to the end of the small molecule feature table. These column headers MUST start with the prefix “opt_” followed by the {identifier} of the object they reference: assay, study variable, MS run or “global” (if the value relates to all replicates). Column names MUST only contain the following characters: ‘A’-‘Z’, ‘a’-‘z’, ‘0’-‘9’, ‘’, ‘-’, ‘[’, ‘]’, and ‘:’. CV parameter accessions MAY be used for optional columns following the format: opt{identifier}_cv_{accession}_\\{parameter name}. Spaces within the parameter’s name MUST be replaced by ‘_’. ") 766 public List<OptColumnMapping> getOpt() { 767 return opt; 768 } 769 770 /** 771 * Set opt. 772 * 773 * <p>mzTab-M specification example(s):</p> 774 * <pre><code>SFH SMF_ID … opt_assay[1]_my_value … opt_global_another_value 775SMF 1 … My value … some other value 776</code></pre> 777 * 778 * 779 * @see #getOpt SmallMoleculeFeature#getOpt for validation constraints 780 * @param opt a {@code List<OptColumnMapping>} parameter. 781 **/ 782 public void setOpt(List<OptColumnMapping> opt) { 783 this.opt = opt; 784 } 785 786 787 /** 788 * Builder method for comment. 789 * 790 * @see SmallMoleculeFeature#setComment SmallMoleculeFeature#setComment for specification examples 791 * @see SmallMoleculeFeature#getComment SmallMoleculeFeature#getComment for validation constraints 792 * @param comment a {@code List<Comment>} parameter. 793 * @return SmallMoleculeFeature 794 **/ 795 public SmallMoleculeFeature comment(List<Comment> comment) { 796 this.comment = comment; 797 return this; 798 } 799 800 /** 801 * Add a single commentItem to the comment collection. 802 * 803 * @see SmallMoleculeFeature#getComment SmallMoleculeFeature#getComment for validation constraints 804 * @param commentItem a {@code Comment} parameter. 805 * @return SmallMoleculeFeature 806 */ 807 public SmallMoleculeFeature addCommentItem(Comment commentItem) { 808 if (this.comment == null) { 809 this.comment = new ArrayList<>(); 810 } 811 this.comment.add(commentItem); 812 return this; 813 } 814 815 /** 816 * <p>Get comment.</p> 817 * 818 * @return comment 819 **/ 820 @Valid 821 @ApiModelProperty(value = "") 822 public List<Comment> getComment() { 823 return comment; 824 } 825 826 /** 827 * Set comment. 828 * 829 * 830 * 831 * @see #getComment SmallMoleculeFeature#getComment for validation constraints 832 * @param comment a {@code List<Comment>} parameter. 833 **/ 834 public void setComment(List<Comment> comment) { 835 this.comment = comment; 836 } 837 838 839 @Override 840 public boolean equals(java.lang.Object o) { 841 if (this == o) { 842 return true; 843 } 844 if (o == null || getClass() != o.getClass()) { 845 return false; 846 } 847 SmallMoleculeFeature smallMoleculeFeature = (SmallMoleculeFeature) o; 848 return Objects.equals(this.prefix, smallMoleculeFeature.prefix) && 849 Objects.equals(this.headerPrefix, smallMoleculeFeature.headerPrefix) && 850 Objects.equals(this.smfId, smallMoleculeFeature.smfId) && 851 Objects.equals(this.smeIdRefs, smallMoleculeFeature.smeIdRefs) && 852 Objects.equals(this.smeIdRefAmbiguityCode, smallMoleculeFeature.smeIdRefAmbiguityCode) && 853 Objects.equals(this.adductIon, smallMoleculeFeature.adductIon) && 854 Objects.equals(this.isotopomer, smallMoleculeFeature.isotopomer) && 855 Objects.equals(this.expMassToCharge, smallMoleculeFeature.expMassToCharge) && 856 Objects.equals(this.charge, smallMoleculeFeature.charge) && 857 Objects.equals(this.retentionTimeInSeconds, smallMoleculeFeature.retentionTimeInSeconds) && 858 Objects.equals(this.retentionTimeInSecondsStart, smallMoleculeFeature.retentionTimeInSecondsStart) && 859 Objects.equals(this.retentionTimeInSecondsEnd, smallMoleculeFeature.retentionTimeInSecondsEnd) && 860 Objects.equals(this.abundanceAssay, smallMoleculeFeature.abundanceAssay) && 861 Objects.equals(this.opt, smallMoleculeFeature.opt) && 862 Objects.equals(this.comment, smallMoleculeFeature.comment); 863 } 864 865 @Override 866 public int hashCode() { 867 return Objects.hash(prefix, headerPrefix, smfId, smeIdRefs, smeIdRefAmbiguityCode, adductIon, isotopomer, expMassToCharge, charge, retentionTimeInSeconds, retentionTimeInSecondsStart, retentionTimeInSecondsEnd, abundanceAssay, opt, comment); 868 } 869 870 871 @Override 872 public String toString() { 873 StringBuilder sb = new StringBuilder(); 874 sb.append("class SmallMoleculeFeature {\n"); 875 876 sb.append(" prefix: ").append(toIndentedString(prefix)).append("\n"); 877 sb.append(" headerPrefix: ").append(toIndentedString(headerPrefix)).append("\n"); 878 sb.append(" smfId: ").append(toIndentedString(smfId)).append("\n"); 879 sb.append(" smeIdRefs: ").append(toIndentedString(smeIdRefs)).append("\n"); 880 sb.append(" smeIdRefAmbiguityCode: ").append(toIndentedString(smeIdRefAmbiguityCode)).append("\n"); 881 sb.append(" adductIon: ").append(toIndentedString(adductIon)).append("\n"); 882 sb.append(" isotopomer: ").append(toIndentedString(isotopomer)).append("\n"); 883 sb.append(" expMassToCharge: ").append(toIndentedString(expMassToCharge)).append("\n"); 884 sb.append(" charge: ").append(toIndentedString(charge)).append("\n"); 885 sb.append(" retentionTimeInSeconds: ").append(toIndentedString(retentionTimeInSeconds)).append("\n"); 886 sb.append(" retentionTimeInSecondsStart: ").append(toIndentedString(retentionTimeInSecondsStart)).append("\n"); 887 sb.append(" retentionTimeInSecondsEnd: ").append(toIndentedString(retentionTimeInSecondsEnd)).append("\n"); 888 sb.append(" abundanceAssay: ").append(toIndentedString(abundanceAssay)).append("\n"); 889 sb.append(" opt: ").append(toIndentedString(opt)).append("\n"); 890 sb.append(" comment: ").append(toIndentedString(comment)).append("\n"); 891 sb.append("}"); 892 return sb.toString(); 893 } 894 895 /** 896 * Convert the given object to string with each line indented by 4 spaces 897 * (except the first line). 898 */ 899 private String toIndentedString(java.lang.Object o) { 900 if (o == null) { 901 return "null"; 902 } 903 return o.toString().replace("\n", "\n "); 904 } 905 906} 907