⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debug_funcs.c

📁 马尔科夫模型的java版本实现
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdlib.h>#include <stdio.h>#include "structs.h"void dump_align_matrix(int nr_rows, int nr_cols, struct align_mtx_element_s *mtx){  int i,j;  struct align_mtx_element_s *mtx_tmp;  mtx_tmp = mtx;    printf("alignment matrix dump:\n");  printf("nr rows: %d\n", nr_rows);  printf("nr columns: %d\n", nr_cols);  printf("scores:\n");  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%d  ", mtx_tmp->score);      mtx_tmp++;    }    printf("\n");  }  printf("\n\n");  mtx_tmp = mtx;  printf("lasts:\n");  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%c  ", mtx->last);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_trans_matrix(int nr_rows, int nr_cols, double *mtx){  int i,j;  printf("transition matrix dump:\n");  printf("nr rows: %d\n", nr_rows);  printf("nr columns: %d\n", nr_cols);  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%f  ", *mtx);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_int_trans_matrix(int nr_rows, int nr_cols, int *mtx){  int i,j;  printf("transition matrix dump:\n");  printf("nr rows: %d\n", nr_rows);  printf("nr columns: %d\n", nr_cols);  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%d  ", *mtx);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_emiss_matrix(int nr_rows, int nr_cols, double *mtx){  int i,j;  printf("emission matrix dump:\n");  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%f  ", *mtx);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_post_prob_matrix(int nr_rows, int nr_cols, double *mtx){  int i,j;  printf("posterior probability matrix dump:\n");  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%f  ", *mtx);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_forward_matrix(int nr_rows, int nr_cols, struct forward_s *mtx){  int i,j;  printf("forward matrix dump:\n");  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%f  ", mtx->prob);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_viterbi_matrix(int nr_rows, int nr_cols, struct viterbi_s *mtx){  int i,j;  struct viterbi_s *mtx_2;    mtx_2 = mtx;  printf("viterbi matrix dump probs:\n");  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      //printf("%d  ", mtx->prev);       printf("%f  ", mtx->prob);      mtx++;    }    printf("\n");  }  printf("\n");  printf("viterbi matrix dump prevs:\n");  for(i = 0; i < nr_rows; i++) {    printf("row: %d\n", i);    for(j = 0; j < nr_cols; j++) {      printf("col: %d = %d  \n", j, mtx_2->prev);      //printf("%f  ", mtx->prob);      mtx_2++;    }    printf("nr_cols = %d\n", j);    printf("\n");  }  printf("\n");}void dump_one_best_matrix(int nr_rows, int nr_cols, struct one_best_s *mtx){  int i,j;  printf("one best matrix dump:\n");  printf("%4d  ", 0);  for(j = 0; j < nr_cols; j++) {      printf("%8d  ", j);  }  printf("\n");  for(i = 0; i < nr_rows; i++) {    printf("%4d  ", i);    for(j = 0; j < nr_cols; j++) {      printf("%f  ", mtx->prob);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_backward_matrix(int nr_rows, int nr_cols, struct backward_s *mtx){  int i,j;  printf("backward matrix dump:\n");  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%f  ", mtx->prob);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_scaling_array(int len, double *mtx){  int i;  printf("scaling array dump\n");  for(i = 0; i < len; i++) {    printf("%d: %f ", i, *mtx);    mtx++;  }  printf("\n");}void dump_from_trans_array(int nr_v, struct path_element **array){  int i;  struct path_element *cur;    printf("\nfrom_trans_array_dump:\n");  printf("nr_v = %d\n", nr_v);      for(i = 0; i < nr_v; i++) {    if((*(array + i))->vertex == END) {      printf("no transitions to vertex %d\n", i);    }    else {      printf("paths to vertex %d:\n", i);      cur = *(array + i);      while(cur->vertex != END) {	printf("%d ", cur->vertex);	while(cur->next != NULL) {	  cur = cur->next;	  printf("%d ", cur->vertex);	}	printf("%d ", i);	printf("\n");	cur++;      }    }  }  printf("\n");}void dump_subst_mtx(double *mtx, int a_size){  int i,j;  int nr_rows = a_size + 1;  int nr_cols = a_size;  printf("substitution matrix dump:\n");  printf("nr rows: %d\n", nr_rows);  printf("nr columns: %d\n", nr_cols);  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%f  ", *mtx);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_to_trans_array(int nr_v, struct path_element **array){  int i;  struct path_element *cur;    printf("\nto_trans_array_dump:\n");  printf("nr_v = %d\n", nr_v);    for(i = 0; i < nr_v; i++) {    if((*(array + i))->vertex == END) {      printf("no transitions from vertex %d\n", i);    }    else {      printf("paths from vertex %d:\n", i);      cur = *(array + i);      while(cur->vertex != END) {	printf("%d ", i);	printf("%d ", cur->vertex);	while(cur->next != NULL) {	  cur = cur->next;	  printf("%d ", cur->vertex);	}	printf("\n");	cur++;      }    }  }  printf("\n");}void dump_T_matrix(int nr_rows, int nr_cols, double *mtx){  int i,j;  printf("T matrix dump:\n");  printf("nr rows: %d\n", nr_rows);  printf("nr columns: %d\n", nr_cols);  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%f  ", *mtx);      mtx++;    }    printf("\n");  }  printf("\n");}void dump_E_matrix(int nr_rows, int nr_cols, double *mtx){  int i,j;  printf("E matrix dump:\n");  printf("nr rows: %d\n", nr_rows);  printf("nr columns: %d\n", nr_cols);  for(i = 0; i < nr_rows; i++) {    for(j = 0; j < nr_cols; j++) {      printf("%f  ", *mtx);      mtx++;    }    printf("\n");  }  printf("\n");}/* dumps most probable state path for given string (misses end state) */void dump_viterbi_path(struct viterbi_s *cur, struct hmm_s *hmmp,		       struct viterbi_s *viterbi_mtxp, int row, int row_size){  struct path_element *p_el;  if(cur->prev == 0) {    p_el = cur->prevp;    printf("0 ");    while(p_el->next != NULL) {      printf("%d ", p_el->vertex);      p_el++;    }  }  else {    dump_viterbi_path(viterbi_mtxp + get_mtx_index(row-1, cur->prev, row_size), hmmp,		      viterbi_mtxp, row-1, row_size);    p_el = cur->prevp;    printf("%d ", cur->prev);    while(p_el->next != NULL) {      p_el++;      printf("%d ", p_el->vertex);    }  }}void dump_viterbi_label_path(struct viterbi_s *cur, struct hmm_s *hmmp,			     struct viterbi_s *viterbi_mtxp, int row, int row_size){  struct path_element *p_el;  if(cur->prev == 0) {    p_el = cur->prevp;    printf("0 ");    while(p_el->next != NULL) {      printf("%c ", *(hmmp->vertex_labels + p_el->vertex));      p_el++;    }  }  else {    dump_viterbi_label_path(viterbi_mtxp + get_mtx_index(row-1, cur->prev, row_size), hmmp,		      viterbi_mtxp, row-1, row_size);    p_el = cur->prevp;    printf("%c ", *(hmmp->vertex_labels + (int)(cur->prev)));    //printf("%d ", (int)(cur->prev));    while(p_el->next != NULL) {      p_el++;      printf("%c ", *(hmmp->vertex_labels + p_el->vertex));    }  }}void dump_modules(struct hmm_s *hmmp){  int i,j;  printf("\nModule dump:\n");  for(i = 0 ; i < hmmp->nr_m; i++) {    printf("module: %s", (*(hmmp->modules + i))->name);    printf("nr_v: %d\n", (*(hmmp->modules + i))->nr_v);    printf("vertices: ");    for(j = 0; j < (*(hmmp->modules + i))->nr_v;j++) {      printf("%d ",*(((*(hmmp->modules + i))->vertices) + j));    }    printf("\n");  }  }void dump_multi_modules(struct hmm_multi_s *hmmp){  int i,j;  printf("\nModule dump:\n");  for(i = 0 ; i < hmmp->nr_m; i++) {    printf("module: %s", (*(hmmp->modules + i))->name);    printf("nr_v: %d\n", (*(hmmp->modules + i))->nr_v);    printf("vertices: ");    for(j = 0; j < (*(hmmp->modules + i))->nr_v;j++) {      printf("%d ",*(((*(hmmp->modules + i))->vertices) + j));    }    printf("\n");  }  }void dump_distrib_groups(int *distrib_groups, int nr_d){  int i,j;  printf("\ndistribution groups dump:\n");  for(i = 0 ; i < nr_d; i++) {    printf("Group %d: ", i+1);    while(1) {      if(*distrib_groups == END) {	distrib_groups++;	printf("\n");	break;      }      else {	printf("%d ", *distrib_groups);	distrib_groups++;      }    }    printf("\n");  }  printf("\n");}void dump_trans_tie_groups(struct transition_s *trans_tie_groups, int nr_ttg){  int i,j;  printf("\ntrans tie groups dump:\n");  for(i = 0 ; i < nr_ttg; i++) {    printf("Tie %d: ", i+1);    while(1) {      if(trans_tie_groups->from_v == END) {	trans_tie_groups++;	printf("\n");	break;      }      else {	printf("%d->%d ", trans_tie_groups->from_v, trans_tie_groups->to_v);	trans_tie_groups++;      }    }    printf("\n");  }  printf("\n");}void dump_prior_struct(struct emission_dirichlet_s *emission_priorsp){  int i,j;  double *mtx = emission_priorsp->prior_values;    printf("prifile: %s\n", emission_priorsp->name);  printf("nr components: %d\n", emission_priorsp->nr_components);  printf("q_values: ");  for(i = 0; i < emission_priorsp->nr_components; i++) {    printf("%f ", *((emission_priorsp->q_values) + i));  }  printf("\n");  printf("alpha_sums: ");  for(i = 0; i < emission_priorsp->nr_components; i++) {    printf("%f ", *((emission_priorsp->alpha_sums) + i));  }  printf("\n");  printf("alpha_values:\n");  for(i = 0; i < emission_priorsp->nr_components; i++) {    for(j = 0; j < emission_priorsp->alphabet_size; j++) {      printf("%f  ", *mtx);      mtx++;    }    printf("\n");  }  printf("\n");    printf("logbeta_values: ");  for(i = 0; i < emission_priorsp->nr_components; i++) {    printf("%f ", *((emission_priorsp->logbeta_values) + i));  }  printf("\n");}void dump_silent_vertices(struct hmm_s *hmmp){  int i;  printf("silent vertices dump: ");  for(i = 0;;i++) {    if(*(hmmp->silent_vertices + i) == END) {      break;    }    else {      printf("%d ", *(hmmp->silent_vertices + i));    }  }  printf("\n");}void dump_silent_vertices_multi(struct hmm_multi_s *hmmp){  int i;  printf("silent vertices dump: ");  for(i = 0;;i++) {    if(*(hmmp->silent_vertices + i) == END) {      break;    }    else {      printf("%d ", *(hmmp->silent_vertices + i));    }  }  printf("\n");}void dump_locked_vertices(struct hmm_s *hmmp){  int i;  printf("locked vertices dump: ");  for(i = 0;;i++) {    if(*(hmmp->locked_vertices + i) == END) {      break;    }    else {      printf("%d ", *(hmmp->locked_vertices + i));    }  }  printf("\n");}void dump_seq(struct letter_s *seq){  int i;    while(seq->letter[0] != '\0') {    i = 0;    while(seq->letter[i] != '\0') {      printf("%c", seq->letter[i]);      i++;    }    printf(";");    seq++;  }  printf("\n");}void dump_seqs(struct sequences_s *seq_infop)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -