/** * \file /input/mascot/mascotdatparser.h * \date 17/2/2018 * \author Olivier Langella * \brief MASCOT dat file parser */ /******************************************************************************* * Copyright (c) 2018 Olivier Langella <olivier.langella@u-psud.fr>. * * This file is part of XTPcpp. * * XTPcpp is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * XTPcpp is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XTPcpp. If not, see <http://www.gnu.org/licenses/>. * * Contributors: * Olivier Langella <olivier.langella@u-psud.fr> - initial API and implementation ******************************************************************************/ #include "mascotdatparser.h" #include "mimeparser.h" #include <QDebug> MascotDatParser::MascotDatParser(Project * p_project, IdentificationGroup * p_identification_group, IdentificationDataSource * p_identification_data_source) { _p_project = p_project; _p_identification_group = p_identification_group; _p_identification_data_source = p_identification_data_source; } MascotDatParser::~MascotDatParser() { } void MascotDatParser::parse(QIODevice * in_stream) { qDebug() << "MascotDatParser::parse begin"; MimeParser mime_parser(in_stream); mime_parser.open(); for(bool more=mime_parser.goToFirstFile(); more; more=mime_parser.goToNextFile()) { qDebug() << "MascotDatParser::parse mimetype=" << mime_parser.getCurrentMimeType() << " filename=" << mime_parser.getCurrentFileName(); if (mime_parser.getCurrentFileName() == "proteins") { while(!mime_parser.getCurrentTextStream().atEnd()) { parseProteinLine( mime_parser.getCurrentTextStream().readLine()); } } } mime_parser.close(); qDebug() << "MascotDatParser::parse end"; } void MascotDatParser::parseProteinLine(const QString & protein_line) { //02::"tr|A0A0D9SF80|A0A0D9SF80_HUMAN"=55120.88,"General transcription factor II-I repeat domain-containing protein 2A OS=Homo sapiens GN=GTF2IRD2B PE=4 SV=1" QRegExp regexp_protein("^(.*)::\"(.*)\"=([0-9]+\\.[0-9]+),\"(.*)\"$"); if (regexp_protein.exactMatch(protein_line)) { QStringList protein_list = regexp_protein.capturedTexts(); } else { QRegExp regexp_proteinb("^\"(.*)\"=([0-9]+\\.[0-9]+),\"(.*)\"$"); if (regexp_proteinb.exactMatch(protein_line)) { QStringList protein_list = regexp_proteinb.capturedTexts(); } else { qDebug() << "MascotDatParser::parseProteinLine error " << protein_line; } } }