JPRED-2 Add sources of all binaries (except alscript) to Git
[jpred.git] / sources / multicoil / multivariate_like2_cuts.c
1 changed 
2 void get_gauss_param_all_classes2(char sc_filenames[MAX_CLASS_NUMBER][MAXLINE],
3       int number_score_dim, double means[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
4       double covars[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
5       int number_of_classifications, char gauss_param[MAXLINE])
6 to
7 void get_gauss_param_all_classes2(char sc_filenames[MAX_CLASS_NUMBER][MAXLINE],
8       int number_score_dim, double means[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
9       double covars[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
10      char gauss_param[MAXLINE])
11
12 by changing
13
14     for (class=0; class<number_of_classifications; class++) {
15
16 to
17     for (class=0; class<NUMBER_CLASSES; class++) {
18
19
20
21
22 changed
23 void compute_submatrices2(
24         double means[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
25         double means_submatrix[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
26         double covars[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
27         int number_classes, 
28         double inv[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
29         double det[MAX_CLASS_NUMBER],
30         char multi_lib[MAX_TABLE_NUMBER][MAXFUNCTNUM],
31         int old_num_dim_table0, int old_num_dim_table1,
32         int new_num_dim_table0, int new_num_dim_table1, int multi_trimer_pairs
33         )
34 to
35 void compute_submatrices2(
36         double means[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
37         double means_submatrix[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
38         double covars[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
39         double inv[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
40         double det[MAX_CLASS_NUMBER],
41         char multi_lib[MAX_TABLE_NUMBER][MAXFUNCTNUM],
42         int old_num_dim_table0, int old_num_dim_table1,
43         int new_num_dim_table0, int new_num_dim_table1
44         )
45 changed
46   for (class=0; class<number_classes; class++) 
47 to
48   for (class=0; class<NUMBER_CLASSES; class++) 
49
50 everywhere changed
51       means_submatrix[class][dim1] = means[class]
52             [old_dimension(old_num_dim_table0, old_num_dim_table1,
53                            new_num_dim_table0, new_num_dim_table1,
54                            multi_lib, multi_trimer_pairs,dim1)];
55 to
56       means_submatrix[class][dim1] = means[class]
57             [old_dimension(old_num_dim_table0, old_num_dim_table1,
58                            new_num_dim_table0, new_num_dim_table1,
59                            multi_lib, dim1)]; 
60
61
62
63 changed
64 int old_dimension(int old_num_dim_table0, int old_num_dim_table1,
65                   int new_num_dim_table0, int new_num_dim_table1,
66                   char multi_lib[MAX_TABLE_NUMBER][MAXFUNCTNUM], 
67                   int multi_trimer_pairs,
68                   int new_dim_number)
69 to
70 int old_dimension(int old_num_dim_table0, int old_num_dim_table1,
71                   int new_num_dim_table0, int new_num_dim_table1,
72                   char multi_lib[MAX_TABLE_NUMBER][MAXFUNCTNUM], 
73                   int new_dim_number)
74
75 changed
76
77 type_class_score_convert(Sequence sequence,
78                      double all_like[MAX_NUM_SCORE_DIM][MAXSEQLEN][POSNUM+1],
79                      double bound, int new_only_coiled_classes,
80                         int number_tables, int number_classes)
81 to
82 type_class_score_convert(Sequence sequence,
83                      double all_like[MAX_NUM_SCORE_DIM][MAXSEQLEN][POSNUM+1],
84                      double bound, int new_only_coiled_classes)
85
86
87  Replaced:
88
89 int compute_dimension(int tablenum, int number_tables, int libnumber,
90                       int number_score_dim, 
91                       int number_multi_lib[MAX_TABLE_NUMBER],
92                       int multi_trimer_pairs)
93 {
94   int prev_table;
95   int dimension=0;
96
97   if (!number_score_dim)   /*  old version of numbering. */
98     return (libnumber*number_tables + tablenum);
99   else { /* new version, works when use single freq score instead of paircoil*/
100     for (prev_table =0; prev_table<tablenum; prev_table++)
101       dimension+= compute_num_multilib(prev_table, number_multi_lib, 
102                                        multi_trimer_pairs);
103
104     return (dimension + libnumber);
105   }
106 }
107
108 by
109
110
111 int compute_dimension2(int tablenum, int libnumber, 
112                        int num_dist[MAX_TABLE_NUMBER], 
113                        int combine_dist[MAX_TABLE_NUMBER])
114 {
115   int prev_table;
116   int dimension=0;
117
118   for (prev_table =0; prev_table<tablenum; prev_table++)
119     dimension+= num_table_dimensions(num_dist[prev_table], 
120                                      combine_dist[prev_table]);
121
122   return (dimension + libnumber);
123 }
124
125
126
127 added
128
129 int num_table_dimensions(int num_dist_table, 
130                          int combine_dist_table)
131 {
132
133   return ((1-combine_dist_table)*num_dist_table +
134           combine_dist_table);
135 }
136
137
138
139
140 /**********************************************************/
141
142
143 Changed
144
145
146
147 void convert_raw_scores_to_gauss_prob_like2(
148    double all_raw_scores[MAX_NUM_SCORE_DIM][MAXSEQLEN][POSNUM+1],int seq_len,
149    int number_tables, double class_means[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
150  double inverse_covars[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
151    double determinants[MAX_CLASS_NUMBER],
152    int number_classes, double init_class_prob[MAX_CLASS_NUMBER],
153    int number_score_dim, int consider_only_positive_classes, double bound,
154    int Offset_to_Use, int last_class_gets_sum_prev)
155
156 to
157
158 void convert_raw_scores_to_gauss_prob_like2(
159    double all_raw_scores[MAX_NUM_SCORE_DIM][MAXSEQLEN][POSNUM+1],int seq_len,
160    int number_tables, double class_means[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
161  double inverse_covars[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
162    double determinants[MAX_CLASS_NUMBER],
163    int number_classes, double init_class_prob[MAX_CLASS_NUMBER],
164    int number_score_dim, int consider_only_positive_classes, double bound,
165    int Offset_to_Use)
166
167 In that function:
168
169 Cut
170  if (all_one || !last_class_gets_sum_prev) 
171     last_class_for_scores = number_classes;
172   else  last_class_for_scores = number_classes-1;  /* Last class will be sum */
173                                                    /* of prob for prev. class*/
174
175
176 Cut
177   int last_class_for_scores, number_tables_to_write;
178
179 cut
180   if (number_classes > number_tables) number_tables_to_write = number_classes;
181   else number_tables_to_write = number_tables;
182
183 Changed
184         if (Offset_to_Use == -1)  /*  Want reg 7 to have max of other reg */
185           for (tablenum =0; tablenum<last_class_for_scores; tablenum++)
186
187 to
188         if (Offset_to_Use == -1)  /*  Want reg 7 to have max of other reg */
189           for (tablenum =0; tablenum<number_classes; tablenum++)
190
191
192 Changed
193       else    /** Compute reg 7 as max of previous registers for offset -1 **/
194         for (tablenum=0; tablenum < last_class_for_scores; tablenum++)
195           like_in_class[tablenum] = max_class_like[tablenum];
196
197 to
198
199
200       else    /** Compute reg 7 as max of previous registers for offset -1 **/
201         for (tablenum=0; tablenum < number_classes; tablenum++)
202           like_in_class[tablenum] = max_class_like[tablenum];
203
204
205
206 Changed
207
208     /** Temporary hack to set the class we are interested to the table. **/
209     /** So make class 1 =cctb, class 2 = trimer-, class 3 = pdb- in .paircoil*/
210     /** Lets ASSUME that class= number_classes-1 is always pdb- */
211     /** so for table>=number_classes-1 output sum of other classes prob. **/
212     /** (which is the positive prob (prob of being coiled)).             **/
213       for (tablenum=0; tablenum < number_tables_to_write; tablenum++)  { 
214         if (tablenum < last_class_for_scores) {  
215           all_raw_scores[tablenum][i][reg] = like_in_class[tablenum];
216         }
217         else {
218           all_raw_scores[tablenum][i][reg]=
219             calc_total_coil_likelihood(like_in_class, number_classes,reg,
220                                        Offset_to_Use, 
221                                        &max_class_like[tablenum],
222                                        init_class_prob);
223         }
224
225 to
226
227       for (tablenum=0; tablenum < number_classes; tablenum++)  { 
228         all_raw_scores[tablenum][i][reg] = like_in_class[tablenum];
229         }
230
231
232
233 /********************************************************************/
234
235
236 Cut
237
238
239
240 int compute_num_multilib(int tablenum, int number_multi_lib[MAX_TABLE_NUMBER],
241                          int multi_trimer_pairs)
242 {
243   int use_pairs;
244
245   if (tablenum <0) return 0;
246   else if (tablenum ==0) use_pairs =1;  /*  Use pairs for cctb */
247   else if (tablenum ==1) use_pairs = multi_trimer_pairs;  
248   
249   if (!use_pairs)  return 1;
250   else return number_multi_lib[tablenum];
251 }
252
253
254
255 changed
256
257 void get_gauss_param_all_classes2(char sc_filenames[MAX_CLASS_NUMBER][MAXLINE],
258       int number_score_dim, double means[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
259       double covars[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
260       char gauss_param[MAXLINE])
261 to
262
263 void get_gauss_param_all_classes2(char sc_filenames[MAX_CLASS_NUMBER][MAXLINE],
264       int number_score_dim, 
265       double means[MAX_CLASS_NUMBER][NUM_DIM_IN_ORIG_MATRIX],
266       double covars[MAX_CLASS_NUMBER]
267                         [NUM_DIM_IN_ORIG_MATRIX][NUM_DIM_IN_ORIG_MATRIX],
268       char gauss_param[MAXLINE])
269
270
271
272 Changed
273
274 void compute_submatrices2(
275         double means[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
276         double means_submatrix[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
277         double covars[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
278         double inv[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
279         double det[MAX_CLASS_NUMBER],
280         char multi_lib[MAX_TABLE_NUMBER][MAXFUNCTNUM],
281         int old_num_dim_table0, int old_num_dim_table1,
282         int new_num_dim_table0, int new_num_dim_table1
283         )
284
285 to
286 void compute_submatrices2(
287         double means[MAX_CLASS_NUMBER][NUM_DIM_IN_ORIG_MATRIX],
288         double means_submatrix[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM],
289         double covars[MAX_CLASS_NUMBER]
290                           [NUM_DIM_IN_ORIG_MATRIX][NUM_DIM_IN_ORIG_MATRIX],
291         double inv[MAX_CLASS_NUMBER][MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM],
292         double det[MAX_CLASS_NUMBER],
293         char multi_lib[MAX_TABLE_NUMBER][MAXFUNCTNUM],
294         int old_num_dim_table0, int old_num_dim_table1,
295         int new_num_dim_table0, int new_num_dim_table1
296         )
297
298 Changed
299
300 void multivariate_gauss_from_scfile2(char *sc_filename, int number_score_dim,
301                   double  mean[MAX_NUM_SCORE_DIM], 
302                   double  covar[MAX_NUM_SCORE_DIM][MAX_NUM_SCORE_DIM])
303
304 to
305 void multivariate_gauss_from_scfile2(char *sc_filename, int number_score_dim,
306                   double  mean[NUM_DIM_IN_ORIG_MATRIX], 
307                   double covar[NUM_DIM_IN_ORIG_MATRIX][NUM_DIM_IN_ORIG_MATRIX])
308 and in that function changed
309
310   long  n_below_mean[MAX_NUM_SCORE_DIM];
311   long _counts[MAX_NUM_SCORE_DIM][-4*MINSCORE +1];
312   long *counts[MAX_NUM_SCORE_DIM];
313   int table,table2;
314   int all_places_good,  place[MAX_NUM_SCORE_DIM];
315   int number_high=0, number_low=0;
316   int maxplaces[MAX_NUM_SCORE_DIM], minplaces[MAX_NUM_SCORE_DIM];
317   
318   double score[MAX_NUM_SCORE_DIM];
319
320 to
321   long  n_below_mean[NUM_DIM_IN_ORIG_MATRIX];
322   long _counts[NUM_DIM_IN_ORIG_MATRIX][-4*MINSCORE +1];
323   long *counts[NUM_DIM_IN_ORIG_MATRIX];
324   int table,table2;
325   int all_places_good,  place[NUM_DIM_IN_ORIG_MATRIX];
326   int number_high=0, number_low=0;
327   int maxplaces[NUM_DIM_IN_ORIG_MATRIX], minplaces[NUM_DIM_IN_ORIG_MATRIX];
328   
329   double score[NUM_DIM_IN_ORIG_MATRIX];