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
template.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 __TEMPLATE_H_
#define __TEMPLATE_H_

#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
#include<bitset>
#include<list>
#include<map>
#include<iostream>
#include<iomanip>
#include<sstream>

#include "coords.h"
#include "data.h"
#include "nwalign.h"
#include "frtmalign.h"
#include "size.h"
#include "target.h"
#include "gzstream.h"

using namespace std;

struct tpl_alignment
{
 double tpl_tms;
 double tpl_rms;
 double tpl_sid;
 int    tpl_len;
 
 double tpl_t[3];
 double tpl_u[3][3];
 
 std::string tpl_aln1;
 std::string tpl_aln2;
};

struct lig_binding
{
 int    residue_number;
 char   residue_name;
 bool   residue_sidechain;
 double contact_distance;
 double contact_surface;
 bool   contact_HB;
 bool   contact_Arom;
 bool   contact_Phob;
 bool   contact_DC;
};

class Template {
        
  private:
    
    vector<CoordsProtein>     _protein_xyz;             // protein coords
    vector<CoordsLigand>      _ligand_xyz[MAXLIG];      // ligand heavy atom coords
    
    double                    _ligand_cen[MAXLIG][3];   // ligand geometric centers
    
    list<string>              _ligand_sdf[MAXLIG];      // ligands in SDF
    
    bitset<MAXSMI>            _ligand_fpt_smi[MAXLIG];  // ligand fingerprint SMILES
    bitset<MAXMAC>            _ligand_fpt_mac[MAXLIG];  // ligand fingerprint MACCS
    
    string                    _protein_id;              // protein PDB-ID
    string                    _ligand_id[MAXLIG];       // ligand PDB-IDs
    
    int                       _na;                      // number of protein atoms
    int                       _nr;                      // number of protein residues
    int                       _nl;                      // number of ligands
    
    int                       _nla[MAXLIG];             // number of ligand heavy atoms
    int                       _nlb[MAXLIG];             // number of ligand bonds
    
    string                    _protein_seq1;            // sequence string
    char                      _protein_seq2[MAXPRO];    // sequence char
    int                       _protein_seq3[MAXPRO];    // sequence int
    
    int                       _protein_align1[MAXPRO];  // alignment to target from NW
    int                       _protein_align2[MAXPRO];  // alignment to target from TMalign
    
    double                    _score_nw;                // sequence identity to target
    double                    _score_tm;                // TM-score to target
    double                    _score_rms;               // RMSD to target
    double                    _score_id;                // sequence identity to target (from structure alignment)
    
    int                       _score_len_tm;            // structure alignment length
    int                       _score_len_nw;            // sequence alignment length
    
    double                    _tm_t[3];                 // TM-align transformation vector to target
    double                    _tm_u[3][3];              // TM-align rotation matrix to target
    
    int                       _pocket_num[MAXLIG];      // pocket number
    int                       _pocket_clu_smi[MAXLIG];  // ligand cluster number SMILES
    int                       _pocket_clu_mac[MAXLIG];  // ligand cluster number MACCS
    
    double                    _ligand_mw[MAXLIG];       // ligand molecular weight
    double                    _ligand_logp[MAXLIG];     // ligand logp
    double                    _ligand_psa[MAXLIG];      // ligand polar surface area
    double                    _ligand_mr[MAXLIG];       // molar refarctivity
    int                       _ligand_hbd[MAXLIG];      // number of HB donors
    int                       _ligand_hba[MAXLIG];      // number of HB acceptors
    
    double                    _prob_pkt;                // probability for pocket location
    double                    _prob_lig;                // probability for ligand similarity
    
    list<lig_binding>         _binding_data[MAXLIG];    // binding residues
    
  public:
    
    Template( int, int, int, double, double );
    
    Template( void );
    
    ~Template();
    
    int getLigandsTotal( void );
    
    int getProteinResiduesTotal( void );
    
    std::string getProteinSequence( void );
    
    int getProteinAtomsTotal( void );
    
    std::string getProteinID( void );
    
    std::string getLigandID( int );
    
    void setProteinID( std::string );
    
    void setLigandID( int, std::string );
    
    void setPocketNumber( int, int );
    
    int getPocketNumber( int );
    
    bool loadTemplate( std::string );
    
    double alignNW( std::string );
    
    int getProteinCoordsCA( double [][3] );
    
    void setProteinLengthNW( int );
    
    void setProteinLengthTM( int );
    
    void setProteinRMSD( double );
    
    void setProteinTMscore( double );
    
    void setProteinSeqID1( double );
    
    void setProteinSeqID2( double );
    
    int getProteinLengthNW( void );
    
    int getProteinLengthTM( void );
    
    double getProteinRMSD( void );
    
    double getProteinTMscore( void );
    
    double getProteinSeqID1( void );
    
    double getProteinSeqID2( void );
    
    void setTMalignment( int [], int );
    
    void setMatrix( double [], double [][3] );
    
    void getNWalignment( int [], int );
    
    void getTMalignment( int [], int );
    
    void getLigandCenter( int, double [], bool );
    
    double getProbPkt( void );
    
    double getProbLig( void );
    
    double getLigandProp( int, int );
    
    void getLigandFingerprintSMILES ( int, bitset<MAXSMI> & );
    
    void getLigandFingerprintMACCS ( int, bitset<MAXMAC> & );
    
    int getPocketClusterNumberSMILES( int );
    
    void setPocketClusterNumberSMILES( int, int );
    
    int getPocketClusterNumberMACCS( int );
    
    void setPocketClusterNumberMACCS( int, int );
    
    void getBindingResidues( int, list<lig_binding> & );
    
    void dumpProtein( std::string, bool, bool );
    
    void dumpAlignment( std::string, int, std::string, double [][3] );
    
    void dumpLigand( std::string, int, bool, int );
    
    int getLigandAtomsTotal( int );
};

#endif
back to top