35 #ifndef OPENMS_FORMAT_MZTAB_H 
   36 #define OPENMS_FORMAT_MZTAB_H 
   69     virtual bool isNull() 
const = 0;
 
   70     virtual void setNull(
bool b) = 0;
 
   80     virtual bool isNaN() 
const = 0;
 
   82     virtual bool isInf() 
const = 0;
 
  172         throw Exception::ElementNotFound(__FILE__, __LINE__, __PRETTY_FUNCTION__, 
String(
"Trying to extract MzTab Double value from non-double valued cell. Did you check the cell state before querying the value?"));
 
  204       else if (lower == 
"nan")
 
  208       else if (lower == 
"inf")
 
  252         for (std::vector<MzTabDouble>::const_iterator it = 
entries_.begin(); it != 
entries_.end(); ++it)
 
  258           ret += it->toCellString();
 
  275         std::vector<String> fields;
 
  276         ss.
split(
",", fields);
 
  277         for (
Size i = 0; i != fields.size(); ++i)
 
  286     std::vector<MzTabDouble> 
get() 
const 
  291     void set(
const std::vector<MzTabDouble>& entries)
 
  318         throw Exception::ElementNotFound(__FILE__, __LINE__, __PRETTY_FUNCTION__, 
String(
"Trying to extract MzTab Integer value from non-integer valued cell. Did you check the cell state before querying the value?"));
 
  350       else if (lower == 
"nan")
 
  354       else if (lower == 
"inf")
 
  372     void set(
const bool& value)
 
  591           std::vector<String> quoted_fields;
 
  592           ss.
split(
"\"", quoted_fields);
 
  594           if (quoted_fields.size() != 3)
 
  599           name_ = quoted_fields[1];
 
  602           std::vector<String> comma_fields;
 
  603           ss.
split(
",", comma_fields);
 
  604           if (comma_fields.size() != 4)
 
  611             comma_fields[0].remove(
'[');
 
  612             comma_fields[3].remove(
']');
 
  620           std::vector<String> fields;
 
  621           ss.
split(
",", fields);
 
  622           if (fields.size() != 4)
 
  629             fields[0].remove(
'[');
 
  630             fields[3].remove(
']');
 
  633             name_ = fields[2].remove(
'"');
 
  679           ret += it->toCellString();
 
  697         std::vector<String> fields;
 
  698         ss.
split(
"|", fields);
 
  699         for (
Size i = 0; i != fields.size(); ++i)
 
  714     std::vector<MzTabParameter> 
get() 
const 
  719     void set(
const std::vector<MzTabParameter>& parameters)
 
  765         for (std::vector<MzTabString>::const_iterator it = 
entries_.begin(); it != 
entries_.end(); ++it)
 
  771           ret += it->toCellString();
 
  789         std::vector<String> fields;
 
  791         for (
Size i = 0; i != fields.size(); ++i)
 
  800     std::vector<MzTabString> 
get() 
const 
  805     void set(
const std::vector<MzTabString>& entries)
 
  879             pos_param_string += 
String(
"|");
 
  886           throw Exception::ConversionError(__FILE__, __LINE__, __PRETTY_FUNCTION__, 
String(
"Modification or Substitution identifier MUST NOT be null or empty in MzTabModification"));
 
  891         if (!pos_param_string.empty())
 
  921           std::vector<String> fields;
 
  922           ss.
split(
"-", fields);
 
  924           if (fields.size() != 2)
 
  930           std::vector<String> position_fields;
 
  931           fields[0].split(
"|", position_fields);
 
  933           for (
Size i = 0; i != position_fields.size(); ++i)
 
  935             Size spos = position_fields[i].find_first_of(
"[");
 
  937             if (spos == std::string::npos) 
 
  944               Int pos = 
String(position_fields[i].begin(), position_fields[i].begin() + spos).
toInt();
 
  987         for (std::vector<MzTabModification>::const_iterator it = 
entries_.begin(); it != 
entries_.end(); ++it)
 
  993           ret += it->toCellString();
 
 1003       if (lower == 
"null")
 
 1010         std::vector<String> fields;
 
 1014           ss.
split(
",", fields);
 
 1015           for (
Size i = 0; i != fields.size(); ++i)
 
 1027           bool in_param_bracket = 
false;
 
 1028           bool in_quotes = 
false;
 
 1030           for (
Size pos = 0; pos != ss.size(); ++pos)
 
 1033             if (ss[pos] == 
'[' && !in_quotes)
 
 1035               in_param_bracket = 
true;
 
 1039             if (ss[pos] == 
']' && !in_quotes)
 
 1041               in_param_bracket = 
false;
 
 1046             if (ss[pos] == 
'\"')
 
 1048               in_quotes = !in_quotes;
 
 1053             if (ss[pos] == 
',' && !in_quotes && in_param_bracket)
 
 1055               ss[pos] = ((char)007); 
 
 1061           ss.
split(
",", fields);
 
 1068           for (
Size i = 0; i != fields.size(); ++i)
 
 1070             fields[i].substitute(((
char)007), 
','); 
 
 1079     std::vector<MzTabModification> 
get() 
const 
 1084     void set(
const std::vector<MzTabModification>& entries)
 
 1128       assert(!spec_ref.empty());
 
 1129       if (!spec_ref.empty())
 
 1149       assert(!spec_ref.empty());
 
 1150       if (!spec_ref.empty())
 
 1172       if (lower == 
"null")
 
 1179         std::vector<String> fields;
 
 1180         ss.
split(
":", fields);
 
 1181         if (fields.size() != 2)
 
 1187         ms_file_ = (
Size)(fields[0].substitute(
"ms_file[", 
"").remove(
']').toInt());
 
 1281     std::vector<MzTabOptionalColumnEntry> 
opt_; 
 
 1305     std::vector<MzTabOptionalColumnEntry> 
opt_; 
 
 1332     std::vector<MzTabOptionalColumnEntry> 
opt_; 
 
 1366       return map_unitid_to_meta_data_;
 
 1371       map_unitid_to_meta_data_ = md;
 
 1376       return map_unitid_to_protein_data_;
 
 1381       map_unitid_to_protein_data_ = psd;
 
 1386       return map_unitid_to_peptide_data_;
 
 1391       map_unitid_to_peptide_data_ = psd;
 
 1396       return map_unitid_to_small_molecule_data_;
 
 1401       map_unitid_to_small_molecule_data_ = smsd;
 
 1407       std::vector<String> names;
 
 1409       if (!protein_section.empty())
 
 1412         if (!protein_rows.empty())
 
 1414           const std::vector<MzTabOptionalColumnEntry>& opt_ = protein_rows[0].opt_;
 
 1415           for (std::vector<MzTabOptionalColumnEntry>::const_iterator it = opt_.begin(); it != opt_.end(); ++it)
 
 1417             names.push_back(it->first);
 
 1427       std::vector<String> names;
 
 1429       if (!peptide_section.empty())
 
 1432         if (!peptide_rows.empty())
 
 1434           const std::vector<MzTabOptionalColumnEntry>& opt_ = peptide_rows[0].opt_;
 
 1435           for (std::vector<MzTabOptionalColumnEntry>::const_iterator it = opt_.begin(); it != opt_.end(); ++it)
 
 1437             names.push_back(it->first);
 
 1447       std::vector<String> names;
 
 1449       if (!small_molecule_section.empty())
 
 1452         if (!small_molecule_rows.empty())
 
 1454           const std::vector<MzTabOptionalColumnEntry>& opt_ = small_molecule_rows[0].opt_;
 
 1455           for (std::vector<MzTabOptionalColumnEntry>::const_iterator it = opt_.begin(); it != opt_.end(); ++it)
 
 1457             names.push_back(it->first);
 
 1473 #endif // OPENMS_FORMAT_MZTAB_H 
MzTabSpectraRef spectra_ref
Definition: MzTab.h:1301
MzTabSpectraRef spectra_ref
Definition: MzTab.h:1325
String toCellString() const 
Definition: MzTab.h:856
MzTabString uri
Definition: MzTab.h:1275
std::vector< MzTabDouble > smallmolecule_abundance_stdev_sub
Definition: MzTab.h:1330
void fromCellString(const String &s)
Definition: MzTab.h:264
void fromCellString(const String &s)
Definition: MzTab.h:777
virtual String toCellString() const =0
void setNull(bool b)
Definition: MzTab.h:235
MzTabString database
Definition: MzTab.h:1291
std::map< String, MzTabProteinSectionRows > MzTabProteinSectionData
Definition: MzTab.h:1343
A more convenient string class. 
Definition: String.h:56
MzTabString accession
Definition: MzTab.h:1288
void set(const DoubleReal &value)
Definition: MzTab.h:158
std::vector< MzTabDouble > protein_abundance_sub
Definition: MzTab.h:1278
MzTabString sequence
Definition: MzTab.h:1287
DoubleReal toDouble() const 
Conversion to double. 
Element could not be found exception. 
Definition: Exception.h:648
void fromCellString(const String &s)
Definition: MzTab.h:479
MzTabParameterList search_engine
Definition: MzTab.h:1267
virtual bool isNull() const =0
MzTab()
Default constructor. 
Definition: MzTab.h:1359
bool isNaN() const 
Definition: MzTab.h:130
const MzTabSmallMoleculeSectionData & getSmallMoleculeSectionData() const 
Definition: MzTab.h:1394
MzTabString inchi_key
Definition: MzTab.h:1314
void setNull(bool b)
Definition: MzTab.h:825
MzTabString getModOrSubstIdentifier() const 
Definition: MzTab.h:850
std::vector< MzTabOptionalColumnEntry > opt_
Definition: MzTab.h:1305
MzTabString database
Definition: MzTab.h:1265
bool isNull() const 
Definition: MzTab.h:651
String toCellString() const 
Definition: MzTab.h:467
String getName() const 
Definition: MzTab.h:540
String value_
Definition: MzTab.h:485
String getAccession() const 
Definition: MzTab.h:534
std::map< String, MzTabUnitIdMetaData > MzTabMetaData
Definition: MzTab.h:1341
MzTabString database_version
Definition: MzTab.h:1266
String CV_label_
Definition: MzTab.h:641
MzTabParameterList search_engine
Definition: MzTab.h:1293
MzTabSmallMoleculeSectionData map_unitid_to_small_molecule_data_
Definition: MzTab.h:1468
MzTabStringList identifier
Definition: MzTab.h:1311
std::vector< MzTabDouble > peptide_abundance_stdev_sub
Definition: MzTab.h:1303
std::vector< MzTabSmallMoleculeSectionRow > MzTabSmallMoleculeSectionRows
Definition: MzTab.h:1339
MzTabProteinSectionRow()
Definition: MzTab.h:1253
MzTabParameterList search_engine_score
Definition: MzTab.h:1294
void setCVLabel(const String &CV_label)
Definition: MzTab.h:508
std::vector< MzTabModification > entries_
Definition: MzTab.h:1090
MzTabCellStateType state_
Definition: MzTab.h:151
void setNull(bool b)
Definition: MzTab.h:125
void fromCellString(const String &s)
Definition: MzTab.h:196
bool isNull() const 
Definition: MzTab.h:1103
std::vector< MzTabOptionalColumnEntry > opt_
Definition: MzTab.h:1332
std::vector< MzTabDouble > peptide_abundance_std_error_sub
Definition: MzTab.h:1304
MzTabString mod_or_subst_identifier_
Definition: MzTab.h:958
char sep_
Definition: MzTab.h:812
Int value_
Definition: MzTab.h:365
void setSpecRefFile(const String &spec_ref)
Definition: MzTab.h:1147
String toCellString() const 
Definition: MzTab.h:978
std::vector< MzTabDouble > protein_abundance_stdev_sub
Definition: MzTab.h:1279
MzTabString uri
Definition: MzTab.h:1324
std::vector< MzTabProteinSectionRow > MzTabProteinSectionRows
Definition: MzTab.h:1335
MzTabDoubleList retention_time
Definition: MzTab.h:1318
bool isNull() const 
Definition: MzTab.h:96
MzTabSpectraRef()
Definition: MzTab.h:1098
MzTabBoolean unique
Definition: MzTab.h:1290
void set(const String &value)
Definition: MzTab.h:435
MzTabInteger reliability
Definition: MzTab.h:1295
MzTabProteinSectionData map_unitid_to_protein_data_
Definition: MzTab.h:1466
~MzTab()
Destructor. 
Definition: MzTab.h:1362
MzTabCellStateType
Data model of MzTab files. Please see the official MzTab specification at https://code.google.com/p/mztab/. 
Definition: MzTab.h:56
void setNull(bool b)
Definition: MzTab.h:1108
void setValue(const String &value)
Definition: MzTab.h:523
std::vector< String > getPeptideOptionalColumnNames() const 
Definition: MzTab.h:1425
String getCVLabel() const 
Definition: MzTab.h:528
MzTabPeptideSectionData map_unitid_to_peptide_data_
Definition: MzTab.h:1467
MzTabString description
Definition: MzTab.h:1315
void set(const std::vector< MzTabModification > &entries)
Definition: MzTab.h:1084
MzTabString accession
Definition: MzTab.h:1260
String toCellString() const 
Definition: MzTab.h:243
bool isInf() const 
Definition: MzTab.h:140
std::map< String, MzTabSmallMoleculeSectionRows > MzTabSmallMoleculeSectionData
Definition: MzTab.h:1347
MzTabModificationList modifications
Definition: MzTab.h:1274
MzTabDouble mass_to_charge
Definition: MzTab.h:1299
MzTabNullAbleBase()
Definition: MzTab.h:91
Int toInt() const 
Conversion to int. 
String accession_
Definition: MzTab.h:642
String getSpecRef() const 
Definition: MzTab.h:1135
MzTabString species
Definition: MzTab.h:1320
void setNull(bool b)
Definition: MzTab.h:748
const MzTabProteinSectionData & getProteinSectionData() const 
Definition: MzTab.h:1374
String spec_ref_
Definition: MzTab.h:1193
bool value_
Definition: MzTab.h:428
void setPositionsAndParameters(const std::vector< std::pair< Int, MzTabParameter > > &ppp)
Definition: MzTab.h:835
MzTabInteger reliability
Definition: MzTab.h:1269
std::vector< MzTabDouble > protein_abundance_std_error_sub
Definition: MzTab.h:1280
void fromCellString(const String &s)
Definition: MzTab.h:999
void setPeptideSectionData(const MzTabPeptideSectionData &psd)
Definition: MzTab.h:1389
String & toLower()
Converts the string to lowercase. 
String toCellString() const 
Definition: MzTab.h:1156
bool hasSubstring(const String &string) const 
true if String contains the string, false otherwise 
DoubleReal value_
Definition: MzTab.h:219
MzTabString description
Definition: MzTab.h:1262
String & trim()
removes whitespaces (space, tab, line feed, carriage return) at the beginning and the end of the stri...
MzTabDouble charge
Definition: MzTab.h:1298
std::vector< MzTabDouble > entries_
Definition: MzTab.h:297
void set(const std::vector< MzTabDouble > &entries)
Definition: MzTab.h:291
MzTabInteger taxid
Definition: MzTab.h:1319
Size getMSFile() const 
Definition: MzTab.h:1141
const MzTabMetaData & getMetaData() const 
Definition: MzTab.h:1364
void setName(const String &name)
Definition: MzTab.h:518
String toCellString() const 
Definition: MzTab.h:552
bool isNull() const 
Definition: MzTab.h:820
MzTabDoubleList retention_time
Definition: MzTab.h:1297
std::vector< MzTabParameter > parameters_
Definition: MzTab.h:725
MzTabDouble mass_to_charge
Definition: MzTab.h:1316
virtual bool isInf() const =0
void set(const std::vector< MzTabString > &entries)
Definition: MzTab.h:805
std::vector< String > getSmallMoleculeOptionalColumnNames() const 
Definition: MzTab.h:1445
std::vector< MzTabDouble > smallmolecule_abundance_std_error_sub
Definition: MzTab.h:1331
void set(const Int &value)
Definition: MzTab.h:304
std::vector< MzTabDouble > peptide_abundance_sub
Definition: MzTab.h:1302
void setSeparator(char sep)
Definition: MzTab.h:738
MzTabString species
Definition: MzTab.h:1264
const MzTabPeptideSectionData & getPeptideSectionData() const 
Definition: MzTab.h:1384
MzTabDouble protein_coverage
Definition: MzTab.h:1277
MzTabModificationList modifications
Definition: MzTab.h:1296
Size ms_file_
Definition: MzTab.h:1192
void fromCellString(const String &s)
Definition: MzTab.h:402
String toCellString() const 
Definition: MzTab.h:756
MzTabStringList go_terms
Definition: MzTab.h:1276
Invalid conversion exception. 
Definition: Exception.h:363
void fromCellString(const String &s)
Definition: MzTab.h:576
std::vector< MzTabPeptideSectionRow > MzTabPeptideSectionRows
Definition: MzTab.h:1337
void setModOrSubstIdentifier(const MzTabString &mod_id)
Definition: MzTab.h:845
bool isNull() const 
Definition: MzTab.h:965
String toCellString() const 
Definition: MzTab.h:177
String getValue() const 
Definition: MzTab.h:546
MzTabMetaData map_unitid_to_meta_data_
Definition: MzTab.h:1465
MzTabStringList ambiguity_members
Definition: MzTab.h:1273
void setProteinSectionData(const MzTabProteinSectionData &psd)
Definition: MzTab.h:1379
void setNull(bool b)
Definition: MzTab.h:101
bool isNull() const 
Definition: MzTab.h:492
MzTabParameterList search_engine_score
Definition: MzTab.h:1327
std::vector< MzTabDouble > smallmolecule_abundance_sub
Definition: MzTab.h:1329
MzTabModificationList modifications
Definition: MzTab.h:1328
bool isNull() const 
Definition: MzTab.h:743
std::map< String, MzTabPeptideSectionRows > MzTabPeptideSectionData
Definition: MzTab.h:1345
String toCellString() const 
Definition: MzTab.h:664
void setMSFile(Size index)
Definition: MzTab.h:1117
MzTabInteger num_peptides
Definition: MzTab.h:1270
MzTabStringList()
Definition: MzTab.h:732
MzTabParameterList search_engine
Definition: MzTab.h:1326
String toCellString() const 
Definition: MzTab.h:323
size_t Size
Size type e.g. used as variable which can hold result of size() 
Definition: Types.h:144
void set(const bool &value)
Definition: MzTab.h:372
String & substitute(char from, char to)
Replaces all occurences of the character from by the character to. 
bool null_
Definition: MzTab.h:107
void set(const std::vector< MzTabParameter > ¶meters)
Definition: MzTab.h:719
String name_
Definition: MzTab.h:643
virtual void setNull(bool b)=0
void setInf()
Definition: MzTab.h:145
MzTabString database
Definition: MzTab.h:1321
void fromCellString(const String &s)
Definition: MzTab.h:903
MzTabInteger num_peptides_unambiguous
Definition: MzTab.h:1272
MzTabString uri
Definition: MzTab.h:1300
void setMetaData(const MzTabMetaData &md)
Definition: MzTab.h:1369
virtual void fromCellString(const String &)=0
std::vector< String > getProteinOptionalColumnNames() const 
Definition: MzTab.h:1405
std::vector< std::pair< Int, MzTabParameter > > getPositionsAndParameters() const 
Definition: MzTab.h:840
std::vector< MzTabString > entries_
Definition: MzTab.h:811
MzTabInteger reliability
Definition: MzTab.h:1323
MzTabParameterList search_engine_score
Definition: MzTab.h:1268
bool isNull() const 
Definition: MzTab.h:454
void setSpecRef(String spec_ref)
Definition: MzTab.h:1126
MzTabInteger taxid
Definition: MzTab.h:1263
bool isNull() const 
Definition: MzTab.h:120
void setNull(bool b)
Definition: MzTab.h:459
void fromCellString(const String &s)
Definition: MzTab.h:685
bool isNull() const 
Definition: MzTab.h:230
std::vector< MzTabOptionalColumnEntry > opt_
Definition: MzTab.h:1281
void fromCellString(const String &s)
Definition: MzTab.h:1168
MzTabString database_version
Definition: MzTab.h:1322
MzTabString chemical_formula
Definition: MzTab.h:1312
MzTabString database_version
Definition: MzTab.h:1292
virtual bool isNaN() const =0
void fromCellString(const String &s)
Definition: MzTab.h:342
int Int
Signed integer type. 
Definition: Types.h:100
MzTabDouble charge
Definition: MzTab.h:1317
void setNull(bool b)
Definition: MzTab.h:497
void setAccession(const String &accession)
Definition: MzTab.h:513
bool split(const char splitter, std::vector< String > &substrings, bool quote_protect=false) const 
Splits a string into substrings using splitter as delimiter. 
void setNull(bool b)
Definition: MzTab.h:970
String value_
Definition: MzTab.h:644
void setNaN()
Definition: MzTab.h:135
std::vector< std::pair< Int, MzTabParameter > > pos_param_pairs_
Definition: MzTab.h:957
String toCellString() const 
Definition: MzTab.h:383
void setSmallMoleculeSectionData(const MzTabSmallMoleculeSectionData &smsd)
Definition: MzTab.h:1399
MzTabInteger num_peptides_distinct
Definition: MzTab.h:1271
MzTabString smiles
Definition: MzTab.h:1313
MzTabDoubleList()
Definition: MzTab.h:226
std::pair< String, MzTabString > MzTabOptionalColumnEntry
Definition: MzTab.h:1248
Data model of MzTab files. Please see the official MzTab specification at https://code.google.com/p/mztab/. 
Definition: MzTab.h:1355
MzTabNullNaNAndInfAbleBase()
Definition: MzTab.h:115
void setNull(bool b)
Definition: MzTab.h:656