Skip to content
Snippets Groups Projects
project.h 2.62 KiB
Newer Older

/*******************************************************************************
* Copyright (c) 2015 Olivier Langella <Olivier.Langella@moulon.inra.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@moulon.inra.fr> - initial API and implementation
******************************************************************************/
#ifndef PROJECT_H
#define PROJECT_H

#include<memory>
#include "identificationgroup.h"
Olivier Langella's avatar
Olivier Langella committed
#include "automaticfilterparameters.h"
#include "../utils/types.h"
#include "../utils/peptidestore.h"
#include "../utils/proteinstore.h"
#include "../utils/identificationdatasourcestore.h"

class Project;
typedef std::shared_ptr<Project> ProjectSp;

class PeptideMatch;
Olivier Langella's avatar
Olivier Langella committed
class ProteinMatch;
class Project
{
public:
    Project();
    ~Project();
    ProjectSp makeProjectSp() const;
    ProteinStore & getProteinStore();
    PeptideStore & getPeptideStore();
    IdentificationDataSourceStore & getIdentificationDataSourceStore();
    void readXpipFile(QFileInfo xpip_source);
    IdentificationGroup* newIdentificationGroup();
    IdentificationGroup* getCurrentIdentificationGroupP() const;
Olivier Langella's avatar
Olivier Langella committed

    /** @brief validate or invalidate peptides and proteins based automatic filters and manual checks
     * */
    void updateAutomaticFilters(const AutomaticFilterParameters & automatic_filter_parameters);
    const AutomaticFilterParameters & getAutomaticFilterParameters() const;
    void startGrouping();
Olivier Langella's avatar
Olivier Langella committed
    
    const GroupingType getGroupingType() const;
    std::vector<IdentificationGroup *> getIdentificationGroupList();
private :
    std::vector<IdentificationGroup *> _identification_goup_list;
    IdentificationGroup* _p_current_identification_group = nullptr;
Olivier Langella's avatar
Olivier Langella committed

    AutomaticFilterParameters _automatic_filter_parameters;
    
    GroupingType _grouping_type = GroupingType::PeptideMass;
    
    ProteinStore _protein_store;
    PeptideStore _peptide_store;
    IdentificationDataSourceStore _identification_data_source_store;
};

#endif // PROJECT_H