https://github.com/michal-brylinski/efindsite
Revision 72f012435573ecfab2dc5c5478bf16ec459f5937 authored by Michal Brylinski on 25 October 2018, 17:56:05 UTC, committed by GitHub on 25 October 2018, 17:56:05 UTC
1 parent 92852e9
Raw File
Tip revision: 72f012435573ecfab2dc5c5478bf16ec459f5937 authored by Michal Brylinski on 25 October 2018, 17:56:05 UTC
Update 13gsA.profile
Tip revision: 72f0124
pocket.h
/*
===============================================================================
         ___________.__            .____________.__  __          
     ____\_   _____/|__| ____    __| _/   _____/|__|/  |_  ____  
   _/ __ \|    __)  |  |/    \  / __ |\_____  \ |  \   __\/ __ \ 
   \  ___/|     \   |  |   |  \/ /_/ |/        \|  ||  | \  ___/ 
    \___  >___  /   |__|___|  /\____ /_______  /|__||__|  \___  >
        \/    \/            \/      \/       \/               \/ 

                                                  
   eFindSite - ligand-binding site prediction from meta-threading

   Computational Systems Biology Group
   Department of Biological Sciences
   Center for Computation & Technology
   Louisiana State University
   407 Choppin Hall, Baton Rouge, LA 70803, USA

   http://www.brylinski.org

   Report bugs to michal@brylinski.org

   Copyright 2013 Michal Brylinski

   This file is part of eFindSite.

   eFindSite 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.

   eFindSite 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 eFindSite. If not, see <http://www.gnu.org/licenses/>.

===============================================================================
*/


#ifndef __POCKET_H_
#define __POCKET_H_

#include<list>
#include<fstream>
#include<iostream>
#include<iomanip>
#include<cstring>
#include<bitset>
#include<map>

#include "cluster.h"
#include "cmps.h"
#include "data.h"
#include "runsvm.h"
#include "size.h"
#include "tanimoto.h"
#include "target.h"
#include "template.h"

using namespace std;

struct binding_residue
{
 int         residue_number;
 std::string residue_code;
 double      residue_score;
 double      residue_distance;
 double      residue_plb;
 double      residue_plb_prof;
 int         template_incontact;
 double      template_fraction;
 double      template_fraction_bkg;
 double      residue_coords[3];
};

struct ligand_fpt_smi
{
 int                 ftp_number;
 double              fpt_fraction;
 std::string         fpt_pdbid;
 std::bitset<MAXSMI> fpt_fingerprint;
};

struct ligand_fpt_mac
{
 int                 ftp_number;
 double              fpt_fraction;
 std::string         fpt_pdbid;
 std::bitset<MAXMAC> fpt_fingerprint;
};

class Pocket {
        
  private:
    
    list< Template * >       _complexes;                // template complexes
    
    int                      _pocket_number;            // pocket number
    int                      _ligand_tot;               // number of ligands
    int                      _ligclust_tot_smi;         // number of ligand clusters SMILES
    int                      _ligclust_tot_mac;         // number of ligand clusters MACCS
    
    int                      _binres_tot;               // number of predicted binding residues
    
    double                   _pocket_center[4];         // ligand geometric center
    
    double                   _pocket_fraction;          // fraction of template-bound ligands
    
    list<std::string>        _list_prot;                // list of proteins
    list<std::string>        _list_lig;                 // list of ligands
    
    map<int,binding_residue> _binding_res;              // ligand-binding residues
    
    list<ligand_fpt_smi>     _ligand_fpts_smi;          // fingerprints SMILES
    list<ligand_fpt_mac>     _ligand_fpts_mac;          // fingerprints MACCS
    
    double                   _profile_fpts_smi[MAXSMI]; // fingerprint profile
    double                   _profile_fpts_mac[MAXMAC]; // fingerprint profile
    
    double                   _ave_mw;                   // weighted average mw
    double                   _ave_logp;                 // weighted average logp
    double                   _ave_psa;                  // weighted average psa
    double                   _ave_mr;                   // weighted average mr
    double                   _ave_hbd;                  // weighted average hb donors
    double                   _ave_hba;                  // weighted average hb acceptors
    
    double                   _std_mw;                   // weighted stdev mw
    double                   _std_logp;                 // weighted stdev logp
    double                   _std_psa;                  // weighted stdev psa
    double                   _std_mr;                   // weighted stdev mr
    double                   _std_hbd;                  // weighted stdev hb donors
    double                   _std_hba;                  // weighted stdev hb acceptors
    
    double                   _score_cmps[MAXSV2];       // auxiliary cmps scores
    
    double                   _svm_cmps;                 // svm score for auxiliary cmps
    
    double                   _plb;                      // protein-ligand binding index
    
    double                   _ave_bres;                 // average score for binding residues
    
    double                   _svm_confidence;           // svm confidence index
    
    double                   _druggability_score;       // pocket druggability score
    bool                     _druggable;                // druggable
    
  public:
    
    Pocket( int );
    
    Pocket( void );
    
    ~Pocket();
    
    int getProteinsTotal( void );
    
    int getLigandsTotal( void );
    
    void addTemplate( Template * );
    
    void calculatePocketCenter( void );
    
    int calculateBindingResidues( Target *, ModelSVM *, double );
    
    void setPocketFraction( double );
    
    void calculateFingerprintsSMILES( double, std::string );
    
    void calculateFingerprintsMACCS( double, std::string );
    
    void calculateCmpsScores( Cmps *, ModelSVM * );
    
    double calculateConfidence( bool, ModelSVM * );
    
    double getConfidence( void );
    
    void setCenter( double, double );
    
    void calculateDruggability( std::string, double, double );
    
    double getDruggabilityScore( void );
    
    bool getDruggable( void );
    
    void dumpProteinAlignments( std::string, map<string,bool> &, Target *, bool );
    
    void dumpLigands( std::string, map<string,bool> &, int );
    
    void dumpPocket( std::string, Target *, double, int );
};

#endif
back to top