This file is indexed.

/usr/include/ssm/ssm_align.h is in libssm-dev 1.1-0ubuntu1.

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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
/*
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Lesser General Public
     License as published by the Free Software Foundation; either
     version 2.1 of the License, or (at your option) any later
     version.

     This library 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
     Lesser General Public License for more details.

     You should have received a copy of the GNU Lesser General Public
     License along with this library; if not, write to the Free
     Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     Boston, MA 02110-1301 USA
*/
//
// =================================================================
//
//    22.04.04   <--  Date of Last Modification.
//                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//  ----------------------------------------------------------------
//
//  **** Module  :  SSM_Align <interface>
//       ~~~~~~~~~
//  **** Project :  Structure alignment in 3D
//       ~~~~~~~~~
//  **** Classes :  CSSMAlign ( Secondary Structure Matching )
//       ~~~~~~~~~  CXAlign   ( Output alignment             ) 
//                  CXTAlign  ( Text output alignment        )
//
//  E. Krissinel, 2002-2004
//
// =================================================================
//
 
#ifndef  __SSM_Align__
#define  __SSM_Align__

#ifndef  __MMDB_Manager__
#include <mmdb/mmdb_manager.h>
#endif

#ifndef  __SSM_Superpose__
#include "ssm_superpose.h"
#endif

#ifndef  __SS_CSIA__
#include "ss_csia.h"
#endif


//  ---------------------------  CSSMAlign  ------------------------

#define SSM_Ok          0
#define SSM_noHits      1
#define SSM_noSPSN      2
#define SSM_noGraph     3
#define SSM_noVertices  4
#define SSM_noGraph2    5
#define SSM_noVertices2 6

DefineClass(CSSMAlign)
DefineStreamFunctions(CSSMAlign)

class CSSMAlign : 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
    PCSSGraph G1,G2;       // retained SSE graphs

    CSSMAlign ();
    CSSMAlign ( RPCStream Object );
    ~CSSMAlign();

    int Align ( PCMMDBManager M1, PCMMDBManager M2,
                int precision, int connectivity,
                int selHnd1=0, int selHnd2=0 );

    PCSSGraph GetSSGraph ( PCMMDBManager M, int selHnd, int & rc );

    void  read  ( RCFile f );
    void  write ( RCFile f );

  protected :
    CSSGraphMatch U;
    CSuperpose    Superpose;

    void  InitSSMAlign();
    void  FreeMemory  ();
    void  MapSelections  ( int & selHndCa, PCMMDBManager M,
                           PCSSGraph G, int selHnd,
                           ivector & newID );
    void  MakeSelections ( PCMMDBManager M1, int selHnd1,
                           PCMMDBManager M2, int selHnd2 );

};

   

//  -----------------------------  CXAlign --------------------------

DefineStructure(SXBlock)

struct SXBlock  {
  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(CXAlign)

class CXAlign  {

  public :
    CXAlign();
    ~CXAlign();

    void XAlign ( PCSSGraph g1, PPCAtom Calpha1, ivector Ca1, int nat1,
                  PCSSGraph g2, PPCAtom Calpha2, ivector Ca2, int nat2,
                  rvector dist1, int & nr );

    int  GetNCols2() { return nCols2; }

  protected :
    PSXBlock  XBlock1,XBlock2;
    int       nBlock1,nBlock2;
    int       na1,na2,nCols1,nCols2,nRows,algnLen;

    ivector   a1,a2;
    PPCAtom   alpha1,alpha2;
    PCSSGraph sg1,sg2;
    rvector   d1;
    realtype  maxdist;

    virtual void FreeMemory();
    virtual void customInit();
    int   makeXBlocks  ( ivector Ca, int nat, RPSXBlock XBlock,
                         int & nBlocks );
    void  alignXBlocks ( RSXBlock B1, RSXBlock B2, int & nr );

    virtual void makeRow ( PCAtom A1, int sseType1,
                           PCAtom A2, int sseType2,
                           realtype dist, int rowNo, int icol,
                           Boolean aligned );
};


//  ----------------------------  CXTAlign --------------------------

DefineStructure(SXTAlign)

struct SXTAlign  {
  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(CXAlignText)

class CXAlignText : public CXAlign  {

  public :
    CXAlignText ();
    ~CXAlignText();

    PSXTAlign GetTextRows   () { return R; }
    void      GetAlignments ( pstr & algn1, pstr & algn2 );
    void      WipeTextRows  ();

  protected :
    PSXTAlign 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 PrintSSMAlignTable ( RCFile f,
                                 PCMMDBManager M1, PCMMDBManager M2,
                                 PCSSMAlign SSMAlign );

#endif