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])
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])
14 for (class=0; class<number_of_classifications; class++) {
17 for (class=0; class<NUMBER_CLASSES; class++) {
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],
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
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
46 for (class=0; class<number_classes; class++)
48 for (class=0; class<NUMBER_CLASSES; class++)
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)];
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,
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,
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],
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)
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)
89 int compute_dimension(int tablenum, int number_tables, int libnumber,
91 int number_multi_lib[MAX_TABLE_NUMBER],
92 int multi_trimer_pairs)
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,
104 return (dimension + libnumber);
111 int compute_dimension2(int tablenum, int libnumber,
112 int num_dist[MAX_TABLE_NUMBER],
113 int combine_dist[MAX_TABLE_NUMBER])
118 for (prev_table =0; prev_table<tablenum; prev_table++)
119 dimension+= num_table_dimensions(num_dist[prev_table],
120 combine_dist[prev_table]);
122 return (dimension + libnumber);
129 int num_table_dimensions(int num_dist_table,
130 int combine_dist_table)
133 return ((1-combine_dist_table)*num_dist_table +
140 /**********************************************************/
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)
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,
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*/
177 int last_class_for_scores, number_tables_to_write;
180 if (number_classes > number_tables) number_tables_to_write = number_classes;
181 else number_tables_to_write = number_tables;
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++)
188 if (Offset_to_Use == -1) /* Want reg 7 to have max of other reg */
189 for (tablenum =0; tablenum<number_classes; tablenum++)
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];
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];
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];
218 all_raw_scores[tablenum][i][reg]=
219 calc_total_coil_likelihood(like_in_class, number_classes,reg,
221 &max_class_like[tablenum],
227 for (tablenum=0; tablenum < number_classes; tablenum++) {
228 all_raw_scores[tablenum][i][reg] = like_in_class[tablenum];
233 /********************************************************************/
240 int compute_num_multilib(int tablenum, int number_multi_lib[MAX_TABLE_NUMBER],
241 int multi_trimer_pairs)
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;
249 if (!use_pairs) return 1;
250 else return number_multi_lib[tablenum];
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])
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])
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
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
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])
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
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];
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];
318 double score[MAX_NUM_SCORE_DIM];
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];
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];
329 double score[NUM_DIM_IN_ORIG_MATRIX];