Skip to content
Snippets Groups Projects
mascotdatparser.cpp 3.02 KiB
Newer Older
Langella Olivier's avatar
Langella Olivier committed
/**
 * \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;
        }
    }
}