/******************************************************************************* * Copyright (c) 2017 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 "proteinxtp.h" #include <pappsomspp/protein/enzyme.h> ProteinXtp::ProteinXtp():pappso::Protein() { } ProteinXtp::ProteinXtp(const ProteinXtp& other):pappso::Protein(other) { _is_decoy=other._is_decoy; _is_contaminant=other._is_contaminant; _p_sequence_database = other._p_sequence_database; } ProteinXtp::~ProteinXtp() { } bool ProteinXtp::operator==(const ProteinXtp& other) const { return pappso::Protein::operator==(other); } ProteinXtpSp ProteinXtp::makeProteinXtpSp() const { return std::make_shared<ProteinXtp>(*this); } void ProteinXtp::setIsContaminant(bool conta) { _is_contaminant = conta; } void ProteinXtp::setIsDecoy(bool conta) { _is_decoy = conta; } bool ProteinXtp::isContaminant() const { return _is_contaminant; } bool ProteinXtp::isDecoy() const { return _is_decoy; } class DigestionHandler: public pappso::EnzymeProductInterface { public: void setPeptide(std::int8_t sequence_database_id, const pappso::ProteinSp & protein_sp, bool is_decoy, const QString& peptide, unsigned int start, bool is_nter, unsigned int missed_cleavage_number, bool semi_enzyme) override { _peptide_list.append(peptide); }; QStringList _peptide_list; }; unsigned int ProteinXtp::countTrypticPeptidesForPAI() const { qDebug() << "ProteinXtp::countTrypticPeptidesForPAI begin"; pappso::Enzyme kinase; kinase.setMiscleavage(0); DigestionHandler digestion; kinase.eat(0,this->makeProteinSp(),false,digestion); unsigned int count = 0; for (const QString & peptide_str: digestion._peptide_list) { pappso::Peptide peptide(peptide_str); pappso::mz mass= peptide.getMass(); if ((mass > 800) && (mass < 2500)) { count ++; } } return count; qDebug() << "ProteinXtp::countTrypticPeptidesForPAI end"; }