/usr/include/ssm/ssm_align.h is in libssm-dev 1.3-2.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | // $Id: ssm_align.h,v 1.1.1.1 2004/11/23 16:24:37 keb Exp $
// =================================================================
//
// 05.04.13 <-- Date of Last Modification.
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// ----------------------------------------------------------------
//
// **** Module : SSM_Align <interface>
// ~~~~~~~~~
// **** Project : Structure alignment in 3D
// ~~~~~~~~~
// **** Classes : ssm::Align ( Secondary Structure Matching )
// ~~~~~~~~~ ssm::XAlign ( Output alignment )
// ssm::XTAlign ( Text output alignment )
//
// E. Krissinel, 2002-2013
//
// =================================================================
//
#ifndef __SSM_Align__
#define __SSM_Align__
#include "mmdb/mmdb_manager.h"
#include "ssm_superpose.h"
#include "ssm_csia.h"
// --------------------------- CSSMAlign ------------------------
namespace ssm {
DefineClass(Align);
DefineStreamFunctions(Align)
class Align : public CStream {
public :
mat44 TMatrix; //!< superposition matrix to be applied to 1st structure
realtype rmsd; //!< core rmsd achieved
realtype Qscore; //!< core Q achieved
int cnCheck; //!< connectivity option used
int nres1,nres2; //!< number of residues in structures
int nsel1,nsel2; //!< number of residues in aligned selections
int nalgn; //!< number of aligned residues
int ngaps; //!< number of gaps
int nmd; //!< number of misdirections
realtype ncombs; //!< number of SSE combinations
realtype seqIdentity; //!< sequence identity
int selHndCa1,selHndCa2; //!< selection handles to used C-alphas
ivector Ca1,Ca2; //!< C-alpha correspondence vectors
/// Ca1[i] corresponds to a[i], where a is
/// selection identified by selHndCa1
rvector dist1; //!< optimizedd distances between the query
/// and target C-alphas
PGraph G1,G2; //!< retained SSE graphs
Align ();
Align ( RPCStream Object );
~Align();
int align ( PCMMDBManager M1, PCMMDBManager M2,
PRECISION precision,
CONNECTIVITY connectivity,
int selHnd1=0, int selHnd2=0 );
int AlignSelectedMatch ( PCMMDBManager M1, PCMMDBManager M2,
PRECISION precision,
CONNECTIVITY connectivity,
int selHnd1=0, int selHnd2=0,
int nselect=0 );
rvector GetQvalues () const { return pqvalues; }
int GetNMatches() const { return nMatches; }
PSuperpose GetSuperpose() { return &superpose; }
void read ( RCFile f );
void write ( RCFile f );
protected :
GraphMatch U;
Superpose superpose;
rvector pqvalues;
int nMatches;
void InitAlign ();
void FreeMemory();
void MapSelections ( int & selHndCa, PCMMDBManager M,
PGraph G, int selHnd, ivector & newID );
void MakeSelections ( PCMMDBManager M1, int selHnd1,
PCMMDBManager M2, int selHnd2 );
};
// ----------------------------- CXAlign --------------------------
DefineStructure(XBlock);
struct XBlock {
int i1,i2; //!< the outer block boundaries
int ip1,ip2; //!< the alignment boundaries (ip1>=i1, ip2<=i2)
int icol; //!< the block "column" number
realtype mc; //!< center of "index mass"
};
DefineClass(XAlign);
class XAlign {
public :
XAlign();
virtual ~XAlign();
void align ( PGraph g1, PPCAtom Calpha1, ivector Ca1, int nat1,
PGraph g2, PPCAtom Calpha2, ivector Ca2, int nat2,
rvector dist1, int & nr );
int GetNCols2() { return nCols2; }
protected :
PXBlock XBlock1,XBlock2;
int nBlock1,nBlock2;
int na1,na2,nCols1,nCols2,nRows,algnLen;
ivector a1,a2;
PPCAtom alpha1,alpha2;
PGraph sg1,sg2;
rvector d1;
realtype maxdist;
virtual void FreeMemory();
virtual void customInit();
int makeXBlocks ( ivector Ca, int nat, RPXBlock xBlock,
int & nBlocks );
void alignXBlocks ( RXBlock B1, RXBlock B2, int & nr );
virtual void makeRow ( PCAtom A1, int sseType1,
PCAtom A2, int sseType2,
realtype dist, int rowNo, int icol,
Boolean aligned );
};
// ---------------------------- CXTAlign --------------------------
DefineStructure(XTAlign);
struct XTAlign {
realtype hydropathy1,hydropathy2,dist;
ChainID chID1,chID2;
ResName resName1,resName2;
InsCode insCode1,insCode2;
int alignKey; //!< 0: aligned, 1: not aligned, 2: NULL 1, 3: NULL 2
int loopNo;
int sseType1,sseType2;
int seqNum1,seqNum2;
int simindex;
void Print ( RCFile f );
};
DefineClass(XAlignText);
class XAlignText : public XAlign {
public :
XAlignText ();
~XAlignText();
PXTAlign GetTextRows () { return R; }
void GetAlignments ( pstr & algn1, pstr & algn2 );
void WipeTextRows ();
protected :
PXTAlign R;
void customFree();
void customInit();
void makeRow ( PCAtom A1, int sseType1,
PCAtom A2, int sseType2,
realtype dist, int rowNo, int icol,
Boolean aligned );
};
extern void PrintAlignTable ( RCFile f,
PCMMDBManager M1, PCMMDBManager M2,
PAlign SSMAlign );
}
#endif
|