JPRED-2 Add sources of all binaries (except alscript) to Git
[jpred.git] / sources / multicoil / get_defaults_cuts.c
diff --git a/sources/multicoil/get_defaults_cuts.c b/sources/multicoil/get_defaults_cuts.c
new file mode 100644 (file)
index 0000000..40faea9
--- /dev/null
@@ -0,0 +1,488 @@
+      else if(!strncmp(buf,"differ_lib",10)) {/* Read in a variable number  */
+        char *end;                          /*  of distances to be used in  */
+        int val;                            /*  PairCoilDiffer scores.      */
+       int do_each_dist_separately =0;
+
+       if (!strncmp(buf,"differ_lib dim",14))   
+         do_each_dist_separately = 1;
+
+       if (!strncmp(buf,"differ_lib = all",16))
+         {
+                          /* For scscore.c will go through each dist on own*/
+           for (i=0; i<7; i++) 
+             differ_lib[i] = i;
+           *differ_functnum = 1; 
+           *number_differ_lib = 7;
+           printf("differ_lib = all dimensions");
+         }
+     
+       else  {
+         if (do_each_dist_separately)
+           printf("differ_lib dimensions= ");  
+         else printf("differ_lib = ");
+
+         tmp = strchr(buf, '='); 
+         tmp++;                  
+         /* strip leading whitespace */    
+         while(!isdigit(*tmp)&&*tmp) tmp++;
+         while(end = strchrs(tmp, " \t\n\r")) {
+           *end = 0;
+           end++;
+           /* strip leading whitespace */
+           while(*tmp&&!isdigit(*tmp)) tmp++;
+           if(*tmp) {
+             val = atoi(tmp);
+             differ_lib[(*differ_functnum)++] = val;
+             printf("%d ", val);
+           }
+           tmp = end;
+         }
+         printf("\n");
+
+         if (do_each_dist_separately) {
+           *number_differ_lib = *differ_functnum;
+           *differ_functnum=1;
+             /* Each distance is a library to itself. */
+         }
+       }
+      }
+       
+
+
+      else if (!strncmp(buf, "New coil at reg shift",21)) 
+        *start_coil_at_reg_shift = 1;
+
+
+      else if(!strncmp(buf,"differ class scores dimer",25)) { 
+       
+        sscanf(buf,"differ class scores dimer = %s", 
+              differ_class_sc_filenames[0]); 
+        printf("differ class scores dimers = %s\n",  
+              differ_class_sc_filenames[0]); 
+
+      }
+
+      else if(!strncmp(buf,"differ gauss_param",18)) {   
+        sscanf(buf,"differ gauss_param = %s",differ_gaussian_parameters);
+        printf("differ gauss_param = %s\n",differ_gaussian_parameters);
+      }
+
+
+      else if(!strncmp(buf,"prior freq single",17)) {
+       int the_table;
+       if (!strncmp(buf,"prior freq single =",19)) {
+         sscanf(buf,"prior freq single = %lf", &prior_freq_single[0]);  
+         for (the_table =0; the_table < MAX_TABLE_NUMBER; the_table++) {
+           prior_freq_single[the_table] = prior_freq_single[0];
+           printf("prior_freq_single %d = %lf\n", the_table, 
+                  prior_freq_single[the_table]);
+         }
+       }             /* All tables get same scale0. **/
+       else {
+         sscanf(buf,"prior freq single %d", &the_table);
+         sscanf(buf,"prior freq single %d = %lf", &the_table, 
+                &prior_freq_single[the_table-1]); 
+        printf("prior_freq_single %d = %lf\n",
+              the_table,prior_freq_single[the_table-1]);
+       }
+      }
+      else if(!strncmp(buf,"prior freq pair",15)) {
+       int the_table;
+       if (!strncmp(buf,"prior freq pair =",17)) {
+         sscanf(buf,"prior freq pair = %lf", &prior_freq_pair[0]);  
+         for (the_table =0; the_table < MAX_TABLE_NUMBER; the_table++) {
+           prior_freq_pair[the_table] = prior_freq_pair[0];
+           printf("prior_freq_pair %d = %lf\n", the_table, 
+                  prior_freq_pair[the_table]);
+         }
+       }             /* All tables get same scale0. **/
+       else {
+         sscanf(buf,"prior freq pair %d", &the_table);
+         sscanf(buf,"prior freq pair %d = %lf", &the_table, 
+                &prior_freq_pair[the_table-1]); 
+        printf("prior_freq_pair %d = %lf\n",
+              the_table,prior_freq_pair[the_table-1]);
+       }
+      }
+
+
+/***********************************************************/
+      else if(!strncmp(buf,"structurally important pos",26)) {
+       char *end;                        
+       int val;                          
+
+       i =0;
+       printf("structurally important pos = ");         
+       tmp = strchr(buf, '=');         
+       tmp++;                          
+       /* strip leading whitespace */  
+       while(!islower(*tmp)&&*tmp) tmp++;
+       while(end = strchrs(tmp, " \t\n\r")) {
+         *end = 0;
+         end++;
+         /* strip leading whitespace */
+         while(*tmp&&!islower(*tmp)) tmp++;
+         if(*tmp) {
+           val = (*tmp)- 'a';
+           if ((val>=7) || (val<0))
+             printf(" **ILLEGAL position %c ignored** ", 'a' + val);
+           else {
+             printf("%c ", 'a' + val);
+             structural_pos[i]= val;
+             i++;
+           }
+         }
+         tmp = end;
+       }
+       printf("\n");
+       structural_pos[i] = -1;  /*  Flag that at end. */
+      }
+      else if(!strncmp(buf,"good_turing",11)) {
+       *good_turing_fixed_disc = 1;
+       printf("Estimating prob using good_turing method.\n");
+      }
+      else if(!strncmp(buf,"modified_good_turing",20)) {
+       *good_turing_fixed_disc = 3;
+       printf("Estimating prob using modified good_turing method.\n");
+      }
+      else if(!strncmp(buf,"fixed_disc",10)) {
+       *good_turing_fixed_disc = 2;
+       printf("Estimating prob using fixed_discount method with discount determined by SCALE0.\n");
+      }
+/**********************************************************/
+      else if(!strncmp(buf,"zero freqs from dimers",22)) {
+       *priors =-1;
+       printf("zero freqs for trimers from dimers.\n");
+      }
+
+      else if(!strncmp(buf,"add priors if less than dimer expectation",41)) {
+       *priors =-2;
+       printf("Add priors only if freq is less than dimer expectation.\n");
+      }
+
+      else if(!strncmp(buf,"prior singles from",18)) { 
+                                           /* Reads in what to use as   */
+       tmp = &buf[19]; /* One past space */
+        if (!strncmp(tmp,"dimers",6 )) {     /* prior prob in estimating   */
+         *priors = 1;
+         printf("priors from dimers\n");    /* trimer table probs.  */
+       }
+       else if (!strncmp(tmp,"genbnk",6 )) {     
+         *priors = 2;
+         printf("priors from genbnk\n");
+       }
+       else if (!strncmp(tmp,"average",7 )) {     
+         *priors = 3;
+         printf("priors from average of dimers and genbnk\n");
+       }
+      } 
+
+      else if(!strncmp(buf,"zero freqp from dimers",22)) {
+       *priorp =-1;
+       printf("zero freqp for trimers from dimers.\n");
+      }
+      else if(!strncmp(buf,"add priorp if less than dimer expectation",41)) {
+       *priorp =-2;
+       printf("Add priorp only if freq is less than dimer expectation.\n");
+      }
+
+       else if(!strncmp(buf,"prior pairs from",16)) { 
+                                           /* Reads in what to use as   */
+       tmp = &buf[17]; /* One past space */
+        if (!strncmp(tmp,"dimers",6 )) {     /* prior prob in estimating   */
+         *priorp = 1;
+         printf("priorp from dimers\n");    /* trimer table probs.  */
+       }
+       else if (!strncmp(tmp,"genbnk",6 )) {     
+         *priorp = 2;
+         printf("priorp from genbnk\n");
+       }
+       else if (!strncmp(tmp,"average",7 )) {     
+         *priorp = 3;
+         printf("priorp from average of dimers and genbnk\n");
+       }
+
+       else if (!strncmp(tmp,"product of singles",18 )) {     
+         *priorp = 4;
+         printf("priorp from product of singles\n");
+       }
+      } 
+/**************************************************************/
+      else if(!strncmp(buf,"differentiator window length",28)) {
+         sscanf(buf,"differentiator window length = %d", 
+                differ_window_length);
+         printf("differentiator window length = %d\n", 
+                *differ_window_length);
+       }
+
+
+
+
+/**************************************************************/
+/************************Round 2 of cuts **********************/
+/**************************************************************/
+
+      else if(!strncmp(buf,"coil conflicts",14)) {     
+       if (!strncmp(buf,"coil conflicts dir",19)){ /* automate the name **/ 
+        sscanf(buf,"coil conflicts dir = %s",name);
+        strcat(name,input_name);
+        strcat(name,".coil_conflicts");
+
+         /**** Apend on the library distances.  ***/
+         if (multi_functnum[0] == 1) { /* make sure do dimension scores */
+           lib_numb=0;
+           while (lib_numb < number_multi_lib[0]) {
+             sprintf(&buf[lib_numb],"%d",multi_lib[0][lib_numb]);
+             lib_numb++; }
+           sprintf(&buf[lib_numb],"_");
+           strncat(name,buf,number_multi_lib[0]+1);
+
+
+           lib_numb=0;
+           while (lib_numb < number_multi_lib[1]) {
+             sprintf(&buf[lib_numb],"%d",multi_lib[1][lib_numb]);
+             lib_numb++; }
+           strncat(name,buf,number_multi_lib[1]);
+         }
+
+       }
+        else sscanf(buf,"coil conflicts = %s",name);  
+        *flog_coil_conflicts = sopen(name,"w");
+        printf("coil conflicts = %s\n",name);
+      }
+
+changed
+      else if(!strncmp(buf,"table",5)) {   /* Get location of postable file */
+        sscanf(buf,"table %d = %s",&i, name);
+       if (strcmp("combination",name)) {  /* If it is combination, just  */
+         fpin[*number_tables] = sopen(name,"r");  /* increment number tables*/
+       }                                    /* Otherwise open file.       */
+       printf("table %d = %s\n",*number_tables,name); 
+       (*number_tables)++;
+       fpin[*number_tables]= NULL;
+      }
+
+to
+
+      else if(!strncmp(buf,"table",5)) {   /* Get location of postable file */
+        sscanf(buf,"table %d = %s",&i, name);
+       fpin[i-1] = sopen(name,"r");
+       printf("table %d = %s\n",i,name); 
+       (*number_tables)++;
+       fpin[i]= NULL;
+      }
+
+
+changed
+           if (!strncmp(buf,"multi_lib dim =",15)) {
+             first_table=0; last_table=*number_tables;  
+           }             /* All tables get same lib. **/
+           else {
+             sscanf(buf,"multi_lib dim %d", &last_table);
+             first_table = last_table-1;
+           }
+         }
+         else if (!strncmp(buf,"multi_lib =",11)) {
+           first_table=0; last_table=*number_tables;  
+         }             /* All tables get same lib. **/
+         
+to
+
+           if (!strncmp(buf,"multi_lib dim =",15)) {
+             first_table=0; last_table=NUMBER_TABLES;  
+           }             /* All tables get same lib. **/
+
+           else {
+             sscanf(buf,"multi_lib dim %d", &last_table);
+             first_table = last_table-1;
+           }
+         }
+         else if (!strncmp(buf,"multi_lib =",11)) {
+           first_table=0; last_table= NUMBER_TABLES;  
+         }             /* All tables get same lib. **/
+
+
+
+
+cut
+        if (*weighted_avg)
+          strcat(name,"_WtdAvg");
+
+
+      else if (!strncmp(buf,"weighted_avg", 12)) {
+       sscanf(buf, "weighted_avg = %d", weighted_avg);  
+                   /* 0 means just avg. res score over coil.  */
+                  /* 1 means do weighted avg. by likelihoods */
+        if ( (*weighted_avg !=0)  &&(*weighted_avg !=1)) {
+         fprintf(stderr,"\n Illegal weighted_avg method.  Defaults to 0.\n");
+         *weighted_avg = 0;
+       }
+       else fprintf(stderr,"weighted_avg = %d\n", *weighted_avg);
+      }
+    }
+
+
+
+
+cut
+
+      else if(!strncmp(buf,"tab diff stats",14)) {   
+        sscanf(buf,"tab diff stats = %s",table_diff_stats_filename);
+       printf("tablediff stats = %s\n",table_diff_stats_filename);
+      }
+      else if(!strncmp(buf,"weightfile outname",18)) {   
+        sscanf(buf,"weightfile outname = %s",weightfile_outname);
+       printf("weightfile outname = %s\n",weightfile_outname);
+      }
+
+
+changed
+
+      else if(!strncmp(buf,"class scores combo",18)) {   
+        sscanf(buf,"class scores combo %d with init prob %lf = %s",&i, 
+               &init_class_prob[*number_classes],
+               class_sc_filenames[0][*number_classes]); 
+        printf("combo class scores %d = %s with init prob %lf\n",
+               *number_classes,class_sc_filenames[0][*number_classes],
+               init_class_prob[*number_classes]);  /* likelihood lines.  */
+        (*number_classes)++;
+        class_sc_filenames[0][*number_classes][0]= ',';
+      }
+
+
+      else if(!strncmp(buf,"class scores max",16)) {   
+        sscanf(buf,"class scores max %d with init prob %lf = %s",&i, 
+               &init_class_prob[number_max_classes],
+               class_sc_filenames[1][number_max_classes]); 
+        printf("max class scores %d = %s with init prob %lf\n",
+               number_max_classes,class_sc_filenames[1][number_max_classes],
+               init_class_prob[number_max_classes]);  /* likelihood lines.  */
+        number_max_classes++;
+        class_sc_filenames[1][number_max_classes][0]= ',';
+      }
+
+to
+      else if(!strncmp(buf,"class scores combo",18)) {   
+        sscanf(buf,"class scores combo %d with init prob %lf = %s",&i, 
+              &init_class_prob[i-1],
+              class_sc_filenames[0][i-1]); 
+        printf("combo class scores %d = %s with init prob %lf\n",
+              i,class_sc_filenames[0][i-1],
+              init_class_prob[*number_classes]);  /* likelihood lines.  */
+       class_sc_filenames[0][i][0]= ',';
+      }
+
+
+      else if(!strncmp(buf,"class scores max",16)) {   
+        sscanf(buf,"class scores max %d with init prob %lf = %s",&i, 
+              &init_class_prob[i-1],
+              class_sc_filenames[1][i-1]); 
+        printf("max class scores %d = %s with init prob %lf\n",
+              i,class_sc_filenames[1][i-1],
+              init_class_prob[i-1]);  /* likelihood lines.  */
+       class_sc_filenames[1][i][0]= ',';
+
+
+
+CUT
+      else if(!strncmp(buf,"average differentiator by coil window",37)) {
+       *which_differentiator = 4;
+       printf("The differentiator score is over the entire coiled region\n");
+      }
+
+      else if(!strncmp(buf,"differentiator by coil window",29)) {
+       *which_differentiator = 3;
+       printf("The differentiator score is over the entire coiled region\n");
+      }
+      else if(!strncmp(buf,"differentiator by window score",30)) {
+       *which_differentiator = 1;
+       printf("The differentiator residue score is the score of the window starting at that residue\n");
+      }
+      else if(!strncmp(buf,"differentiator by max-min window score",38)) {
+       *which_differentiator = 2;
+       printf("The differentiator residue score is the scores for the max and min window containing that residue\n");
+      }
+
+
+
+
+Completely rewrote stuff to read in multi_lib to deal with variables
+num_dist and combined_dist.
+
+
+Cut
+
+      else if(!strncmp(buf,"differ class scores trimer",26)) { 
+       
+        sscanf(buf,"differ class scores trimer = %s", 
+              differ_class_sc_filenames[1]); 
+        printf("differ class scores trimers = %s\n",  
+              differ_class_sc_filenames[1]); 
+
+      }
+
+
+Changed
+
+           lib_numb=0;
+           while (lib_numb < number_multi_lib[0]) {
+             sprintf(&buf[lib_numb],"%d",multi_lib[0][lib_numb]);
+             lib_numb++; }
+           sprintf(&buf[lib_numb],"_");
+           strncat(name,buf,number_multi_lib[0]+1);
+
+           lib_numb=0;
+           while (lib_numb < number_multi_lib[1]) {
+             sprintf(&buf[lib_numb],"%d",multi_lib[1][lib_numb]);
+             lib_numb++; }
+           strncat(name,buf,number_multi_lib[1]);
+
+to
+
+           while (lib_numb < num_dist[0]) {
+             sprintf(&buf[lib_numb],"%d",multi_lib[0][lib_numb]);
+             lib_numb++; }
+           sprintf(&buf[lib_numb],"_");
+           strncat(name,buf,num_dist[0]+1);
+
+           lib_numb=0;
+           while (lib_numb < num_dist[1]) {
+             sprintf(&buf[lib_numb],"%d",multi_lib[1][lib_numb]);
+             lib_numb++; }
+           strncat(name,buf,num_dist[1]);
+
+
+
+Changed
+         /**** Apend on the library distances.  ***/
+         if (multi_functnum[0] == 1) { /* make sure do dimension scores */
+           lib_numb=0;
+to
+          if (combine_dist[0] == 0)
+
+
+
+Cut
+       class_sc_filenames[0][number_classes][0]= ',';
+and
+       class_sc_filenames[1][number_max_classes][0]= ',';
+      }
+
+from when reading in class filenames.
+
+
+
+Modified stuff that reads in "coil scores = ...."
+so can also read it in as "seq scores = ...."
+and seq by_coil_or_seq based on if used "coil" or "seq".
+Therefore, could eliminate
+      else if (!strncmp(buf,"By coil",7))
+       *by_coil_or_seq = 0;
+      else if (!strncmp(buf,"By seq",6))
+       *by_coil_or_seq =2;
+but kept
+      else if (!strncmp(buf,"By seq pos regions",18))
+       *by_coil_or_seq =1;
+