diff --git a/src/input/mascot/mascotdatparser.cpp b/src/input/mascot/mascotdatparser.cpp index 798ff53e23b5d734aef25d2d6f2f4a834aae8137..5d92c3b479d5a6696e083cdaeaa96329e837cc05 100644 --- a/src/input/mascot/mascotdatparser.cpp +++ b/src/input/mascot/mascotdatparser.cpp @@ -58,6 +58,11 @@ void MascotDatParser::parse(QIODevice * in_stream) { parseHeaderLine( mime_parser.getCurrentTextStream().readLine()); } } + else if (mime_parser.getCurrentFileName() == "peptides") { + while(!mime_parser.getCurrentTextStream().atEnd()) { + parsePeptidesLine( mime_parser.getCurrentTextStream().readLine()); + } + } } mime_parser.close(); @@ -130,3 +135,48 @@ void MascotDatParser::parseHeaderLine(const QString & header_line) { //taskid=151758718701 } } + +void MascotDatParser::parsePeptidesLine(const QString & peptide_line) { + QRegExp regexp_header_line("^([a-z,0-9,_]+)=(.*)$"); + if (regexp_header_line.exactMatch(peptide_line)) { + QStringList header_list = regexp_header_line.capturedTexts(); + QString index = header_list[1]; + QString value = header_list[2]; + QStringList index_list = index.split("_"); + if (index_list.size() == 3) { + if (index_list[2] == "db") { + _peptides_fasta_file_list.clear(); + while(value.size() > 0) { + _peptides_fasta_file_list.push_back( _fasta_file_list[value.left(2).toInt()-1]); + value = value.mid(2); + } + } + } + else if (index_list.size() == 2) { + + QString query = index_list[0]; + QString peptide = index_list[1]; + + } + /* + q1_p1_db=02 + q1_p1=0,597.302322,0.997884,2,GAWHK,9,0000000,7.97,0000012000000000000,0,0;"sp|O95006|OR2F2_HUMAN":0:299:303:1 + q1_p1_terms=K,L + q1_p2_db=02 + q1_p2=1,598.296219,0.003987,2,KEEPP,11,0000000,1.32,0002000000000000000,0,0;"tr|E9PNM8|E9PNM8_HUMAN":0:134:138:1 + q1_p2_terms=R,- + q2_p1_db=02 + q2_p1=1,598.380234,-0.000316,3,KAGVPK,13,00000000,17.13,0002011000000000000,0,0;"tr|H7C1P9|H7C1P9_HUMAN":0:945:950:2 + q2_p1_terms=K,K + q2_p2_db=0202 + q2_p2=1,598.380234,-0.000316,2,KQPVK,9,0000000,9.54,0002011000000000000,0,0;"sp|P33527|MRP1_HUMAN":0:270:274:1,"tr|I3L4X2|I3L4X2_HUMAN":0:169:173:1 + q2_p2_terms=R,V:R,V + q2_p3_db=02 + q2_p3=1,598.380234,-0.000316,2,KAVPGK,13,00000000,7.03,0002001000000000000,0,0;"sp|Q13061|TRDN_HUMAN":0:440:445:2 + q2_p3_terms=K,K + q2_p4_db=0202 + q2_p4=1,598.380234,-0.000316,2,IPGGKK,14,00000000,1.26,0002001000000000000,0,0;"sp|Q9Y2I7|FYV1_HUMAN":0:670:675:2,"tr|E9PDH4|E9PDH4_HUMAN":0:614:619:2 + q2_p4_terms=K,F:K,F + */ + } +} diff --git a/src/input/mascot/mascotdatparser.h b/src/input/mascot/mascotdatparser.h index aba84f8f562abe3036ae57a31745e2301e02f5d2..d28551c665025266f14d440266e26c758abffe3a 100644 --- a/src/input/mascot/mascotdatparser.h +++ b/src/input/mascot/mascotdatparser.h @@ -42,6 +42,7 @@ public: private: void parseProteinLine(const QString & protein_line); void parseHeaderLine(const QString & protein_line); + void parsePeptidesLine(const QString & peptide_line); private: Project * _p_project; IdentificationGroup * _p_identification_group; @@ -50,6 +51,8 @@ private: ProteinXtp _current_protein; std::vector<FastaFileSp> _fasta_file_list; + + std::vector<FastaFileSp> _peptides_fasta_file_list; }; #endif // MASCOTDATPARSER_H