From 5654a80333d793a61c20e1928de30d0dbaf728a9 Mon Sep 17 00:00:00 2001 From: Olivier Langella <Olivier.Langella@moulon.inra.fr> Date: Tue, 13 Jun 2017 22:15:22 +0200 Subject: [PATCH] build ptm island with specific modifications on specific amino acids --- src/CMakeLists.txt | 8 ++--- src/grouping/ptm/ptmgroupingexperiment.cpp | 34 +++++++++++++++------- src/grouping/ptm/ptmgroupingexperiment.h | 7 ++++- 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f2b16461..2367b510 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -27,11 +27,11 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Xml_EXECUTABLE_COMPILE_FLAGS} ${Qt5 #sudo apt-get install libpappsomspp-dev -FIND_PACKAGE( Pappsomspp REQUIRED ) -# SET (PAPPSOMSPP_DIR "/home/olivier/eclipse/git/pappsomspp") +#FIND_PACKAGE( Pappsomspp REQUIRED ) + SET (PAPPSOMSPP_DIR "/home/olivier/eclipse/git/pappsomspp") # SET (PAPPSOMSPP_DIR "/home/langella/developpement/git/pappsomspp") -# SET (PAPPSOMSPP_INCLUDE_DIR "${PAPPSOMSPP_DIR}/src") -# SET (PAPPSOMSPP_QT4_LIBRARY "${PAPPSOMSPP_DIR}/cbuild/src/libpappsomspp-qt4.so") + SET (PAPPSOMSPP_INCLUDE_DIR "${PAPPSOMSPP_DIR}/src") + SET (PAPPSOMSPP_QT4_LIBRARY "${PAPPSOMSPP_DIR}/cbuild/src/libpappsomspp-qt4.so") set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake_modules) diff --git a/src/grouping/ptm/ptmgroupingexperiment.cpp b/src/grouping/ptm/ptmgroupingexperiment.cpp index b92db88d..5b157218 100644 --- a/src/grouping/ptm/ptmgroupingexperiment.cpp +++ b/src/grouping/ptm/ptmgroupingexperiment.cpp @@ -63,8 +63,8 @@ PtmGroupingExperiment::PtmGroupingExperiment() */ //phospho : - _modification_list.push_back(pappso::AaModification::getInstance("MOD:00696")); - _modification_list.push_back(pappso::AaModification::getInstance("MOD:00704")); + _modification_list.push_back({pappso::AaModification::getInstance("MOD:00696"), {}}); + _modification_list.push_back({pappso::AaModification::getInstance("MOD:00704"), {'S','T'}}); } PtmGroupingExperiment::~PtmGroupingExperiment() @@ -73,7 +73,7 @@ PtmGroupingExperiment::~PtmGroupingExperiment() } const std::vector<PtmIslandSp> & PtmGroupingExperiment::getPtmIslandList() const { - return _ptm_island_list; + return _ptm_island_list; } void PtmGroupingExperiment::numbering() { @@ -150,21 +150,33 @@ std::vector< PtmIslandSp > PtmGroupingExperiment::mergePeptideMatchPtmIslandList } - unsigned int PtmGroupingExperiment::countPeptideMatchPtm(const PeptideMatch* p_peptide_match)const { - unsigned int number=0; - for (pappso::AaModificationP modification: _modification_list) { - number += p_peptide_match->getPeptideXtpSp().get()->getNumberOfModification(modification); +unsigned int PtmGroupingExperiment::countPeptideMatchPtm(const PeptideMatch* p_peptide_match)const { + unsigned int number=0; + for (const ModificationAndAa & modification: _modification_list) { + if (modification.aa_list.size() == 0) { + number += p_peptide_match->getPeptideXtpSp().get()->getNumberOfModification(modification.modification); + } + else { + number += p_peptide_match->getPeptideXtpSp().get()->countModificationOnAa(modification.modification, modification.aa_list); } - return number; } + return number; +} std::vector<unsigned int> PtmGroupingExperiment::getPtmPositions(const ProteinMatch * protein_match) const { std::vector<unsigned int> position_list; for (PeptideMatch * p_peptide_match: protein_match->getPeptideMatchList(_peptide_validation_state)) { unsigned int start = p_peptide_match->getStart(); - for (pappso::AaModificationP modification: _modification_list) { - for (unsigned int position : p_peptide_match->getPeptideXtpSp().get()->getModificationPositionList(modification)) { - position_list.push_back(start+position); + for (const ModificationAndAa & modification: _modification_list) { + if (modification.aa_list.size() == 0) { + for (unsigned int position : p_peptide_match->getPeptideXtpSp().get()->getModificationPositionList(modification.modification)) { + position_list.push_back(start+position); + } + } + else { + for (unsigned int position : p_peptide_match->getPeptideXtpSp().get()->getModificationPositionList(modification.modification, modification.aa_list)) { + position_list.push_back(start+position); + } } } } diff --git a/src/grouping/ptm/ptmgroupingexperiment.h b/src/grouping/ptm/ptmgroupingexperiment.h index a8002b37..bcc97954 100644 --- a/src/grouping/ptm/ptmgroupingexperiment.h +++ b/src/grouping/ptm/ptmgroupingexperiment.h @@ -36,6 +36,11 @@ #include "ptmislandsubgroup.h" #include "ptmislandgroup.h" +struct ModificationAndAa { + pappso::AaModificationP modification; + std::vector<char> aa_list; +}; + class PtmGroupingExperiment { public: @@ -58,7 +63,7 @@ private: void addPtmIsland(PtmIslandSp ptm_island); void numbering(); private: - std::list<pappso::AaModificationP> _modification_list; + std::list<ModificationAndAa> _modification_list; ValidationState _peptide_validation_state = ValidationState::validAndChecked; std::vector<PtmIslandSp> _ptm_island_list; std::vector<PtmIslandSubgroupSp> _ptm_island_subgroup_list; -- GitLab