00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #ifndef OPENMS_FORMAT_INSPECTOUTFILE_H
00036 #define OPENMS_FORMAT_INSPECTOUTFILE_H
00037
00038 #include <OpenMS/CONCEPT/Exception.h>
00039 #include <OpenMS/DATASTRUCTURES/String.h>
00040 #include <OpenMS/KERNEL/MSExperiment.h>
00041 #include <OpenMS/METADATA/PeptideIdentification.h>
00042 #include <OpenMS/FORMAT/FileHandler.h>
00043 #include <OpenMS/FORMAT/FileTypes.h>
00044
00045
00046 namespace OpenMS
00047 {
00057 class OPENMS_DLLAPI InspectOutfile
00058 {
00059 public:
00061 InspectOutfile();
00062
00064 InspectOutfile(const InspectOutfile & inspect_outfile);
00065
00067 virtual ~InspectOutfile();
00068
00070 InspectOutfile & operator=(const InspectOutfile & inspect_outfile);
00071
00073 bool operator==(const InspectOutfile & inspect_outfile) const;
00074
00086 std::vector<Size> load(const String & result_filename, std::vector<PeptideIdentification> & peptide_identifications, ProteinIdentification & protein_identification, const DoubleReal p_value_threshold, const String & database_filename = "");
00087
00095 std::vector<Size> getWantedRecords(const String & result_filename, DoubleReal p_value_threshold);
00096
00104 void compressTrieDB(const String & database_filename, const String & index_filename, std::vector<Size> & wanted_records, const String & snd_database_filename, const String & snd_index_filename, bool append = false);
00105
00110 void generateTrieDB(const String & source_database_filename, const String & database_filename, const String & index_filename, bool append = false, const String species = "");
00111
00112
00115 void getACAndACType(String line, String & accession, String & accession_type);
00116
00121 void getPrecursorRTandMZ(const std::vector<std::pair<String, std::vector<std::pair<Size, Size> > > > & files_and_peptide_identification_with_scan_number, std::vector<PeptideIdentification> & ids);
00122
00128 void getLabels(const String & source_database_filename, String & ac_label, String & sequence_start_label, String & sequence_end_label, String & comment_label, String & species_label);
00129
00134 std::vector<Size> getSequences(const String & database_filename, const std::map<Size, Size> & wanted_records, std::vector<String> & sequences);
00135
00141 template <typename PeakT>
00142 void getExperiment(MSExperiment<PeakT> & exp, String & type, const String & in_filename)
00143 {
00144 type.clear();
00145 exp.reset();
00146
00147 FileHandler fh;
00148 FileTypes::Type in_type = fh.getTypeByContent(in_filename);
00149 if (in_type == FileTypes::UNKNOWN)
00150 {
00151 throw Exception::ParseError(__FILE__, __LINE__, __PRETTY_FUNCTION__, "Could not determine type of the file. Aborting!", in_filename);
00152 }
00153 type = FileTypes::typeToName(in_type);
00154 fh.loadExperiment(in_filename, exp, in_type);
00155 }
00156
00162 bool getSearchEngineAndVersion(const String & cmd_output, ProteinIdentification & protein_identification);
00163
00167 void readOutHeader(const String & filename, const String & header_line, Int & spectrum_file_column, Int & scan_column, Int & peptide_column, Int & protein_column, Int & charge_column, Int & MQ_score_column, Int & p_value_column, Int & record_number_column, Int & DB_file_pos_column, Int & spec_file_pos_column, Size & number_of_columns);
00168
00169 protected:
00174 static const Size db_pos_length_;
00175 static const Size trie_db_pos_length_;
00176 static const Size protein_name_length_;
00177 static const Size record_length_;
00178 static const char trie_delimiter_;
00179 static const String score_type_;
00180 };
00181
00182 }
00183
00184 #endif // OPENMS_FORMAT_INSPECTOUTFILE_H