source: branches/nameserver/GDE/CLUSTALW/calcprf2.c

Last change on this file was 176, checked in by jobb, 24 years ago

* empty log message *

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 1.7 KB
Line 
1#include <stdio.h>
2#include <math.h>
3#include <stdlib.h>
4#include <string.h>
5#include "clustalw.h"
6
7/*
8 *   Prototypes
9 */
10/*
11 *   Global variables
12 */
13
14extern sint max_aa,gap_pos1,gap_pos2;
15
16void calc_prf2(sint **profile, char **alignment,
17  sint *seq_weight,sint prf_length, sint first_seq, sint last_seq)
18{
19
20  sint sum1, sum2;     
21  sint i, d;
22  sint   r;
23
24
25  for (r=0; r<prf_length; r++)
26    {
27/*
28   calculate sum2 = number of residues found in this column
29*/
30       sum2 = 0;
31       for (i=first_seq; i<last_seq; i++)
32         {
33            sum2 += seq_weight[i];
34         }
35/*
36   only include matrix comparison scores for those residue types found in this
37   column
38*/
39       if (sum2 == 0)
40         {
41           for (d=0; d<=max_aa; d++)
42             profile[r+1][d] = 0;
43           profile[r+1][gap_pos1] = 0;
44           profile[r+1][gap_pos2] = 0;
45         }
46       else
47         {
48           for (d=0; d<=max_aa; d++)
49             {
50                sum1 = 0;
51                for (i=first_seq; i<last_seq; i++)
52                 {
53                  if (d == alignment[i][r]) sum1 += seq_weight[i];
54                 }
55                profile[r+1][d] = (sint)(10 * (float)sum1 / (float)sum2);
56             }
57           sum1 = 0;
58           for (i=first_seq; i<last_seq; i++)
59            {
60             if (gap_pos1 == alignment[i][r]) sum1 += seq_weight[i];
61            }
62           profile[r+1][gap_pos1] = (sint)(10 * (float)sum1 / (float)sum2);
63           sum1 = 0;
64           for (i=first_seq; i<last_seq; i++)
65            {
66             if (gap_pos2 == alignment[i][r]) sum1 += seq_weight[i];
67            }
68           profile[r+1][gap_pos2] = (sint)(10 * (float)sum1 / (float)sum2);
69         }
70    }
71}
72
73
Note: See TracBrowser for help on using the repository browser.